@curie-agent/core 0.4.2 → 0.4.3
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/compaction.d.ts +76 -0
- package/dist/src/compaction.d.ts.map +1 -0
- package/dist/src/compaction.js +229 -0
- package/dist/src/compaction.js.map +1 -0
- package/dist/src/context-budget.d.ts +72 -0
- package/dist/src/context-budget.d.ts.map +1 -0
- package/dist/src/context-budget.js +132 -0
- package/dist/src/context-budget.js.map +1 -0
- package/dist/src/event-bus.d.ts +20 -0
- package/dist/src/event-bus.d.ts.map +1 -1
- package/dist/src/event-bus.js.map +1 -1
- package/dist/src/index.d.ts +6 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/settings.d.ts +13 -0
- package/dist/src/settings.d.ts.map +1 -1
- package/dist/src/settings.js +37 -12
- package/dist/src/settings.js.map +1 -1
- package/dist/src/subagent-executor.d.ts +8 -0
- package/dist/src/subagent-executor.d.ts.map +1 -1
- package/dist/src/subagent-executor.js +20 -6
- package/dist/src/subagent-executor.js.map +1 -1
- package/dist/src/turn-loop.d.ts +22 -2
- package/dist/src/turn-loop.d.ts.map +1 -1
- package/dist/src/turn-loop.js +222 -95
- package/dist/src/turn-loop.js.map +1 -1
- package/package.json +1 -1
- package/templates/settings.json +100 -91
- package/dist/src/cron-manager.d.ts +0 -92
- package/dist/src/cron-manager.d.ts.map +0 -1
- package/dist/src/cron-manager.js +0 -410
- package/dist/src/cron-manager.js.map +0 -1
- package/dist/src/task-executor.d.ts +0 -31
- package/dist/src/task-executor.d.ts.map +0 -1
- package/dist/src/task-executor.js +0 -91
- package/dist/src/task-executor.js.map +0 -1
- package/dist/src/token-monitor.d.ts +0 -50
- package/dist/src/token-monitor.d.ts.map +0 -1
- package/dist/src/token-monitor.js +0 -119
- package/dist/src/token-monitor.js.map +0 -1
package/dist/src/cron-manager.js
DELETED
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
4
|
-
/** Human-readable label for a schedule type. */
|
|
5
|
-
export function scheduleLabel(type) {
|
|
6
|
-
return type.toUpperCase(); // INTRADAY, DAILY, WEEKLY, MONTHLY
|
|
7
|
-
}
|
|
8
|
-
const CRON_DIR = join(homedir(), '.curie-agent');
|
|
9
|
-
const CRON_FILE = join(CRON_DIR, 'cron.json');
|
|
10
|
-
function loadCronFile(filePath) {
|
|
11
|
-
const file = filePath ?? CRON_FILE;
|
|
12
|
-
if (existsSync(file)) {
|
|
13
|
-
try {
|
|
14
|
-
const parsed = JSON.parse(readFileSync(file, 'utf-8'));
|
|
15
|
-
if (typeof parsed === 'object' && parsed !== null && 'tasks' in parsed && Array.isArray(parsed.tasks)) {
|
|
16
|
-
return parsed;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
// corrupt file — start fresh
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return { version: 1, tasks: [] };
|
|
24
|
-
}
|
|
25
|
-
function saveCronFile(data, filePath) {
|
|
26
|
-
const file = filePath ?? CRON_FILE;
|
|
27
|
-
const dir = filePath ? dirname(file) : CRON_DIR;
|
|
28
|
-
if (!existsSync(dir)) {
|
|
29
|
-
mkdirSync(dir, { recursive: true });
|
|
30
|
-
}
|
|
31
|
-
writeFileSync(file, JSON.stringify(data, null, 2), 'utf-8');
|
|
32
|
-
}
|
|
33
|
-
/** Parse "H:MM" into { hour, minute }. */
|
|
34
|
-
function parseTime(value) {
|
|
35
|
-
const match = value.match(/^(\d{1,2}):(\d{2})$/);
|
|
36
|
-
if (!match)
|
|
37
|
-
return null;
|
|
38
|
-
const hour = parseInt(match[1] ?? '0', 10);
|
|
39
|
-
const minute = parseInt(match[2] ?? '0', 10);
|
|
40
|
-
if (hour < 0 || hour > 23 || minute < 0 || minute > 59)
|
|
41
|
-
return null;
|
|
42
|
-
return { hour, minute };
|
|
43
|
-
}
|
|
44
|
-
/** Parse "day@H:MM" into { day, hour, minute }. */
|
|
45
|
-
function parseWeekly(value) {
|
|
46
|
-
const atIdx = value.indexOf('@');
|
|
47
|
-
if (atIdx < 0)
|
|
48
|
-
return null;
|
|
49
|
-
const dayStr = value.slice(0, atIdx).toLowerCase();
|
|
50
|
-
const timeStr = value.slice(atIdx + 1);
|
|
51
|
-
const dayNames = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
|
|
52
|
-
const day = dayNames.indexOf(dayStr);
|
|
53
|
-
if (day < 0)
|
|
54
|
-
return null;
|
|
55
|
-
const time = parseTime(timeStr);
|
|
56
|
-
if (!time)
|
|
57
|
-
return null;
|
|
58
|
-
return { day, ...time };
|
|
59
|
-
}
|
|
60
|
-
/** Parse "D@H:MM" into { dayOfMonth, hour, minute }. */
|
|
61
|
-
function parseMonthly(value) {
|
|
62
|
-
const atIdx = value.indexOf('@');
|
|
63
|
-
if (atIdx < 0)
|
|
64
|
-
return null;
|
|
65
|
-
const dayStr = value.slice(0, atIdx);
|
|
66
|
-
const dayOfMonth = parseInt(dayStr, 10);
|
|
67
|
-
if (isNaN(dayOfMonth) || dayOfMonth < 1 || dayOfMonth > 31)
|
|
68
|
-
return null;
|
|
69
|
-
const time = parseTime(value.slice(atIdx + 1));
|
|
70
|
-
if (!time)
|
|
71
|
-
return null;
|
|
72
|
-
return { dayOfMonth, ...time };
|
|
73
|
-
}
|
|
74
|
-
/** Compute the next fire time for a schedule. Returns epoch ms. */
|
|
75
|
-
export function computeNextFire(schedule, now) {
|
|
76
|
-
if (!schedule)
|
|
77
|
-
return now;
|
|
78
|
-
const { type, value } = schedule;
|
|
79
|
-
if (!value)
|
|
80
|
-
return now;
|
|
81
|
-
if (type === 'intraday') {
|
|
82
|
-
const tokens = value.split(',').map((s) => s.trim()).filter(Boolean);
|
|
83
|
-
const slots = [];
|
|
84
|
-
for (const token of tokens) {
|
|
85
|
-
const t = parseTime(token);
|
|
86
|
-
if (t)
|
|
87
|
-
slots.push(t);
|
|
88
|
-
}
|
|
89
|
-
if (slots.length === 0)
|
|
90
|
-
return now;
|
|
91
|
-
slots.sort((a, b) => a.hour * 60 + a.minute - (b.hour * 60 + b.minute));
|
|
92
|
-
const firstSlot = slots[0];
|
|
93
|
-
const base = new Date(now);
|
|
94
|
-
for (const slot of slots) {
|
|
95
|
-
const candidate = new Date(base);
|
|
96
|
-
candidate.setHours(slot.hour, slot.minute, 0, 0);
|
|
97
|
-
if (candidate.getTime() > now)
|
|
98
|
-
return candidate.getTime();
|
|
99
|
-
}
|
|
100
|
-
// All slots passed today — use first slot tomorrow
|
|
101
|
-
const tomorrow = new Date(base);
|
|
102
|
-
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
103
|
-
tomorrow.setHours(firstSlot.hour, firstSlot.minute, 0, 0);
|
|
104
|
-
return tomorrow.getTime();
|
|
105
|
-
}
|
|
106
|
-
if (type === 'daily') {
|
|
107
|
-
const t = parseTime(value);
|
|
108
|
-
if (!t)
|
|
109
|
-
return now;
|
|
110
|
-
const next = new Date(now);
|
|
111
|
-
next.setHours(t.hour, t.minute, 0, 0);
|
|
112
|
-
if (next.getTime() <= now) {
|
|
113
|
-
next.setDate(next.getDate() + 1);
|
|
114
|
-
}
|
|
115
|
-
return next.getTime();
|
|
116
|
-
}
|
|
117
|
-
if (type === 'weekly') {
|
|
118
|
-
const w = parseWeekly(value);
|
|
119
|
-
if (!w)
|
|
120
|
-
return now;
|
|
121
|
-
const next = new Date(now);
|
|
122
|
-
next.setHours(w.hour, w.minute, 0, 0);
|
|
123
|
-
// Move to the correct weekday
|
|
124
|
-
while (next.getDay() !== w.day) {
|
|
125
|
-
next.setDate(next.getDate() + 1);
|
|
126
|
-
}
|
|
127
|
-
if (next.getTime() <= now) {
|
|
128
|
-
next.setDate(next.getDate() + 7);
|
|
129
|
-
}
|
|
130
|
-
return next.getTime();
|
|
131
|
-
}
|
|
132
|
-
if (type === 'monthly') {
|
|
133
|
-
const m = parseMonthly(value);
|
|
134
|
-
if (!m)
|
|
135
|
-
return now;
|
|
136
|
-
const next = new Date(now);
|
|
137
|
-
next.setDate(m.dayOfMonth);
|
|
138
|
-
next.setHours(m.hour, m.minute, 0, 0);
|
|
139
|
-
if (next.getTime() <= now) {
|
|
140
|
-
next.setMonth(next.getMonth() + 1);
|
|
141
|
-
if (next.getMonth() > 11) {
|
|
142
|
-
next.setFullYear(next.getFullYear() + 1);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return next.getTime();
|
|
146
|
-
}
|
|
147
|
-
if (type === 'dreaming') {
|
|
148
|
-
const t = parseTime(value);
|
|
149
|
-
if (!t)
|
|
150
|
-
return now;
|
|
151
|
-
const next = new Date(now);
|
|
152
|
-
next.setHours(t.hour, t.minute, 0, 0);
|
|
153
|
-
if (next.getTime() <= now) {
|
|
154
|
-
next.setDate(next.getDate() + 1);
|
|
155
|
-
}
|
|
156
|
-
return next.getTime();
|
|
157
|
-
}
|
|
158
|
-
return now;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Evaluate all four heartbeat schedule settings and return the one
|
|
162
|
-
* with the earliest next fire time. Returns null if all are empty.
|
|
163
|
-
*/
|
|
164
|
-
export function pickNextSchedule(settings, now) {
|
|
165
|
-
const reference = now ?? Date.now();
|
|
166
|
-
const candidates = [];
|
|
167
|
-
// Tie-break priority: intraday > daily > weekly > monthly > dreaming
|
|
168
|
-
const priority = { intraday: 0, daily: 1, weekly: 2, monthly: 3, dreaming: 4 };
|
|
169
|
-
const schedules = [
|
|
170
|
-
{ type: 'intraday', value: settings.HEARTBEAT_INTRADAY ?? '' },
|
|
171
|
-
{ type: 'daily', value: settings.HEARTBEAT_DAILY ?? '' },
|
|
172
|
-
{ type: 'weekly', value: settings.HEARTBEAT_WEEKLY ?? '' },
|
|
173
|
-
{ type: 'monthly', value: settings.HEARTBEAT_MONTHLY ?? '' },
|
|
174
|
-
{ type: 'dreaming', value: settings.HEARTBEAT_DREAMING ?? '' },
|
|
175
|
-
];
|
|
176
|
-
for (const { type, value } of schedules) {
|
|
177
|
-
if (!value)
|
|
178
|
-
continue;
|
|
179
|
-
const nextFire = computeNextFire({ type, value }, reference);
|
|
180
|
-
candidates.push({ type, value, nextFire });
|
|
181
|
-
}
|
|
182
|
-
if (candidates.length === 0)
|
|
183
|
-
return null;
|
|
184
|
-
candidates.sort((a, b) => {
|
|
185
|
-
const diff = a.nextFire - b.nextFire;
|
|
186
|
-
if (diff !== 0)
|
|
187
|
-
return diff;
|
|
188
|
-
return priority[a.type] - priority[b.type];
|
|
189
|
-
});
|
|
190
|
-
const best = candidates[0];
|
|
191
|
-
return { type: best.type, value: best.value };
|
|
192
|
-
}
|
|
193
|
-
export class CronManager {
|
|
194
|
-
data;
|
|
195
|
-
checkerTimer = null;
|
|
196
|
-
onReminderFired = null;
|
|
197
|
-
debugHolder = null;
|
|
198
|
-
ttlMs;
|
|
199
|
-
filePath;
|
|
200
|
-
/** Set of task IDs currently being executed (prevents re-firing). */
|
|
201
|
-
executing = new Set();
|
|
202
|
-
constructor(ttlMsOrFilePath, filePath) {
|
|
203
|
-
// Support: new CronManager(), new CronManager(ttlMs), new CronManager(ttlMs, filePath)
|
|
204
|
-
if (typeof ttlMsOrFilePath === 'string') {
|
|
205
|
-
this.filePath = ttlMsOrFilePath;
|
|
206
|
-
this.ttlMs = 7 * 24 * 60 * 60 * 1000;
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
this.ttlMs = ttlMsOrFilePath ?? (7 * 24 * 60 * 60 * 1000);
|
|
210
|
-
this.filePath = filePath ?? CRON_FILE;
|
|
211
|
-
}
|
|
212
|
-
this.data = loadCronFile(this.filePath);
|
|
213
|
-
this.pruneOld(Date.now() - this.ttlMs);
|
|
214
|
-
}
|
|
215
|
-
load() {
|
|
216
|
-
this.data = loadCronFile(this.filePath);
|
|
217
|
-
return this.data;
|
|
218
|
-
}
|
|
219
|
-
save() {
|
|
220
|
-
saveCronFile(this.data, this.filePath);
|
|
221
|
-
}
|
|
222
|
-
createReminder(message, scheduledAt, sessionId) {
|
|
223
|
-
const task = {
|
|
224
|
-
id: crypto.randomUUID(),
|
|
225
|
-
type: 'reminder',
|
|
226
|
-
scheduledAt,
|
|
227
|
-
message,
|
|
228
|
-
status: 'pending',
|
|
229
|
-
createdAt: Date.now(),
|
|
230
|
-
sessionId,
|
|
231
|
-
};
|
|
232
|
-
this.data.tasks.push(task);
|
|
233
|
-
this.save();
|
|
234
|
-
return task;
|
|
235
|
-
}
|
|
236
|
-
cancelReminder(id) {
|
|
237
|
-
const task = this.data.tasks.find((t) => t.id === id);
|
|
238
|
-
if (!task)
|
|
239
|
-
return false;
|
|
240
|
-
task.status = 'cancelled';
|
|
241
|
-
this.save();
|
|
242
|
-
return true;
|
|
243
|
-
}
|
|
244
|
-
listReminders(filter) {
|
|
245
|
-
if (!filter)
|
|
246
|
-
return [...this.data.tasks];
|
|
247
|
-
return this.data.tasks.filter((t) => t.status === filter);
|
|
248
|
-
}
|
|
249
|
-
clearCompleted() {
|
|
250
|
-
const before = this.data.tasks.length;
|
|
251
|
-
this.data.tasks = this.data.tasks.filter((t) => t.status !== 'fired' && t.status !== 'completed' && t.status !== 'failed');
|
|
252
|
-
const removed = before - this.data.tasks.length;
|
|
253
|
-
if (removed > 0) {
|
|
254
|
-
this.save();
|
|
255
|
-
}
|
|
256
|
-
return removed;
|
|
257
|
-
}
|
|
258
|
-
createTask(message, scheduledAt) {
|
|
259
|
-
const task = {
|
|
260
|
-
id: crypto.randomUUID(),
|
|
261
|
-
type: 'task',
|
|
262
|
-
scheduledAt,
|
|
263
|
-
message,
|
|
264
|
-
status: 'pending',
|
|
265
|
-
createdAt: Date.now(),
|
|
266
|
-
};
|
|
267
|
-
this.data.tasks.push(task);
|
|
268
|
-
this.save();
|
|
269
|
-
return task;
|
|
270
|
-
}
|
|
271
|
-
updateTaskStatus(id, status) {
|
|
272
|
-
const task = this.data.tasks.find((t) => t.id === id);
|
|
273
|
-
if (!task)
|
|
274
|
-
return false;
|
|
275
|
-
task.status = status;
|
|
276
|
-
if (status === 'completed' || status === 'failed') {
|
|
277
|
-
task.completedAt = Date.now();
|
|
278
|
-
}
|
|
279
|
-
this.save();
|
|
280
|
-
return true;
|
|
281
|
-
}
|
|
282
|
-
listTasks(filter) {
|
|
283
|
-
if (!filter)
|
|
284
|
-
return this.data.tasks.filter((t) => t.type === 'task');
|
|
285
|
-
return this.data.tasks.filter((t) => t.type === 'task' && t.status === filter);
|
|
286
|
-
}
|
|
287
|
-
/** Remove fired/cancelled tasks older than the cutoff. Pending tasks always kept. */
|
|
288
|
-
pruneOld(cutoff) {
|
|
289
|
-
const before = this.data.tasks.length;
|
|
290
|
-
this.data.tasks = this.data.tasks.filter((t) => t.status === 'pending' || t.createdAt >= cutoff);
|
|
291
|
-
const removed = before - this.data.tasks.length;
|
|
292
|
-
if (removed > 0) {
|
|
293
|
-
this.save();
|
|
294
|
-
}
|
|
295
|
-
return removed;
|
|
296
|
-
}
|
|
297
|
-
createHeartbeat(message, schedule) {
|
|
298
|
-
const now = Date.now();
|
|
299
|
-
const task = {
|
|
300
|
-
id: crypto.randomUUID(),
|
|
301
|
-
type: 'heartbeat',
|
|
302
|
-
scheduledAt: computeNextFire(schedule, now),
|
|
303
|
-
message,
|
|
304
|
-
schedule,
|
|
305
|
-
status: 'pending',
|
|
306
|
-
createdAt: now,
|
|
307
|
-
};
|
|
308
|
-
this.data.tasks.push(task);
|
|
309
|
-
this.save();
|
|
310
|
-
return task;
|
|
311
|
-
}
|
|
312
|
-
/** Update the schedule of all pending heartbeat tasks matching the given schedule type. */
|
|
313
|
-
updateHeartbeatSchedule(scheduleType, value) {
|
|
314
|
-
const now = Date.now();
|
|
315
|
-
const newSchedule = { type: scheduleType, value };
|
|
316
|
-
let changed = false;
|
|
317
|
-
for (const task of this.data.tasks) {
|
|
318
|
-
if (task.type === 'heartbeat' && task.status === 'pending' && task.schedule?.type === scheduleType) {
|
|
319
|
-
task.schedule = newSchedule;
|
|
320
|
-
task.scheduledAt = computeNextFire(newSchedule, now);
|
|
321
|
-
changed = true;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
if (changed)
|
|
325
|
-
this.save();
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Find the unified heartbeat task and re-evaluate all four schedule
|
|
329
|
-
* settings to pick the next earliest fire time. Called after a
|
|
330
|
-
* schedule setting changes or after a heartbeat fires.
|
|
331
|
-
*/
|
|
332
|
-
rescheduleFromSettings(settings, now) {
|
|
333
|
-
const ref = now ?? Date.now();
|
|
334
|
-
const picked = pickNextSchedule(settings, ref);
|
|
335
|
-
if (!picked)
|
|
336
|
-
return;
|
|
337
|
-
let task = this.data.tasks.find((t) => t.type === 'heartbeat' && t.status === 'pending');
|
|
338
|
-
if (!task) {
|
|
339
|
-
task = this.createHeartbeat('Heartbeat: unified schedule', picked);
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
task.schedule = picked;
|
|
343
|
-
task.scheduledAt = computeNextFire(picked, ref);
|
|
344
|
-
this.save();
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
startChecker(intervalMs = 60_000, callback, debugHolder) {
|
|
348
|
-
this.onReminderFired = callback;
|
|
349
|
-
this.debugHolder = debugHolder || null;
|
|
350
|
-
this.checkerTimer = setInterval(() => {
|
|
351
|
-
this.data = loadCronFile();
|
|
352
|
-
this.pruneOld(Date.now() - this.ttlMs);
|
|
353
|
-
const now = Date.now();
|
|
354
|
-
const pending = this.data.tasks.filter((t) => t.status === 'pending' && t.scheduledAt <= now);
|
|
355
|
-
const hasNonHeartbeatChanges = pending.some((t) => t.type !== 'heartbeat');
|
|
356
|
-
for (const task of pending) {
|
|
357
|
-
// Skip if this task is already executing (prevents re-firing
|
|
358
|
-
// when the async callback takes longer than the interval).
|
|
359
|
-
if (this.executing.has(task.id))
|
|
360
|
-
continue;
|
|
361
|
-
const isHeartbeat = task.type === 'heartbeat';
|
|
362
|
-
// For heartbeats: update and persist scheduledAt BEFORE firing.
|
|
363
|
-
// The checker loads a fresh copy of the file each tick, so without
|
|
364
|
-
// persisting this update, the next tick would find the same task
|
|
365
|
-
// with the old (past) scheduledAt and fire it again — potentially
|
|
366
|
-
// while the async callback is still running from the previous tick.
|
|
367
|
-
if (isHeartbeat && task.schedule) {
|
|
368
|
-
task.scheduledAt = computeNextFire(task.schedule, now);
|
|
369
|
-
}
|
|
370
|
-
// Mark reminders as fired so they don't re-fire.
|
|
371
|
-
// Leave heartbeats as pending — caller handles rescheduling.
|
|
372
|
-
if (!isHeartbeat) {
|
|
373
|
-
task.status = 'fired';
|
|
374
|
-
}
|
|
375
|
-
// Persist changes before firing the async callback.
|
|
376
|
-
// This prevents the checker's next tick from finding stale tasks.
|
|
377
|
-
this.save();
|
|
378
|
-
const timeLabel = new Date(now).toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });
|
|
379
|
-
const taskLabel = isHeartbeat && task.schedule
|
|
380
|
-
? `[${scheduleLabel(task.schedule.type)}]`
|
|
381
|
-
: task.type === 'task' ? '[TASK]' : '';
|
|
382
|
-
const startedMsg = `[CronManager] Reminder started at ${timeLabel}: ${taskLabel} ${task.message}`;
|
|
383
|
-
console.log(startedMsg);
|
|
384
|
-
this.debugHolder?.current?.(startedMsg);
|
|
385
|
-
this.executing.add(task.id);
|
|
386
|
-
Promise.resolve(callback(task)).catch((err) => {
|
|
387
|
-
const errMsg = `[CronManager] Reminder callback failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
388
|
-
console.error(errMsg);
|
|
389
|
-
this.debugHolder?.current?.(errMsg);
|
|
390
|
-
}).finally(() => {
|
|
391
|
-
const finishedMsg = `[CronManager] Reminder finished: ${taskLabel} ${task.message}`;
|
|
392
|
-
console.log(finishedMsg);
|
|
393
|
-
this.debugHolder?.current?.(finishedMsg);
|
|
394
|
-
this.executing.delete(task.id);
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
}, intervalMs);
|
|
398
|
-
}
|
|
399
|
-
stopChecker() {
|
|
400
|
-
if (this.checkerTimer) {
|
|
401
|
-
clearInterval(this.checkerTimer);
|
|
402
|
-
this.checkerTimer = null;
|
|
403
|
-
}
|
|
404
|
-
this.executing.clear();
|
|
405
|
-
}
|
|
406
|
-
get pendingCount() {
|
|
407
|
-
return this.data.tasks.filter((t) => t.status === 'pending').length;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
//# sourceMappingURL=cron-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cron-manager.js","sourceRoot":"","sources":["../../src/cron-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Tool, ReasoningEffort, ProviderStream } from './turn-loop.js';
|
|
2
|
-
import type { CurieSettings } from './settings.js';
|
|
3
|
-
export interface TaskExecutorConfig {
|
|
4
|
-
provider: ProviderStream;
|
|
5
|
-
model: string;
|
|
6
|
-
tools: Tool[];
|
|
7
|
-
cwd: string;
|
|
8
|
-
settings: CurieSettings;
|
|
9
|
-
effort?: ReasoningEffort;
|
|
10
|
-
/** Max turns for the tool-use loop (default 50). */
|
|
11
|
-
maxTurns?: number;
|
|
12
|
-
/** The task instruction/prompt. */
|
|
13
|
-
instruction: string;
|
|
14
|
-
/** System prompt for the task turn loop. */
|
|
15
|
-
system?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface TaskResult {
|
|
18
|
-
sessionId: string;
|
|
19
|
-
text: string;
|
|
20
|
-
toolCalls: number;
|
|
21
|
-
errors: string[];
|
|
22
|
-
}
|
|
23
|
-
export declare class TaskExecutor {
|
|
24
|
-
private config;
|
|
25
|
-
private curieDir;
|
|
26
|
-
constructor(config: TaskExecutorConfig);
|
|
27
|
-
execute(): Promise<TaskResult>;
|
|
28
|
-
private gatherContext;
|
|
29
|
-
private buildPrompt;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=task-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/task-executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAS;gBAEL,MAAM,EAAE,kBAAkB;IAIxC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAuBpC,OAAO,CAAC,aAAa;IA2CrB,OAAO,CAAC,WAAW;CAmBpB"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { readFileSync, existsSync } from 'node:fs';
|
|
4
|
-
import { BatchTurnLoop } from './heartbeat-executor.js';
|
|
5
|
-
import { readTaskSummary } from './task-summary.js';
|
|
6
|
-
export class TaskExecutor {
|
|
7
|
-
config;
|
|
8
|
-
curieDir;
|
|
9
|
-
constructor(config) {
|
|
10
|
-
this.config = config;
|
|
11
|
-
this.curieDir = join(homedir(), '.curie-agent');
|
|
12
|
-
}
|
|
13
|
-
async execute() {
|
|
14
|
-
const context = this.gatherContext();
|
|
15
|
-
const prompt = this.buildPrompt(this.config.instruction, context);
|
|
16
|
-
const batchResult = await new BatchTurnLoop({
|
|
17
|
-
provider: this.config.provider,
|
|
18
|
-
model: this.config.model,
|
|
19
|
-
tools: this.config.tools,
|
|
20
|
-
cwd: this.config.cwd,
|
|
21
|
-
settings: this.config.settings,
|
|
22
|
-
effort: this.config.effort,
|
|
23
|
-
maxTurns: this.config.maxTurns ?? 50,
|
|
24
|
-
system: this.config.system || `You are executing a scheduled task. Complete the task instruction using available tools. Deliver the results to the user.`,
|
|
25
|
-
}).run(prompt);
|
|
26
|
-
return {
|
|
27
|
-
sessionId: batchResult.sessionId,
|
|
28
|
-
text: batchResult.text,
|
|
29
|
-
toolCalls: batchResult.toolCalls,
|
|
30
|
-
errors: batchResult.errors,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
gatherContext() {
|
|
34
|
-
const sections = [];
|
|
35
|
-
const readIf = (name, dir) => {
|
|
36
|
-
const path = join(dir, name);
|
|
37
|
-
if (existsSync(path)) {
|
|
38
|
-
sections.push(`=== ${name} ===\n` + readFileSync(path, 'utf-8'));
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
readIf('MEMORY.md', this.curieDir);
|
|
42
|
-
readIf('USER.md', this.curieDir);
|
|
43
|
-
readIf('AGENTS.md', this.curieDir);
|
|
44
|
-
// Read project tasks/todo file (if exists) and format as task list summary
|
|
45
|
-
const projectTaskPath = join(this.config.cwd, 'tasks.json');
|
|
46
|
-
if (!existsSync(projectTaskPath)) {
|
|
47
|
-
const projectLegacyPath = join(this.config.cwd, 'todo.json');
|
|
48
|
-
if (existsSync(projectLegacyPath)) {
|
|
49
|
-
sections.push(`=== Project Tasks ===\n` + readTaskSummary(projectLegacyPath));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
sections.push(`=== Project Tasks ===\n` + readTaskSummary(projectTaskPath));
|
|
54
|
-
}
|
|
55
|
-
// Read personal tasks/todo file from ~/.curie-agent/
|
|
56
|
-
const personalTaskPath = join(this.curieDir, 'tasks.json');
|
|
57
|
-
if (!existsSync(personalTaskPath)) {
|
|
58
|
-
const personalLegacyPath = join(this.curieDir, 'todo.json');
|
|
59
|
-
if (existsSync(personalLegacyPath)) {
|
|
60
|
-
sections.push(`=== Personal Tasks ===\n` + readTaskSummary(personalLegacyPath));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
sections.push(`=== Personal Tasks ===\n` + readTaskSummary(personalTaskPath));
|
|
65
|
-
}
|
|
66
|
-
const memoryDir = join(this.curieDir, 'memory');
|
|
67
|
-
if (existsSync(memoryDir)) {
|
|
68
|
-
sections.push(`=== Memory Directory ===\nDirectory: ${memoryDir}`);
|
|
69
|
-
}
|
|
70
|
-
return sections.join('\n\n');
|
|
71
|
-
}
|
|
72
|
-
buildPrompt(instruction, context) {
|
|
73
|
-
const now = new Date().toLocaleString('en-US', {
|
|
74
|
-
weekday: 'long', year: 'numeric', month: 'long', day: 'numeric',
|
|
75
|
-
hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false,
|
|
76
|
-
});
|
|
77
|
-
return [
|
|
78
|
-
'=== TASK INSTRUCTION ===',
|
|
79
|
-
instruction,
|
|
80
|
-
'',
|
|
81
|
-
'=== GATHERED CONTEXT ===',
|
|
82
|
-
context || '(no context files found)',
|
|
83
|
-
'',
|
|
84
|
-
'=== CURRENT TIME ===',
|
|
85
|
-
now,
|
|
86
|
-
'',
|
|
87
|
-
'Execute the task instruction above. Use available tools to gather data, browse websites, read files, and produce results. Deliver a clear summary of what you accomplished.',
|
|
88
|
-
].join('\n');
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=task-executor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/task-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA0BpD,MAAM,OAAO,YAAY;IAGH;IAFZ,QAAQ,CAAS;IAEzB,YAAoB,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,WAAW,GAAG,MAAM,IAAI,aAAa,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,2HAA2H;SAC1J,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEf,OAAO;YACL,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnC,2EAA2E;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC7D,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,yBAAyB,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,0BAA0B,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,OAAe;QACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS;YAC/D,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK;SACrE,CAAC,CAAC;QAEH,OAAO;YACL,0BAA0B;YAC1B,WAAW;YACX,EAAE;YACF,0BAA0B;YAC1B,OAAO,IAAI,0BAA0B;YACrC,EAAE;YACF,sBAAsB;YACtB,GAAG;YACH,EAAE;YACF,6KAA6K;SAC9K,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { type PriceTier } from './pricing.js';
|
|
2
|
-
export { estimateCost, PriceTier, parseTieredPricing, selectTier } from './pricing.js';
|
|
3
|
-
export type TokenEvent = {
|
|
4
|
-
type: 'context-warning';
|
|
5
|
-
fillPct: number;
|
|
6
|
-
message: string;
|
|
7
|
-
} | {
|
|
8
|
-
type: 'context-compaction-needed';
|
|
9
|
-
fillPct: number;
|
|
10
|
-
message: string;
|
|
11
|
-
} | {
|
|
12
|
-
type: 'context-forced-compaction';
|
|
13
|
-
fillPct: number;
|
|
14
|
-
message: string;
|
|
15
|
-
} | {
|
|
16
|
-
type: 'tier-warning';
|
|
17
|
-
threshold: number;
|
|
18
|
-
oldTier: PriceTier;
|
|
19
|
-
newTier: PriceTier;
|
|
20
|
-
message: string;
|
|
21
|
-
};
|
|
22
|
-
export interface TokenMonitorConfig {
|
|
23
|
-
contextWindowSize: number;
|
|
24
|
-
thresholdPct: number;
|
|
25
|
-
warnThresholdPct: number;
|
|
26
|
-
forcedThresholdPct: number;
|
|
27
|
-
pricingTierWarn: boolean;
|
|
28
|
-
/** Model name for cost estimation (e.g., 'claude-sonnet-4-6'). */
|
|
29
|
-
model?: string;
|
|
30
|
-
}
|
|
31
|
-
export declare class TokenMonitor {
|
|
32
|
-
config: TokenMonitorConfig;
|
|
33
|
-
cumulativeInputTokens: number;
|
|
34
|
-
lastTrackedTokens: number;
|
|
35
|
-
private acknowledged;
|
|
36
|
-
constructor(config: TokenMonitorConfig);
|
|
37
|
-
getFillPct(): number;
|
|
38
|
-
getStatus(): 'ok' | 'warning' | 'compaction-needed' | 'forced-compaction';
|
|
39
|
-
private parseTiers;
|
|
40
|
-
private selectTier;
|
|
41
|
-
checkTierCrossing(tiersRaw?: PriceTier[]): TokenEvent | null;
|
|
42
|
-
addTokens(inputTokens: number, outputTokens: number, tiersRaw?: PriceTier[]): TokenEvent[];
|
|
43
|
-
acknowledge(eventType: string): void;
|
|
44
|
-
reset(): void;
|
|
45
|
-
setContextWindowSize(size: number): void;
|
|
46
|
-
setThresholdPct(pct: number): void;
|
|
47
|
-
setWarnThresholdPct(pct: number): void;
|
|
48
|
-
setForcedThresholdPct(pct: number): void;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=token-monitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-monitor.d.ts","sourceRoot":"","sources":["../../src/token-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzG,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,YAAY,CAAqB;gBAE7B,MAAM,EAAE,kBAAkB;IAMtC,UAAU,IAAI,MAAM;IAKpB,SAAS,IAAI,IAAI,GAAG,SAAS,GAAG,mBAAmB,GAAG,mBAAmB;IAQzE,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,UAAU;IAkBlB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,UAAU,GAAG,IAAI;IA0B5D,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE;IA0B1F,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIpC,KAAK,IAAI,IAAI;IAMb,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIlC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAItC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGzC"}
|