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.
Files changed (88) hide show
  1. package/bin/dino-hud.js +1 -1
  2. package/bin/dino.js +1 -1
  3. package/dist/core/agents/context-isolation.js +26 -26
  4. package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
  5. package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
  6. package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
  7. package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
  8. package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
  9. package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
  10. package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
  11. package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
  12. package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
  13. package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
  14. package/dist/core/context/__tests__/output-persistence.test.js +246 -0
  15. package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
  16. package/dist/core/context/budget-thresholds.d.ts +167 -0
  17. package/dist/core/context/budget-thresholds.d.ts.map +1 -0
  18. package/dist/core/context/budget-thresholds.js +234 -0
  19. package/dist/core/context/budget-thresholds.js.map +1 -0
  20. package/dist/core/context/compaction-engine.d.ts +193 -0
  21. package/dist/core/context/compaction-engine.d.ts.map +1 -0
  22. package/dist/core/context/compaction-engine.js +376 -0
  23. package/dist/core/context/compaction-engine.js.map +1 -0
  24. package/dist/core/context/index.d.ts +7 -3
  25. package/dist/core/context/index.d.ts.map +1 -1
  26. package/dist/core/context/index.js +22 -3
  27. package/dist/core/context/index.js.map +1 -1
  28. package/dist/core/context/output-persistence.d.ts +142 -0
  29. package/dist/core/context/output-persistence.d.ts.map +1 -0
  30. package/dist/core/context/output-persistence.js +242 -0
  31. package/dist/core/context/output-persistence.js.map +1 -0
  32. package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
  33. package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
  34. package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
  35. package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
  36. package/dist/core/environment/index.d.ts +8 -0
  37. package/dist/core/environment/index.d.ts.map +1 -0
  38. package/dist/core/environment/index.js +7 -0
  39. package/dist/core/environment/index.js.map +1 -0
  40. package/dist/core/environment/pre-verify.d.ts +63 -0
  41. package/dist/core/environment/pre-verify.d.ts.map +1 -0
  42. package/dist/core/environment/pre-verify.js +221 -0
  43. package/dist/core/environment/pre-verify.js.map +1 -0
  44. package/dist/core/environment/types.d.ts +37 -0
  45. package/dist/core/environment/types.d.ts.map +1 -0
  46. package/dist/core/environment/types.js +5 -0
  47. package/dist/core/environment/types.js.map +1 -0
  48. package/dist/core/intelligence/context-budget.d.ts +10 -5
  49. package/dist/core/intelligence/context-budget.d.ts.map +1 -1
  50. package/dist/core/intelligence/context-budget.js +12 -5
  51. package/dist/core/intelligence/context-budget.js.map +1 -1
  52. package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
  53. package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
  54. package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
  55. package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
  56. package/dist/mcp/dynamic-updates.d.ts +167 -0
  57. package/dist/mcp/dynamic-updates.d.ts.map +1 -0
  58. package/dist/mcp/dynamic-updates.js +313 -0
  59. package/dist/mcp/dynamic-updates.js.map +1 -0
  60. package/dist/mcp/index.d.ts +4 -2
  61. package/dist/mcp/index.d.ts.map +1 -1
  62. package/dist/mcp/index.js +5 -2
  63. package/dist/mcp/index.js.map +1 -1
  64. package/dist/mcp/registry.d.ts +4 -4
  65. package/dist/mcp/registry.d.ts.map +1 -1
  66. package/dist/mcp/registry.js +16 -16
  67. package/dist/mcp/registry.js.map +1 -1
  68. package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
  69. package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
  70. package/dist/mcp/tools/__tests__/environment.test.js +219 -0
  71. package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
  72. package/dist/mcp/tools/environment.d.ts +27 -0
  73. package/dist/mcp/tools/environment.d.ts.map +1 -0
  74. package/dist/mcp/tools/environment.js +97 -0
  75. package/dist/mcp/tools/environment.js.map +1 -0
  76. package/dist/mcp/tools/index.d.ts +3 -1
  77. package/dist/mcp/tools/index.d.ts.map +1 -1
  78. package/dist/mcp/tools/index.js +13 -1
  79. package/dist/mcp/tools/index.js.map +1 -1
  80. package/dist/mcp/tools/output-persistence.d.ts +44 -0
  81. package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
  82. package/dist/mcp/tools/output-persistence.js +208 -0
  83. package/dist/mcp/tools/output-persistence.js.map +1 -0
  84. package/dist/mcp-server.d.ts +2 -1
  85. package/dist/mcp-server.d.ts.map +1 -1
  86. package/dist/mcp-server.js +27 -2
  87. package/dist/mcp-server.js.map +1 -1
  88. 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"}