@hasna/todos 0.11.47 → 0.11.48

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 (240) hide show
  1. package/LICENSE +2 -1
  2. package/README.md +1232 -11
  3. package/dashboard/dist/assets/{index-B-w1tUlm.js → index-C3fBxEWP.js} +18 -18
  4. package/dashboard/dist/assets/index-DJm6m6Yy.css +1 -0
  5. package/dashboard/dist/index.html +2 -2
  6. package/dist/cli/index.js +46559 -28624
  7. package/dist/mcp/index.js +31815 -21499
  8. package/dist/sdk/index.js +632 -0
  9. package/dist/server/index.js +75144 -2653
  10. package/package.json +30 -6
  11. package/dashboard/dist/assets/index-BXQ39iMX.css +0 -1
  12. package/dist/cli/brains.d.ts +0 -3
  13. package/dist/cli/brains.d.ts.map +0 -1
  14. package/dist/cli/commands/agent-commands.d.ts +0 -3
  15. package/dist/cli/commands/agent-commands.d.ts.map +0 -1
  16. package/dist/cli/commands/api-key-commands.d.ts +0 -3
  17. package/dist/cli/commands/api-key-commands.d.ts.map +0 -1
  18. package/dist/cli/commands/cloud-commands.d.ts +0 -3
  19. package/dist/cli/commands/cloud-commands.d.ts.map +0 -1
  20. package/dist/cli/commands/config-serve-commands.d.ts +0 -3
  21. package/dist/cli/commands/config-serve-commands.d.ts.map +0 -1
  22. package/dist/cli/commands/dispatch.d.ts +0 -3
  23. package/dist/cli/commands/dispatch.d.ts.map +0 -1
  24. package/dist/cli/commands/machines.d.ts +0 -3
  25. package/dist/cli/commands/machines.d.ts.map +0 -1
  26. package/dist/cli/commands/mcp-hooks-commands.d.ts +0 -3
  27. package/dist/cli/commands/mcp-hooks-commands.d.ts.map +0 -1
  28. package/dist/cli/commands/plan-template-commands.d.ts +0 -3
  29. package/dist/cli/commands/plan-template-commands.d.ts.map +0 -1
  30. package/dist/cli/commands/project-commands.d.ts +0 -3
  31. package/dist/cli/commands/project-commands.d.ts.map +0 -1
  32. package/dist/cli/commands/query-commands.d.ts +0 -3
  33. package/dist/cli/commands/query-commands.d.ts.map +0 -1
  34. package/dist/cli/commands/task-commands.d.ts +0 -3
  35. package/dist/cli/commands/task-commands.d.ts.map +0 -1
  36. package/dist/cli/components/App.d.ts +0 -2
  37. package/dist/cli/components/App.d.ts.map +0 -1
  38. package/dist/cli/components/Dashboard.d.ts +0 -7
  39. package/dist/cli/components/Dashboard.d.ts.map +0 -1
  40. package/dist/cli/components/Header.d.ts +0 -8
  41. package/dist/cli/components/Header.d.ts.map +0 -1
  42. package/dist/cli/components/ProjectList.d.ts +0 -8
  43. package/dist/cli/components/ProjectList.d.ts.map +0 -1
  44. package/dist/cli/components/SearchView.d.ts +0 -10
  45. package/dist/cli/components/SearchView.d.ts.map +0 -1
  46. package/dist/cli/components/TaskDetail.d.ts +0 -7
  47. package/dist/cli/components/TaskDetail.d.ts.map +0 -1
  48. package/dist/cli/components/TaskForm.d.ts +0 -15
  49. package/dist/cli/components/TaskForm.d.ts.map +0 -1
  50. package/dist/cli/components/TaskList.d.ts +0 -8
  51. package/dist/cli/components/TaskList.d.ts.map +0 -1
  52. package/dist/cli/helpers.d.ts +0 -22
  53. package/dist/cli/helpers.d.ts.map +0 -1
  54. package/dist/cli/index.d.ts +0 -3
  55. package/dist/cli/index.d.ts.map +0 -1
  56. package/dist/db/agent-metrics.d.ts +0 -34
  57. package/dist/db/agent-metrics.d.ts.map +0 -1
  58. package/dist/db/agent-names.d.ts +0 -27
  59. package/dist/db/agent-names.d.ts.map +0 -1
  60. package/dist/db/agents.d.ts +0 -84
  61. package/dist/db/agents.d.ts.map +0 -1
  62. package/dist/db/api-keys.d.ts +0 -28
  63. package/dist/db/api-keys.d.ts.map +0 -1
  64. package/dist/db/audit.d.ts +0 -52
  65. package/dist/db/audit.d.ts.map +0 -1
  66. package/dist/db/budgets.d.ts +0 -27
  67. package/dist/db/budgets.d.ts.map +0 -1
  68. package/dist/db/builtin-templates.d.ts +0 -22
  69. package/dist/db/builtin-templates.d.ts.map +0 -1
  70. package/dist/db/checklists.d.ts +0 -13
  71. package/dist/db/checklists.d.ts.map +0 -1
  72. package/dist/db/checkpoints.d.ts +0 -55
  73. package/dist/db/checkpoints.d.ts.map +0 -1
  74. package/dist/db/comments.d.ts +0 -11
  75. package/dist/db/comments.d.ts.map +0 -1
  76. package/dist/db/cycles.d.ts +0 -78
  77. package/dist/db/cycles.d.ts.map +0 -1
  78. package/dist/db/database.d.ts +0 -12
  79. package/dist/db/database.d.ts.map +0 -1
  80. package/dist/db/dispatches.d.ts +0 -15
  81. package/dist/db/dispatches.d.ts.map +0 -1
  82. package/dist/db/file-locks.d.ts +0 -43
  83. package/dist/db/file-locks.d.ts.map +0 -1
  84. package/dist/db/handoffs.d.ts +0 -25
  85. package/dist/db/handoffs.d.ts.map +0 -1
  86. package/dist/db/kg.d.ts +0 -70
  87. package/dist/db/kg.d.ts.map +0 -1
  88. package/dist/db/locks.d.ts +0 -14
  89. package/dist/db/locks.d.ts.map +0 -1
  90. package/dist/db/machines.d.ts +0 -46
  91. package/dist/db/machines.d.ts.map +0 -1
  92. package/dist/db/migrations.d.ts +0 -2
  93. package/dist/db/migrations.d.ts.map +0 -1
  94. package/dist/db/orgs.d.ts +0 -13
  95. package/dist/db/orgs.d.ts.map +0 -1
  96. package/dist/db/patrol.d.ts +0 -35
  97. package/dist/db/patrol.d.ts.map +0 -1
  98. package/dist/db/pg-migrate.d.ts +0 -14
  99. package/dist/db/pg-migrate.d.ts.map +0 -1
  100. package/dist/db/pg-migrations.d.ts +0 -8
  101. package/dist/db/pg-migrations.d.ts.map +0 -1
  102. package/dist/db/plans.d.ts +0 -8
  103. package/dist/db/plans.d.ts.map +0 -1
  104. package/dist/db/project-agent-roles.d.ts +0 -34
  105. package/dist/db/project-agent-roles.d.ts.map +0 -1
  106. package/dist/db/projects.d.ts +0 -54
  107. package/dist/db/projects.d.ts.map +0 -1
  108. package/dist/db/schema.d.ts +0 -5
  109. package/dist/db/schema.d.ts.map +0 -1
  110. package/dist/db/sessions.d.ts +0 -8
  111. package/dist/db/sessions.d.ts.map +0 -1
  112. package/dist/db/snapshots.d.ts +0 -37
  113. package/dist/db/snapshots.d.ts.map +0 -1
  114. package/dist/db/task-claim.d.ts +0 -7
  115. package/dist/db/task-claim.d.ts.map +0 -1
  116. package/dist/db/task-commits.d.ts +0 -31
  117. package/dist/db/task-commits.d.ts.map +0 -1
  118. package/dist/db/task-crud.d.ts +0 -13
  119. package/dist/db/task-crud.d.ts.map +0 -1
  120. package/dist/db/task-files.d.ts +0 -74
  121. package/dist/db/task-files.d.ts.map +0 -1
  122. package/dist/db/task-graph.d.ts +0 -27
  123. package/dist/db/task-graph.d.ts.map +0 -1
  124. package/dist/db/task-lifecycle.d.ts +0 -81
  125. package/dist/db/task-lifecycle.d.ts.map +0 -1
  126. package/dist/db/task-lists.d.ts +0 -10
  127. package/dist/db/task-lists.d.ts.map +0 -1
  128. package/dist/db/task-relations.d.ts +0 -110
  129. package/dist/db/task-relations.d.ts.map +0 -1
  130. package/dist/db/task-relationships.d.ts +0 -36
  131. package/dist/db/task-relationships.d.ts.map +0 -1
  132. package/dist/db/task-status.d.ts +0 -65
  133. package/dist/db/task-status.d.ts.map +0 -1
  134. package/dist/db/task-workflow.d.ts +0 -7
  135. package/dist/db/task-workflow.d.ts.map +0 -1
  136. package/dist/db/tasks.d.ts +0 -11
  137. package/dist/db/tasks.d.ts.map +0 -1
  138. package/dist/db/templates.d.ts +0 -98
  139. package/dist/db/templates.d.ts.map +0 -1
  140. package/dist/db/traces.d.ts +0 -38
  141. package/dist/db/traces.d.ts.map +0 -1
  142. package/dist/db/webhooks.d.ts +0 -29
  143. package/dist/db/webhooks.d.ts.map +0 -1
  144. package/dist/index.d.ts +0 -77
  145. package/dist/index.d.ts.map +0 -1
  146. package/dist/index.js +0 -18904
  147. package/dist/lib/agent-tasks.d.ts +0 -11
  148. package/dist/lib/agent-tasks.d.ts.map +0 -1
  149. package/dist/lib/auto-assign.d.ts +0 -25
  150. package/dist/lib/auto-assign.d.ts.map +0 -1
  151. package/dist/lib/burndown.d.ts +0 -18
  152. package/dist/lib/burndown.d.ts.map +0 -1
  153. package/dist/lib/claude-tasks.d.ts +0 -20
  154. package/dist/lib/claude-tasks.d.ts.map +0 -1
  155. package/dist/lib/completion-guard.d.ts +0 -17
  156. package/dist/lib/completion-guard.d.ts.map +0 -1
  157. package/dist/lib/config.d.ts +0 -45
  158. package/dist/lib/config.d.ts.map +0 -1
  159. package/dist/lib/dispatch-formatter.d.ts +0 -21
  160. package/dist/lib/dispatch-formatter.d.ts.map +0 -1
  161. package/dist/lib/dispatch.d.ts +0 -28
  162. package/dist/lib/dispatch.d.ts.map +0 -1
  163. package/dist/lib/extract.d.ts +0 -51
  164. package/dist/lib/extract.d.ts.map +0 -1
  165. package/dist/lib/gatherer.d.ts +0 -16
  166. package/dist/lib/gatherer.d.ts.map +0 -1
  167. package/dist/lib/github.d.ts +0 -25
  168. package/dist/lib/github.d.ts.map +0 -1
  169. package/dist/lib/logger.d.ts +0 -17
  170. package/dist/lib/logger.d.ts.map +0 -1
  171. package/dist/lib/model-config.d.ts +0 -14
  172. package/dist/lib/model-config.d.ts.map +0 -1
  173. package/dist/lib/north-star.d.ts +0 -33
  174. package/dist/lib/north-star.d.ts.map +0 -1
  175. package/dist/lib/package-version.d.ts +0 -2
  176. package/dist/lib/package-version.d.ts.map +0 -1
  177. package/dist/lib/recurrence.d.ts +0 -10
  178. package/dist/lib/recurrence.d.ts.map +0 -1
  179. package/dist/lib/search.d.ts +0 -17
  180. package/dist/lib/search.d.ts.map +0 -1
  181. package/dist/lib/sync-types.d.ts +0 -16
  182. package/dist/lib/sync-types.d.ts.map +0 -1
  183. package/dist/lib/sync-utils.d.ts +0 -12
  184. package/dist/lib/sync-utils.d.ts.map +0 -1
  185. package/dist/lib/sync.d.ts +0 -9
  186. package/dist/lib/sync.d.ts.map +0 -1
  187. package/dist/lib/task-runner.d.ts +0 -101
  188. package/dist/lib/task-runner.d.ts.map +0 -1
  189. package/dist/lib/tmux.d.ts +0 -28
  190. package/dist/lib/tmux.d.ts.map +0 -1
  191. package/dist/mcp/index.d.ts +0 -3
  192. package/dist/mcp/index.d.ts.map +0 -1
  193. package/dist/mcp/token-utils.d.ts +0 -15
  194. package/dist/mcp/token-utils.d.ts.map +0 -1
  195. package/dist/mcp/tools/agents.d.ts +0 -16
  196. package/dist/mcp/tools/agents.d.ts.map +0 -1
  197. package/dist/mcp/tools/cloud.d.ts +0 -12
  198. package/dist/mcp/tools/cloud.d.ts.map +0 -1
  199. package/dist/mcp/tools/code-tools.d.ts +0 -15
  200. package/dist/mcp/tools/code-tools.d.ts.map +0 -1
  201. package/dist/mcp/tools/dispatch.d.ts +0 -9
  202. package/dist/mcp/tools/dispatch.d.ts.map +0 -1
  203. package/dist/mcp/tools/machines.d.ts +0 -8
  204. package/dist/mcp/tools/machines.d.ts.map +0 -1
  205. package/dist/mcp/tools/task-adv-tools.d.ts +0 -20
  206. package/dist/mcp/tools/task-adv-tools.d.ts.map +0 -1
  207. package/dist/mcp/tools/task-auto-tools.d.ts +0 -20
  208. package/dist/mcp/tools/task-auto-tools.d.ts.map +0 -1
  209. package/dist/mcp/tools/task-crud.d.ts +0 -20
  210. package/dist/mcp/tools/task-crud.d.ts.map +0 -1
  211. package/dist/mcp/tools/task-meta-tools.d.ts +0 -12
  212. package/dist/mcp/tools/task-meta-tools.d.ts.map +0 -1
  213. package/dist/mcp/tools/task-project-tools.d.ts +0 -20
  214. package/dist/mcp/tools/task-project-tools.d.ts.map +0 -1
  215. package/dist/mcp/tools/task-rel-tools.d.ts +0 -19
  216. package/dist/mcp/tools/task-rel-tools.d.ts.map +0 -1
  217. package/dist/mcp/tools/task-resources.d.ts +0 -13
  218. package/dist/mcp/tools/task-resources.d.ts.map +0 -1
  219. package/dist/mcp/tools/task-workflow-tools.d.ts +0 -20
  220. package/dist/mcp/tools/task-workflow-tools.d.ts.map +0 -1
  221. package/dist/mcp/tools/templates.d.ts +0 -9
  222. package/dist/mcp/tools/templates.d.ts.map +0 -1
  223. package/dist/mcp/tools/webhooks.d.ts +0 -8
  224. package/dist/mcp/tools/webhooks.d.ts.map +0 -1
  225. package/dist/sdk/client.d.ts +0 -383
  226. package/dist/sdk/client.d.ts.map +0 -1
  227. package/dist/sdk/index.d.ts +0 -14
  228. package/dist/sdk/index.d.ts.map +0 -1
  229. package/dist/sdk/types.d.ts +0 -173
  230. package/dist/sdk/types.d.ts.map +0 -1
  231. package/dist/sdk.d.ts +0 -19
  232. package/dist/sdk.d.ts.map +0 -1
  233. package/dist/server/index.d.ts +0 -9
  234. package/dist/server/index.d.ts.map +0 -1
  235. package/dist/server/routes.d.ts +0 -85
  236. package/dist/server/routes.d.ts.map +0 -1
  237. package/dist/server/serve.d.ts +0 -39
  238. package/dist/server/serve.d.ts.map +0 -1
  239. package/dist/types/index.d.ts +0 -817
  240. package/dist/types/index.d.ts.map +0 -1
@@ -1,11 +0,0 @@
1
- import type { SyncPrefer, SyncResult } from "./sync-types.js";
2
- export declare function pushToAgentTaskList(agent: string, taskListId: string, projectId?: string, options?: {
3
- prefer?: SyncPrefer;
4
- }): SyncResult;
5
- export declare function pullFromAgentTaskList(agent: string, taskListId: string, projectId?: string, options?: {
6
- prefer?: SyncPrefer;
7
- }): SyncResult;
8
- export declare function syncAgentTaskList(agent: string, taskListId: string, projectId?: string, options?: {
9
- prefer?: SyncPrefer;
10
- }): SyncResult;
11
- //# sourceMappingURL=agent-tasks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-tasks.d.ts","sourceRoot":"","sources":["../../src/lib/agent-tasks.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+D9D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACpC,UAAU,CAuFZ;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACpC,UAAU,CAoFZ;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACpC,UAAU,CAQZ"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Auto-assign tasks to agents using Cerebras LLM for intelligent routing.
3
- * Falls back to capability-based matching when the API key is unavailable or the call fails.
4
- */
5
- import type { Database } from "bun:sqlite";
6
- import type { Task } from "../types/index.js";
7
- export interface AutoAssignResult {
8
- task_id: string;
9
- assigned_to: string | null;
10
- agent_name: string | null;
11
- method: "cerebras" | "capability_match" | "no_agents";
12
- reason?: string;
13
- }
14
- /**
15
- * Find the best agent to assign a task to (legacy simple version, no I/O).
16
- * Strategy: least-loaded agent with role "agent" (not admin/observer).
17
- */
18
- export declare function findBestAgent(_task: Task, db?: Database): string | null;
19
- /**
20
- * Auto-assign a task to the best available agent.
21
- * Uses Cerebras LLM (llama-3.3-70b) if CEREBRAS_API_KEY is set,
22
- * otherwise falls back to capability-based matching.
23
- */
24
- export declare function autoAssignTask(taskId: string, db?: Database): Promise<AutoAssignResult>;
25
- //# sourceMappingURL=auto-assign.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-assign.d.ts","sourceRoot":"","sources":["../../src/lib/auto-assign.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,WAAW,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA0BvE;AA8DD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8D7F"}
@@ -1,18 +0,0 @@
1
- import type { Database } from "bun:sqlite";
2
- export interface BurndownData {
3
- total: number;
4
- completed: number;
5
- remaining: number;
6
- days: {
7
- date: string;
8
- completed_cumulative: number;
9
- ideal: number;
10
- }[];
11
- chart: string;
12
- }
13
- export declare function getBurndown(opts: {
14
- plan_id?: string;
15
- project_id?: string;
16
- task_list_id?: string;
17
- }, db?: Database): BurndownData;
18
- //# sourceMappingURL=burndown.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"burndown.d.ts","sourceRoot":"","sources":["../../src/lib/burndown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,CA8C/H"}
@@ -1,20 +0,0 @@
1
- import type { SyncPrefer, SyncResult } from "./sync-types.js";
2
- /**
3
- * Push all SQLite tasks to a Claude Code task list directory.
4
- */
5
- export declare function pushToClaudeTaskList(taskListId: string, projectId?: string, options?: {
6
- prefer?: SyncPrefer;
7
- }): SyncResult;
8
- /**
9
- * Pull tasks from a Claude Code task list into SQLite.
10
- */
11
- export declare function pullFromClaudeTaskList(taskListId: string, projectId?: string, options?: {
12
- prefer?: SyncPrefer;
13
- }): SyncResult;
14
- /**
15
- * Bidirectional sync: pull first, then push.
16
- */
17
- export declare function syncClaudeTaskList(taskListId: string, projectId?: string, options?: {
18
- prefer?: SyncPrefer;
19
- }): SyncResult;
20
- //# sourceMappingURL=claude-tasks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-tasks.d.ts","sourceRoot":"","sources":["../../src/lib/claude-tasks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAwF9D;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACpC,UAAU,CA4GZ;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACpC,UAAU,CAwFZ;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACpC,UAAU,CAQZ"}
@@ -1,17 +0,0 @@
1
- import type { Database } from "bun:sqlite";
2
- import type { Task } from "../types/index.js";
3
- import { type CompletionGuardConfig } from "./config.js";
4
- /**
5
- * Checks completion guards before allowing a task to be marked as completed.
6
- * Throws CompletionGuardError if any guard condition is violated.
7
- *
8
- * Guards:
9
- * 1. Status check — task must be in_progress
10
- * 2. Minimum work duration — must have spent enough time since startTask()
11
- * 3. Rate limit — max completions per agent per time window
12
- * 4. Cooldown — minimum gap between consecutive completions
13
- *
14
- * @param configOverride - Optional config override (used in tests)
15
- */
16
- export declare function checkCompletionGuard(task: Task, agentId: string | null, db: Database, configOverride?: Required<CompletionGuardConfig>): void;
17
- //# sourceMappingURL=completion-guard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion-guard.d.ts","sourceRoot":"","sources":["../../src/lib/completion-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGnF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,EAAE,EAAE,QAAQ,EACZ,cAAc,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAC/C,IAAI,CAyEN"}
@@ -1,45 +0,0 @@
1
- export interface AgentConfig {
2
- task_list_id?: string;
3
- tasks_dir?: string;
4
- }
5
- export interface TaskPrefixConfig {
6
- prefix: string;
7
- start_from?: number;
8
- }
9
- export interface CompletionGuardConfig {
10
- enabled?: boolean;
11
- min_work_seconds?: number;
12
- max_completions_per_window?: number;
13
- window_minutes?: number;
14
- cooldown_seconds?: number;
15
- }
16
- export interface ProjectOverrideConfig {
17
- completion_guard?: CompletionGuardConfig;
18
- }
19
- export interface TodosConfig {
20
- sync_agents?: string[] | string;
21
- task_list_id?: string;
22
- agent_tasks_dir?: string;
23
- agents?: Record<string, AgentConfig>;
24
- task_prefix?: TaskPrefixConfig;
25
- completion_guard?: CompletionGuardConfig;
26
- project_overrides?: Record<string, ProjectOverrideConfig>;
27
- /** Global pool of allowed agent names. Used when no project-specific pool matches. */
28
- agent_pool?: string[];
29
- /** Per-project agent name pools, keyed by working directory path prefix. */
30
- project_pools?: Record<string, string[]>;
31
- }
32
- export declare function resetConfig(): void;
33
- export declare function loadConfig(): TodosConfig;
34
- export declare function getSyncAgentsFromConfig(): string[] | null;
35
- export declare function getAgentTaskListId(agent: string): string | null;
36
- export declare function getAgentTasksDir(agent: string): string | null;
37
- export declare function getTaskPrefixConfig(): TaskPrefixConfig | null;
38
- /**
39
- * Get the agent name pool for a given working directory.
40
- * Checks project_pools for the longest matching path prefix, then falls back
41
- * to agent_pool. Returns null if no pool is configured (no name restriction).
42
- */
43
- export declare function getAgentPoolForProject(workingDir?: string): string[] | null;
44
- export declare function getCompletionGuardConfig(projectPath?: string | null): Required<CompletionGuardConfig>;
45
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1D,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAkBD,wBAAgB,WAAW,SAE1B;AAMD,wBAAgB,UAAU,IAAI,WAAW,CAYxC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7D;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAG7D;AAUD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAmB3E;AAED,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CASrG"}
@@ -1,21 +0,0 @@
1
- import type { Task } from "../types/index.ts";
2
- export interface FormatOpts {
3
- /** Include task description (truncated to 200 chars). Default: true */
4
- includeDescription?: boolean;
5
- /** Include priority badge. Default: true */
6
- includePriority?: boolean;
7
- /** Include tags. Default: false */
8
- includeTags?: boolean;
9
- /** Heading override for task list dispatches */
10
- listName?: string;
11
- }
12
- /**
13
- * Format a single task into a compact one-liner.
14
- * e.g. "[HIGH] APP-00001: Fix the login bug"
15
- */
16
- export declare function formatSingleTask(task: Task, opts?: FormatOpts): string;
17
- /**
18
- * Format multiple tasks into a numbered list with optional header.
19
- */
20
- export declare function formatDispatchMessage(tasks: Task[], opts?: FormatOpts): string;
21
- //# sourceMappingURL=dispatch-formatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch-formatter.d.ts","sourceRoot":"","sources":["../../src/lib/dispatch-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAW5D,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAqB1E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAmClF"}
@@ -1,28 +0,0 @@
1
- import type { Database } from "bun:sqlite";
2
- import type { CreateDispatchInput, Dispatch } from "../types/index.js";
3
- export type { FormatOpts } from "./dispatch-formatter.js";
4
- /**
5
- * Execute a single dispatch: resolve tasks, format, send to tmux, update status.
6
- */
7
- export declare function executeDispatch(dispatch: Dispatch, opts?: {
8
- dryRun?: boolean;
9
- formatOpts?: import("./dispatch-formatter.ts").FormatOpts;
10
- }, db?: Database): Promise<void>;
11
- /**
12
- * Run all due dispatches (pending + scheduled_at <= now).
13
- * Returns the count of dispatches that were fired.
14
- */
15
- export declare function runDueDispatches(opts?: {
16
- dryRun?: boolean;
17
- }, db?: Database): Promise<number>;
18
- /**
19
- * Fan-out: dispatch the same task set to multiple tmux windows.
20
- * Returns the list of created Dispatch objects.
21
- */
22
- export declare function dispatchToMultiple(input: Omit<CreateDispatchInput, "target_window"> & {
23
- targets: string[];
24
- stagger_ms?: number;
25
- }, opts?: {
26
- dryRun?: boolean;
27
- }, db?: Database): Promise<Dispatch[]>;
28
- //# sourceMappingURL=dispatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/lib/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGvE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,yBAAyB,EAAE,UAAU,CAAA;CAAO,EAC1F,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAuDf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,EAC/B,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9F,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,EAC/B,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,QAAQ,EAAE,CAAC,CAmBrB"}
@@ -1,51 +0,0 @@
1
- import type { Task, TaskPriority } from "../types/index.js";
2
- import type { Database } from "bun:sqlite";
3
- export declare const EXTRACT_TAGS: readonly ["TODO", "FIXME", "HACK", "XXX", "BUG", "NOTE"];
4
- export type ExtractTag = (typeof EXTRACT_TAGS)[number];
5
- export interface ExtractedComment {
6
- tag: ExtractTag;
7
- message: string;
8
- file: string;
9
- line: number;
10
- /** Full line content from the source file */
11
- raw: string;
12
- }
13
- export interface ExtractOptions {
14
- /** Directory or file to scan */
15
- path: string;
16
- /** Comment tags to look for (default: all) */
17
- patterns?: ExtractTag[];
18
- /** Project ID to assign tasks to */
19
- project_id?: string;
20
- /** Task list ID */
21
- task_list_id?: string;
22
- /** Extra tags to add to created tasks */
23
- tags?: string[];
24
- /** Agent to assign tasks to */
25
- assigned_to?: string;
26
- /** Agent ID performing the extraction */
27
- agent_id?: string;
28
- /** If true, return extracted comments without creating tasks */
29
- dry_run?: boolean;
30
- /** File extensions to scan (default: common code extensions) */
31
- extensions?: string[];
32
- }
33
- export interface ExtractResult {
34
- /** All comments found */
35
- comments: ExtractedComment[];
36
- /** Tasks created (empty if dry_run) */
37
- tasks: Task[];
38
- /** Number of duplicates skipped */
39
- skipped: number;
40
- }
41
- /** Priority mapping from comment tag */
42
- export declare function tagToPriority(tag: ExtractTag): TaskPriority;
43
- /**
44
- * Extract TODO-style comments from a single file's contents.
45
- */
46
- export declare function extractFromSource(source: string, filePath: string, tags?: ExtractTag[]): ExtractedComment[];
47
- /**
48
- * Scan a directory or file for TODO-style comments and optionally create tasks.
49
- */
50
- export declare function extractTodos(options: ExtractOptions, db?: Database): ExtractResult;
51
- //# sourceMappingURL=extract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/lib/extract.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,eAAO,MAAM,YAAY,0DAA2D,CAAC;AACrF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,uCAAuC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,CAa3D;AAiBD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,UAAU,EAAsB,GACrC,gBAAgB,EAAE,CA0BpB;AA+BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,aAAa,CAuFlF"}
@@ -1,16 +0,0 @@
1
- type GatherTrainingDataFn = (options?: {
2
- limit?: number;
3
- since?: Date;
4
- }) => Promise<{
5
- source: string;
6
- examples: Array<{
7
- messages: Array<{
8
- role: "system" | "user" | "assistant";
9
- content: string;
10
- }>;
11
- }>;
12
- count: number;
13
- }>;
14
- export declare const gatherTrainingData: GatherTrainingDataFn;
15
- export {};
16
- //# sourceMappingURL=gatherer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gatherer.d.ts","sourceRoot":"","sources":["../../src/lib/gatherer.ts"],"names":[],"mappings":"AAMA,KAAK,oBAAoB,GAAG,CAAC,OAAO,CAAC,EAAE;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,CAAC;CACd,KAAK,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QACd,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7E,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AA8EH,eAAO,MAAM,kBAAkB,EAAE,oBAoDhC,CAAC"}
@@ -1,25 +0,0 @@
1
- import type { CreateTaskInput } from "../types/index.js";
2
- export interface GitHubIssue {
3
- number: number;
4
- title: string;
5
- body: string | null;
6
- labels: string[];
7
- state: string;
8
- assignee: string | null;
9
- url: string;
10
- }
11
- /** Parse a GitHub issue URL into owner/repo/number */
12
- export declare function parseGitHubUrl(url: string): {
13
- owner: string;
14
- repo: string;
15
- number: number;
16
- } | null;
17
- /** Fetch a GitHub issue using the gh CLI with safe argument passing */
18
- export declare function fetchGitHubIssue(owner: string, repo: string, number: number): GitHubIssue;
19
- /** Convert a GitHub issue to a CreateTaskInput */
20
- export declare function issueToTask(issue: GitHubIssue, opts?: {
21
- project_id?: string;
22
- task_list_id?: string;
23
- agent_id?: string;
24
- }): CreateTaskInput;
25
- //# sourceMappingURL=github.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKlG;AAOD,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAoBzF;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAuBzI"}
@@ -1,17 +0,0 @@
1
- import type { LogsClient } from "@hasna/logs";
2
- export declare function getLogger(): Promise<LogsClient | null>;
3
- export declare function logError(message: string, opts?: {
4
- service?: string;
5
- stack?: string;
6
- metadata?: Record<string, unknown>;
7
- traceId?: string;
8
- }): Promise<void>;
9
- export declare function logInfo(message: string, opts?: {
10
- service?: string;
11
- metadata?: Record<string, unknown>;
12
- }): Promise<void>;
13
- export declare function logWarn(message: string, opts?: {
14
- service?: string;
15
- metadata?: Record<string, unknown>;
16
- }): Promise<void>;
17
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI7C,wBAAsB,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAS5D;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -1,14 +0,0 @@
1
- export declare const DEFAULT_MODEL = "gpt-4o-mini";
2
- /**
3
- * Returns the currently active fine-tuned model ID, or the default model.
4
- */
5
- export declare function getActiveModel(): string;
6
- /**
7
- * Sets the active fine-tuned model ID in ~/.hasna/todos/config.json.
8
- */
9
- export declare function setActiveModel(modelId: string): void;
10
- /**
11
- * Clears the active fine-tuned model, reverting to the default.
12
- */
13
- export declare function clearActiveModel(): void;
14
- //# sourceMappingURL=model-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/lib/model-config.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAmC3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}
@@ -1,33 +0,0 @@
1
- import type { Database } from "bun:sqlite";
2
- export interface NorthStarSnapshot {
3
- timestamp: string;
4
- active_tasks: number;
5
- stale_tasks: number;
6
- completion_rate_per_hour: number;
7
- agents_online: AgentActivity[];
8
- top_agent: string | null;
9
- health: "healthy" | "degraded" | "critical";
10
- }
11
- export interface AgentActivity {
12
- agent_id: string;
13
- active_tasks: number;
14
- last_heartbeat?: string | null;
15
- completions_last_hour: number;
16
- }
17
- /**
18
- * 1-minute north star loop — fires every 60s to track progress.
19
- * Returns a snapshot of current system health and throughput.
20
- */
21
- export declare function getNorthStarSnapshot(filters?: {
22
- project_id?: string;
23
- }, db?: Database): NorthStarSnapshot;
24
- /**
25
- * Start a recurring north star loop that logs snapshots.
26
- * Returns a stop function.
27
- */
28
- export declare function startNorthStarLoop(opts?: {
29
- interval_ms?: number;
30
- project_id?: string;
31
- logger?: (snapshot: NorthStarSnapshot) => void;
32
- }): () => void;
33
- //# sourceMappingURL=north-star.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"north-star.d.ts","sourceRoot":"","sources":["../../src/lib/north-star.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACjC,EAAE,CAAC,EAAE,QAAQ,GACZ,iBAAiB,CAoFnB;AAqBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAAE,GACnG,MAAM,IAAI,CAYZ"}
@@ -1,2 +0,0 @@
1
- export declare function getPackageVersion(fromUrl?: string): string;
2
- //# sourceMappingURL=package-version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-version.d.ts","sourceRoot":"","sources":["../../src/lib/package-version.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,OAAO,SAAkB,GAAG,MAAM,CAgBnE"}
@@ -1,10 +0,0 @@
1
- export interface ParsedRule {
2
- type: "interval" | "weekdays" | "specific_days";
3
- interval?: number;
4
- unit?: "day" | "week" | "month";
5
- days?: number[];
6
- }
7
- export declare function parseRecurrenceRule(rule: string): ParsedRule;
8
- export declare function isValidRecurrenceRule(rule: string): boolean;
9
- export declare function nextOccurrence(rule: string, from?: Date): string;
10
- //# sourceMappingURL=recurrence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recurrence.d.ts","sourceRoot":"","sources":["../../src/lib/recurrence.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAoD5D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAkChE"}
@@ -1,17 +0,0 @@
1
- import type { Database } from "bun:sqlite";
2
- import type { Task } from "../types/index.js";
3
- export interface SearchOptions {
4
- query?: string;
5
- project_id?: string;
6
- task_list_id?: string;
7
- status?: string | string[];
8
- priority?: string | string[];
9
- assigned_to?: string;
10
- agent_id?: string;
11
- created_after?: string;
12
- updated_after?: string;
13
- has_dependencies?: boolean;
14
- is_blocked?: boolean;
15
- }
16
- export declare function searchTasks(options: SearchOptions | string, projectId?: string, taskListId?: string, db?: Database): Task[];
17
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,mBAAmB,CAAC;AAcvD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,EAAE,CA4GR"}
@@ -1,16 +0,0 @@
1
- export interface SyncResult {
2
- pushed: number;
3
- pulled: number;
4
- errors: string[];
5
- }
6
- export type SyncPrefer = "local" | "remote";
7
- export interface SyncConflict {
8
- agent: string;
9
- direction: "push" | "pull";
10
- prefer: SyncPrefer;
11
- local_updated_at?: string;
12
- remote_updated_at?: string;
13
- detected_at: string;
14
- notes?: string;
15
- }
16
- //# sourceMappingURL=sync-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-types.d.ts","sourceRoot":"","sources":["../../src/lib/sync-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,12 +0,0 @@
1
- import type { SyncConflict } from "./sync-types.js";
2
- export declare const HOME: string;
3
- export declare function ensureDir(dir: string): void;
4
- export declare function listJsonFiles(dir: string): string[];
5
- export declare function readJsonFile<T>(path: string): T | null;
6
- export declare function writeJsonFile(path: string, data: unknown): void;
7
- export declare function readHighWaterMark(dir: string): number;
8
- export declare function writeHighWaterMark(dir: string, value: number): void;
9
- export declare function getFileMtimeMs(path: string): number | null;
10
- export declare function parseTimestamp(value: unknown): number | null;
11
- export declare function appendSyncConflict(metadata: Record<string, unknown>, conflict: SyncConflict, limit?: number): Record<string, unknown>;
12
- //# sourceMappingURL=sync-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-utils.d.ts","sourceRoot":"","sources":["../../src/lib/sync-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,IAAI,QAA2D,CAAC;AAE7E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAGnD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAMtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,EAAE,YAAY,EACtB,KAAK,SAAI,GACR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB"}
@@ -1,9 +0,0 @@
1
- import type { SyncPrefer, SyncResult } from "./sync-types.js";
2
- export type SyncDirection = "push" | "pull" | "both";
3
- export interface SyncOptions {
4
- prefer?: SyncPrefer;
5
- }
6
- export declare function defaultSyncAgents(): string[];
7
- export declare function syncWithAgent(agent: string, taskListId: string, projectId?: string, direction?: SyncDirection, options?: SyncOptions): SyncResult;
8
- export declare function syncWithAgents(agents: string[], taskListIdByAgent: (agent: string) => string | null, projectId?: string, direction?: SyncDirection, options?: SyncOptions): SyncResult;
9
- //# sourceMappingURL=sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACrD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAWD,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAQ5C;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,aAAsB,EACjC,OAAO,GAAE,WAAgB,GACxB,UAAU,CAWZ;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EAAE,EAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EACnD,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,aAAsB,EACjC,OAAO,GAAE,WAAgB,GACxB,UAAU,CAoCZ"}
@@ -1,101 +0,0 @@
1
- import type { Database } from "bun:sqlite";
2
- import type { Task } from "../types/index.js";
3
- import { type Checkpoint, type Heartbeat } from "../db/checkpoints.js";
4
- export type RetryStrategy = {
5
- type: "none";
6
- } | {
7
- type: "fixed";
8
- delay_ms: number;
9
- max_attempts: number;
10
- } | {
11
- type: "exponential";
12
- base_ms: number;
13
- max_attempts: number;
14
- max_delay_ms?: number;
15
- } | {
16
- type: "linear";
17
- base_ms: number;
18
- max_attempts: number;
19
- };
20
- export interface TaskRunnerOptions {
21
- agent_id: string;
22
- retry_strategy?: RetryStrategy;
23
- heartbeat_interval_ms?: number;
24
- checkpoint_on_error?: boolean;
25
- }
26
- export interface StepDefinition {
27
- name: string;
28
- description?: string;
29
- max_attempts?: number;
30
- timeout_ms?: number;
31
- }
32
- export type StepResult = {
33
- status: "completed" | "failed" | "skipped";
34
- data?: Record<string, unknown>;
35
- error?: string;
36
- };
37
- export type StepFn = (ctx: StepContext) => Promise<StepResult> | StepResult;
38
- export interface StepContext {
39
- task: Task;
40
- agent_id: string;
41
- step_name: string;
42
- attempt: number;
43
- data: Record<string, unknown>;
44
- db: Database;
45
- emitHeartbeat: (opts?: {
46
- message?: string;
47
- progress?: number;
48
- meta?: Record<string, unknown>;
49
- }) => Heartbeat;
50
- checkpoint: (updates: Partial<Checkpoint>) => Checkpoint;
51
- }
52
- export declare class TaskRunner {
53
- private agentId;
54
- private retryStrategy;
55
- private heartbeatIntervalMs;
56
- private checkpointOnError;
57
- private db;
58
- private heartbeatTimer;
59
- private _aborted;
60
- private _currentStep;
61
- private _stepIndex;
62
- constructor(opts: TaskRunnerOptions, db?: Database);
63
- abort(): void;
64
- get aborted(): boolean;
65
- /** Start heartbeats at regular intervals */
66
- startHeartbeat(taskId: string): void;
67
- stopHeartbeat(): void;
68
- /** Initialize a task run: set runner metadata, create checkpoints for each step */
69
- init(taskId: string, steps: StepDefinition[]): Task;
70
- /** Run all steps sequentially with retry support */
71
- run(taskId: string, stepFns: Map<string, StepFn>): Promise<{
72
- success: boolean;
73
- steps: StepResult[];
74
- }>;
75
- /** Mark a task run as completed in the DB */
76
- complete(taskId: string): Task;
77
- /** Mark a task run as failed */
78
- fail(taskId: string, reason?: string): {
79
- task: Task;
80
- };
81
- /** Get progress summary for a task */
82
- progress(taskId: string): {
83
- total_steps: number;
84
- completed_steps: number;
85
- failed_steps: number;
86
- pending_steps: number;
87
- last_heartbeat?: Heartbeat | null;
88
- };
89
- /** Get last heartbeat for a task */
90
- lastHeartbeat(taskId: string): Heartbeat | null;
91
- private handleStepFailure;
92
- private shouldRetry;
93
- private computeRetryDelay;
94
- private getDefaultMaxAttempts;
95
- }
96
- /** Convenience: create a runner and claim + start a task in one call */
97
- export declare function runTask(taskId: string, opts: TaskRunnerOptions): {
98
- runner: TaskRunner;
99
- task: Task;
100
- };
101
- //# sourceMappingURL=task-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/lib/task-runner.ts"],"names":[],"mappings":"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"}