dino-spec 13.6.0 → 14.0.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.
- package/bin/dino-hud.js +1 -1
- package/bin/dino.js +1 -1
- package/dist/core/agents/context-isolation.js +26 -26
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
- package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.js +246 -0
- package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
- package/dist/core/context/budget-thresholds.d.ts +167 -0
- package/dist/core/context/budget-thresholds.d.ts.map +1 -0
- package/dist/core/context/budget-thresholds.js +234 -0
- package/dist/core/context/budget-thresholds.js.map +1 -0
- package/dist/core/context/compaction-engine.d.ts +193 -0
- package/dist/core/context/compaction-engine.d.ts.map +1 -0
- package/dist/core/context/compaction-engine.js +376 -0
- package/dist/core/context/compaction-engine.js.map +1 -0
- package/dist/core/context/index.d.ts +7 -3
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +22 -3
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/output-persistence.d.ts +142 -0
- package/dist/core/context/output-persistence.d.ts.map +1 -0
- package/dist/core/context/output-persistence.js +242 -0
- package/dist/core/context/output-persistence.js.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
- package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
- package/dist/core/environment/index.d.ts +8 -0
- package/dist/core/environment/index.d.ts.map +1 -0
- package/dist/core/environment/index.js +7 -0
- package/dist/core/environment/index.js.map +1 -0
- package/dist/core/environment/pre-verify.d.ts +63 -0
- package/dist/core/environment/pre-verify.d.ts.map +1 -0
- package/dist/core/environment/pre-verify.js +221 -0
- package/dist/core/environment/pre-verify.js.map +1 -0
- package/dist/core/environment/types.d.ts +37 -0
- package/dist/core/environment/types.d.ts.map +1 -0
- package/dist/core/environment/types.js +5 -0
- package/dist/core/environment/types.js.map +1 -0
- package/dist/core/intelligence/context-budget.d.ts +10 -5
- package/dist/core/intelligence/context-budget.d.ts.map +1 -1
- package/dist/core/intelligence/context-budget.js +12 -5
- package/dist/core/intelligence/context-budget.js.map +1 -1
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
- package/dist/mcp/dynamic-updates.d.ts +167 -0
- package/dist/mcp/dynamic-updates.d.ts.map +1 -0
- package/dist/mcp/dynamic-updates.js +313 -0
- package/dist/mcp/dynamic-updates.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +5 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/registry.d.ts +4 -4
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +16 -16
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
- package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/environment.test.js +219 -0
- package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
- package/dist/mcp/tools/environment.d.ts +27 -0
- package/dist/mcp/tools/environment.d.ts.map +1 -0
- package/dist/mcp/tools/environment.js +97 -0
- package/dist/mcp/tools/environment.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +13 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/output-persistence.d.ts +44 -0
- package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
- package/dist/mcp/tools/output-persistence.js +208 -0
- package/dist/mcp/tools/output-persistence.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +27 -2
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Pre-Verification Tests - v14.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { mkdtemp, rm } from 'fs/promises';
|
|
7
|
+
import { tmpdir } from 'os';
|
|
8
|
+
import { FileSystem } from '../../../utils/file-system.js';
|
|
9
|
+
import { DINO_DIR_NAME } from '../../config/constants.js';
|
|
10
|
+
import { verifyEnvironment, formatVerification, writeVerificationToSession, isEnvironmentSafe, } from '../pre-verify.js';
|
|
11
|
+
import { writeTestState } from '../../test-optimization/index.js';
|
|
12
|
+
describe('Environment Pre-Verification', () => {
|
|
13
|
+
let testDir;
|
|
14
|
+
beforeEach(async () => {
|
|
15
|
+
testDir = await mkdtemp(join(tmpdir(), 'dino-verify-'));
|
|
16
|
+
await FileSystem.createDirectory(join(testDir, DINO_DIR_NAME));
|
|
17
|
+
});
|
|
18
|
+
afterEach(async () => {
|
|
19
|
+
await rm(testDir, { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
describe('verifyEnvironment', () => {
|
|
22
|
+
it('should pass when tests are passing', async () => {
|
|
23
|
+
// Setup: Write passing test state
|
|
24
|
+
const testState = {
|
|
25
|
+
lastFullRun: {
|
|
26
|
+
timestamp: new Date().toISOString(),
|
|
27
|
+
commit: 'abc123',
|
|
28
|
+
duration: 5000,
|
|
29
|
+
passed: 100,
|
|
30
|
+
failed: 0,
|
|
31
|
+
skipped: 0,
|
|
32
|
+
scope: 'full',
|
|
33
|
+
},
|
|
34
|
+
changedSinceTest: [],
|
|
35
|
+
lastUpdated: new Date().toISOString(),
|
|
36
|
+
};
|
|
37
|
+
await writeTestState(testState, testDir);
|
|
38
|
+
// Verify
|
|
39
|
+
const result = await verifyEnvironment({ projectDir: testDir });
|
|
40
|
+
expect(result.canProceed).toBe(true);
|
|
41
|
+
expect(result.blockers).toHaveLength(0);
|
|
42
|
+
expect(result.status).toContain('ready');
|
|
43
|
+
});
|
|
44
|
+
it('should block when tests are failing', async () => {
|
|
45
|
+
// Setup: Write failing test state
|
|
46
|
+
const testState = {
|
|
47
|
+
lastFullRun: {
|
|
48
|
+
timestamp: new Date().toISOString(),
|
|
49
|
+
commit: 'abc123',
|
|
50
|
+
duration: 5000,
|
|
51
|
+
passed: 95,
|
|
52
|
+
failed: 5,
|
|
53
|
+
skipped: 0,
|
|
54
|
+
scope: 'full',
|
|
55
|
+
},
|
|
56
|
+
changedSinceTest: [],
|
|
57
|
+
lastUpdated: new Date().toISOString(),
|
|
58
|
+
};
|
|
59
|
+
await writeTestState(testState, testDir);
|
|
60
|
+
// Verify
|
|
61
|
+
const result = await verifyEnvironment({ projectDir: testDir });
|
|
62
|
+
expect(result.canProceed).toBe(false);
|
|
63
|
+
expect(result.blockers).toHaveLength(1);
|
|
64
|
+
expect(result.blockers[0]).toContain('Tests failing');
|
|
65
|
+
expect(result.recommendations).toContain('Fix failing tests before implementing new features');
|
|
66
|
+
});
|
|
67
|
+
it('should warn when files changed since test', async () => {
|
|
68
|
+
// Setup: Write test state with changes
|
|
69
|
+
const testState = {
|
|
70
|
+
lastFullRun: {
|
|
71
|
+
timestamp: new Date().toISOString(),
|
|
72
|
+
commit: 'abc123',
|
|
73
|
+
duration: 5000,
|
|
74
|
+
passed: 100,
|
|
75
|
+
failed: 0,
|
|
76
|
+
skipped: 0,
|
|
77
|
+
scope: 'full',
|
|
78
|
+
},
|
|
79
|
+
changedSinceTest: ['src/core/analyzer.ts', 'src/utils/helper.ts'],
|
|
80
|
+
lastUpdated: new Date().toISOString(),
|
|
81
|
+
};
|
|
82
|
+
await writeTestState(testState, testDir);
|
|
83
|
+
// Verify
|
|
84
|
+
const result = await verifyEnvironment({ projectDir: testDir });
|
|
85
|
+
expect(result.canProceed).toBe(true);
|
|
86
|
+
expect(result.warnings.length).toBeGreaterThan(0);
|
|
87
|
+
expect(result.warnings[0]).toContain('2 file(s) changed since last test');
|
|
88
|
+
});
|
|
89
|
+
it('should warn when no test state exists', async () => {
|
|
90
|
+
// No test state file
|
|
91
|
+
const result = await verifyEnvironment({ projectDir: testDir });
|
|
92
|
+
expect(result.canProceed).toBe(true);
|
|
93
|
+
expect(result.warnings.length).toBeGreaterThan(0);
|
|
94
|
+
expect(result.warnings[0]).toContain('No test state recorded');
|
|
95
|
+
});
|
|
96
|
+
it('should warn when tests are stale (>60 minutes)', async () => {
|
|
97
|
+
// Setup: Write old test state
|
|
98
|
+
const oneHourAgo = new Date(Date.now() - 90 * 60 * 1000);
|
|
99
|
+
const testState = {
|
|
100
|
+
lastFullRun: {
|
|
101
|
+
timestamp: oneHourAgo.toISOString(),
|
|
102
|
+
commit: 'abc123',
|
|
103
|
+
duration: 5000,
|
|
104
|
+
passed: 100,
|
|
105
|
+
failed: 0,
|
|
106
|
+
skipped: 0,
|
|
107
|
+
scope: 'full',
|
|
108
|
+
},
|
|
109
|
+
changedSinceTest: [],
|
|
110
|
+
lastUpdated: oneHourAgo.toISOString(),
|
|
111
|
+
};
|
|
112
|
+
await writeTestState(testState, testDir);
|
|
113
|
+
// Verify
|
|
114
|
+
const result = await verifyEnvironment({ projectDir: testDir });
|
|
115
|
+
expect(result.canProceed).toBe(true);
|
|
116
|
+
expect(result.warnings.length).toBeGreaterThan(0);
|
|
117
|
+
expect(result.warnings.some(w => w.includes('minutes old'))).toBe(true);
|
|
118
|
+
});
|
|
119
|
+
it('should bypass verification with force flag', async () => {
|
|
120
|
+
// Setup: Write failing test state
|
|
121
|
+
const testState = {
|
|
122
|
+
lastFullRun: {
|
|
123
|
+
timestamp: new Date().toISOString(),
|
|
124
|
+
commit: 'abc123',
|
|
125
|
+
duration: 5000,
|
|
126
|
+
passed: 0,
|
|
127
|
+
failed: 100,
|
|
128
|
+
skipped: 0,
|
|
129
|
+
scope: 'full',
|
|
130
|
+
},
|
|
131
|
+
changedSinceTest: [],
|
|
132
|
+
lastUpdated: new Date().toISOString(),
|
|
133
|
+
};
|
|
134
|
+
await writeTestState(testState, testDir);
|
|
135
|
+
// Verify with force
|
|
136
|
+
const result = await verifyEnvironment({ projectDir: testDir, force: true });
|
|
137
|
+
expect(result.canProceed).toBe(true);
|
|
138
|
+
expect(result.status).toContain('bypassed');
|
|
139
|
+
expect(result.warnings[0]).toContain('Force flag used');
|
|
140
|
+
});
|
|
141
|
+
it('should skip test verification when skipTests=true', async () => {
|
|
142
|
+
// Setup: Write failing test state
|
|
143
|
+
const testState = {
|
|
144
|
+
lastFullRun: {
|
|
145
|
+
timestamp: new Date().toISOString(),
|
|
146
|
+
commit: 'abc123',
|
|
147
|
+
duration: 5000,
|
|
148
|
+
passed: 0,
|
|
149
|
+
failed: 100,
|
|
150
|
+
skipped: 0,
|
|
151
|
+
scope: 'full',
|
|
152
|
+
},
|
|
153
|
+
changedSinceTest: [],
|
|
154
|
+
lastUpdated: new Date().toISOString(),
|
|
155
|
+
};
|
|
156
|
+
await writeTestState(testState, testDir);
|
|
157
|
+
// Verify with skipTests
|
|
158
|
+
const result = await verifyEnvironment({ projectDir: testDir, skipTests: true });
|
|
159
|
+
expect(result.canProceed).toBe(true);
|
|
160
|
+
expect(result.blockers).toHaveLength(0);
|
|
161
|
+
});
|
|
162
|
+
it('should check build status when package.json has build script', async () => {
|
|
163
|
+
// Setup: Create package.json with build script
|
|
164
|
+
const packageJson = {
|
|
165
|
+
name: 'test-project',
|
|
166
|
+
scripts: {
|
|
167
|
+
build: 'tsc',
|
|
168
|
+
test: 'vitest',
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
await FileSystem.writeFile(join(testDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
172
|
+
// No dist directory exists
|
|
173
|
+
const result = await verifyEnvironment({ projectDir: testDir, skipTests: true });
|
|
174
|
+
expect(result.warnings.some(w => w.includes('Build artifacts not found'))).toBe(true);
|
|
175
|
+
expect(result.recommendations.some(r => r.includes('Run build'))).toBe(true);
|
|
176
|
+
});
|
|
177
|
+
it('should not warn about build when dist directory exists', async () => {
|
|
178
|
+
// Setup: Create package.json and dist directory
|
|
179
|
+
const packageJson = {
|
|
180
|
+
name: 'test-project',
|
|
181
|
+
scripts: { build: 'tsc' },
|
|
182
|
+
};
|
|
183
|
+
await FileSystem.writeFile(join(testDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
184
|
+
await FileSystem.createDirectory(join(testDir, 'dist'));
|
|
185
|
+
const result = await verifyEnvironment({ projectDir: testDir, skipTests: true });
|
|
186
|
+
expect(result.warnings.some(w => w.includes('Build artifacts'))).toBe(false);
|
|
187
|
+
});
|
|
188
|
+
it('should skip build verification when skipBuild=true', async () => {
|
|
189
|
+
// Setup: Create package.json with build script
|
|
190
|
+
const packageJson = {
|
|
191
|
+
name: 'test-project',
|
|
192
|
+
scripts: { build: 'tsc' },
|
|
193
|
+
};
|
|
194
|
+
await FileSystem.writeFile(join(testDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
195
|
+
const result = await verifyEnvironment({ projectDir: testDir, skipTests: true, skipBuild: true });
|
|
196
|
+
expect(result.warnings.some(w => w.includes('Build artifacts'))).toBe(false);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe('formatVerification', () => {
|
|
200
|
+
it('should format verification with blockers', () => {
|
|
201
|
+
const result = {
|
|
202
|
+
canProceed: false,
|
|
203
|
+
status: 'Failed',
|
|
204
|
+
blockers: ['Tests failing: 5 tests failed'],
|
|
205
|
+
warnings: [],
|
|
206
|
+
recommendations: ['Fix failing tests'],
|
|
207
|
+
testState: null,
|
|
208
|
+
verifiedAt: '2026-01-27T10:00:00Z',
|
|
209
|
+
};
|
|
210
|
+
const formatted = formatVerification(result);
|
|
211
|
+
expect(formatted).toContain('## Environment Verification');
|
|
212
|
+
expect(formatted).toContain('**Status:** Failed');
|
|
213
|
+
expect(formatted).toContain('### Blockers (1)');
|
|
214
|
+
expect(formatted).toContain('❌ Tests failing');
|
|
215
|
+
expect(formatted).toContain('### Recommendations');
|
|
216
|
+
expect(formatted).toContain('Fix failing tests');
|
|
217
|
+
});
|
|
218
|
+
it('should format verification with warnings only', () => {
|
|
219
|
+
const result = {
|
|
220
|
+
canProceed: true,
|
|
221
|
+
status: 'Ready',
|
|
222
|
+
blockers: [],
|
|
223
|
+
warnings: ['Tests are stale'],
|
|
224
|
+
recommendations: ['Run tests'],
|
|
225
|
+
testState: null,
|
|
226
|
+
verifiedAt: '2026-01-27T10:00:00Z',
|
|
227
|
+
};
|
|
228
|
+
const formatted = formatVerification(result);
|
|
229
|
+
expect(formatted).toContain('### Warnings (1)');
|
|
230
|
+
expect(formatted).toContain('⚠️ Tests are stale');
|
|
231
|
+
expect(formatted).not.toContain('### Blockers');
|
|
232
|
+
});
|
|
233
|
+
it('should format clean verification', () => {
|
|
234
|
+
const result = {
|
|
235
|
+
canProceed: true,
|
|
236
|
+
status: 'Environment ready - safe to proceed',
|
|
237
|
+
blockers: [],
|
|
238
|
+
warnings: [],
|
|
239
|
+
recommendations: [],
|
|
240
|
+
testState: null,
|
|
241
|
+
verifiedAt: '2026-01-27T10:00:00Z',
|
|
242
|
+
};
|
|
243
|
+
const formatted = formatVerification(result);
|
|
244
|
+
expect(formatted).toContain('## Environment Verification');
|
|
245
|
+
expect(formatted).toContain('**Status:** Environment ready');
|
|
246
|
+
expect(formatted).not.toContain('### Blockers');
|
|
247
|
+
expect(formatted).not.toContain('### Warnings');
|
|
248
|
+
expect(formatted).not.toContain('### Recommendations');
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
describe('writeVerificationToSession', () => {
|
|
252
|
+
it('should append verification to session.md', async () => {
|
|
253
|
+
// Setup: Create session.md
|
|
254
|
+
const sessionContent = `# Session\n\n## Focus\nNo focus set\n\n## Notes\n- Test note\n`;
|
|
255
|
+
await FileSystem.writeFile(join(testDir, DINO_DIR_NAME, 'session.md'), sessionContent);
|
|
256
|
+
const result = {
|
|
257
|
+
canProceed: true,
|
|
258
|
+
status: 'Ready',
|
|
259
|
+
blockers: [],
|
|
260
|
+
warnings: [],
|
|
261
|
+
recommendations: [],
|
|
262
|
+
testState: null,
|
|
263
|
+
verifiedAt: '2026-01-27T10:00:00Z',
|
|
264
|
+
};
|
|
265
|
+
// Write verification
|
|
266
|
+
await writeVerificationToSession(result, testDir);
|
|
267
|
+
// Read updated session
|
|
268
|
+
const updated = await FileSystem.readFile(join(testDir, DINO_DIR_NAME, 'session.md'));
|
|
269
|
+
expect(updated).toContain('## Environment Verification');
|
|
270
|
+
expect(updated).toContain('**Status:** Ready');
|
|
271
|
+
expect(updated).toContain('## Notes');
|
|
272
|
+
});
|
|
273
|
+
it('should replace existing verification section', async () => {
|
|
274
|
+
// Setup: Create session.md with existing verification
|
|
275
|
+
const sessionContent = `# Session
|
|
276
|
+
|
|
277
|
+
## Environment Verification
|
|
278
|
+
**Status:** Old status
|
|
279
|
+
**Verified At:** 2026-01-26T10:00:00Z
|
|
280
|
+
|
|
281
|
+
## Notes
|
|
282
|
+
- Test note
|
|
283
|
+
`;
|
|
284
|
+
await FileSystem.writeFile(join(testDir, DINO_DIR_NAME, 'session.md'), sessionContent);
|
|
285
|
+
const result = {
|
|
286
|
+
canProceed: false,
|
|
287
|
+
status: 'Failed',
|
|
288
|
+
blockers: ['Tests failing'],
|
|
289
|
+
warnings: [],
|
|
290
|
+
recommendations: [],
|
|
291
|
+
testState: null,
|
|
292
|
+
verifiedAt: '2026-01-27T10:00:00Z',
|
|
293
|
+
};
|
|
294
|
+
// Write verification
|
|
295
|
+
await writeVerificationToSession(result, testDir);
|
|
296
|
+
// Read updated session
|
|
297
|
+
const updated = await FileSystem.readFile(join(testDir, DINO_DIR_NAME, 'session.md'));
|
|
298
|
+
expect(updated).not.toContain('Old status');
|
|
299
|
+
expect(updated).toContain('**Status:** Failed');
|
|
300
|
+
expect(updated).toContain('❌ Tests failing');
|
|
301
|
+
expect(updated).toContain('## Notes');
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
describe('isEnvironmentSafe', () => {
|
|
305
|
+
it('should return true when tests passing', async () => {
|
|
306
|
+
const testState = {
|
|
307
|
+
lastFullRun: {
|
|
308
|
+
timestamp: new Date().toISOString(),
|
|
309
|
+
commit: 'abc123',
|
|
310
|
+
duration: 5000,
|
|
311
|
+
passed: 100,
|
|
312
|
+
failed: 0,
|
|
313
|
+
skipped: 0,
|
|
314
|
+
scope: 'full',
|
|
315
|
+
},
|
|
316
|
+
changedSinceTest: [],
|
|
317
|
+
lastUpdated: new Date().toISOString(),
|
|
318
|
+
};
|
|
319
|
+
await writeTestState(testState, testDir);
|
|
320
|
+
const safe = await isEnvironmentSafe(testDir);
|
|
321
|
+
expect(safe).toBe(true);
|
|
322
|
+
});
|
|
323
|
+
it('should return false when tests failing', async () => {
|
|
324
|
+
const testState = {
|
|
325
|
+
lastFullRun: {
|
|
326
|
+
timestamp: new Date().toISOString(),
|
|
327
|
+
commit: 'abc123',
|
|
328
|
+
duration: 5000,
|
|
329
|
+
passed: 95,
|
|
330
|
+
failed: 5,
|
|
331
|
+
skipped: 0,
|
|
332
|
+
scope: 'full',
|
|
333
|
+
},
|
|
334
|
+
changedSinceTest: [],
|
|
335
|
+
lastUpdated: new Date().toISOString(),
|
|
336
|
+
};
|
|
337
|
+
await writeTestState(testState, testDir);
|
|
338
|
+
const safe = await isEnvironmentSafe(testDir);
|
|
339
|
+
expect(safe).toBe(false);
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
//# sourceMappingURL=pre-verify.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre-verify.test.js","sourceRoot":"","sources":["../../../../src/core/environment/__tests__/pre-verify.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Verification Module - v14.0.0
|
|
3
|
+
*
|
|
4
|
+
* Auto environment verification before implementation phase.
|
|
5
|
+
*/
|
|
6
|
+
export { verifyEnvironment, formatVerification, writeVerificationToSession, isEnvironmentSafe, } from './pre-verify.js';
|
|
7
|
+
export type { EnvironmentVerification, VerificationOptions, } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/environment/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Verification Module - v14.0.0
|
|
3
|
+
*
|
|
4
|
+
* Auto environment verification before implementation phase.
|
|
5
|
+
*/
|
|
6
|
+
export { verifyEnvironment, formatVerification, writeVerificationToSession, isEnvironmentSafe, } from './pre-verify.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/environment/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Pre-Verification - v14.0.0
|
|
3
|
+
*
|
|
4
|
+
* Verifies environment is in good state before implementation phase begins.
|
|
5
|
+
* Inspired by Anthropic's "Effective Harnesses for Long-Running Agents" pattern.
|
|
6
|
+
*
|
|
7
|
+
* Blocks implementation if:
|
|
8
|
+
* - Tests are failing
|
|
9
|
+
* - Build is broken
|
|
10
|
+
* - Critical errors exist
|
|
11
|
+
*
|
|
12
|
+
* Reports status to session.md so Claude is aware of blockers.
|
|
13
|
+
*/
|
|
14
|
+
import type { TestState } from '../test-optimization/types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Environment verification result
|
|
17
|
+
*/
|
|
18
|
+
export interface EnvironmentVerification {
|
|
19
|
+
/** Whether environment is safe to proceed */
|
|
20
|
+
canProceed: boolean;
|
|
21
|
+
/** Human-readable status message */
|
|
22
|
+
status: string;
|
|
23
|
+
/** List of blockers preventing implementation */
|
|
24
|
+
blockers: string[];
|
|
25
|
+
/** List of warnings (non-blocking) */
|
|
26
|
+
warnings: string[];
|
|
27
|
+
/** Recommendations for fixing issues */
|
|
28
|
+
recommendations: string[];
|
|
29
|
+
/** Test state at verification time */
|
|
30
|
+
testState: TestState | null;
|
|
31
|
+
/** Timestamp of verification */
|
|
32
|
+
verifiedAt: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Verification options
|
|
36
|
+
*/
|
|
37
|
+
export interface VerificationOptions {
|
|
38
|
+
/** Project directory */
|
|
39
|
+
projectDir?: string;
|
|
40
|
+
/** Skip test verification */
|
|
41
|
+
skipTests?: boolean;
|
|
42
|
+
/** Skip build verification */
|
|
43
|
+
skipBuild?: boolean;
|
|
44
|
+
/** Force verification to pass (not recommended) */
|
|
45
|
+
force?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Verify environment before implementation
|
|
49
|
+
*/
|
|
50
|
+
export declare function verifyEnvironment(options?: VerificationOptions): Promise<EnvironmentVerification>;
|
|
51
|
+
/**
|
|
52
|
+
* Format verification result for display
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatVerification(result: EnvironmentVerification): string;
|
|
55
|
+
/**
|
|
56
|
+
* Write verification result to session.md
|
|
57
|
+
*/
|
|
58
|
+
export declare function writeVerificationToSession(result: EnvironmentVerification, projectDir?: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Quick check if environment is safe (for hook usage)
|
|
61
|
+
*/
|
|
62
|
+
export declare function isEnvironmentSafe(projectDir?: string): Promise<boolean>;
|
|
63
|
+
//# sourceMappingURL=pre-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre-verify.d.ts","sourceRoot":"","sources":["../../../src/core/environment/pre-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wCAAwC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAoElC;AAoGD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAqC1E;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,uBAAuB,EAC/B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5F"}
|