@hasna/todos 0.11.14 → 0.11.16

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 (157) hide show
  1. package/dashboard/dist/assets/index-B-w1tUlm.js +346 -0
  2. package/dashboard/dist/assets/index-BXQ39iMX.css +1 -0
  3. package/dashboard/dist/index.html +13 -0
  4. package/dashboard/dist/logo.jpg +0 -0
  5. package/dist/cli/brains.d.ts +3 -0
  6. package/dist/cli/brains.d.ts.map +1 -0
  7. package/dist/cli/commands/dispatch.d.ts +3 -0
  8. package/dist/cli/commands/dispatch.d.ts.map +1 -0
  9. package/dist/cli/components/App.d.ts +2 -0
  10. package/dist/cli/components/App.d.ts.map +1 -0
  11. package/dist/cli/components/Dashboard.d.ts +7 -0
  12. package/dist/cli/components/Dashboard.d.ts.map +1 -0
  13. package/dist/cli/components/Header.d.ts +8 -0
  14. package/dist/cli/components/Header.d.ts.map +1 -0
  15. package/dist/cli/components/ProjectList.d.ts +8 -0
  16. package/dist/cli/components/ProjectList.d.ts.map +1 -0
  17. package/dist/cli/components/SearchView.d.ts +10 -0
  18. package/dist/cli/components/SearchView.d.ts.map +1 -0
  19. package/dist/cli/components/TaskDetail.d.ts +7 -0
  20. package/dist/cli/components/TaskDetail.d.ts.map +1 -0
  21. package/dist/cli/components/TaskForm.d.ts +15 -0
  22. package/dist/cli/components/TaskForm.d.ts.map +1 -0
  23. package/dist/cli/components/TaskList.d.ts +8 -0
  24. package/dist/cli/components/TaskList.d.ts.map +1 -0
  25. package/dist/cli/index.d.ts +3 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +4975 -4121
  28. package/dist/db/agent-metrics.d.ts +34 -0
  29. package/dist/db/agent-metrics.d.ts.map +1 -0
  30. package/dist/db/agents.d.ts +82 -0
  31. package/dist/db/agents.d.ts.map +1 -0
  32. package/dist/db/audit.d.ts +52 -0
  33. package/dist/db/audit.d.ts.map +1 -0
  34. package/dist/db/budgets.d.ts +27 -0
  35. package/dist/db/budgets.d.ts.map +1 -0
  36. package/dist/db/builtin-templates.d.ts +22 -0
  37. package/dist/db/builtin-templates.d.ts.map +1 -0
  38. package/dist/db/checklists.d.ts +13 -0
  39. package/dist/db/checklists.d.ts.map +1 -0
  40. package/dist/db/comments.d.ts +8 -0
  41. package/dist/db/comments.d.ts.map +1 -0
  42. package/dist/db/database.d.ts +12 -0
  43. package/dist/db/database.d.ts.map +1 -0
  44. package/dist/db/dispatches.d.ts +15 -0
  45. package/dist/db/dispatches.d.ts.map +1 -0
  46. package/dist/db/file-locks.d.ts +43 -0
  47. package/dist/db/file-locks.d.ts.map +1 -0
  48. package/dist/db/handoffs.d.ts +25 -0
  49. package/dist/db/handoffs.d.ts.map +1 -0
  50. package/dist/db/kg.d.ts +70 -0
  51. package/dist/db/kg.d.ts.map +1 -0
  52. package/dist/db/locks.d.ts +14 -0
  53. package/dist/db/locks.d.ts.map +1 -0
  54. package/dist/db/machines.d.ts +17 -0
  55. package/dist/db/machines.d.ts.map +1 -0
  56. package/dist/db/orgs.d.ts +13 -0
  57. package/dist/db/orgs.d.ts.map +1 -0
  58. package/dist/db/patrol.d.ts +35 -0
  59. package/dist/db/patrol.d.ts.map +1 -0
  60. package/dist/db/pg-migrate.d.ts +14 -0
  61. package/dist/db/pg-migrate.d.ts.map +1 -0
  62. package/dist/db/pg-migrations.d.ts +8 -0
  63. package/dist/db/pg-migrations.d.ts.map +1 -0
  64. package/dist/db/plans.d.ts +8 -0
  65. package/dist/db/plans.d.ts.map +1 -0
  66. package/dist/db/project-agent-roles.d.ts +34 -0
  67. package/dist/db/project-agent-roles.d.ts.map +1 -0
  68. package/dist/db/projects.d.ts +16 -0
  69. package/dist/db/projects.d.ts.map +1 -0
  70. package/dist/db/schema.d.ts +6 -0
  71. package/dist/db/schema.d.ts.map +1 -0
  72. package/dist/db/sessions.d.ts +8 -0
  73. package/dist/db/sessions.d.ts.map +1 -0
  74. package/dist/db/snapshots.d.ts +37 -0
  75. package/dist/db/snapshots.d.ts.map +1 -0
  76. package/dist/db/task-claim.d.ts +7 -0
  77. package/dist/db/task-claim.d.ts.map +1 -0
  78. package/dist/db/task-commits.d.ts +31 -0
  79. package/dist/db/task-commits.d.ts.map +1 -0
  80. package/dist/db/task-files.d.ts +74 -0
  81. package/dist/db/task-files.d.ts.map +1 -0
  82. package/dist/db/task-lists.d.ts +10 -0
  83. package/dist/db/task-lists.d.ts.map +1 -0
  84. package/dist/db/task-relationships.d.ts +36 -0
  85. package/dist/db/task-relationships.d.ts.map +1 -0
  86. package/dist/db/task-workflow.d.ts +7 -0
  87. package/dist/db/task-workflow.d.ts.map +1 -0
  88. package/dist/db/tasks.d.ts +215 -0
  89. package/dist/db/tasks.d.ts.map +1 -0
  90. package/dist/db/templates.d.ts +98 -0
  91. package/dist/db/templates.d.ts.map +1 -0
  92. package/dist/db/traces.d.ts +38 -0
  93. package/dist/db/traces.d.ts.map +1 -0
  94. package/dist/db/webhooks.d.ts +19 -0
  95. package/dist/db/webhooks.d.ts.map +1 -0
  96. package/dist/index.d.ts +72 -0
  97. package/dist/index.d.ts.map +1 -0
  98. package/dist/index.js +344 -140
  99. package/dist/lib/agent-tasks.d.ts +11 -0
  100. package/dist/lib/agent-tasks.d.ts.map +1 -0
  101. package/dist/lib/auto-assign.d.ts +25 -0
  102. package/dist/lib/auto-assign.d.ts.map +1 -0
  103. package/dist/lib/burndown.d.ts +18 -0
  104. package/dist/lib/burndown.d.ts.map +1 -0
  105. package/dist/lib/claude-tasks.d.ts +20 -0
  106. package/dist/lib/claude-tasks.d.ts.map +1 -0
  107. package/dist/lib/completion-guard.d.ts +17 -0
  108. package/dist/lib/completion-guard.d.ts.map +1 -0
  109. package/dist/lib/config.d.ts +44 -0
  110. package/dist/lib/config.d.ts.map +1 -0
  111. package/dist/lib/dispatch-formatter.d.ts +21 -0
  112. package/dist/lib/dispatch-formatter.d.ts.map +1 -0
  113. package/dist/lib/dispatch.d.ts +28 -0
  114. package/dist/lib/dispatch.d.ts.map +1 -0
  115. package/dist/lib/extract.d.ts +51 -0
  116. package/dist/lib/extract.d.ts.map +1 -0
  117. package/dist/lib/gatherer.d.ts +16 -0
  118. package/dist/lib/gatherer.d.ts.map +1 -0
  119. package/dist/lib/github.d.ts +25 -0
  120. package/dist/lib/github.d.ts.map +1 -0
  121. package/dist/lib/model-config.d.ts +14 -0
  122. package/dist/lib/model-config.d.ts.map +1 -0
  123. package/dist/lib/recurrence.d.ts +10 -0
  124. package/dist/lib/recurrence.d.ts.map +1 -0
  125. package/dist/lib/search.d.ts +17 -0
  126. package/dist/lib/search.d.ts.map +1 -0
  127. package/dist/lib/sync-types.d.ts +16 -0
  128. package/dist/lib/sync-types.d.ts.map +1 -0
  129. package/dist/lib/sync-utils.d.ts +12 -0
  130. package/dist/lib/sync-utils.d.ts.map +1 -0
  131. package/dist/lib/sync.d.ts +9 -0
  132. package/dist/lib/sync.d.ts.map +1 -0
  133. package/dist/lib/tmux.d.ts +28 -0
  134. package/dist/lib/tmux.d.ts.map +1 -0
  135. package/dist/mcp/index.d.ts +3 -0
  136. package/dist/mcp/index.d.ts.map +1 -0
  137. package/dist/mcp/index.js +14175 -13694
  138. package/dist/mcp/tools/agents.d.ts +16 -0
  139. package/dist/mcp/tools/agents.d.ts.map +1 -0
  140. package/dist/mcp/tools/cloud.d.ts +12 -0
  141. package/dist/mcp/tools/cloud.d.ts.map +1 -0
  142. package/dist/mcp/tools/dispatch.d.ts +9 -0
  143. package/dist/mcp/tools/dispatch.d.ts.map +1 -0
  144. package/dist/mcp/tools/templates.d.ts +9 -0
  145. package/dist/mcp/tools/templates.d.ts.map +1 -0
  146. package/dist/mcp/tools/webhooks.d.ts +8 -0
  147. package/dist/mcp/tools/webhooks.d.ts.map +1 -0
  148. package/dist/sdk.d.ts +186 -0
  149. package/dist/sdk.d.ts.map +1 -0
  150. package/dist/server/index.d.ts +9 -0
  151. package/dist/server/index.d.ts.map +1 -0
  152. package/dist/server/index.js +4933 -0
  153. package/dist/server/serve.d.ts +10 -0
  154. package/dist/server/serve.d.ts.map +1 -0
  155. package/dist/types/index.d.ts +681 -0
  156. package/dist/types/index.d.ts.map +1 -0
  157. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { OrgNode } from "./agents.js";
3
+ export interface ProjectAgentRole {
4
+ id: string;
5
+ project_id: string;
6
+ agent_id: string;
7
+ role: string;
8
+ is_lead: boolean;
9
+ created_at: string;
10
+ }
11
+ export interface ProjectAgentRoleRow {
12
+ id: string;
13
+ project_id: string;
14
+ agent_id: string;
15
+ role: string;
16
+ is_lead: number;
17
+ created_at: string;
18
+ }
19
+ export declare function setProjectAgentRole(projectId: string, agentId: string, role: string, isLead?: boolean, db?: Database): ProjectAgentRole;
20
+ export declare function removeProjectAgentRole(projectId: string, agentId: string, role?: string, db?: Database): number;
21
+ export declare function listProjectAgentRoles(projectId: string, db?: Database): ProjectAgentRole[];
22
+ export declare function getAgentProjectRoles(agentId: string, db?: Database): ProjectAgentRole[];
23
+ export interface ProjectOrgNode extends OrgNode {
24
+ project_roles: string[];
25
+ is_project_lead: boolean;
26
+ }
27
+ /**
28
+ * Get org chart scoped to a project. Returns global org chart with per-project
29
+ * role overrides merged in. Agents not in the project are excluded when filter=true.
30
+ */
31
+ export declare function getProjectOrgChart(projectId: string, opts?: {
32
+ filter_to_project?: boolean;
33
+ }, db?: Database): ProjectOrgNode[];
34
+ //# sourceMappingURL=project-agent-roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-agent-roles.d.ts","sourceRoot":"","sources":["../../src/db/project-agent-roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,UAAQ,EACd,EAAE,CAAC,EAAE,QAAQ,GACZ,gBAAgB,CAoBlB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,QAAQ,GACZ,MAAM,CAYR;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,gBAAgB,EAAE,CAK1F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,gBAAgB,EAAE,CAKvF;AAED,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,EACtC,EAAE,CAAC,EAAE,QAAQ,GACZ,cAAc,EAAE,CAkClB"}
@@ -0,0 +1,16 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { CreateProjectInput, CreateProjectSourceInput, Project, ProjectSource } 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 addProjectSource(input: CreateProjectSourceInput, db?: Database): ProjectSource;
11
+ export declare function removeProjectSource(id: string, db?: Database): boolean;
12
+ export declare function listProjectSources(projectId: string, db?: Database): ProjectSource[];
13
+ export declare function getProjectWithSources(id: string, db?: Database): Project | null;
14
+ export declare function nextTaskShortId(projectId: string, db?: Database): string | null;
15
+ export declare function ensureProject(name: string, path: string, db?: Database): Project;
16
+ //# 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,wBAAwB,EAAE,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAIhI,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;AAWD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,aAAa,CAW9F;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAItE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,aAAa,EAAE,CAIpF;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAM/E;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"}
@@ -0,0 +1,6 @@
1
+ import { Database } from "bun:sqlite";
2
+ export declare const MIGRATIONS: string[];
3
+ export declare function runMigrations(db: Database): void;
4
+ export declare function ensureSchema(db: Database): void;
5
+ export declare function backfillTaskTags(db: Database): void;
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAO,MAAM,UAAU,UAwsBtB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA8BhD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAyW/C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA4BnD"}
@@ -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,37 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export type SnapshotType = "interrupt" | "complete" | "handoff" | "checkpoint";
3
+ export interface ContextSnapshot {
4
+ id: string;
5
+ agent_id: string | null;
6
+ task_id: string | null;
7
+ project_id: string | null;
8
+ snapshot_type: SnapshotType;
9
+ plan_summary: string | null;
10
+ files_open: string[];
11
+ attempts: string[];
12
+ blockers: string[];
13
+ next_steps: string | null;
14
+ metadata: Record<string, unknown>;
15
+ created_at: string;
16
+ }
17
+ export interface SaveSnapshotInput {
18
+ agent_id?: string;
19
+ task_id?: string;
20
+ project_id?: string;
21
+ snapshot_type: SnapshotType;
22
+ plan_summary?: string;
23
+ files_open?: string[];
24
+ attempts?: string[];
25
+ blockers?: string[];
26
+ next_steps?: string;
27
+ metadata?: Record<string, unknown>;
28
+ }
29
+ export declare function saveSnapshot(input: SaveSnapshotInput, db?: Database): ContextSnapshot;
30
+ export declare function getLatestSnapshot(agentId?: string, taskId?: string, db?: Database): ContextSnapshot | null;
31
+ export declare function listSnapshots(opts: {
32
+ agent_id?: string;
33
+ task_id?: string;
34
+ project_id?: string;
35
+ limit?: number;
36
+ }, db?: Database): ContextSnapshot[];
37
+ //# sourceMappingURL=snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../../src/db/snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AA4BD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,CAqBrF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI,CAU1G;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,EAAE,CAWlJ"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Agent coordination — claim, steal, next task, active work, stale detection.
3
+ * Re-exported from tasks.ts for backward compatibility.
4
+ * Full extraction pending resolution of circular dependency (stealTask → getNextTask).
5
+ */
6
+ export { getNextTask, claimNextTask, stealTask, claimOrSteal, getActiveWork, getStaleTasks, redistributeStaleTasks, } from "./tasks.js";
7
+ //# sourceMappingURL=task-claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-claim.d.ts","sourceRoot":"","sources":["../../src/db/task-claim.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export interface TaskCommit {
3
+ id: string;
4
+ task_id: string;
5
+ sha: string;
6
+ message: string | null;
7
+ author: string | null;
8
+ files_changed: string[] | null;
9
+ committed_at: string | null;
10
+ created_at: string;
11
+ }
12
+ export interface LinkTaskToCommitInput {
13
+ task_id: string;
14
+ sha: string;
15
+ message?: string;
16
+ author?: string;
17
+ files_changed?: string[];
18
+ committed_at?: string;
19
+ }
20
+ /** Link a git commit SHA to a task. Upserts on same task+sha. */
21
+ export declare function linkTaskToCommit(input: LinkTaskToCommitInput, db?: Database): TaskCommit;
22
+ /** Get all commits linked to a task. */
23
+ export declare function getTaskCommits(taskId: string, db?: Database): TaskCommit[];
24
+ /** Find which task a commit SHA is linked to. */
25
+ export declare function findTaskByCommit(sha: string, db?: Database): {
26
+ task_id: string;
27
+ commit: TaskCommit;
28
+ } | null;
29
+ /** Remove a commit link. */
30
+ export declare function unlinkTaskCommit(taskId: string, sha: string, db?: Database): boolean;
31
+ //# sourceMappingURL=task-commits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-commits.d.ts","sourceRoot":"","sources":["../../src/db/task-commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAoBD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,CAoBxF;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAG1E;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAM3G;AAED,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGpF"}
@@ -0,0 +1,74 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export interface TaskFile {
3
+ id: string;
4
+ task_id: string;
5
+ path: string;
6
+ status: "planned" | "active" | "modified" | "reviewed" | "removed";
7
+ agent_id: string | null;
8
+ note: string | null;
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
12
+ export interface AddTaskFileInput {
13
+ task_id: string;
14
+ path: string;
15
+ status?: TaskFile["status"];
16
+ agent_id?: string;
17
+ note?: string;
18
+ }
19
+ export declare function addTaskFile(input: AddTaskFileInput, db?: Database): TaskFile;
20
+ export declare function getTaskFile(id: string, db?: Database): TaskFile | null;
21
+ export declare function listTaskFiles(taskId: string, db?: Database): TaskFile[];
22
+ export declare function findTasksByFile(path: string, db?: Database): TaskFile[];
23
+ export declare function updateTaskFileStatus(taskId: string, path: string, status: TaskFile["status"], agentId?: string, db?: Database): TaskFile | null;
24
+ export declare function removeTaskFile(taskId: string, path: string, db?: Database): boolean;
25
+ export interface FileConflict {
26
+ path: string;
27
+ conflicting_task_id: string;
28
+ conflicting_agent_id: string | null;
29
+ conflicting_task_title: string;
30
+ conflicting_task_status: string;
31
+ }
32
+ /**
33
+ * Check if adding a file to a task would conflict with another in-progress task.
34
+ * Returns conflicts (not a hard block — caller decides what to do).
35
+ */
36
+ export declare function detectFileConflicts(taskId: string, paths: string[], db?: Database): FileConflict[];
37
+ export interface BulkFileResult {
38
+ path: string;
39
+ tasks: TaskFile[];
40
+ has_conflict: boolean;
41
+ in_progress_count: number;
42
+ }
43
+ export declare function bulkFindTasksByFiles(paths: string[], db?: Database): BulkFileResult[];
44
+ export interface ActiveFileInfo {
45
+ path: string;
46
+ file_status: TaskFile["status"];
47
+ file_agent_id: string | null;
48
+ note: string | null;
49
+ updated_at: string;
50
+ task_id: string;
51
+ task_short_id: string | null;
52
+ task_title: string;
53
+ task_status: string;
54
+ task_locked_by: string | null;
55
+ task_locked_at: string | null;
56
+ agent_id: string | null;
57
+ agent_name: string | null;
58
+ }
59
+ export declare function listActiveFiles(db?: Database): ActiveFileInfo[];
60
+ export interface FileHeatMapEntry {
61
+ path: string;
62
+ edit_count: number;
63
+ unique_agents: number;
64
+ agent_ids: string[];
65
+ last_edited_at: string;
66
+ active_task_count: number;
67
+ }
68
+ export declare function getFileHeatMap(opts?: {
69
+ limit?: number;
70
+ project_id?: string;
71
+ min_edits?: number;
72
+ }, db?: Database): FileHeatMapEntry[];
73
+ export declare function bulkAddTaskFiles(taskId: string, paths: string[], agentId?: string, db?: Database): TaskFile[];
74
+ //# sourceMappingURL=task-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-files.d.ts","sourceRoot":"","sources":["../../src/db/task-files.ts"],"names":[],"mappings":"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"}
@@ -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,36 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export declare const RELATIONSHIP_TYPES: readonly ["related_to", "conflicts_with", "similar_to", "duplicates", "supersedes", "modifies_same_file"];
3
+ export type RelationshipType = (typeof RELATIONSHIP_TYPES)[number];
4
+ export interface TaskRelationship {
5
+ id: string;
6
+ source_task_id: string;
7
+ target_task_id: string;
8
+ relationship_type: RelationshipType;
9
+ metadata: Record<string, unknown>;
10
+ created_by: string | null;
11
+ created_at: string;
12
+ }
13
+ export interface AddTaskRelationshipInput {
14
+ source_task_id: string;
15
+ target_task_id: string;
16
+ relationship_type: RelationshipType;
17
+ metadata?: Record<string, unknown>;
18
+ created_by?: string;
19
+ }
20
+ export declare function addTaskRelationship(input: AddTaskRelationshipInput, db?: Database): TaskRelationship;
21
+ export declare function getTaskRelationship(id: string, db?: Database): TaskRelationship | null;
22
+ export declare function removeTaskRelationship(id: string, db?: Database): boolean;
23
+ export declare function removeTaskRelationshipByPair(sourceTaskId: string, targetTaskId: string, relationshipType: RelationshipType, db?: Database): boolean;
24
+ /**
25
+ * Get all relationships for a task (both as source and target).
26
+ */
27
+ export declare function getTaskRelationships(taskId: string, relationshipType?: RelationshipType, db?: Database): TaskRelationship[];
28
+ /**
29
+ * Find tasks related to a given task (returns the "other" task IDs).
30
+ */
31
+ export declare function findRelatedTaskIds(taskId: string, relationshipType?: RelationshipType, db?: Database): string[];
32
+ /**
33
+ * Auto-detect tasks that modify the same file and create modifies_same_file relationships.
34
+ */
35
+ export declare function autoDetectFileRelationships(taskId: string, db?: Database): TaskRelationship[];
36
+ //# sourceMappingURL=task-relationships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-relationships.d.ts","sourceRoot":"","sources":["../../src/db/task-relationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,eAAO,MAAM,kBAAkB,2GAOrB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAYD,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,gBAAgB,CAqCpG;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,gBAAgB,GAAG,IAAI,CAItF;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGzE;AAED,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAeT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,EAAE,CAAC,EAAE,QAAQ,GACZ,gBAAgB,EAAE,CAUpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,EAAE,CAAC,EAAE,QAAQ,GACZ,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,gBAAgB,EAAE,CA6B7F"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Task workflow operations — start, complete, fail, lock/unlock, approve.
3
+ * Re-exported from tasks.ts for backward compatibility.
4
+ * Full extraction pending resolution of circular dependency (completeTask → createTask).
5
+ */
6
+ export { startTask, completeTask, failTask, lockTask, unlockTask, approveTask, getBlockingDeps, } from "./tasks.js";
7
+ //# sourceMappingURL=task-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-workflow.d.ts","sourceRoot":"","sources":["../../src/db/task-workflow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,215 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { CreateTaskInput, LockResult, Task, TaskDependency, TaskFilter, TaskPriority, TaskStatus, 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 countTasks(filter?: Omit<TaskFilter, 'limit' | 'offset'>, db?: Database): number;
8
+ export declare function updateTask(id: string, input: UpdateTaskInput, db?: Database): Task;
9
+ export declare function deleteTask(id: string, db?: Database): boolean;
10
+ export declare function getBlockingDeps(id: string, db?: Database): Task[];
11
+ export declare function startTask(id: string, agentId: string, db?: Database): Task;
12
+ export declare function completeTask(id: string, agentId?: string, db?: Database, options?: {
13
+ files_changed?: string[];
14
+ test_results?: string;
15
+ commit_hash?: string;
16
+ notes?: string;
17
+ attachment_ids?: string[];
18
+ skip_recurrence?: boolean;
19
+ confidence?: number;
20
+ }): Task;
21
+ export declare function lockTask(id: string, agentId: string, db?: Database): LockResult;
22
+ export declare function unlockTask(id: string, agentId?: string, db?: Database): boolean;
23
+ export declare function addDependency(taskId: string, dependsOn: string, db?: Database): void;
24
+ export declare function removeDependency(taskId: string, dependsOn: string, db?: Database): boolean;
25
+ export declare function getTaskDependencies(taskId: string, db?: Database): TaskDependency[];
26
+ export declare function getTaskDependents(taskId: string, db?: Database): TaskDependency[];
27
+ export declare function cloneTask(taskId: string, overrides?: Partial<CreateTaskInput>, db?: Database): Task;
28
+ export interface TaskGraphNode {
29
+ id: string;
30
+ short_id: string | null;
31
+ title: string;
32
+ status: string;
33
+ priority: string;
34
+ is_blocked: boolean;
35
+ }
36
+ export interface TaskGraph {
37
+ task: TaskGraphNode;
38
+ depends_on: TaskGraph[];
39
+ blocks: TaskGraph[];
40
+ }
41
+ export declare function getTaskGraph(taskId: string, direction?: "up" | "down" | "both", db?: Database): TaskGraph;
42
+ export declare function moveTask(taskId: string, target: {
43
+ task_list_id?: string | null;
44
+ project_id?: string | null;
45
+ plan_id?: string | null;
46
+ }, db?: Database): Task;
47
+ export declare function claimNextTask(agentId: string, filters?: {
48
+ project_id?: string;
49
+ task_list_id?: string;
50
+ plan_id?: string;
51
+ tags?: string[];
52
+ }, db?: Database): Task | null;
53
+ export declare function getNextTask(agentId?: string, filters?: {
54
+ project_id?: string;
55
+ task_list_id?: string;
56
+ plan_id?: string;
57
+ tags?: string[];
58
+ }, db?: Database): Task | null;
59
+ export interface ActiveWorkItem {
60
+ id: string;
61
+ short_id: string | null;
62
+ title: string;
63
+ priority: string;
64
+ assigned_to: string | null;
65
+ locked_by: string | null;
66
+ locked_at: string | null;
67
+ updated_at: string;
68
+ }
69
+ export declare function getActiveWork(filters?: {
70
+ project_id?: string;
71
+ task_list_id?: string;
72
+ }, db?: Database): ActiveWorkItem[];
73
+ export declare function getTasksChangedSince(since: string, filters?: {
74
+ project_id?: string;
75
+ task_list_id?: string;
76
+ }, db?: Database): Task[];
77
+ export declare function failTask(id: string, agentId?: string, reason?: string, options?: {
78
+ retry?: boolean;
79
+ retry_after?: string;
80
+ error_code?: string;
81
+ }, db?: Database): {
82
+ task: Task;
83
+ retryTask?: Task;
84
+ };
85
+ export declare function getStaleTasks(staleMinutes?: number, filters?: {
86
+ project_id?: string;
87
+ task_list_id?: string;
88
+ }, db?: Database): Task[];
89
+ /**
90
+ * Log cost (tokens + USD) to a task. Accumulates — does not replace.
91
+ */
92
+ export declare function logCost(taskId: string, tokens: number, usd: number, db?: Database): void;
93
+ /**
94
+ * Work-stealing: find the highest-priority stale in_progress task and reassign it to the given agent.
95
+ * A task is stealable if it's in_progress and its lock/update is older than staleMinutes.
96
+ */
97
+ export declare function stealTask(agentId: string, opts?: {
98
+ stale_minutes?: number;
99
+ project_id?: string;
100
+ task_list_id?: string;
101
+ }, db?: Database): Task | null;
102
+ /**
103
+ * Enhanced claim: try pending queue first, then steal from stale agents if nothing pending.
104
+ */
105
+ export declare function claimOrSteal(agentId: string, filters?: {
106
+ project_id?: string;
107
+ task_list_id?: string;
108
+ plan_id?: string;
109
+ tags?: string[];
110
+ stale_minutes?: number;
111
+ }, db?: Database): {
112
+ task: Task;
113
+ stolen: boolean;
114
+ } | null;
115
+ export interface StatusSummary {
116
+ pending: number;
117
+ in_progress: number;
118
+ completed: number;
119
+ total: number;
120
+ active_work: ActiveWorkItem[];
121
+ next_task: Task | null;
122
+ stale_count: number;
123
+ overdue_recurring: number;
124
+ blocked_tasks?: {
125
+ id: string;
126
+ short_id: string | null;
127
+ title: string;
128
+ blocked_by: {
129
+ id: string;
130
+ short_id: string | null;
131
+ title: string;
132
+ status: string;
133
+ }[];
134
+ }[];
135
+ }
136
+ export declare function getStatus(filters?: {
137
+ project_id?: string;
138
+ task_list_id?: string;
139
+ }, agentId?: string, options?: {
140
+ explain_blocked?: boolean;
141
+ }, db?: Database): StatusSummary;
142
+ export interface DecomposeSubtaskInput {
143
+ title: string;
144
+ description?: string;
145
+ priority?: Task["priority"];
146
+ assigned_to?: string;
147
+ estimated_minutes?: number;
148
+ tags?: string[];
149
+ }
150
+ export declare function decomposeTasks(parentId: string, subtasks: DecomposeSubtaskInput[], options?: {
151
+ depends_on_prev?: boolean;
152
+ }, db?: Database): {
153
+ parent: Task;
154
+ subtasks: Task[];
155
+ };
156
+ export declare function setTaskStatus(id: string, status: TaskStatus, _agentId?: string, db?: Database): Task;
157
+ export declare function setTaskPriority(id: string, priority: TaskPriority, _agentId?: string, db?: Database): Task;
158
+ export declare function redistributeStaleTasks(agentId: string, options?: {
159
+ max_age_minutes?: number;
160
+ project_id?: string;
161
+ limit?: number;
162
+ }, db?: Database): {
163
+ released: Task[];
164
+ claimed: Task | null;
165
+ };
166
+ export declare function getTaskStats(filters?: {
167
+ project_id?: string;
168
+ task_list_id?: string;
169
+ agent_id?: string;
170
+ }, db?: Database): {
171
+ total: number;
172
+ by_status: Record<string, number>;
173
+ by_priority: Record<string, number>;
174
+ completion_rate: number;
175
+ by_agent: Record<string, number>;
176
+ };
177
+ export interface BulkCreateTaskInput {
178
+ temp_id?: string;
179
+ title: string;
180
+ description?: string;
181
+ priority?: "low" | "medium" | "high" | "critical";
182
+ status?: "pending" | "in_progress" | "completed" | "failed" | "cancelled";
183
+ project_id?: string;
184
+ parent_id?: string;
185
+ plan_id?: string;
186
+ task_list_id?: string;
187
+ agent_id?: string;
188
+ assigned_to?: string;
189
+ tags?: string[];
190
+ metadata?: Record<string, unknown>;
191
+ estimated_minutes?: number;
192
+ depends_on_temp_ids?: string[];
193
+ }
194
+ export declare function bulkCreateTasks(inputs: BulkCreateTaskInput[], db?: Database): {
195
+ created: {
196
+ temp_id: string | null;
197
+ id: string;
198
+ short_id: string | null;
199
+ title: string;
200
+ }[];
201
+ };
202
+ export declare function bulkUpdateTasks(taskIds: string[], updates: {
203
+ status?: Task["status"];
204
+ priority?: Task["priority"];
205
+ assigned_to?: string;
206
+ tags?: string[];
207
+ }, db?: Database): {
208
+ updated: number;
209
+ failed: {
210
+ id: string;
211
+ error: string;
212
+ }[];
213
+ };
214
+ export declare function getOverdueTasks(projectId?: string, db?: Database): Task[];
215
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/db/tasks.ts"],"names":[],"mappings":"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"}