@hasna/todos 0.9.17 → 0.9.19
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/cli/index.js +192 -20
- package/dist/db/agents.d.ts +6 -0
- package/dist/db/agents.d.ts.map +1 -1
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/plans.d.ts.map +1 -1
- package/dist/db/projects.d.ts +1 -0
- package/dist/db/projects.d.ts.map +1 -1
- package/dist/db/tasks.d.ts.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +316 -20
- package/dist/lib/completion-guard.d.ts +17 -0
- package/dist/lib/completion-guard.d.ts.map +1 -0
- package/dist/lib/config.d.ts +13 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/mcp/index.js +188 -20
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +192 -20
- package/dist/server/serve.d.ts +9 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/types/index.d.ts +84 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -2138,29 +2138,123 @@ function runMigrations(db) {
|
|
|
2138
2138
|
const result = db.query("SELECT MAX(id) as max_id FROM _migrations").get();
|
|
2139
2139
|
const currentLevel = result?.max_id ?? 0;
|
|
2140
2140
|
for (let i = currentLevel;i < MIGRATIONS.length; i++) {
|
|
2141
|
-
|
|
2141
|
+
try {
|
|
2142
|
+
db.exec(MIGRATIONS[i]);
|
|
2143
|
+
} catch {}
|
|
2142
2144
|
}
|
|
2143
2145
|
} catch {
|
|
2144
2146
|
for (const migration of MIGRATIONS) {
|
|
2145
|
-
|
|
2147
|
+
try {
|
|
2148
|
+
db.exec(migration);
|
|
2149
|
+
} catch {}
|
|
2146
2150
|
}
|
|
2147
2151
|
}
|
|
2148
|
-
|
|
2152
|
+
ensureSchema(db);
|
|
2149
2153
|
}
|
|
2150
|
-
function
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2154
|
+
function ensureSchema(db) {
|
|
2155
|
+
const ensureColumn = (table, column, type) => {
|
|
2156
|
+
try {
|
|
2157
|
+
db.query(`SELECT ${column} FROM ${table} LIMIT 0`).get();
|
|
2158
|
+
} catch {
|
|
2159
|
+
try {
|
|
2160
|
+
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${type}`);
|
|
2161
|
+
} catch {}
|
|
2155
2162
|
}
|
|
2156
|
-
}
|
|
2157
|
-
|
|
2158
|
-
db.query("SELECT task_prefix FROM projects LIMIT 0").get();
|
|
2159
|
-
} catch {
|
|
2163
|
+
};
|
|
2164
|
+
const ensureTable = (name, sql) => {
|
|
2160
2165
|
try {
|
|
2161
|
-
db.
|
|
2166
|
+
const exists = db.query("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(name);
|
|
2167
|
+
if (!exists)
|
|
2168
|
+
db.exec(sql);
|
|
2162
2169
|
} catch {}
|
|
2163
|
-
}
|
|
2170
|
+
};
|
|
2171
|
+
const ensureIndex = (sql) => {
|
|
2172
|
+
try {
|
|
2173
|
+
db.exec(sql);
|
|
2174
|
+
} catch {}
|
|
2175
|
+
};
|
|
2176
|
+
ensureTable("agents", `
|
|
2177
|
+
CREATE TABLE agents (
|
|
2178
|
+
id TEXT PRIMARY KEY, name TEXT NOT NULL UNIQUE, description TEXT,
|
|
2179
|
+
role TEXT DEFAULT 'agent', permissions TEXT DEFAULT '["*"]',
|
|
2180
|
+
metadata TEXT DEFAULT '{}',
|
|
2181
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
2182
|
+
last_seen_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2183
|
+
)`);
|
|
2184
|
+
ensureTable("task_lists", `
|
|
2185
|
+
CREATE TABLE task_lists (
|
|
2186
|
+
id TEXT PRIMARY KEY, project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
|
|
2187
|
+
slug TEXT NOT NULL, name TEXT NOT NULL, description TEXT,
|
|
2188
|
+
metadata TEXT DEFAULT '{}',
|
|
2189
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
2190
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
2191
|
+
UNIQUE(project_id, slug)
|
|
2192
|
+
)`);
|
|
2193
|
+
ensureTable("plans", `
|
|
2194
|
+
CREATE TABLE plans (
|
|
2195
|
+
id TEXT PRIMARY KEY, project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
|
|
2196
|
+
task_list_id TEXT, agent_id TEXT,
|
|
2197
|
+
name TEXT NOT NULL, description TEXT,
|
|
2198
|
+
status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'completed', 'archived')),
|
|
2199
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
2200
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2201
|
+
)`);
|
|
2202
|
+
ensureTable("task_tags", `
|
|
2203
|
+
CREATE TABLE task_tags (
|
|
2204
|
+
task_id TEXT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
|
|
2205
|
+
tag TEXT NOT NULL, PRIMARY KEY (task_id, tag)
|
|
2206
|
+
)`);
|
|
2207
|
+
ensureTable("task_history", `
|
|
2208
|
+
CREATE TABLE task_history (
|
|
2209
|
+
id TEXT PRIMARY KEY, task_id TEXT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
|
|
2210
|
+
action TEXT NOT NULL, field TEXT, old_value TEXT, new_value TEXT, agent_id TEXT,
|
|
2211
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2212
|
+
)`);
|
|
2213
|
+
ensureTable("webhooks", `
|
|
2214
|
+
CREATE TABLE webhooks (
|
|
2215
|
+
id TEXT PRIMARY KEY, url TEXT NOT NULL, events TEXT NOT NULL DEFAULT '[]',
|
|
2216
|
+
secret TEXT, active INTEGER NOT NULL DEFAULT 1,
|
|
2217
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2218
|
+
)`);
|
|
2219
|
+
ensureTable("task_templates", `
|
|
2220
|
+
CREATE TABLE task_templates (
|
|
2221
|
+
id TEXT PRIMARY KEY, name TEXT NOT NULL, title_pattern TEXT NOT NULL,
|
|
2222
|
+
description TEXT, priority TEXT DEFAULT 'medium', tags TEXT DEFAULT '[]',
|
|
2223
|
+
project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
|
|
2224
|
+
plan_id TEXT REFERENCES plans(id) ON DELETE SET NULL,
|
|
2225
|
+
metadata TEXT DEFAULT '{}',
|
|
2226
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2227
|
+
)`);
|
|
2228
|
+
ensureColumn("projects", "task_list_id", "TEXT");
|
|
2229
|
+
ensureColumn("projects", "task_prefix", "TEXT");
|
|
2230
|
+
ensureColumn("projects", "task_counter", "INTEGER NOT NULL DEFAULT 0");
|
|
2231
|
+
ensureColumn("tasks", "plan_id", "TEXT REFERENCES plans(id) ON DELETE SET NULL");
|
|
2232
|
+
ensureColumn("tasks", "task_list_id", "TEXT REFERENCES task_lists(id) ON DELETE SET NULL");
|
|
2233
|
+
ensureColumn("tasks", "short_id", "TEXT");
|
|
2234
|
+
ensureColumn("tasks", "due_at", "TEXT");
|
|
2235
|
+
ensureColumn("tasks", "estimated_minutes", "INTEGER");
|
|
2236
|
+
ensureColumn("tasks", "requires_approval", "INTEGER NOT NULL DEFAULT 0");
|
|
2237
|
+
ensureColumn("tasks", "approved_by", "TEXT");
|
|
2238
|
+
ensureColumn("tasks", "approved_at", "TEXT");
|
|
2239
|
+
ensureColumn("agents", "role", "TEXT DEFAULT 'agent'");
|
|
2240
|
+
ensureColumn("agents", "permissions", `TEXT DEFAULT '["*"]'`);
|
|
2241
|
+
ensureColumn("plans", "task_list_id", "TEXT");
|
|
2242
|
+
ensureColumn("plans", "agent_id", "TEXT");
|
|
2243
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_tasks_plan ON tasks(plan_id)");
|
|
2244
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_tasks_task_list ON tasks(task_list_id)");
|
|
2245
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_tasks_due_at ON tasks(due_at)");
|
|
2246
|
+
ensureIndex("CREATE UNIQUE INDEX IF NOT EXISTS idx_tasks_short_id ON tasks(short_id) WHERE short_id IS NOT NULL");
|
|
2247
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_agents_name ON agents(name)");
|
|
2248
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_lists_project ON task_lists(project_id)");
|
|
2249
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_lists_slug ON task_lists(slug)");
|
|
2250
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_tags_tag ON task_tags(tag)");
|
|
2251
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_tags_task ON task_tags(task_id)");
|
|
2252
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_plans_project ON plans(project_id)");
|
|
2253
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_plans_status ON plans(status)");
|
|
2254
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_plans_task_list ON plans(task_list_id)");
|
|
2255
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_plans_agent ON plans(agent_id)");
|
|
2256
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_history_task ON task_history(task_id)");
|
|
2257
|
+
ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_history_agent ON task_history(agent_id)");
|
|
2164
2258
|
}
|
|
2165
2259
|
function backfillTaskTags(db) {
|
|
2166
2260
|
try {
|
|
@@ -2390,6 +2484,51 @@ var init_database = __esm(() => {
|
|
|
2390
2484
|
CREATE INDEX IF NOT EXISTS idx_plans_task_list ON plans(task_list_id);
|
|
2391
2485
|
CREATE INDEX IF NOT EXISTS idx_plans_agent ON plans(agent_id);
|
|
2392
2486
|
INSERT OR IGNORE INTO _migrations (id) VALUES (9);
|
|
2487
|
+
`,
|
|
2488
|
+
`
|
|
2489
|
+
CREATE TABLE IF NOT EXISTS task_history (
|
|
2490
|
+
id TEXT PRIMARY KEY,
|
|
2491
|
+
task_id TEXT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
|
|
2492
|
+
action TEXT NOT NULL,
|
|
2493
|
+
field TEXT,
|
|
2494
|
+
old_value TEXT,
|
|
2495
|
+
new_value TEXT,
|
|
2496
|
+
agent_id TEXT,
|
|
2497
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2498
|
+
);
|
|
2499
|
+
CREATE INDEX IF NOT EXISTS idx_task_history_task ON task_history(task_id);
|
|
2500
|
+
CREATE INDEX IF NOT EXISTS idx_task_history_agent ON task_history(agent_id);
|
|
2501
|
+
|
|
2502
|
+
CREATE TABLE IF NOT EXISTS webhooks (
|
|
2503
|
+
id TEXT PRIMARY KEY,
|
|
2504
|
+
url TEXT NOT NULL,
|
|
2505
|
+
events TEXT NOT NULL DEFAULT '[]',
|
|
2506
|
+
secret TEXT,
|
|
2507
|
+
active INTEGER NOT NULL DEFAULT 1,
|
|
2508
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2509
|
+
);
|
|
2510
|
+
|
|
2511
|
+
CREATE TABLE IF NOT EXISTS task_templates (
|
|
2512
|
+
id TEXT PRIMARY KEY,
|
|
2513
|
+
name TEXT NOT NULL,
|
|
2514
|
+
title_pattern TEXT NOT NULL,
|
|
2515
|
+
description TEXT,
|
|
2516
|
+
priority TEXT DEFAULT 'medium',
|
|
2517
|
+
tags TEXT DEFAULT '[]',
|
|
2518
|
+
project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
|
|
2519
|
+
plan_id TEXT REFERENCES plans(id) ON DELETE SET NULL,
|
|
2520
|
+
metadata TEXT DEFAULT '{}',
|
|
2521
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2522
|
+
);
|
|
2523
|
+
|
|
2524
|
+
ALTER TABLE tasks ADD COLUMN estimated_minutes INTEGER;
|
|
2525
|
+
ALTER TABLE tasks ADD COLUMN requires_approval INTEGER NOT NULL DEFAULT 0;
|
|
2526
|
+
ALTER TABLE tasks ADD COLUMN approved_by TEXT;
|
|
2527
|
+
ALTER TABLE tasks ADD COLUMN approved_at TEXT;
|
|
2528
|
+
|
|
2529
|
+
ALTER TABLE agents ADD COLUMN permissions TEXT DEFAULT '["*"]';
|
|
2530
|
+
|
|
2531
|
+
INSERT OR IGNORE INTO _migrations (id) VALUES (10);
|
|
2393
2532
|
`
|
|
2394
2533
|
];
|
|
2395
2534
|
});
|
|
@@ -2763,7 +2902,8 @@ function rowToTask(row) {
|
|
|
2763
2902
|
tags: JSON.parse(row.tags || "[]"),
|
|
2764
2903
|
metadata: JSON.parse(row.metadata || "{}"),
|
|
2765
2904
|
status: row.status,
|
|
2766
|
-
priority: row.priority
|
|
2905
|
+
priority: row.priority,
|
|
2906
|
+
requires_approval: !!row.requires_approval
|
|
2767
2907
|
};
|
|
2768
2908
|
}
|
|
2769
2909
|
function insertTaskTags(taskId, tags, db) {
|
|
@@ -2786,8 +2926,8 @@ function createTask(input, db) {
|
|
|
2786
2926
|
const tags = input.tags || [];
|
|
2787
2927
|
const shortId = input.project_id ? nextTaskShortId(input.project_id, d) : null;
|
|
2788
2928
|
const title = shortId ? `${shortId}: ${input.title}` : input.title;
|
|
2789
|
-
d.run(`INSERT INTO tasks (id, short_id, project_id, parent_id, plan_id, task_list_id, title, description, status, priority, agent_id, assigned_to, session_id, working_dir, tags, metadata, version, created_at, updated_at, due_at)
|
|
2790
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?)`, [
|
|
2929
|
+
d.run(`INSERT INTO tasks (id, short_id, project_id, parent_id, plan_id, task_list_id, title, description, status, priority, agent_id, assigned_to, session_id, working_dir, tags, metadata, version, created_at, updated_at, due_at, estimated_minutes, requires_approval, approved_by, approved_at)
|
|
2930
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
2791
2931
|
id,
|
|
2792
2932
|
shortId,
|
|
2793
2933
|
input.project_id || null,
|
|
@@ -2806,7 +2946,11 @@ function createTask(input, db) {
|
|
|
2806
2946
|
JSON.stringify(input.metadata || {}),
|
|
2807
2947
|
timestamp,
|
|
2808
2948
|
timestamp,
|
|
2809
|
-
input.due_at || null
|
|
2949
|
+
input.due_at || null,
|
|
2950
|
+
input.estimated_minutes || null,
|
|
2951
|
+
input.requires_approval ? 1 : 0,
|
|
2952
|
+
null,
|
|
2953
|
+
null
|
|
2810
2954
|
]);
|
|
2811
2955
|
if (tags.length > 0) {
|
|
2812
2956
|
insertTaskTags(id, tags, d);
|
|
@@ -2978,6 +3122,20 @@ function updateTask(id, input, db) {
|
|
|
2978
3122
|
sets.push("due_at = ?");
|
|
2979
3123
|
params.push(input.due_at);
|
|
2980
3124
|
}
|
|
3125
|
+
if (input.estimated_minutes !== undefined) {
|
|
3126
|
+
sets.push("estimated_minutes = ?");
|
|
3127
|
+
params.push(input.estimated_minutes);
|
|
3128
|
+
}
|
|
3129
|
+
if (input.requires_approval !== undefined) {
|
|
3130
|
+
sets.push("requires_approval = ?");
|
|
3131
|
+
params.push(input.requires_approval ? 1 : 0);
|
|
3132
|
+
}
|
|
3133
|
+
if (input.approved_by !== undefined) {
|
|
3134
|
+
sets.push("approved_by = ?");
|
|
3135
|
+
params.push(input.approved_by);
|
|
3136
|
+
sets.push("approved_at = ?");
|
|
3137
|
+
params.push(now());
|
|
3138
|
+
}
|
|
2981
3139
|
params.push(id, input.version);
|
|
2982
3140
|
const result = d.run(`UPDATE tasks SET ${sets.join(", ")} WHERE id = ? AND version = ?`, params);
|
|
2983
3141
|
if (result.changes === 0) {
|
|
@@ -3121,6 +3279,7 @@ function shortUuid() {
|
|
|
3121
3279
|
function rowToAgent(row) {
|
|
3122
3280
|
return {
|
|
3123
3281
|
...row,
|
|
3282
|
+
permissions: JSON.parse(row.permissions || '["*"]'),
|
|
3124
3283
|
metadata: JSON.parse(row.metadata || "{}")
|
|
3125
3284
|
};
|
|
3126
3285
|
}
|
|
@@ -3133,8 +3292,17 @@ function registerAgent(input, db) {
|
|
|
3133
3292
|
}
|
|
3134
3293
|
const id = shortUuid();
|
|
3135
3294
|
const timestamp = now();
|
|
3136
|
-
d.run(`INSERT INTO agents (id, name, description, role, metadata, created_at, last_seen_at)
|
|
3137
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)`, [
|
|
3295
|
+
d.run(`INSERT INTO agents (id, name, description, role, permissions, metadata, created_at, last_seen_at)
|
|
3296
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
3297
|
+
id,
|
|
3298
|
+
input.name,
|
|
3299
|
+
input.description || null,
|
|
3300
|
+
input.role || "agent",
|
|
3301
|
+
JSON.stringify(input.permissions || ["*"]),
|
|
3302
|
+
JSON.stringify(input.metadata || {}),
|
|
3303
|
+
timestamp,
|
|
3304
|
+
timestamp
|
|
3305
|
+
]);
|
|
3138
3306
|
return getAgent(id, d);
|
|
3139
3307
|
}
|
|
3140
3308
|
function getAgent(id, db) {
|
|
@@ -3174,6 +3342,10 @@ function updateAgent(id, input, db) {
|
|
|
3174
3342
|
sets.push("role = ?");
|
|
3175
3343
|
params.push(input.role);
|
|
3176
3344
|
}
|
|
3345
|
+
if (input.permissions !== undefined) {
|
|
3346
|
+
sets.push("permissions = ?");
|
|
3347
|
+
params.push(JSON.stringify(input.permissions));
|
|
3348
|
+
}
|
|
3177
3349
|
if (input.metadata !== undefined) {
|
|
3178
3350
|
sets.push("metadata = ?");
|
|
3179
3351
|
params.push(JSON.stringify(input.metadata));
|
package/dist/db/agents.d.ts
CHANGED
|
@@ -9,5 +9,11 @@ export declare function getAgent(id: string, db?: Database): Agent | null;
|
|
|
9
9
|
export declare function getAgentByName(name: string, db?: Database): Agent | null;
|
|
10
10
|
export declare function listAgents(db?: Database): Agent[];
|
|
11
11
|
export declare function updateAgentActivity(id: string, db?: Database): void;
|
|
12
|
+
export declare function updateAgent(id: string, input: {
|
|
13
|
+
name?: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
role?: string;
|
|
16
|
+
metadata?: Record<string, unknown>;
|
|
17
|
+
}, db?: Database): Agent;
|
|
12
18
|
export declare function deleteAgent(id: string, db?: Database): boolean;
|
|
13
19
|
//# sourceMappingURL=agents.d.ts.map
|
package/dist/db/agents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/db/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAY,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAc7E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAmB7E;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAIhE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAIxE;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,CAGjD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAGnE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAG9D"}
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/db/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAY,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAc7E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAmB7E;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAIhE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAIxE;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,CAGjD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAGnE;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACjG,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,CA4BP;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAG9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,eAAO,MAAM,mBAAmB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AA2RtC,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAkBrD;AA6ED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAK9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,SAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAGpD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB9F"}
|
package/dist/db/plans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/db/plans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIhF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/db/plans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIhF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAsBtE;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAI9D;AAED,wBAAgB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,CAUnE;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAiCN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAI7D"}
|
package/dist/db/projects.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export declare function getProjectByPath(path: string, db?: Database): Project |
|
|
|
7
7
|
export declare function listProjects(db?: Database): Project[];
|
|
8
8
|
export declare function updateProject(id: string, input: Partial<Pick<Project, "name" | "description" | "task_list_id">>, db?: Database): Project;
|
|
9
9
|
export declare function deleteProject(id: string, db?: Database): boolean;
|
|
10
|
+
export declare function nextTaskShortId(projectId: string, db?: Database): string | null;
|
|
10
11
|
export declare function ensureProject(name: string, path: string, db?: Database): Project;
|
|
11
12
|
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIrE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIrE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAyBD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,kBAAkB,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAcT;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAIpE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAKrD;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC,CAAC,EACtE,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAyBT;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAIhE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAaT"}
|
package/dist/db/tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/db/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,IAAI,EACJ,cAAc,EACd,UAAU,EAEV,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/db/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,IAAI,EACJ,cAAc,EACd,UAAU,EAEV,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAkC3B,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CA2CtE;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAK9D;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,iBAAiB,GAAG,IAAI,CAiD1B;AAED,wBAAgB,SAAS,CAAC,MAAM,GAAE,UAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,CA8FxE;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAoFN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAI7D;AAED,wBAAgB,SAAS,CACvB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAmBN;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CA0BN;AAED,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,QAAQ,GACZ,UAAU,CAiCZ;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAkBT;AAID,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAgBN;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAOT;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,QAAQ,GACZ,cAAc,EAAE,CAKlB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,QAAQ,GACZ,cAAc,EAAE,CAKlB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
export { getDatabase, closeDatabase, resetDatabase, resolvePartialId, now, uuid } from "./db/database.js";
|
|
2
2
|
export { createTask, getTask, getTaskWithRelations, listTasks, updateTask, deleteTask, startTask, completeTask, lockTask, unlockTask, addDependency, removeDependency, getTaskDependencies, getTaskDependents, } from "./db/tasks.js";
|
|
3
|
-
export { createProject, getProject, getProjectByPath, listProjects, updateProject, deleteProject, ensureProject, slugify, } from "./db/projects.js";
|
|
3
|
+
export { createProject, getProject, getProjectByPath, listProjects, updateProject, deleteProject, ensureProject, nextTaskShortId, slugify, } from "./db/projects.js";
|
|
4
4
|
export { createPlan, getPlan, listPlans, updatePlan, deletePlan, } from "./db/plans.js";
|
|
5
5
|
export { addComment, getComment, listComments, deleteComment, } from "./db/comments.js";
|
|
6
|
-
export { registerAgent, getAgent, getAgentByName, listAgents, updateAgentActivity, deleteAgent, } from "./db/agents.js";
|
|
6
|
+
export { registerAgent, getAgent, getAgentByName, listAgents, updateAgent, updateAgentActivity, deleteAgent, } from "./db/agents.js";
|
|
7
7
|
export { createTaskList, getTaskList, getTaskListBySlug, listTaskLists, updateTaskList, deleteTaskList, ensureTaskList, } from "./db/task-lists.js";
|
|
8
8
|
export { createSession, getSession, listSessions, updateSessionActivity, deleteSession, } from "./db/sessions.js";
|
|
9
9
|
export { searchTasks } from "./lib/search.js";
|
|
10
10
|
export { defaultSyncAgents, syncWithAgent, syncWithAgents } from "./lib/sync.js";
|
|
11
11
|
export type { SyncResult } from "./lib/sync-types.js";
|
|
12
|
-
export { loadConfig } from "./lib/config.js";
|
|
13
|
-
export type { TodosConfig, AgentConfig } from "./lib/config.js";
|
|
12
|
+
export { loadConfig, getCompletionGuardConfig } from "./lib/config.js";
|
|
13
|
+
export type { TodosConfig, AgentConfig, CompletionGuardConfig } from "./lib/config.js";
|
|
14
|
+
export { checkCompletionGuard } from "./lib/completion-guard.js";
|
|
14
15
|
export type { Task, TaskWithRelations, CreateTaskInput, UpdateTaskInput, TaskFilter, TaskStatus, TaskPriority, TaskDependency, TaskComment, CreateCommentInput, Project, CreateProjectInput, Plan, CreatePlanInput, UpdatePlanInput, PlanStatus, Session, CreateSessionInput, Agent, AgentRow, RegisterAgentInput, TaskList, TaskListRow, CreateTaskListInput, UpdateTaskListInput, LockResult, TaskRow, SessionRow, } from "./types/index.js";
|
|
15
|
-
export { TASK_STATUSES, TASK_PRIORITIES, PLAN_STATUSES, VersionConflictError, TaskNotFoundError, ProjectNotFoundError, PlanNotFoundError, LockError, DependencyCycleError, AgentNotFoundError, TaskListNotFoundError, } from "./types/index.js";
|
|
16
|
+
export { TASK_STATUSES, TASK_PRIORITIES, PLAN_STATUSES, VersionConflictError, TaskNotFoundError, ProjectNotFoundError, PlanNotFoundError, LockError, DependencyCycleError, AgentNotFoundError, TaskListNotFoundError, CompletionGuardError, } from "./types/index.js";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG1G,OAAO,EACL,UAAU,EACV,OAAO,EACP,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,OAAO,GACR,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG1G,OAAO,EACL,UAAU,EACV,OAAO,EACP,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,OAAO,GACR,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,YAAY,EACV,IAAI,EACJ,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,kBAAkB,EAClB,IAAI,EACJ,eAAe,EACf,eAAe,EACf,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
|