@curie-agent/core 0.4.3 → 0.4.4
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/.tsbuildinfo +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/reminder-parser.d.ts +6 -0
- package/dist/src/reminder-parser.d.ts.map +1 -1
- package/dist/src/reminder-parser.js +85 -105
- package/dist/src/reminder-parser.js.map +1 -1
- package/dist/src/task-manager.d.ts +53 -12
- package/dist/src/task-manager.d.ts.map +1 -1
- package/dist/src/task-manager.js +225 -124
- package/dist/src/task-manager.js.map +1 -1
- package/dist/src/task-migration.d.ts +29 -2
- package/dist/src/task-migration.d.ts.map +1 -1
- package/dist/src/task-migration.js +115 -7
- package/dist/src/task-migration.js.map +1 -1
- package/package.json +1 -1
package/dist/src/task-manager.js
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Unified task manager —
|
|
2
|
+
* Unified task manager — the single owner of the task store.
|
|
3
3
|
* Manages tasks across both personal (~/.curie-agent/tasks.json) and project (<cwd>/tasks.json) scopes.
|
|
4
|
+
*
|
|
5
|
+
* Two invariants matter here:
|
|
6
|
+
* 1. Nothing is ever deleted automatically. Only explicit user actions
|
|
7
|
+
* (`removeTask`, `clearCompleted`) drop a task.
|
|
8
|
+
* 2. Every write goes through `mutate()`, which re-reads the file if another
|
|
9
|
+
* process touched it since our last read. Without this, two in-memory
|
|
10
|
+
* copies of the task array silently overwrite each other's work.
|
|
4
11
|
*/
|
|
5
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
|
|
6
13
|
import { homedir } from 'node:os';
|
|
7
|
-
import { dirname, join } from 'node:path';
|
|
8
|
-
import { scheduleLabel,
|
|
14
|
+
import { dirname, join, resolve } from 'node:path';
|
|
15
|
+
import { scheduleLabel, generateTaskId, taskTimestamp, pickNextSchedule, computeNextFire } from './unified-task.js';
|
|
9
16
|
// ---------------------------------------------------------------------------
|
|
10
17
|
// Constants
|
|
11
18
|
// ---------------------------------------------------------------------------
|
|
12
19
|
const DEFAULT_FILE = join(homedir(), '.curie-agent', 'tasks.json');
|
|
13
|
-
|
|
20
|
+
/** Minimum length accepted for an ID-prefix lookup. */
|
|
21
|
+
const MIN_PREFIX_LENGTH = 4;
|
|
14
22
|
// ---------------------------------------------------------------------------
|
|
15
23
|
// File I/O helpers
|
|
16
24
|
// ---------------------------------------------------------------------------
|
|
25
|
+
function emptyFile() {
|
|
26
|
+
return { $schema: 'tasks.schema.json', version: 1, tasks: [] };
|
|
27
|
+
}
|
|
17
28
|
function loadTasksFile(filePath) {
|
|
18
29
|
if (existsSync(filePath)) {
|
|
19
30
|
try {
|
|
@@ -26,108 +37,163 @@ function loadTasksFile(filePath) {
|
|
|
26
37
|
/* corrupt — start fresh */
|
|
27
38
|
}
|
|
28
39
|
}
|
|
29
|
-
return
|
|
40
|
+
return emptyFile();
|
|
30
41
|
}
|
|
42
|
+
/** Write via temp file + rename so a crash mid-write can't truncate the store. */
|
|
31
43
|
function saveTasksFile(data, filePath) {
|
|
32
44
|
const dir = dirname(filePath);
|
|
33
45
|
if (!existsSync(dir)) {
|
|
34
46
|
mkdirSync(dir, { recursive: true });
|
|
35
47
|
}
|
|
36
|
-
|
|
48
|
+
const tmpPath = `${filePath}.tmp`;
|
|
49
|
+
writeFileSync(tmpPath, JSON.stringify(data, null, 2), 'utf-8');
|
|
50
|
+
renameSync(tmpPath, filePath);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Cheap fingerprint of the file on disk. mtime alone can collide when two
|
|
54
|
+
* writes land inside the same millisecond, so size is folded in.
|
|
55
|
+
*/
|
|
56
|
+
function fingerprint(filePath) {
|
|
57
|
+
try {
|
|
58
|
+
const stat = statSync(filePath);
|
|
59
|
+
return `${String(stat.mtimeMs)}:${String(stat.size)}`;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return '';
|
|
63
|
+
}
|
|
37
64
|
}
|
|
38
65
|
// ---------------------------------------------------------------------------
|
|
39
66
|
// TaskManager class
|
|
40
67
|
// ---------------------------------------------------------------------------
|
|
41
68
|
export class TaskManager {
|
|
42
69
|
data;
|
|
43
|
-
/** TTL for pruning completed tasks. */
|
|
44
|
-
ttlMs;
|
|
45
70
|
/** File path for persistence. */
|
|
46
71
|
filePath;
|
|
72
|
+
/** Fingerprint of the file as of our last read/write — used to detect foreign writes. */
|
|
73
|
+
seenFingerprint = '';
|
|
47
74
|
/** Set of task IDs currently being executed (prevents re-firing). */
|
|
48
75
|
executing = new Set();
|
|
49
|
-
constructor(
|
|
50
|
-
|
|
51
|
-
this.filePath = optTtlOrPath;
|
|
52
|
-
this.ttlMs = DEFAULT_TTL_MS;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.ttlMs = optTtlOrPath ?? DEFAULT_TTL_MS;
|
|
56
|
-
this.filePath = optFilePath ?? DEFAULT_FILE;
|
|
57
|
-
}
|
|
76
|
+
constructor(filePath = DEFAULT_FILE) {
|
|
77
|
+
this.filePath = filePath;
|
|
58
78
|
this.data = loadTasksFile(this.filePath);
|
|
59
|
-
this.
|
|
79
|
+
this.seenFingerprint = fingerprint(this.filePath);
|
|
60
80
|
}
|
|
61
81
|
/** Reload the file from disk. */
|
|
62
82
|
load() {
|
|
63
83
|
this.data = loadTasksFile(this.filePath);
|
|
84
|
+
this.seenFingerprint = fingerprint(this.filePath);
|
|
64
85
|
return this.data;
|
|
65
86
|
}
|
|
66
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Persist the in-memory array as-is. Prefer the mutating methods below —
|
|
89
|
+
* they reload first, so they can't clobber another writer's changes.
|
|
90
|
+
*/
|
|
67
91
|
save() {
|
|
68
92
|
saveTasksFile(this.data, this.filePath);
|
|
93
|
+
this.seenFingerprint = fingerprint(this.filePath);
|
|
94
|
+
}
|
|
95
|
+
/** Re-read the file if someone else wrote it since we last looked. */
|
|
96
|
+
refreshIfStale() {
|
|
97
|
+
const current = fingerprint(this.filePath);
|
|
98
|
+
if (current !== '' && current !== this.seenFingerprint) {
|
|
99
|
+
this.data = loadTasksFile(this.filePath);
|
|
100
|
+
this.seenFingerprint = current;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The only write path: reload-if-stale → mutate → persist.
|
|
105
|
+
* All lookups must happen inside `fn`, since a refresh replaces the array.
|
|
106
|
+
*/
|
|
107
|
+
mutate(fn) {
|
|
108
|
+
this.refreshIfStale();
|
|
109
|
+
const result = fn();
|
|
110
|
+
this.save();
|
|
111
|
+
return result;
|
|
69
112
|
}
|
|
70
113
|
// -----------------------------------------------------------------------
|
|
71
114
|
// Creation
|
|
72
115
|
// -----------------------------------------------------------------------
|
|
73
116
|
/** Create a new task with the given mode and scope. */
|
|
74
117
|
create(options) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
this.save();
|
|
97
|
-
return task;
|
|
118
|
+
return this.mutate(() => {
|
|
119
|
+
const task = {
|
|
120
|
+
id: generateTaskId(),
|
|
121
|
+
title: options.title,
|
|
122
|
+
description: options.description ?? '',
|
|
123
|
+
// human tasks land on the todo list; agent/notify tasks wait for the scheduler
|
|
124
|
+
status: options.mode === 'human' ? 'todo' : 'pending',
|
|
125
|
+
priority: options.priority ?? 'medium',
|
|
126
|
+
tags: options.tags ?? [],
|
|
127
|
+
mode: options.mode,
|
|
128
|
+
scheduled_at: options.scheduled_at,
|
|
129
|
+
frequency: options.frequency ?? null,
|
|
130
|
+
scope: options.scope,
|
|
131
|
+
metadata: options.metadata,
|
|
132
|
+
order: this.data.tasks.length,
|
|
133
|
+
created_at: taskTimestamp(),
|
|
134
|
+
completed_at: undefined,
|
|
135
|
+
};
|
|
136
|
+
this.data.tasks.push(task);
|
|
137
|
+
return task;
|
|
138
|
+
});
|
|
98
139
|
}
|
|
99
140
|
// -----------------------------------------------------------------------
|
|
100
141
|
// Status updates
|
|
101
142
|
// -----------------------------------------------------------------------
|
|
102
143
|
/** Update a task's status and set completed_at if terminal. */
|
|
103
144
|
updateTaskStatus(id, status) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
145
|
+
return this.mutate(() => {
|
|
146
|
+
const task = this.findTask(id);
|
|
147
|
+
if (!task)
|
|
148
|
+
return false;
|
|
149
|
+
task.status = status;
|
|
150
|
+
const terminalStatuses = ['done', 'canceled', 'completed', 'failed'];
|
|
151
|
+
if (terminalStatuses.includes(status)) {
|
|
152
|
+
task.completed_at = taskTimestamp();
|
|
153
|
+
}
|
|
154
|
+
// Recurring tasks never reach a terminal state — they re-arm instead.
|
|
155
|
+
if (task.frequency && status === 'done') {
|
|
156
|
+
task.status = 'pending';
|
|
157
|
+
delete task.completed_at;
|
|
158
|
+
}
|
|
159
|
+
return true;
|
|
160
|
+
});
|
|
120
161
|
}
|
|
121
162
|
/** Advance through the manual task lifecycle (todo → in_progress → done). */
|
|
122
163
|
setTaskStatus(id, status) {
|
|
123
164
|
return this.updateTaskStatus(id, status);
|
|
124
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Apply a partial patch to a task. Use this instead of mutating the object
|
|
168
|
+
* returned by `findTask()` and calling `save()` — that pattern races.
|
|
169
|
+
*/
|
|
170
|
+
updateTask(id, patch) {
|
|
171
|
+
return this.mutate(() => {
|
|
172
|
+
const task = this.findTask(id);
|
|
173
|
+
if (!task)
|
|
174
|
+
return undefined;
|
|
175
|
+
Object.assign(task, patch);
|
|
176
|
+
return task;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
125
179
|
// -----------------------------------------------------------------------
|
|
126
180
|
// Query
|
|
127
181
|
// -----------------------------------------------------------------------
|
|
128
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* Find a single task by ID. Falls back to a unique prefix match, so the
|
|
184
|
+
* truncated IDs shown by `/todo list` and `/cron list` are usable directly.
|
|
185
|
+
* Ambiguous prefixes resolve to undefined rather than an arbitrary task.
|
|
186
|
+
*/
|
|
129
187
|
findTask(id) {
|
|
130
|
-
|
|
188
|
+
if (!id)
|
|
189
|
+
return undefined;
|
|
190
|
+
const exact = this.data.tasks.find((t) => t.id === id);
|
|
191
|
+
if (exact)
|
|
192
|
+
return exact;
|
|
193
|
+
if (id.length < MIN_PREFIX_LENGTH)
|
|
194
|
+
return undefined;
|
|
195
|
+
const matches = this.data.tasks.filter((t) => t.id.startsWith(id));
|
|
196
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
131
197
|
}
|
|
132
198
|
/** List tasks with optional filters. */
|
|
133
199
|
list(options) {
|
|
@@ -151,7 +217,7 @@ export class TaskManager {
|
|
|
151
217
|
});
|
|
152
218
|
return tasks;
|
|
153
219
|
}
|
|
154
|
-
/** Get pending scheduled tasks that are due (mode=
|
|
220
|
+
/** Get pending scheduled tasks that are due (mode=agent or notify with scheduled_at <= now). */
|
|
155
221
|
getNextTasks(now) {
|
|
156
222
|
const reference = now ?? Date.now();
|
|
157
223
|
return this.data.tasks.filter((t) => {
|
|
@@ -169,13 +235,16 @@ export class TaskManager {
|
|
|
169
235
|
// -----------------------------------------------------------------------
|
|
170
236
|
/** Mark a task as currently executing. */
|
|
171
237
|
markExecuting(id) {
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
238
|
+
const marked = this.mutate(() => {
|
|
239
|
+
const task = this.findTask(id);
|
|
240
|
+
if (!task)
|
|
241
|
+
return false;
|
|
242
|
+
task.status = 'executing';
|
|
243
|
+
return true;
|
|
244
|
+
});
|
|
245
|
+
if (marked)
|
|
246
|
+
this.executing.add(id);
|
|
247
|
+
return marked;
|
|
179
248
|
}
|
|
180
249
|
/** Clear executing flag for a task. */
|
|
181
250
|
clearExecuting(id) {
|
|
@@ -186,35 +255,60 @@ export class TaskManager {
|
|
|
186
255
|
// -----------------------------------------------------------------------
|
|
187
256
|
/** Cancel (soft-delete) a pending/fired task. */
|
|
188
257
|
cancelTask(id) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
258
|
+
return this.mutate(() => {
|
|
259
|
+
const task = this.findTask(id);
|
|
260
|
+
if (!task)
|
|
261
|
+
return false;
|
|
262
|
+
task.status = 'canceled';
|
|
263
|
+
task.completed_at = taskTimestamp();
|
|
264
|
+
return true;
|
|
265
|
+
});
|
|
196
266
|
}
|
|
197
|
-
/**
|
|
267
|
+
/**
|
|
268
|
+
* Remove completed/canceled/failed tasks (hard-delete).
|
|
269
|
+
* Explicit user action only — nothing calls this on a timer.
|
|
270
|
+
*/
|
|
198
271
|
clearCompleted() {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
272
|
+
return this.mutate(() => {
|
|
273
|
+
const before = this.data.tasks.length;
|
|
274
|
+
this.data.tasks = this.data.tasks.filter((t) => t.status !== 'done' && t.status !== 'canceled' && t.status !== 'completed' && t.status !== 'failed');
|
|
275
|
+
const removed = before - this.data.tasks.length;
|
|
276
|
+
if (removed > 0) {
|
|
277
|
+
this.renormalizeOrders();
|
|
278
|
+
}
|
|
279
|
+
return removed;
|
|
280
|
+
});
|
|
208
281
|
}
|
|
209
282
|
/** Remove a task permanently. */
|
|
210
283
|
removeTask(id) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
284
|
+
return this.mutate(() => {
|
|
285
|
+
const task = this.findTask(id);
|
|
286
|
+
if (!task)
|
|
287
|
+
return false;
|
|
288
|
+
const idx = this.data.tasks.indexOf(task);
|
|
289
|
+
if (idx === -1)
|
|
290
|
+
return false;
|
|
291
|
+
this.data.tasks.splice(idx, 1);
|
|
292
|
+
this.renormalizeOrders();
|
|
293
|
+
return true;
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
/** Reorder tasks to match the given ID sequence. IDs not listed keep their relative order. */
|
|
297
|
+
reorder(ids) {
|
|
298
|
+
return this.mutate(() => {
|
|
299
|
+
const rank = new Map();
|
|
300
|
+
ids.forEach((id, i) => {
|
|
301
|
+
const task = this.findTask(id);
|
|
302
|
+
if (task)
|
|
303
|
+
rank.set(task.id, i);
|
|
304
|
+
});
|
|
305
|
+
if (rank.size === 0)
|
|
306
|
+
return 0;
|
|
307
|
+
const fallback = rank.size;
|
|
308
|
+
this.data.tasks.sort((a, b) => (rank.get(a.id) ?? fallback + a.order) - (rank.get(b.id) ?? fallback + b.order));
|
|
309
|
+
this.renormalizeOrders();
|
|
310
|
+
return rank.size;
|
|
311
|
+
});
|
|
218
312
|
}
|
|
219
313
|
/** Renormalize the `order` field for all tasks in scope. */
|
|
220
314
|
renormalizeOrders() {
|
|
@@ -223,29 +317,6 @@ export class TaskManager {
|
|
|
223
317
|
task.order = order++;
|
|
224
318
|
}
|
|
225
319
|
}
|
|
226
|
-
// -----------------------------------------------------------------------
|
|
227
|
-
// Pruning
|
|
228
|
-
// -----------------------------------------------------------------------
|
|
229
|
-
/** Remove completed tasks older than the cutoff. Pending/pending-like tasks always kept. */
|
|
230
|
-
pruneOld(cutoff) {
|
|
231
|
-
const before = this.data.tasks.length;
|
|
232
|
-
this.data.tasks = this.data.tasks.filter((t) => t.status === 'pending' || (t.scheduled_at && t.scheduled_at > cutoff) || t.created_at > new Date(cutoff).toISOString());
|
|
233
|
-
// Actually, prune by timestamp: keep pending tasks forever, remove old completed ones
|
|
234
|
-
this.data.tasks = this.data.tasks.filter((t) => {
|
|
235
|
-
if (t.status === 'pending')
|
|
236
|
-
return true;
|
|
237
|
-
if (!t.completed_at)
|
|
238
|
-
return t.created_at > new Date(cutoff).toISOString();
|
|
239
|
-
const completedTime = new Date(t.completed_at).getTime();
|
|
240
|
-
return completedTime >= cutoff;
|
|
241
|
-
});
|
|
242
|
-
const removed = before - this.data.tasks.length;
|
|
243
|
-
if (removed > 0) {
|
|
244
|
-
this.renormalizeOrders();
|
|
245
|
-
this.save();
|
|
246
|
-
}
|
|
247
|
-
return removed;
|
|
248
|
-
}
|
|
249
320
|
/** Count of pending tasks. */
|
|
250
321
|
get pendingCount() {
|
|
251
322
|
return this.data.tasks.filter((t) => t.status === 'pending').length;
|
|
@@ -253,20 +324,24 @@ export class TaskManager {
|
|
|
253
324
|
// -----------------------------------------------------------------------
|
|
254
325
|
// Heartbeat helpers
|
|
255
326
|
// -----------------------------------------------------------------------
|
|
256
|
-
/** Check if a task is a recurring heartbeat (
|
|
327
|
+
/** Check if a task is a recurring heartbeat (agent mode with a frequency). */
|
|
257
328
|
isHeartbeat(task) {
|
|
258
|
-
return task.mode === 'agent' && task.frequency !== null;
|
|
329
|
+
return task.mode === 'agent' && task.frequency !== null && task.frequency !== undefined;
|
|
259
330
|
}
|
|
260
331
|
/** Get all pending heartbeat tasks. */
|
|
261
332
|
getHeartbeats() {
|
|
262
|
-
return this.data.tasks.filter((t) => t.mode === 'agent' && t.frequency !== null && t.status === 'pending');
|
|
333
|
+
return this.data.tasks.filter((t) => t.mode === 'agent' && t.frequency !== null && t.frequency !== undefined && t.status === 'pending');
|
|
263
334
|
}
|
|
264
335
|
// -----------------------------------------------------------------------
|
|
265
336
|
// Heartbeat schedule management
|
|
266
337
|
// -----------------------------------------------------------------------
|
|
267
338
|
/**
|
|
268
339
|
* Evaluate all five heartbeat schedule settings and ensure exactly one
|
|
269
|
-
* pending
|
|
340
|
+
* pending agent+frequency task exists in the store. Called after settings change.
|
|
341
|
+
*
|
|
342
|
+
* If the winning schedule is unchanged, `scheduled_at` is left alone —
|
|
343
|
+
* recomputing it from "now" on every config change silently skips the slot
|
|
344
|
+
* the user was waiting for.
|
|
270
345
|
*/
|
|
271
346
|
rescheduleFromSettings(settings, now) {
|
|
272
347
|
const ref = now ?? Date.now();
|
|
@@ -279,10 +354,14 @@ export class TaskManager {
|
|
|
279
354
|
this.updateTaskStatus(extra.id, 'canceled');
|
|
280
355
|
}
|
|
281
356
|
if (primary) {
|
|
282
|
-
primary.frequency
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
this.
|
|
357
|
+
const alreadyArmed = primary.frequency?.type === picked.type && primary.frequency.value === picked.value;
|
|
358
|
+
if (alreadyArmed)
|
|
359
|
+
return;
|
|
360
|
+
this.updateTask(primary.id, {
|
|
361
|
+
frequency: picked,
|
|
362
|
+
title: `Heartbeat: ${scheduleLabel(picked.type)}`,
|
|
363
|
+
scheduled_at: computeNextFire(picked, ref),
|
|
364
|
+
});
|
|
286
365
|
}
|
|
287
366
|
else {
|
|
288
367
|
this.create({
|
|
@@ -305,4 +384,26 @@ export class TaskManager {
|
|
|
305
384
|
return count;
|
|
306
385
|
}
|
|
307
386
|
}
|
|
387
|
+
// ---------------------------------------------------------------------------
|
|
388
|
+
// Process-shared instances
|
|
389
|
+
// ---------------------------------------------------------------------------
|
|
390
|
+
const instances = new Map();
|
|
391
|
+
/**
|
|
392
|
+
* Get the process-shared TaskManager for a store path. Every writer in a
|
|
393
|
+
* process must go through this — separate instances hold separate copies of
|
|
394
|
+
* the task array and overwrite each other on save.
|
|
395
|
+
*/
|
|
396
|
+
export function getTaskManager(filePath) {
|
|
397
|
+
const key = resolve(filePath ?? DEFAULT_FILE);
|
|
398
|
+
let instance = instances.get(key);
|
|
399
|
+
if (!instance) {
|
|
400
|
+
instance = new TaskManager(key);
|
|
401
|
+
instances.set(key, instance);
|
|
402
|
+
}
|
|
403
|
+
return instance;
|
|
404
|
+
}
|
|
405
|
+
/** Drop all memoized instances. Test helper. */
|
|
406
|
+
export function resetTaskManagers() {
|
|
407
|
+
instances.clear();
|
|
408
|
+
}
|
|
308
409
|
//# sourceMappingURL=task-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;AAEnE,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,SAAS;IAChB,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAY,CAAC;YACtE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAE,MAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrH,OAAO,MAAmB,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED,kFAAkF;AAClF,SAAS,aAAa,CAAC,IAAe,EAAE,QAAgB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAC;IAClC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/D,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,OAAO,WAAW;IACd,IAAI,CAAY;IACxB,iCAAiC;IACzB,QAAQ,CAAS;IACzB,yFAAyF;IACjF,eAAe,GAAG,EAAE,CAAC;IAC7B,qEAAqE;IAC7D,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,YAAY,WAAmB,YAAY;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,iCAAiC;IACjC,IAAI;QACF,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,sEAAsE;IAC9D,cAAc;QACpB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACvD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,MAAM,CAAI,EAAW;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,0EAA0E;IAC1E,WAAW;IACX,0EAA0E;IAE1E,uDAAuD;IACvD,MAAM,CAAC,OAUN;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,IAAI,GAAgB;gBACxB,EAAE,EAAE,cAAc,EAAE;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;gBACtC,+EAA+E;gBAC/E,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACrD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ;gBACtC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC7B,UAAU,EAAE,aAAa,EAAE;gBAC3B,YAAY,EAAE,SAAS;aACxB,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,iBAAiB;IACjB,0EAA0E;IAE1E,+DAA+D;IAC/D,gBAAgB,CAAC,EAAU,EAAE,MAAkB;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,MAAM,gBAAgB,GAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YACnF,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,GAAG,aAAa,EAAE,CAAC;YACtC,CAAC;YAED,sEAAsE;YACtE,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC;YAC3B,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,aAAa,CAAC,EAAU,EAAE,MAA8B;QACtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,EAAU,EAAE,KAAuC;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,QAAQ;IACR,0EAA0E;IAE1E;;;;OAIG;IACH,QAAQ,CAAC,EAAU;QACjB,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,EAAE,CAAC,MAAM,GAAG,iBAAiB;YAAE,OAAO,SAAS,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,OAKJ;QACC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,OAAO,EAAE,MAAM;YAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,OAAO,EAAE,IAAI;YAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,OAAO,EAAE,KAAK;YAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAI,OAAO,EAAE,QAAQ;YAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEpF,4EAA4E;QAC5E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,OAAO,KAAK,OAAO;gBAAE,OAAO,OAAO,GAAG,OAAO,CAAC;YAClD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gGAAgG;IAChG,YAAY,CAAC,GAAY;QACvB,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACzC,IAAI,CAAC,CAAC,CAAC,YAAY;gBAAE,OAAO,KAAK,CAAC;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3C,OAAO,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,6CAA6C;IAC7C,0EAA0E;IAE1E,0CAA0C;IAC1C,aAAa,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,MAAM;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uCAAuC;IACvC,cAAc,CAAC,EAAU;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAC1E,WAAW;IACX,0EAA0E;IAE1E,iDAAiD;IACjD,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,aAAa,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC3G,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAChD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8FAA8F;IAC9F,OAAO,CAAC,GAAa;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;YACvC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,IAAI;oBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IACpD,iBAAiB;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACtE,CAAC;IAED,0EAA0E;IAC1E,oBAAoB;IACpB,0EAA0E;IAE1E,8EAA8E;IAC9E,WAAW,CAAC,IAAiB;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;IAC1F,CAAC;IAED,uCAAuC;IACvC,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC1I,CAAC;IAED,0EAA0E;IAC1E,gCAAgC;IAChC,0EAA0E;IAE1E;;;;;;;OAOG;IACH,sBAAsB,CAAC,QAMtB,EAAE,GAAY;QACb,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;YACzG,IAAI,YAAY;gBAAE,OAAO;YACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE;gBAC1B,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE,cAAc,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACjD,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC;gBACV,KAAK,EAAE,cAAc,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,UAAU;gBACjB,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC;gBAC1C,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,mBAAmB;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YACzC,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,iBAAiB;IAC/B,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -1,10 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Migration
|
|
3
|
-
*
|
|
2
|
+
* Migration utilities.
|
|
3
|
+
*
|
|
4
|
+
* - `migrateTasks()` — one-shot merge of legacy todo.json + cron.json into tasks.json.
|
|
5
|
+
* - `repairTaskShapes()` — idempotent in-place fix-up of tasks written by older
|
|
6
|
+
* versions, run on every startup.
|
|
4
7
|
*/
|
|
5
8
|
import type { TasksFile } from './unified-task.js';
|
|
6
9
|
/**
|
|
7
10
|
* Main migration: merges todo.json and cron.json into tasks.json.
|
|
8
11
|
*/
|
|
9
12
|
export declare function migrateTasks(oldTodoPath?: string, oldCronPath?: string, newTasksPath?: string): TasksFile | null;
|
|
13
|
+
export interface RepairReport {
|
|
14
|
+
/** Tasks whose `mode` was renamed. */
|
|
15
|
+
modesRenamed: number;
|
|
16
|
+
/** Scheduled non-human tasks lifted out of an unfireable status. */
|
|
17
|
+
statusesFixed: number;
|
|
18
|
+
/** Missing/invalid scalar fields given defaults. */
|
|
19
|
+
fieldsFilled: number;
|
|
20
|
+
/** Modes we did not recognise and deliberately left alone. */
|
|
21
|
+
unknownModes: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Repair tasks written by older versions, in place.
|
|
25
|
+
*
|
|
26
|
+
* Two shapes exist in real stores and neither can ever fire:
|
|
27
|
+
* - `mode: 'auto'` — renamed to `'agent'`. `normalizeTask()` in the Todo tool
|
|
28
|
+
* coerces unrecognised modes to `'human'`, which silently demoted scheduled
|
|
29
|
+
* tasks into inert todo-list items.
|
|
30
|
+
* - a scheduled `agent`/`notify` task sitting on `status: 'todo'` — the
|
|
31
|
+
* scheduler only ever looks at `'pending'`.
|
|
32
|
+
*
|
|
33
|
+
* Unknown modes are reported, not rewritten — a silent coercion is what caused
|
|
34
|
+
* the original data loss.
|
|
35
|
+
*/
|
|
36
|
+
export declare function repairTaskShapes(tasksPath?: string): RepairReport | null;
|
|
10
37
|
//# sourceMappingURL=task-migration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-migration.d.ts","sourceRoot":"","sources":["../../src/task-migration.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"task-migration.d.ts","sourceRoot":"","sources":["../../src/task-migration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAkD,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAqGnG;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CA4EhH;AAYD,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA8ExE"}
|