@ginkoai/cli 1.7.2 → 2.0.0-beta.2
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/commands/assign.d.ts +19 -0
- package/dist/commands/assign.d.ts.map +1 -0
- package/dist/commands/assign.js +200 -0
- package/dist/commands/assign.js.map +1 -0
- package/dist/commands/epic.d.ts.map +1 -1
- package/dist/commands/epic.js +48 -23
- package/dist/commands/epic.js.map +1 -1
- package/dist/commands/graph/api-client.d.ts +1 -0
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/insights/index.d.ts +12 -0
- package/dist/commands/insights/index.d.ts.map +1 -0
- package/dist/commands/insights/index.js +12 -0
- package/dist/commands/insights/index.js.map +1 -0
- package/dist/commands/insights/insights-command.d.ts +20 -0
- package/dist/commands/insights/insights-command.d.ts.map +1 -0
- package/dist/commands/insights/insights-command.js +369 -0
- package/dist/commands/insights/insights-command.js.map +1 -0
- package/dist/commands/principles/seed.d.ts +26 -0
- package/dist/commands/principles/seed.d.ts.map +1 -0
- package/dist/commands/principles/seed.js +150 -0
- package/dist/commands/principles/seed.js.map +1 -0
- package/dist/commands/start/start-reflection.d.ts +11 -0
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +149 -16
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/sync/index.d.ts +21 -0
- package/dist/commands/sync/index.d.ts.map +1 -0
- package/dist/commands/sync/index.js +38 -0
- package/dist/commands/sync/index.js.map +1 -0
- package/dist/commands/sync/node-syncer.d.ts +58 -0
- package/dist/commands/sync/node-syncer.d.ts.map +1 -0
- package/dist/commands/sync/node-syncer.js +192 -0
- package/dist/commands/sync/node-syncer.js.map +1 -0
- package/dist/commands/sync/sprint-syncer.d.ts +42 -0
- package/dist/commands/sync/sprint-syncer.d.ts.map +1 -0
- package/dist/commands/sync/sprint-syncer.js +274 -0
- package/dist/commands/sync/sprint-syncer.js.map +1 -0
- package/dist/commands/sync/sync-command.d.ts +16 -0
- package/dist/commands/sync/sync-command.d.ts.map +1 -0
- package/dist/commands/sync/sync-command.js +429 -0
- package/dist/commands/sync/sync-command.js.map +1 -0
- package/dist/commands/sync/types.d.ts +86 -0
- package/dist/commands/sync/types.d.ts.map +1 -0
- package/dist/commands/sync/types.js +12 -0
- package/dist/commands/sync/types.js.map +1 -0
- package/dist/core/session-log-manager.d.ts +3 -1
- package/dist/core/session-log-manager.d.ts.map +1 -1
- package/dist/core/session-log-manager.js +5 -3
- package/dist/core/session-log-manager.js.map +1 -1
- package/dist/data/standard-principles.d.ts +43 -0
- package/dist/data/standard-principles.d.ts.map +1 -0
- package/dist/data/standard-principles.js +323 -0
- package/dist/data/standard-principles.js.map +1 -0
- package/dist/index.js +54 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/insights/analyzers/anti-patterns.d.ts +32 -0
- package/dist/lib/insights/analyzers/anti-patterns.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/anti-patterns.js +302 -0
- package/dist/lib/insights/analyzers/anti-patterns.js.map +1 -0
- package/dist/lib/insights/analyzers/efficiency.d.ts +22 -0
- package/dist/lib/insights/analyzers/efficiency.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/efficiency.js +311 -0
- package/dist/lib/insights/analyzers/efficiency.js.map +1 -0
- package/dist/lib/insights/analyzers/index.d.ts +24 -0
- package/dist/lib/insights/analyzers/index.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/index.js +37 -0
- package/dist/lib/insights/analyzers/index.js.map +1 -0
- package/dist/lib/insights/analyzers/patterns.d.ts +21 -0
- package/dist/lib/insights/analyzers/patterns.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/patterns.js +337 -0
- package/dist/lib/insights/analyzers/patterns.js.map +1 -0
- package/dist/lib/insights/analyzers/quality.d.ts +29 -0
- package/dist/lib/insights/analyzers/quality.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/quality.js +371 -0
- package/dist/lib/insights/analyzers/quality.js.map +1 -0
- package/dist/lib/insights/data-collector.d.ts +68 -0
- package/dist/lib/insights/data-collector.d.ts.map +1 -0
- package/dist/lib/insights/data-collector.js +514 -0
- package/dist/lib/insights/data-collector.js.map +1 -0
- package/dist/lib/insights/index.d.ts +14 -0
- package/dist/lib/insights/index.d.ts.map +1 -0
- package/dist/lib/insights/index.js +17 -0
- package/dist/lib/insights/index.js.map +1 -0
- package/dist/lib/insights/scheduler.d.ts +71 -0
- package/dist/lib/insights/scheduler.d.ts.map +1 -0
- package/dist/lib/insights/scheduler.js +126 -0
- package/dist/lib/insights/scheduler.js.map +1 -0
- package/dist/lib/insights/types.d.ts +216 -0
- package/dist/lib/insights/types.d.ts.map +1 -0
- package/dist/lib/insights/types.js +12 -0
- package/dist/lib/insights/types.js.map +1 -0
- package/dist/templates/ai-instructions-template.d.ts +1 -0
- package/dist/templates/ai-instructions-template.d.ts.map +1 -1
- package/dist/templates/ai-instructions-template.js +51 -0
- package/dist/templates/ai-instructions-template.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/__tests__/task-timeout.test.d.ts +0 -12
- package/dist/lib/__tests__/task-timeout.test.d.ts.map +0 -1
- package/dist/lib/__tests__/task-timeout.test.js +0 -278
- package/dist/lib/__tests__/task-timeout.test.js.map +0 -1
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileType: test
|
|
3
|
-
* @status: current
|
|
4
|
-
* @updated: 2025-12-07
|
|
5
|
-
* @tags: [test, timeout, orchestrator, epic-004-sprint5, task-6]
|
|
6
|
-
* @related: [task-timeout.ts]
|
|
7
|
-
* @priority: high
|
|
8
|
-
* @complexity: medium
|
|
9
|
-
* @dependencies: [vitest, fs-extra]
|
|
10
|
-
*/
|
|
11
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
12
|
-
import fs from 'fs-extra';
|
|
13
|
-
import path from 'path';
|
|
14
|
-
import { startTaskTimeout, checkTimeouts, clearTaskTimeout, getActiveTimeouts, getTaskTimeout, getAllTimeouts, cleanupOldTimeouts, handleTimeout, TimeoutMonitor } from '../task-timeout.js';
|
|
15
|
-
// Mock dependencies
|
|
16
|
-
vi.mock('../../utils/helpers.js', () => ({
|
|
17
|
-
getGinkoDir: vi.fn(async () => '/tmp/ginko-test/.ginko'),
|
|
18
|
-
getUserEmail: vi.fn(async () => 'test@example.com'),
|
|
19
|
-
getProjectRoot: vi.fn(async () => '/tmp/ginko-test')
|
|
20
|
-
}));
|
|
21
|
-
vi.mock('../checkpoint.js', () => ({
|
|
22
|
-
createCheckpoint: vi.fn(async (taskId, agentId, message) => ({
|
|
23
|
-
id: `cp_${Date.now()}_test`,
|
|
24
|
-
taskId,
|
|
25
|
-
agentId,
|
|
26
|
-
timestamp: new Date(),
|
|
27
|
-
gitCommit: 'abc123',
|
|
28
|
-
filesModified: [],
|
|
29
|
-
eventsSince: 'event_123',
|
|
30
|
-
metadata: {},
|
|
31
|
-
message
|
|
32
|
-
}))
|
|
33
|
-
}));
|
|
34
|
-
vi.mock('../event-logger.js', () => ({
|
|
35
|
-
logEvent: vi.fn(async (entry) => ({
|
|
36
|
-
id: `event_${Date.now()}_test`,
|
|
37
|
-
user_id: 'test@example.com',
|
|
38
|
-
organization_id: 'org_test',
|
|
39
|
-
project_id: 'proj_test',
|
|
40
|
-
timestamp: new Date().toISOString(),
|
|
41
|
-
...entry
|
|
42
|
-
}))
|
|
43
|
-
}));
|
|
44
|
-
describe('task-timeout', () => {
|
|
45
|
-
const testDir = '/tmp/ginko-test/.ginko/timeouts';
|
|
46
|
-
beforeEach(async () => {
|
|
47
|
-
// Clean up test directory
|
|
48
|
-
await fs.remove(testDir);
|
|
49
|
-
await fs.ensureDir(testDir);
|
|
50
|
-
});
|
|
51
|
-
afterEach(async () => {
|
|
52
|
-
// Clean up after tests
|
|
53
|
-
await fs.remove(testDir);
|
|
54
|
-
});
|
|
55
|
-
describe('startTaskTimeout', () => {
|
|
56
|
-
it('should create a timeout with default configuration', async () => {
|
|
57
|
-
const timeout = await startTaskTimeout('TASK-1', 60000, // 60 seconds
|
|
58
|
-
'agent-123');
|
|
59
|
-
expect(timeout.taskId).toBe('TASK-1');
|
|
60
|
-
expect(timeout.agentId).toBe('agent-123');
|
|
61
|
-
expect(timeout.maxDuration).toBe(60000);
|
|
62
|
-
expect(timeout.status).toBe('active');
|
|
63
|
-
expect(timeout.startedAt).toBeInstanceOf(Date);
|
|
64
|
-
expect(timeout.timeoutAt).toBeInstanceOf(Date);
|
|
65
|
-
expect(timeout.warningAt).toBeInstanceOf(Date);
|
|
66
|
-
// Verify warning threshold (80%)
|
|
67
|
-
const expectedWarning = timeout.startedAt.getTime() + (60000 * 0.8);
|
|
68
|
-
expect(timeout.warningAt.getTime()).toBeCloseTo(expectedWarning, -1);
|
|
69
|
-
// Verify timeout time
|
|
70
|
-
const expectedTimeout = timeout.startedAt.getTime() + 60000;
|
|
71
|
-
expect(timeout.timeoutAt.getTime()).toBeCloseTo(expectedTimeout, -1);
|
|
72
|
-
});
|
|
73
|
-
it('should create a timeout with custom warning threshold', async () => {
|
|
74
|
-
const timeout = await startTaskTimeout('TASK-2', 60000, 'agent-456', { warningThreshold: 0.5 } // 50%
|
|
75
|
-
);
|
|
76
|
-
// Verify warning at 50%
|
|
77
|
-
const expectedWarning = timeout.startedAt.getTime() + (60000 * 0.5);
|
|
78
|
-
expect(timeout.warningAt.getTime()).toBeCloseTo(expectedWarning, -1);
|
|
79
|
-
});
|
|
80
|
-
it('should save timeout to file', async () => {
|
|
81
|
-
const timeout = await startTaskTimeout('TASK-3', 60000, 'agent-789');
|
|
82
|
-
const filePath = path.join(testDir, 'TASK-3.json');
|
|
83
|
-
const fileExists = await fs.pathExists(filePath);
|
|
84
|
-
expect(fileExists).toBe(true);
|
|
85
|
-
const savedData = await fs.readJSON(filePath);
|
|
86
|
-
expect(savedData.taskId).toBe('TASK-3');
|
|
87
|
-
expect(savedData.agentId).toBe('agent-789');
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
describe('getTaskTimeout', () => {
|
|
91
|
-
it('should retrieve timeout by task ID', async () => {
|
|
92
|
-
await startTaskTimeout('TASK-4', 60000, 'agent-111');
|
|
93
|
-
const timeout = await getTaskTimeout('TASK-4');
|
|
94
|
-
expect(timeout).not.toBeNull();
|
|
95
|
-
expect(timeout.taskId).toBe('TASK-4');
|
|
96
|
-
expect(timeout.agentId).toBe('agent-111');
|
|
97
|
-
});
|
|
98
|
-
it('should return null for non-existent timeout', async () => {
|
|
99
|
-
const timeout = await getTaskTimeout('TASK-NONEXISTENT');
|
|
100
|
-
expect(timeout).toBeNull();
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
describe('getActiveTimeouts', () => {
|
|
104
|
-
it('should return all active timeouts', async () => {
|
|
105
|
-
await startTaskTimeout('TASK-5', 60000, 'agent-222');
|
|
106
|
-
await startTaskTimeout('TASK-6', 60000, 'agent-333');
|
|
107
|
-
const activeTimeouts = await getActiveTimeouts();
|
|
108
|
-
expect(activeTimeouts).toHaveLength(2);
|
|
109
|
-
expect(activeTimeouts.map(t => t.taskId)).toContain('TASK-5');
|
|
110
|
-
expect(activeTimeouts.map(t => t.taskId)).toContain('TASK-6');
|
|
111
|
-
});
|
|
112
|
-
it('should not return completed timeouts', async () => {
|
|
113
|
-
await startTaskTimeout('TASK-7', 60000, 'agent-444');
|
|
114
|
-
await startTaskTimeout('TASK-8', 60000, 'agent-555');
|
|
115
|
-
// Complete one timeout
|
|
116
|
-
await clearTaskTimeout('TASK-7');
|
|
117
|
-
const activeTimeouts = await getActiveTimeouts();
|
|
118
|
-
expect(activeTimeouts).toHaveLength(1);
|
|
119
|
-
expect(activeTimeouts[0].taskId).toBe('TASK-8');
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
describe('clearTaskTimeout', () => {
|
|
123
|
-
it('should mark timeout as completed', async () => {
|
|
124
|
-
await startTaskTimeout('TASK-9', 60000, 'agent-666');
|
|
125
|
-
await clearTaskTimeout('TASK-9');
|
|
126
|
-
const timeout = await getTaskTimeout('TASK-9');
|
|
127
|
-
expect(timeout).not.toBeNull();
|
|
128
|
-
expect(timeout.status).toBe('completed');
|
|
129
|
-
});
|
|
130
|
-
it('should remove from active timeouts', async () => {
|
|
131
|
-
await startTaskTimeout('TASK-10', 60000, 'agent-777');
|
|
132
|
-
let activeTimeouts = await getActiveTimeouts();
|
|
133
|
-
expect(activeTimeouts).toHaveLength(1);
|
|
134
|
-
await clearTaskTimeout('TASK-10');
|
|
135
|
-
activeTimeouts = await getActiveTimeouts();
|
|
136
|
-
expect(activeTimeouts).toHaveLength(0);
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
describe('checkTimeouts', () => {
|
|
140
|
-
it('should detect timed out tasks', async () => {
|
|
141
|
-
// Create timeout with very short duration (100ms)
|
|
142
|
-
await startTaskTimeout('TASK-11', 100, 'agent-888');
|
|
143
|
-
// Wait for timeout to expire
|
|
144
|
-
await new Promise(resolve => setTimeout(resolve, 150));
|
|
145
|
-
const timedOutTasks = await checkTimeouts();
|
|
146
|
-
expect(timedOutTasks).toHaveLength(1);
|
|
147
|
-
expect(timedOutTasks[0].taskId).toBe('TASK-11');
|
|
148
|
-
expect(timedOutTasks[0].agentId).toBe('agent-888');
|
|
149
|
-
expect(timedOutTasks[0].checkpointId).toBeDefined();
|
|
150
|
-
expect(timedOutTasks[0].escalationEventId).toBeDefined();
|
|
151
|
-
});
|
|
152
|
-
it('should update status to warning at threshold', async () => {
|
|
153
|
-
// Create timeout with 100ms duration, warning at 50ms (50%)
|
|
154
|
-
await startTaskTimeout('TASK-12', 100, 'agent-999', { warningThreshold: 0.5 });
|
|
155
|
-
// Wait for warning threshold
|
|
156
|
-
await new Promise(resolve => setTimeout(resolve, 60));
|
|
157
|
-
await checkTimeouts();
|
|
158
|
-
const timeout = await getTaskTimeout('TASK-12');
|
|
159
|
-
expect(timeout).not.toBeNull();
|
|
160
|
-
expect(timeout.status).toBe('warning');
|
|
161
|
-
});
|
|
162
|
-
it('should not process already timed out tasks', async () => {
|
|
163
|
-
// Create and timeout a task
|
|
164
|
-
await startTaskTimeout('TASK-13', 100, 'agent-1010');
|
|
165
|
-
await new Promise(resolve => setTimeout(resolve, 150));
|
|
166
|
-
const firstCheck = await checkTimeouts();
|
|
167
|
-
expect(firstCheck).toHaveLength(1);
|
|
168
|
-
// Check again
|
|
169
|
-
const secondCheck = await checkTimeouts();
|
|
170
|
-
// Should not process again
|
|
171
|
-
expect(secondCheck).toHaveLength(0);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
describe('handleTimeout', () => {
|
|
175
|
-
it('should create checkpoint and escalation event', async () => {
|
|
176
|
-
const { createCheckpoint } = await import('../checkpoint.js');
|
|
177
|
-
const { logEvent } = await import('../event-logger.js');
|
|
178
|
-
await startTaskTimeout('TASK-14', 100, 'agent-1111');
|
|
179
|
-
await new Promise(resolve => setTimeout(resolve, 150));
|
|
180
|
-
const result = await handleTimeout('TASK-14');
|
|
181
|
-
expect(result).not.toBeNull();
|
|
182
|
-
expect(result.taskId).toBe('TASK-14');
|
|
183
|
-
expect(result.checkpointId).toBeDefined();
|
|
184
|
-
expect(result.escalationEventId).toBeDefined();
|
|
185
|
-
// Verify checkpoint was created
|
|
186
|
-
expect(createCheckpoint).toHaveBeenCalledWith('TASK-14', 'agent-1111', expect.stringContaining('timeout'), expect.objectContaining({ reason: 'timeout' }));
|
|
187
|
-
// Verify escalation event was logged
|
|
188
|
-
expect(logEvent).toHaveBeenCalledWith(expect.objectContaining({
|
|
189
|
-
category: 'blocker',
|
|
190
|
-
description: expect.stringContaining('TASK-14 timed out'),
|
|
191
|
-
blocker_severity: 'high'
|
|
192
|
-
}));
|
|
193
|
-
});
|
|
194
|
-
it('should update timeout status to timed_out', async () => {
|
|
195
|
-
await startTaskTimeout('TASK-15', 100, 'agent-1212');
|
|
196
|
-
await new Promise(resolve => setTimeout(resolve, 150));
|
|
197
|
-
await handleTimeout('TASK-15');
|
|
198
|
-
const timeout = await getTaskTimeout('TASK-15');
|
|
199
|
-
expect(timeout).not.toBeNull();
|
|
200
|
-
expect(timeout.status).toBe('timed_out');
|
|
201
|
-
expect(timeout.checkpointId).toBeDefined();
|
|
202
|
-
expect(timeout.escalationEventId).toBeDefined();
|
|
203
|
-
});
|
|
204
|
-
it('should return null for non-existent timeout', async () => {
|
|
205
|
-
const result = await handleTimeout('TASK-NONEXISTENT');
|
|
206
|
-
expect(result).toBeNull();
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
describe('getAllTimeouts', () => {
|
|
210
|
-
it('should return all timeouts regardless of status', async () => {
|
|
211
|
-
await startTaskTimeout('TASK-16', 60000, 'agent-1313');
|
|
212
|
-
await startTaskTimeout('TASK-17', 100, 'agent-1414');
|
|
213
|
-
// Complete one
|
|
214
|
-
await clearTaskTimeout('TASK-16');
|
|
215
|
-
// Timeout another
|
|
216
|
-
await new Promise(resolve => setTimeout(resolve, 150));
|
|
217
|
-
await checkTimeouts();
|
|
218
|
-
const allTimeouts = await getAllTimeouts();
|
|
219
|
-
expect(allTimeouts).toHaveLength(2);
|
|
220
|
-
const statuses = allTimeouts.map(t => t.status).sort();
|
|
221
|
-
expect(statuses).toContain('completed');
|
|
222
|
-
expect(statuses).toContain('timed_out');
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
describe('cleanupOldTimeouts', () => {
|
|
226
|
-
it('should remove old completed timeouts', async () => {
|
|
227
|
-
await startTaskTimeout('TASK-18', 60000, 'agent-1515');
|
|
228
|
-
// Manually set old timestamp
|
|
229
|
-
const filePath = path.join(testDir, 'TASK-18.json');
|
|
230
|
-
const timeout = await fs.readJSON(filePath);
|
|
231
|
-
const oldDate = new Date(Date.now() - 8 * 24 * 60 * 60 * 1000); // 8 days ago
|
|
232
|
-
timeout.startedAt = oldDate.toISOString();
|
|
233
|
-
timeout.status = 'completed';
|
|
234
|
-
await fs.writeJSON(filePath, timeout);
|
|
235
|
-
// Clean up timeouts older than 7 days
|
|
236
|
-
const cleanedCount = await cleanupOldTimeouts(7 * 24 * 60 * 60 * 1000);
|
|
237
|
-
expect(cleanedCount).toBe(1);
|
|
238
|
-
const fileExists = await fs.pathExists(filePath);
|
|
239
|
-
expect(fileExists).toBe(false);
|
|
240
|
-
});
|
|
241
|
-
it('should not remove active timeouts', async () => {
|
|
242
|
-
await startTaskTimeout('TASK-19', 60000, 'agent-1616');
|
|
243
|
-
// Manually set old timestamp but keep active
|
|
244
|
-
const filePath = path.join(testDir, 'TASK-19.json');
|
|
245
|
-
const timeout = await fs.readJSON(filePath);
|
|
246
|
-
const oldDate = new Date(Date.now() - 8 * 24 * 60 * 60 * 1000);
|
|
247
|
-
timeout.startedAt = oldDate.toISOString();
|
|
248
|
-
// status remains 'active'
|
|
249
|
-
await fs.writeJSON(filePath, timeout);
|
|
250
|
-
const cleanedCount = await cleanupOldTimeouts(7 * 24 * 60 * 60 * 1000);
|
|
251
|
-
expect(cleanedCount).toBe(0);
|
|
252
|
-
const fileExists = await fs.pathExists(filePath);
|
|
253
|
-
expect(fileExists).toBe(true);
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
describe('TimeoutMonitor', () => {
|
|
257
|
-
it('should start and stop monitoring', () => {
|
|
258
|
-
const monitor = new TimeoutMonitor({ checkInterval: 1000 });
|
|
259
|
-
monitor.start();
|
|
260
|
-
let status = monitor.getStatus();
|
|
261
|
-
expect(status.isRunning).toBe(true);
|
|
262
|
-
expect(status.checkInterval).toBe(1000);
|
|
263
|
-
monitor.stop();
|
|
264
|
-
status = monitor.getStatus();
|
|
265
|
-
expect(status.isRunning).toBe(false);
|
|
266
|
-
});
|
|
267
|
-
it('should not start twice', () => {
|
|
268
|
-
const monitor = new TimeoutMonitor();
|
|
269
|
-
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
270
|
-
monitor.start();
|
|
271
|
-
monitor.start();
|
|
272
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('already started'));
|
|
273
|
-
monitor.stop();
|
|
274
|
-
consoleSpy.mockRestore();
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
});
|
|
278
|
-
//# sourceMappingURL=task-timeout.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-timeout.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/task-timeout.test.ts"],"names":[],"mappings":"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"}
|