agent-task-manager-mcp 1.0.0 → 1.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 (81) hide show
  1. package/README.md +187 -22
  2. package/dist/certs.d.ts +11 -0
  3. package/dist/certs.d.ts.map +1 -0
  4. package/dist/certs.js +56 -0
  5. package/dist/certs.js.map +1 -0
  6. package/dist/cli.d.ts +14 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +35 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/hostValidation.d.ts +3 -0
  11. package/dist/hostValidation.d.ts.map +1 -0
  12. package/dist/hostValidation.js +58 -0
  13. package/dist/hostValidation.js.map +1 -0
  14. package/dist/http.server.d.ts +13 -0
  15. package/dist/http.server.d.ts.map +1 -0
  16. package/dist/http.server.js +188 -0
  17. package/dist/http.server.js.map +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +19 -62
  20. package/dist/index.js.map +1 -1
  21. package/dist/server.d.ts +36 -0
  22. package/dist/server.d.ts.map +1 -0
  23. package/dist/server.js +64 -0
  24. package/dist/server.js.map +1 -0
  25. package/dist/storage/adapters/json.adapter.d.ts +3 -0
  26. package/dist/storage/adapters/json.adapter.d.ts.map +1 -0
  27. package/dist/storage/adapters/json.adapter.js +314 -0
  28. package/dist/storage/adapters/json.adapter.js.map +1 -0
  29. package/dist/storage/adapters/mongodb.adapter.d.ts +3 -0
  30. package/dist/storage/adapters/mongodb.adapter.d.ts.map +1 -0
  31. package/dist/storage/adapters/mongodb.adapter.js +232 -0
  32. package/dist/storage/adapters/mongodb.adapter.js.map +1 -0
  33. package/dist/storage/adapters/postgres.adapter.d.ts +3 -0
  34. package/dist/storage/adapters/postgres.adapter.d.ts.map +1 -0
  35. package/dist/storage/adapters/postgres.adapter.js +440 -0
  36. package/dist/storage/adapters/postgres.adapter.js.map +1 -0
  37. package/dist/storage/adapters/sqlite.adapter.d.ts +3 -0
  38. package/dist/storage/adapters/sqlite.adapter.d.ts.map +1 -0
  39. package/dist/storage/adapters/sqlite.adapter.js +437 -0
  40. package/dist/storage/adapters/sqlite.adapter.js.map +1 -0
  41. package/dist/storage/index.d.ts +17 -0
  42. package/dist/storage/index.d.ts.map +1 -0
  43. package/dist/storage/index.js +22 -0
  44. package/dist/storage/index.js.map +1 -0
  45. package/dist/storage/interface.d.ts +72 -0
  46. package/dist/storage/interface.d.ts.map +1 -0
  47. package/dist/storage/interface.js +3 -0
  48. package/dist/storage/interface.js.map +1 -0
  49. package/dist/storage/json.adapter.d.ts +3 -0
  50. package/dist/storage/json.adapter.d.ts.map +1 -0
  51. package/dist/storage/json.adapter.js +314 -0
  52. package/dist/storage/json.adapter.js.map +1 -0
  53. package/dist/storage/mongodb.adapter.d.ts +3 -0
  54. package/dist/storage/mongodb.adapter.d.ts.map +1 -0
  55. package/dist/storage/mongodb.adapter.js +232 -0
  56. package/dist/storage/mongodb.adapter.js.map +1 -0
  57. package/dist/storage/router.d.ts +30 -0
  58. package/dist/storage/router.d.ts.map +1 -0
  59. package/dist/storage/router.js +100 -0
  60. package/dist/storage/router.js.map +1 -0
  61. package/dist/storage/sqlite.adapter.d.ts +3 -0
  62. package/dist/storage/sqlite.adapter.d.ts.map +1 -0
  63. package/dist/storage/sqlite.adapter.js +437 -0
  64. package/dist/storage/sqlite.adapter.js.map +1 -0
  65. package/dist/storage/types.d.ts +80 -0
  66. package/dist/storage/types.d.ts.map +1 -0
  67. package/dist/storage/types.js +7 -0
  68. package/dist/storage/types.js.map +1 -0
  69. package/dist/tools/checkpoint.tools.d.ts.map +1 -1
  70. package/dist/tools/checkpoint.tools.js +8 -21
  71. package/dist/tools/checkpoint.tools.js.map +1 -1
  72. package/dist/tools/session.tools.d.ts.map +1 -1
  73. package/dist/tools/session.tools.js +21 -30
  74. package/dist/tools/session.tools.js.map +1 -1
  75. package/dist/tools/subtask.tools.d.ts.map +1 -1
  76. package/dist/tools/subtask.tools.js +9 -32
  77. package/dist/tools/subtask.tools.js.map +1 -1
  78. package/dist/tools/task.tools.d.ts.map +1 -1
  79. package/dist/tools/task.tools.js +23 -50
  80. package/dist/tools/task.tools.js.map +1 -1
  81. package/package.json +18 -4
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRouter = exports.StorageRouter = exports.toAgentJSON = void 0;
4
+ require("dotenv/config");
5
+ const mongodb_adapter_js_1 = require("./adapters/mongodb.adapter.js");
6
+ const postgres_adapter_js_1 = require("./adapters/postgres.adapter.js");
7
+ const sqlite_adapter_js_1 = require("./adapters/sqlite.adapter.js");
8
+ const json_adapter_js_1 = require("./adapters/json.adapter.js");
9
+ let routerInstance = null;
10
+ let adapterInstance = null;
11
+ /**
12
+ * Normalize value for agent consumption: dates as ISO 8601, strip backend-specific fields.
13
+ */
14
+ const normalizeValue = (value) => {
15
+ if (value === null || value === undefined)
16
+ return value;
17
+ if (value instanceof Date)
18
+ return value.toISOString();
19
+ if (Array.isArray(value))
20
+ return value.map(normalizeValue);
21
+ if (typeof value === 'object' && value !== null) {
22
+ const obj = value;
23
+ const out = {};
24
+ for (const [k, v] of Object.entries(obj)) {
25
+ if (k === '_id' || k === '__v')
26
+ continue;
27
+ out[k] = normalizeValue(v);
28
+ }
29
+ if ('_id' in obj && !('id' in out)) {
30
+ const id = obj._id;
31
+ out.id = typeof id === 'string' ? id : id?.toString?.() ?? null;
32
+ }
33
+ return out;
34
+ }
35
+ return value;
36
+ };
37
+ /**
38
+ * Convert entity/response to JSON string for agent consumption.
39
+ * Dates → ISO 8601, strips _id/__v, ensures consistent shape.
40
+ * @param obj - Entity (Task, Subtask, Session, Checkpoint) or array
41
+ * @returns JSON string with normalized dates and IDs
42
+ */
43
+ const toAgentJSON = (obj) => {
44
+ const normalized = normalizeValue(obj);
45
+ return JSON.stringify(normalized);
46
+ };
47
+ exports.toAgentJSON = toAgentJSON;
48
+ /**
49
+ * Storage router: routes to backend adapter and normalizes responses for agents.
50
+ */
51
+ class StorageRouter {
52
+ constructor() { }
53
+ /** @internal */
54
+ static instance = () => {
55
+ if (!routerInstance)
56
+ routerInstance = new StorageRouter();
57
+ return routerInstance;
58
+ };
59
+ /** Resolve storage adapter from STORAGE env. Lazy-init on first use. */
60
+ getAdapter = () => {
61
+ if (adapterInstance)
62
+ return adapterInstance;
63
+ const type = (process.env.STORAGE ?? 'mongodb').toLowerCase();
64
+ switch (type) {
65
+ case 'mongodb':
66
+ adapterInstance = (0, mongodb_adapter_js_1.createMongoAdapter)();
67
+ break;
68
+ case 'postgres': {
69
+ const url = process.env.POSTGRES_URL ?? process.env.DATABASE_URL;
70
+ if (!url)
71
+ throw new Error('POSTGRES_URL or DATABASE_URL is required when STORAGE=postgres');
72
+ adapterInstance = (0, postgres_adapter_js_1.createPostgresAdapter)(url);
73
+ break;
74
+ }
75
+ case 'sqlite':
76
+ adapterInstance = (0, sqlite_adapter_js_1.createSqliteAdapter)(process.env.SQLITE_PATH ?? './data/agent-tasks.db');
77
+ break;
78
+ case 'json':
79
+ adapterInstance = (0, json_adapter_js_1.createJsonAdapter)(process.env.JSON_STORAGE_PATH ?? './data/agent-tasks.json');
80
+ break;
81
+ default:
82
+ throw new Error(`Unknown STORAGE type: ${type}. Use mongodb, postgres, sqlite, or json.`);
83
+ }
84
+ return adapterInstance;
85
+ };
86
+ /** Connect to the configured storage backend. */
87
+ connect = async () => {
88
+ await this.getAdapter().connect();
89
+ };
90
+ toAgentJSON = exports.toAgentJSON;
91
+ }
92
+ exports.StorageRouter = StorageRouter;
93
+ /**
94
+ * Single entry point for storage access.
95
+ * Routes to MongoDB, PostgreSQL, SQLite, or JSON based on STORAGE env.
96
+ * @returns StorageRouter singleton
97
+ */
98
+ const getRouter = () => StorageRouter.instance();
99
+ exports.getRouter = getRouter;
100
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/storage/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { StorageAdapter } from './interface.js';
2
+ export declare const createSqliteAdapter: (dbPath: string) => StorageAdapter;
3
+ //# sourceMappingURL=sqlite.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.adapter.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAoFpD,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,cAwPpD,CAAA"}
@@ -0,0 +1,437 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSqliteAdapter = void 0;
7
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = require("node:path");
10
+ const types_js_1 = require("./types.js");
11
+ const defaultContext = { workingDirectory: '/tmp', initScript: null, repoUrl: null, environmentVars: {} };
12
+ const initSchema = (db) => {
13
+ db.exec(`
14
+ CREATE TABLE IF NOT EXISTS tasks (
15
+ id TEXT PRIMARY KEY,
16
+ title TEXT NOT NULL,
17
+ description TEXT NOT NULL,
18
+ status TEXT DEFAULT 'pending',
19
+ phase TEXT DEFAULT 'init',
20
+ priority INTEGER DEFAULT 5,
21
+ tags TEXT DEFAULT '[]',
22
+ agent_id TEXT,
23
+ locked_at INTEGER,
24
+ context TEXT DEFAULT '{}',
25
+ metadata TEXT DEFAULT '{}',
26
+ completed_at INTEGER,
27
+ deadline INTEGER,
28
+ created_at INTEGER NOT NULL,
29
+ updated_at INTEGER NOT NULL
30
+ );
31
+ CREATE TABLE IF NOT EXISTS subtasks (
32
+ id TEXT PRIMARY KEY,
33
+ task_id TEXT NOT NULL,
34
+ title TEXT NOT NULL,
35
+ description TEXT NOT NULL,
36
+ category TEXT DEFAULT 'functional',
37
+ steps TEXT DEFAULT '[]',
38
+ status TEXT DEFAULT 'pending',
39
+ priority INTEGER DEFAULT 5,
40
+ depends_on TEXT DEFAULT '[]',
41
+ agent_id TEXT,
42
+ attempts INTEGER DEFAULT 0,
43
+ last_error TEXT,
44
+ evidence TEXT,
45
+ created_at INTEGER NOT NULL,
46
+ updated_at INTEGER NOT NULL,
47
+ FOREIGN KEY (task_id) REFERENCES tasks(id)
48
+ );
49
+ CREATE TABLE IF NOT EXISTS sessions (
50
+ id TEXT PRIMARY KEY,
51
+ task_id TEXT NOT NULL,
52
+ agent_id TEXT NOT NULL,
53
+ phase TEXT NOT NULL,
54
+ started_at INTEGER NOT NULL,
55
+ ended_at INTEGER,
56
+ subtasks_attempted TEXT DEFAULT '[]',
57
+ subtasks_completed TEXT DEFAULT '[]',
58
+ progress_note TEXT DEFAULT '',
59
+ git_commit TEXT,
60
+ token_count INTEGER,
61
+ status TEXT DEFAULT 'active',
62
+ created_at INTEGER NOT NULL,
63
+ updated_at INTEGER NOT NULL,
64
+ FOREIGN KEY (task_id) REFERENCES tasks(id)
65
+ );
66
+ CREATE TABLE IF NOT EXISTS checkpoints (
67
+ id TEXT PRIMARY KEY,
68
+ task_id TEXT NOT NULL,
69
+ session_id TEXT NOT NULL,
70
+ label TEXT NOT NULL,
71
+ snapshot TEXT NOT NULL,
72
+ created_at INTEGER NOT NULL,
73
+ updated_at INTEGER NOT NULL,
74
+ FOREIGN KEY (task_id) REFERENCES tasks(id),
75
+ FOREIGN KEY (session_id) REFERENCES sessions(id)
76
+ );
77
+ CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
78
+ CREATE INDEX IF NOT EXISTS idx_subtasks_task_status ON subtasks(task_id, status);
79
+ CREATE INDEX IF NOT EXISTS idx_sessions_task ON sessions(task_id);
80
+ CREATE INDEX IF NOT EXISTS idx_checkpoints_task ON checkpoints(task_id);
81
+ `);
82
+ };
83
+ const now = () => Math.floor(Date.now() / 1000);
84
+ const parseJson = (s, fallback) => {
85
+ try {
86
+ return JSON.parse(s);
87
+ }
88
+ catch {
89
+ return fallback;
90
+ }
91
+ };
92
+ const createSqliteAdapter = (dbPath) => {
93
+ let db;
94
+ return {
95
+ connect: async () => {
96
+ const dir = (0, node_path_1.dirname)(dbPath);
97
+ if (!(0, node_fs_1.existsSync)(dir))
98
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
99
+ db = new better_sqlite3_1.default(dbPath);
100
+ db.pragma('journal_mode = WAL');
101
+ initSchema(db);
102
+ console.error('[DB] Connected to SQLite:', dbPath);
103
+ },
104
+ taskCreate: async (input) => {
105
+ const id = (0, types_js_1.generateId)();
106
+ const t = now();
107
+ const context = JSON.stringify({ ...defaultContext, ...input.context });
108
+ const tags = JSON.stringify(input.tags ?? []);
109
+ const metadata = JSON.stringify(input.metadata ?? {});
110
+ const deadline = input.deadline ? Math.floor(new Date(input.deadline).getTime() / 1000) : null;
111
+ db.prepare(`
112
+ INSERT INTO tasks (id, title, description, status, phase, priority, tags, context, metadata, deadline, created_at, updated_at)
113
+ VALUES (?, ?, ?, 'pending', 'init', ?, ?, ?, ?, ?, ?, ?)
114
+ `).run(id, input.title, input.description, input.priority ?? 5, tags, context, metadata, deadline, t, t);
115
+ const row = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
116
+ return rowToTask(row);
117
+ },
118
+ taskFindById: async (id) => {
119
+ const row = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
120
+ return row ? rowToTask(row) : null;
121
+ },
122
+ taskList: async (filter) => {
123
+ const conditions = [];
124
+ const params = [];
125
+ if (filter.status) {
126
+ conditions.push('status = ?');
127
+ params.push(filter.status);
128
+ }
129
+ if (filter.phase) {
130
+ conditions.push('phase = ?');
131
+ params.push(filter.phase);
132
+ }
133
+ if (filter.tags?.length) {
134
+ conditions.push(`EXISTS (SELECT 1 FROM json_each(tags) WHERE value IN (${filter.tags.map(() => '?').join(',')}))`);
135
+ params.push(...filter.tags);
136
+ }
137
+ const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';
138
+ const countRow = db.prepare(`SELECT COUNT(*) as c FROM tasks ${where}`).get(...params);
139
+ const rows = db.prepare(`
140
+ SELECT * FROM tasks ${where}
141
+ ORDER BY priority DESC, created_at DESC
142
+ LIMIT ? OFFSET ?
143
+ `).all(...params, filter.limit, filter.skip);
144
+ return {
145
+ tasks: rows.map(rowToTask),
146
+ total: countRow.c,
147
+ };
148
+ },
149
+ taskUpdate: async (id, input) => {
150
+ const existing = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
151
+ if (!existing)
152
+ return null;
153
+ const updates = [];
154
+ const params = [];
155
+ const set = (col, val) => { updates.push(`${col} = ?`); params.push(val); };
156
+ if (input.title !== undefined)
157
+ set('title', input.title);
158
+ if (input.description !== undefined)
159
+ set('description', input.description);
160
+ if (input.status !== undefined)
161
+ set('status', input.status);
162
+ if (input.phase !== undefined)
163
+ set('phase', input.phase);
164
+ if (input.priority !== undefined)
165
+ set('priority', input.priority);
166
+ if (input.tags !== undefined)
167
+ set('tags', JSON.stringify(input.tags));
168
+ if (input.context !== undefined) {
169
+ const ctx = parseJson(existing.context, {});
170
+ set('context', JSON.stringify({ ...ctx, ...input.context }));
171
+ }
172
+ if (input.metadata !== undefined)
173
+ set('metadata', JSON.stringify(input.metadata));
174
+ if (input.deadline !== undefined)
175
+ set('deadline', input.deadline ? Math.floor(new Date(input.deadline).getTime() / 1000) : null);
176
+ if (updates.length === 0)
177
+ return rowToTask(existing);
178
+ set('updated_at', now());
179
+ params.push(id);
180
+ db.prepare(`UPDATE tasks SET ${updates.join(', ')} WHERE id = ?`).run(...params);
181
+ const updated = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
182
+ return rowToTask(updated);
183
+ },
184
+ taskDelete: async (id) => {
185
+ db.prepare('DELETE FROM checkpoints WHERE task_id = ?').run(id);
186
+ db.prepare('DELETE FROM sessions WHERE task_id = ?').run(id);
187
+ db.prepare('DELETE FROM subtasks WHERE task_id = ?').run(id);
188
+ db.prepare('DELETE FROM tasks WHERE id = ?').run(id);
189
+ },
190
+ taskLock: async (id, agentId) => {
191
+ const row = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
192
+ if (!row)
193
+ return null;
194
+ const currentAgent = row.agent_id;
195
+ if (currentAgent !== null && currentAgent !== agentId)
196
+ return null;
197
+ const t = Math.floor(Date.now() / 1000);
198
+ db.prepare('UPDATE tasks SET agent_id = ?, locked_at = ?, updated_at = ? WHERE id = ?').run(agentId, t, t, id);
199
+ const updated = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
200
+ return rowToTask(updated);
201
+ },
202
+ taskUnlock: async (id, agentId) => {
203
+ const row = db.prepare('SELECT * FROM tasks WHERE id = ? AND agent_id = ?').get(id, agentId);
204
+ if (!row)
205
+ return null;
206
+ const t = now();
207
+ db.prepare('UPDATE tasks SET agent_id = NULL, locked_at = NULL, updated_at = ? WHERE id = ?').run(t, id);
208
+ const updated = db.prepare('SELECT * FROM tasks WHERE id = ?').get(id);
209
+ return rowToTask(updated);
210
+ },
211
+ subtaskCountByTask: async (taskId, status) => {
212
+ let sql = 'SELECT COUNT(*) as c FROM subtasks WHERE task_id = ?';
213
+ const params = [taskId];
214
+ if (status !== undefined) {
215
+ if (Array.isArray(status)) {
216
+ sql += ` AND status IN (${status.map(() => '?').join(',')})`;
217
+ params.push(...status);
218
+ }
219
+ else {
220
+ sql += ' AND status = ?';
221
+ params.push(status);
222
+ }
223
+ }
224
+ const row = db.prepare(sql).get(...params);
225
+ return row.c;
226
+ },
227
+ subtaskCreateBulk: async (taskId, items) => {
228
+ const t = now();
229
+ const stmt = db.prepare(`
230
+ INSERT INTO subtasks (id, task_id, title, description, category, steps, priority, depends_on, created_at, updated_at)
231
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
232
+ `);
233
+ const created = [];
234
+ for (const s of items) {
235
+ const id = (0, types_js_1.generateId)();
236
+ const dependsOn = JSON.stringify((s.dependsOn ?? []).map((d) => d));
237
+ stmt.run(id, taskId, s.title, s.description, s.category ?? 'functional', JSON.stringify(s.steps ?? []), s.priority ?? 5, dependsOn, t, t);
238
+ created.push({
239
+ id,
240
+ taskId,
241
+ title: s.title,
242
+ description: s.description,
243
+ category: s.category ?? 'functional',
244
+ steps: s.steps ?? [],
245
+ status: 'pending',
246
+ priority: s.priority ?? 5,
247
+ dependsOn: s.dependsOn ?? [],
248
+ agentId: null,
249
+ attempts: 0,
250
+ lastError: null,
251
+ evidence: null,
252
+ createdAt: new Date(t * 1000),
253
+ updatedAt: new Date(t * 1000),
254
+ });
255
+ }
256
+ return created;
257
+ },
258
+ subtaskGetNext: async (taskId, agentId) => {
259
+ const passed = db.prepare('SELECT id FROM subtasks WHERE task_id = ? AND status = ?').all(taskId, 'passed');
260
+ const passedSet = new Set(passed.map((p) => p.id));
261
+ const pending = db.prepare('SELECT * FROM subtasks WHERE task_id = ? AND status = ? ORDER BY priority DESC, created_at ASC').all(taskId, 'pending');
262
+ for (const row of pending) {
263
+ const deps = parseJson(row.depends_on, []);
264
+ const allPassed = deps.every((d) => passedSet.has(d));
265
+ if (!allPassed)
266
+ continue;
267
+ const id = row.id;
268
+ const t = now();
269
+ db.prepare('UPDATE subtasks SET status = ?, agent_id = ?, attempts = attempts + 1, updated_at = ? WHERE id = ?').run('in_progress', agentId, t, id);
270
+ return rowToSubtask({ ...row, status: 'in_progress', agent_id: agentId, attempts: (row.attempts ?? 0) + 1, updated_at: t });
271
+ }
272
+ return null;
273
+ },
274
+ subtaskUpdateStatus: async (id, agentId, data) => {
275
+ const row = db.prepare('SELECT * FROM subtasks WHERE id = ? AND agent_id = ?').get(id, agentId);
276
+ if (!row)
277
+ return null;
278
+ const updates = ['status = ?', 'updated_at = ?'];
279
+ const params = [data.status, now()];
280
+ if (data.evidence !== undefined) {
281
+ updates.push('evidence = ?');
282
+ params.push(data.evidence);
283
+ }
284
+ if (data.lastError !== undefined) {
285
+ updates.push('last_error = ?');
286
+ params.push(data.lastError);
287
+ }
288
+ params.push(id);
289
+ db.prepare(`UPDATE subtasks SET ${updates.join(', ')} WHERE id = ?`).run(...params);
290
+ const updated = db.prepare('SELECT * FROM subtasks WHERE id = ?').get(id);
291
+ return rowToSubtask(updated);
292
+ },
293
+ sessionCreate: async (data) => {
294
+ const id = (0, types_js_1.generateId)();
295
+ const t = now();
296
+ db.prepare(`
297
+ INSERT INTO sessions (id, task_id, agent_id, phase, started_at, created_at, updated_at)
298
+ VALUES (?, ?, ?, ?, ?, ?, ?)
299
+ `).run(id, data.taskId, data.agentId, data.phase, t, t, t);
300
+ const row = db.prepare('SELECT * FROM sessions WHERE id = ?').get(id);
301
+ return rowToSession(row);
302
+ },
303
+ sessionFindLatestByTask: async (taskId, status) => {
304
+ let sql = 'SELECT * FROM sessions WHERE task_id = ?';
305
+ const params = [taskId];
306
+ if (status) {
307
+ sql += ' AND status = ?';
308
+ params.push(status);
309
+ }
310
+ sql += ' ORDER BY ended_at IS NULL, ended_at DESC, created_at DESC LIMIT 1';
311
+ const row = db.prepare(sql).get(...params);
312
+ return row ? rowToSession(row) : null;
313
+ },
314
+ sessionUpdate: async (id, agentId, data) => {
315
+ const row = db.prepare('SELECT * FROM sessions WHERE id = ? AND agent_id = ?').get(id, agentId);
316
+ if (!row)
317
+ return null;
318
+ const updates = ['progress_note = ?', 'updated_at = ?'];
319
+ const params = [data.progressNote ?? row.progress_note, now()];
320
+ if (data.gitCommit !== undefined) {
321
+ updates.push('git_commit = ?');
322
+ params.push(data.gitCommit);
323
+ }
324
+ if (data.tokenCount !== undefined) {
325
+ updates.push('token_count = ?');
326
+ params.push(data.tokenCount);
327
+ }
328
+ if (data.status !== undefined) {
329
+ updates.push('status = ?');
330
+ params.push(data.status);
331
+ }
332
+ if (data.endedAt !== undefined) {
333
+ updates.push('ended_at = ?');
334
+ params.push(Math.floor(data.endedAt.getTime() / 1000));
335
+ }
336
+ if (data.subtasksAttempted) {
337
+ updates.push('subtasks_attempted = ?');
338
+ params.push(JSON.stringify(data.subtasksAttempted));
339
+ }
340
+ if (data.subtasksCompleted) {
341
+ updates.push('subtasks_completed = ?');
342
+ params.push(JSON.stringify(data.subtasksCompleted));
343
+ }
344
+ params.push(id);
345
+ db.prepare(`UPDATE sessions SET ${updates.join(', ')} WHERE id = ?`).run(...params);
346
+ const updated = db.prepare('SELECT * FROM sessions WHERE id = ?').get(id);
347
+ return rowToSession(updated);
348
+ },
349
+ checkpointCreate: async (data) => {
350
+ const id = (0, types_js_1.generateId)();
351
+ const t = now();
352
+ db.prepare(`
353
+ INSERT INTO checkpoints (id, task_id, session_id, label, snapshot, created_at, updated_at)
354
+ VALUES (?, ?, ?, ?, ?, ?, ?)
355
+ `).run(id, data.taskId, data.sessionId, data.label, JSON.stringify(data.snapshot), t, t);
356
+ const row = db.prepare('SELECT * FROM checkpoints WHERE id = ?').get(id);
357
+ return rowToCheckpoint(row);
358
+ },
359
+ checkpointFindByTaskAndLabel: async (taskId, label) => {
360
+ const row = db.prepare('SELECT * FROM checkpoints WHERE task_id = ? AND label = ? ORDER BY created_at DESC LIMIT 1').get(taskId, label);
361
+ return row ? rowToCheckpoint(row) : null;
362
+ },
363
+ checkpointFindAllByTask: async (taskId) => {
364
+ const rows = db.prepare('SELECT id, label, created_at, session_id FROM checkpoints WHERE task_id = ? ORDER BY created_at DESC').all(taskId);
365
+ return rows.map((r) => ({
366
+ id: r.id,
367
+ label: r.label,
368
+ createdAt: new Date(r.created_at * 1000),
369
+ sessionId: r.session_id,
370
+ }));
371
+ },
372
+ };
373
+ };
374
+ exports.createSqliteAdapter = createSqliteAdapter;
375
+ const rowToTask = (r) => {
376
+ const ctx = parseJson(r.context, defaultContext);
377
+ return {
378
+ id: r.id,
379
+ title: r.title,
380
+ description: r.description,
381
+ status: r.status,
382
+ phase: r.phase,
383
+ priority: r.priority,
384
+ tags: parseJson(r.tags, []),
385
+ agentId: r.agent_id,
386
+ lockedAt: r.locked_at ? new Date(r.locked_at * 1000) : null,
387
+ context: ctx,
388
+ metadata: parseJson(r.metadata, {}),
389
+ completedAt: r.completed_at ? new Date(r.completed_at * 1000) : null,
390
+ deadline: r.deadline ? new Date(r.deadline * 1000) : null,
391
+ createdAt: new Date(r.created_at * 1000),
392
+ updatedAt: new Date(r.updated_at * 1000),
393
+ };
394
+ };
395
+ const rowToSubtask = (r) => ({
396
+ id: r.id,
397
+ taskId: r.task_id,
398
+ title: r.title,
399
+ description: r.description,
400
+ category: r.category,
401
+ steps: parseJson(r.steps, []),
402
+ status: r.status,
403
+ priority: r.priority,
404
+ dependsOn: parseJson(r.depends_on, []),
405
+ agentId: r.agent_id,
406
+ attempts: r.attempts ?? 0,
407
+ lastError: r.last_error,
408
+ evidence: r.evidence,
409
+ createdAt: new Date(r.created_at * 1000),
410
+ updatedAt: new Date(r.updated_at * 1000),
411
+ });
412
+ const rowToSession = (r) => ({
413
+ id: r.id,
414
+ taskId: r.task_id,
415
+ agentId: r.agent_id,
416
+ phase: r.phase,
417
+ startedAt: new Date(r.started_at * 1000),
418
+ endedAt: r.ended_at ? new Date(r.ended_at * 1000) : null,
419
+ subtasksAttempted: parseJson(r.subtasks_attempted, []),
420
+ subtasksCompleted: parseJson(r.subtasks_completed, []),
421
+ progressNote: r.progress_note ?? '',
422
+ gitCommit: r.git_commit,
423
+ tokenCount: r.token_count,
424
+ status: r.status,
425
+ createdAt: new Date(r.created_at * 1000),
426
+ updatedAt: new Date(r.updated_at * 1000),
427
+ });
428
+ const rowToCheckpoint = (r) => ({
429
+ id: r.id,
430
+ taskId: r.task_id,
431
+ sessionId: r.session_id,
432
+ label: r.label,
433
+ snapshot: parseJson(r.snapshot, {}),
434
+ createdAt: new Date(r.created_at * 1000),
435
+ updatedAt: new Date(r.updated_at * 1000),
436
+ });
437
+ //# sourceMappingURL=sqlite.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.adapter.js","sourceRoot":"","sources":["../../src/storage/sqlite.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ export type TaskStatus = 'pending' | 'initializing' | 'in_progress' | 'paused' | 'completed' | 'failed';
2
+ export type TaskPhase = 'init' | 'execution';
3
+ export type SubtaskStatus = 'pending' | 'in_progress' | 'passed' | 'failed' | 'blocked';
4
+ export type SubtaskCategory = 'functional' | 'ui' | 'performance' | 'security' | 'test';
5
+ export type SessionStatus = 'active' | 'completed' | 'crashed' | 'timed_out';
6
+ export type SessionPhase = 'init' | 'execution';
7
+ export interface TaskContext {
8
+ workingDirectory: string;
9
+ initScript: string | null;
10
+ repoUrl: string | null;
11
+ environmentVars: Record<string, string>;
12
+ }
13
+ export interface Task {
14
+ id: string;
15
+ title: string;
16
+ description: string;
17
+ status: TaskStatus;
18
+ phase: TaskPhase;
19
+ priority: number;
20
+ tags: string[];
21
+ agentId: string | null;
22
+ lockedAt: Date | null;
23
+ context: TaskContext;
24
+ metadata: Record<string, unknown>;
25
+ completedAt: Date | null;
26
+ deadline: Date | null;
27
+ createdAt: Date;
28
+ updatedAt: Date;
29
+ }
30
+ export interface Subtask {
31
+ id: string;
32
+ taskId: string;
33
+ title: string;
34
+ description: string;
35
+ category: SubtaskCategory;
36
+ steps: string[];
37
+ status: SubtaskStatus;
38
+ priority: number;
39
+ dependsOn: string[];
40
+ agentId: string | null;
41
+ attempts: number;
42
+ lastError: string | null;
43
+ evidence: string | null;
44
+ createdAt: Date;
45
+ updatedAt: Date;
46
+ }
47
+ export interface Session {
48
+ id: string;
49
+ taskId: string;
50
+ agentId: string;
51
+ phase: SessionPhase;
52
+ startedAt: Date;
53
+ endedAt: Date | null;
54
+ subtasksAttempted: string[];
55
+ subtasksCompleted: string[];
56
+ progressNote: string;
57
+ gitCommit: string | null;
58
+ tokenCount: number | null;
59
+ status: SessionStatus;
60
+ createdAt: Date;
61
+ updatedAt: Date;
62
+ }
63
+ export interface Checkpoint {
64
+ id: string;
65
+ taskId: string;
66
+ sessionId: string;
67
+ label: string;
68
+ snapshot: Record<string, unknown>;
69
+ createdAt: Date;
70
+ updatedAt: Date;
71
+ }
72
+ export interface TaskListFilter {
73
+ status?: TaskStatus;
74
+ phase?: TaskPhase;
75
+ tags?: string[];
76
+ limit: number;
77
+ skip: number;
78
+ }
79
+ export declare const generateId: () => string;
80
+ //# sourceMappingURL=types.d.ts.map