@hasna/todos 0.8.0 → 0.9.0
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/README.md +2 -23
- package/dist/cli/components/App.d.ts +2 -0
- package/dist/cli/components/App.d.ts.map +1 -0
- package/dist/cli/components/Header.d.ts +8 -0
- package/dist/cli/components/Header.d.ts.map +1 -0
- package/dist/cli/components/ProjectList.d.ts +8 -0
- package/dist/cli/components/ProjectList.d.ts.map +1 -0
- package/dist/cli/components/SearchView.d.ts +10 -0
- package/dist/cli/components/SearchView.d.ts.map +1 -0
- package/dist/cli/components/TaskDetail.d.ts +7 -0
- package/dist/cli/components/TaskDetail.d.ts.map +1 -0
- package/dist/cli/components/TaskForm.d.ts +15 -0
- package/dist/cli/components/TaskForm.d.ts.map +1 -0
- package/dist/cli/components/TaskList.d.ts +8 -0
- package/dist/cli/components/TaskList.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +561 -7192
- package/dist/db/agents.d.ts +13 -0
- package/dist/db/agents.d.ts.map +1 -0
- package/dist/db/comments.d.ts +7 -0
- package/dist/db/comments.d.ts.map +1 -0
- package/dist/db/database.d.ts +12 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/plans.d.ts +8 -0
- package/dist/db/plans.d.ts.map +1 -0
- package/dist/db/projects.d.ts +11 -0
- package/dist/db/projects.d.ts.map +1 -0
- package/dist/db/sessions.d.ts +8 -0
- package/dist/db/sessions.d.ts.map +1 -0
- package/dist/db/task-lists.d.ts +10 -0
- package/dist/db/task-lists.d.ts.map +1 -0
- package/dist/db/tasks.d.ts +17 -0
- package/dist/db/tasks.d.ts.map +1 -0
- package/dist/index.d.ts +16 -299
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +194 -272
- package/dist/lib/agent-tasks.d.ts +11 -0
- package/dist/lib/agent-tasks.d.ts.map +1 -0
- package/dist/lib/claude-tasks.d.ts +20 -0
- package/dist/lib/claude-tasks.d.ts.map +1 -0
- package/dist/lib/config.d.ts +21 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/search.d.ts +4 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/sync-types.d.ts +16 -0
- package/dist/lib/sync-types.d.ts.map +1 -0
- package/dist/lib/sync-utils.d.ts +12 -0
- package/dist/lib/sync-utils.d.ts.map +1 -0
- package/dist/lib/sync.d.ts +9 -0
- package/dist/lib/sync.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +343 -67
- package/dist/types/index.d.ts +275 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +3 -6
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { Agent, RegisterAgentInput } from "../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Register an agent. If an agent with the same name already exists,
|
|
5
|
+
* return the existing agent (idempotent). This is the "init" operation.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerAgent(input: RegisterAgentInput, db?: Database): Agent;
|
|
8
|
+
export declare function getAgent(id: string, db?: Database): Agent | null;
|
|
9
|
+
export declare function getAgentByName(name: string, db?: Database): Agent | null;
|
|
10
|
+
export declare function listAgents(db?: Database): Agent[];
|
|
11
|
+
export declare function updateAgentActivity(id: string, db?: Database): void;
|
|
12
|
+
export declare function deleteAgent(id: string, db?: Database): boolean;
|
|
13
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { CreateCommentInput, TaskComment } from "../types/index.js";
|
|
3
|
+
export declare function addComment(input: CreateCommentInput, db?: Database): TaskComment;
|
|
4
|
+
export declare function getComment(id: string, db?: Database): TaskComment | null;
|
|
5
|
+
export declare function listComments(taskId: string, db?: Database): TaskComment[];
|
|
6
|
+
export declare function deleteComment(id: string, db?: Database): boolean;
|
|
7
|
+
//# sourceMappingURL=comments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/db/comments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKzE,wBAAgB,UAAU,CACxB,KAAK,EAAE,kBAAkB,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,WAAW,CAyBb;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAKxE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,CAOzE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAIhE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Database } from "bun:sqlite";
|
|
2
|
+
export declare const LOCK_EXPIRY_MINUTES = 30;
|
|
3
|
+
export declare function getDatabase(dbPath?: string): Database;
|
|
4
|
+
export declare function closeDatabase(): void;
|
|
5
|
+
export declare function resetDatabase(): void;
|
|
6
|
+
export declare function now(): string;
|
|
7
|
+
export declare function uuid(): string;
|
|
8
|
+
export declare function isLockExpired(lockedAt: string | null): boolean;
|
|
9
|
+
export declare function lockExpiryCutoff(nowMs?: number): string;
|
|
10
|
+
export declare function clearExpiredLocks(db: Database): void;
|
|
11
|
+
export declare function resolvePartialId(db: Database, table: string, partialId: string): string | null;
|
|
12
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +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;AAgNtC,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAkBrD;AAiDD,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { CreatePlanInput, Plan, UpdatePlanInput } from "../types/index.js";
|
|
3
|
+
export declare function createPlan(input: CreatePlanInput, db?: Database): Plan;
|
|
4
|
+
export declare function getPlan(id: string, db?: Database): Plan | null;
|
|
5
|
+
export declare function listPlans(projectId?: string, db?: Database): Plan[];
|
|
6
|
+
export declare function updatePlan(id: string, input: UpdatePlanInput, db?: Database): Plan;
|
|
7
|
+
export declare function deletePlan(id: string, db?: Database): boolean;
|
|
8
|
+
//# sourceMappingURL=plans.d.ts.map
|
|
@@ -0,0 +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,CAoBtE;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,CAyBN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAI7D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { CreateProjectInput, Project } from "../types/index.js";
|
|
3
|
+
export declare function slugify(name: string): string;
|
|
4
|
+
export declare function createProject(input: CreateProjectInput, db?: Database): Project;
|
|
5
|
+
export declare function getProject(id: string, db?: Database): Project | null;
|
|
6
|
+
export declare function getProjectByPath(path: string, db?: Database): Project | null;
|
|
7
|
+
export declare function listProjects(db?: Database): Project[];
|
|
8
|
+
export declare function updateProject(id: string, input: Partial<Pick<Project, "name" | "description" | "task_list_id">>, db?: Database): Project;
|
|
9
|
+
export declare function deleteProject(id: string, db?: Database): boolean;
|
|
10
|
+
export declare function ensureProject(name: string, path: string, db?: Database): Project;
|
|
11
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +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;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,kBAAkB,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAaT;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,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAKT"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { CreateSessionInput, Session } from "../types/index.js";
|
|
3
|
+
export declare function createSession(input: CreateSessionInput, db?: Database): Session;
|
|
4
|
+
export declare function getSession(id: string, db?: Database): Session | null;
|
|
5
|
+
export declare function listSessions(db?: Database): Session[];
|
|
6
|
+
export declare function updateSessionActivity(id: string, db?: Database): void;
|
|
7
|
+
export declare function deleteSession(id: string, db?: Database): boolean;
|
|
8
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACV,kBAAkB,EAClB,OAAO,EAER,MAAM,mBAAmB,CAAC;AAU3B,wBAAgB,aAAa,CAC3B,KAAK,EAAE,kBAAkB,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAoBT;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAKpE;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAMrD;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAGN;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAIhE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { CreateTaskListInput, TaskList, UpdateTaskListInput } from "../types/index.js";
|
|
3
|
+
export declare function createTaskList(input: CreateTaskListInput, db?: Database): TaskList;
|
|
4
|
+
export declare function getTaskList(id: string, db?: Database): TaskList | null;
|
|
5
|
+
export declare function getTaskListBySlug(slug: string, projectId?: string, db?: Database): TaskList | null;
|
|
6
|
+
export declare function listTaskLists(projectId?: string, db?: Database): TaskList[];
|
|
7
|
+
export declare function updateTaskList(id: string, input: UpdateTaskListInput, db?: Database): TaskList;
|
|
8
|
+
export declare function deleteTaskList(id: string, db?: Database): boolean;
|
|
9
|
+
export declare function ensureTaskList(name: string, slug: string, projectId?: string, db?: Database): TaskList;
|
|
10
|
+
//# sourceMappingURL=task-lists.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-lists.d.ts","sourceRoot":"","sources":["../../src/db/task-lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAe,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYzG,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAwBlF;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAItE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CASlG;AAED,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAM3E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAyB9F;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAKtG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { CreateTaskInput, LockResult, Task, TaskDependency, TaskFilter, TaskWithRelations, UpdateTaskInput } from "../types/index.js";
|
|
3
|
+
export declare function createTask(input: CreateTaskInput, db?: Database): Task;
|
|
4
|
+
export declare function getTask(id: string, db?: Database): Task | null;
|
|
5
|
+
export declare function getTaskWithRelations(id: string, db?: Database): TaskWithRelations | null;
|
|
6
|
+
export declare function listTasks(filter?: TaskFilter, db?: Database): Task[];
|
|
7
|
+
export declare function updateTask(id: string, input: UpdateTaskInput, db?: Database): Task;
|
|
8
|
+
export declare function deleteTask(id: string, db?: Database): boolean;
|
|
9
|
+
export declare function startTask(id: string, agentId: string, db?: Database): Task;
|
|
10
|
+
export declare function completeTask(id: string, agentId?: string, db?: Database): Task;
|
|
11
|
+
export declare function lockTask(id: string, agentId: string, db?: Database): LockResult;
|
|
12
|
+
export declare function unlockTask(id: string, agentId?: string, db?: Database): boolean;
|
|
13
|
+
export declare function addDependency(taskId: string, dependsOn: string, db?: Database): void;
|
|
14
|
+
export declare function removeDependency(taskId: string, dependsOn: string, db?: Database): boolean;
|
|
15
|
+
export declare function getTaskDependencies(taskId: string, db?: Database): TaskDependency[];
|
|
16
|
+
export declare function getTaskDependents(taskId: string, db?: Database): TaskDependency[];
|
|
17
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +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;AAgC3B,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAmCtE;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,CAwFxE;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CA4EN;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,CAuBN;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,299 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
] as const;
|
|
18
|
-
export type TaskPriority = (typeof TASK_PRIORITIES)[number];
|
|
19
|
-
|
|
20
|
-
// Plan statuses
|
|
21
|
-
export const PLAN_STATUSES = ["active", "completed", "archived"] as const;
|
|
22
|
-
export type PlanStatus = (typeof PLAN_STATUSES)[number];
|
|
23
|
-
|
|
24
|
-
// Project
|
|
25
|
-
export interface Project {
|
|
26
|
-
id: string;
|
|
27
|
-
name: string;
|
|
28
|
-
path: string;
|
|
29
|
-
description: string | null;
|
|
30
|
-
task_list_id: string | null;
|
|
31
|
-
created_at: string;
|
|
32
|
-
updated_at: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface CreateProjectInput {
|
|
36
|
-
name: string;
|
|
37
|
-
path: string;
|
|
38
|
-
description?: string;
|
|
39
|
-
task_list_id?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Plan
|
|
43
|
-
export interface Plan {
|
|
44
|
-
id: string;
|
|
45
|
-
project_id: string | null;
|
|
46
|
-
name: string;
|
|
47
|
-
description: string | null;
|
|
48
|
-
status: PlanStatus;
|
|
49
|
-
created_at: string;
|
|
50
|
-
updated_at: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface CreatePlanInput {
|
|
54
|
-
name: string;
|
|
55
|
-
project_id?: string;
|
|
56
|
-
description?: string;
|
|
57
|
-
status?: PlanStatus;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export interface UpdatePlanInput {
|
|
61
|
-
name?: string;
|
|
62
|
-
description?: string;
|
|
63
|
-
status?: PlanStatus;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Task
|
|
67
|
-
export interface Task {
|
|
68
|
-
id: string;
|
|
69
|
-
project_id: string | null;
|
|
70
|
-
parent_id: string | null;
|
|
71
|
-
plan_id: string | null;
|
|
72
|
-
title: string;
|
|
73
|
-
description: string | null;
|
|
74
|
-
status: TaskStatus;
|
|
75
|
-
priority: TaskPriority;
|
|
76
|
-
agent_id: string | null;
|
|
77
|
-
assigned_to: string | null;
|
|
78
|
-
session_id: string | null;
|
|
79
|
-
working_dir: string | null;
|
|
80
|
-
tags: string[]; // stored as JSON in DB
|
|
81
|
-
metadata: Record<string, unknown>; // stored as JSON in DB
|
|
82
|
-
version: number;
|
|
83
|
-
locked_by: string | null;
|
|
84
|
-
locked_at: string | null;
|
|
85
|
-
created_at: string;
|
|
86
|
-
updated_at: string;
|
|
87
|
-
completed_at: string | null;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Task with relations loaded
|
|
91
|
-
export interface TaskWithRelations extends Task {
|
|
92
|
-
subtasks: Task[];
|
|
93
|
-
dependencies: Task[];
|
|
94
|
-
blocked_by: Task[];
|
|
95
|
-
comments: TaskComment[];
|
|
96
|
-
parent: Task | null;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export interface CreateTaskInput {
|
|
100
|
-
title: string;
|
|
101
|
-
description?: string;
|
|
102
|
-
project_id?: string;
|
|
103
|
-
parent_id?: string;
|
|
104
|
-
plan_id?: string;
|
|
105
|
-
status?: TaskStatus;
|
|
106
|
-
priority?: TaskPriority;
|
|
107
|
-
agent_id?: string;
|
|
108
|
-
assigned_to?: string;
|
|
109
|
-
session_id?: string;
|
|
110
|
-
working_dir?: string;
|
|
111
|
-
tags?: string[];
|
|
112
|
-
metadata?: Record<string, unknown>;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export interface UpdateTaskInput {
|
|
116
|
-
title?: string;
|
|
117
|
-
description?: string;
|
|
118
|
-
status?: TaskStatus;
|
|
119
|
-
priority?: TaskPriority;
|
|
120
|
-
assigned_to?: string;
|
|
121
|
-
plan_id?: string;
|
|
122
|
-
tags?: string[];
|
|
123
|
-
metadata?: Record<string, unknown>;
|
|
124
|
-
version: number; // required for optimistic locking
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export interface TaskFilter {
|
|
128
|
-
project_id?: string;
|
|
129
|
-
parent_id?: string | null;
|
|
130
|
-
plan_id?: string;
|
|
131
|
-
status?: TaskStatus | TaskStatus[];
|
|
132
|
-
priority?: TaskPriority | TaskPriority[];
|
|
133
|
-
assigned_to?: string;
|
|
134
|
-
agent_id?: string;
|
|
135
|
-
session_id?: string;
|
|
136
|
-
tags?: string[];
|
|
137
|
-
include_subtasks?: boolean;
|
|
138
|
-
limit?: number;
|
|
139
|
-
offset?: number;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// Task dependency
|
|
143
|
-
export interface TaskDependency {
|
|
144
|
-
task_id: string;
|
|
145
|
-
depends_on: string;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Task comment
|
|
149
|
-
export interface TaskComment {
|
|
150
|
-
id: string;
|
|
151
|
-
task_id: string;
|
|
152
|
-
agent_id: string | null;
|
|
153
|
-
session_id: string | null;
|
|
154
|
-
content: string;
|
|
155
|
-
created_at: string;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export interface CreateCommentInput {
|
|
159
|
-
task_id: string;
|
|
160
|
-
content: string;
|
|
161
|
-
agent_id?: string;
|
|
162
|
-
session_id?: string;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Session
|
|
166
|
-
export interface Session {
|
|
167
|
-
id: string;
|
|
168
|
-
agent_id: string | null;
|
|
169
|
-
project_id: string | null;
|
|
170
|
-
working_dir: string | null;
|
|
171
|
-
started_at: string;
|
|
172
|
-
last_activity: string;
|
|
173
|
-
metadata: Record<string, unknown>;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
export interface CreateSessionInput {
|
|
177
|
-
agent_id?: string;
|
|
178
|
-
project_id?: string;
|
|
179
|
-
working_dir?: string;
|
|
180
|
-
metadata?: Record<string, unknown>;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// API Key
|
|
184
|
-
export interface ApiKey {
|
|
185
|
-
id: string;
|
|
186
|
-
name: string;
|
|
187
|
-
key_prefix: string;
|
|
188
|
-
created_at: string;
|
|
189
|
-
last_used_at: string | null;
|
|
190
|
-
expires_at: string | null;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export interface ApiKeyWithSecret extends ApiKey {
|
|
194
|
-
key: string; // full key, only returned on creation
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
export interface CreateApiKeyInput {
|
|
198
|
-
name: string;
|
|
199
|
-
expires_at?: string;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// DB row types (raw from SQLite - JSON fields are strings)
|
|
203
|
-
export interface TaskRow {
|
|
204
|
-
id: string;
|
|
205
|
-
project_id: string | null;
|
|
206
|
-
parent_id: string | null;
|
|
207
|
-
plan_id: string | null;
|
|
208
|
-
title: string;
|
|
209
|
-
description: string | null;
|
|
210
|
-
status: string;
|
|
211
|
-
priority: string;
|
|
212
|
-
agent_id: string | null;
|
|
213
|
-
assigned_to: string | null;
|
|
214
|
-
session_id: string | null;
|
|
215
|
-
working_dir: string | null;
|
|
216
|
-
tags: string | null;
|
|
217
|
-
metadata: string | null;
|
|
218
|
-
version: number;
|
|
219
|
-
locked_by: string | null;
|
|
220
|
-
locked_at: string | null;
|
|
221
|
-
created_at: string;
|
|
222
|
-
updated_at: string;
|
|
223
|
-
completed_at: string | null;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
export interface SessionRow {
|
|
227
|
-
id: string;
|
|
228
|
-
agent_id: string | null;
|
|
229
|
-
project_id: string | null;
|
|
230
|
-
working_dir: string | null;
|
|
231
|
-
started_at: string;
|
|
232
|
-
last_activity: string;
|
|
233
|
-
metadata: string | null;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// Locking
|
|
237
|
-
export interface LockResult {
|
|
238
|
-
success: boolean;
|
|
239
|
-
locked_by?: string;
|
|
240
|
-
locked_at?: string;
|
|
241
|
-
error?: string;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// Version conflict error
|
|
245
|
-
export class VersionConflictError extends Error {
|
|
246
|
-
constructor(
|
|
247
|
-
public taskId: string,
|
|
248
|
-
public expectedVersion: number,
|
|
249
|
-
public actualVersion: number,
|
|
250
|
-
) {
|
|
251
|
-
super(
|
|
252
|
-
`Version conflict for task ${taskId}: expected ${expectedVersion}, got ${actualVersion}`,
|
|
253
|
-
);
|
|
254
|
-
this.name = "VersionConflictError";
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
export class TaskNotFoundError extends Error {
|
|
259
|
-
constructor(public taskId: string) {
|
|
260
|
-
super(`Task not found: ${taskId}`);
|
|
261
|
-
this.name = "TaskNotFoundError";
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
export class ProjectNotFoundError extends Error {
|
|
266
|
-
constructor(public projectId: string) {
|
|
267
|
-
super(`Project not found: ${projectId}`);
|
|
268
|
-
this.name = "ProjectNotFoundError";
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
export class PlanNotFoundError extends Error {
|
|
273
|
-
constructor(public planId: string) {
|
|
274
|
-
super(`Plan not found: ${planId}`);
|
|
275
|
-
this.name = "PlanNotFoundError";
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
export class LockError extends Error {
|
|
280
|
-
constructor(
|
|
281
|
-
public taskId: string,
|
|
282
|
-
public lockedBy: string,
|
|
283
|
-
) {
|
|
284
|
-
super(`Task ${taskId} is locked by ${lockedBy}`);
|
|
285
|
-
this.name = "LockError";
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
export class DependencyCycleError extends Error {
|
|
290
|
-
constructor(
|
|
291
|
-
public taskId: string,
|
|
292
|
-
public dependsOn: string,
|
|
293
|
-
) {
|
|
294
|
-
super(
|
|
295
|
-
`Adding dependency ${taskId} -> ${dependsOn} would create a cycle`,
|
|
296
|
-
);
|
|
297
|
-
this.name = "DependencyCycleError";
|
|
298
|
-
}
|
|
299
|
-
}
|
|
1
|
+
export { getDatabase, closeDatabase, resetDatabase, resolvePartialId, now, uuid } from "./db/database.js";
|
|
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";
|
|
4
|
+
export { createPlan, getPlan, listPlans, updatePlan, deletePlan, } from "./db/plans.js";
|
|
5
|
+
export { addComment, getComment, listComments, deleteComment, } from "./db/comments.js";
|
|
6
|
+
export { registerAgent, getAgent, getAgentByName, listAgents, updateAgentActivity, deleteAgent, } from "./db/agents.js";
|
|
7
|
+
export { createTaskList, getTaskList, getTaskListBySlug, listTaskLists, updateTaskList, deleteTaskList, ensureTaskList, } from "./db/task-lists.js";
|
|
8
|
+
export { createSession, getSession, listSessions, updateSessionActivity, deleteSession, } from "./db/sessions.js";
|
|
9
|
+
export { searchTasks } from "./lib/search.js";
|
|
10
|
+
export { defaultSyncAgents, syncWithAgent, syncWithAgents } from "./lib/sync.js";
|
|
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";
|
|
14
|
+
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
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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;AAC7C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGhE,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,GACtB,MAAM,kBAAkB,CAAC"}
|