@hasna/todos 0.11.29 → 0.11.30

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 (67) hide show
  1. package/dist/cli/index.js +25237 -27283
  2. package/dist/db/checkpoints.d.ts +55 -0
  3. package/dist/db/checkpoints.d.ts.map +1 -0
  4. package/dist/db/database.d.ts.map +1 -1
  5. package/dist/db/migrations.d.ts +2 -0
  6. package/dist/db/migrations.d.ts.map +1 -0
  7. package/dist/db/pg-migrations.d.ts.map +1 -1
  8. package/dist/db/schema.d.ts +0 -1
  9. package/dist/db/schema.d.ts.map +1 -1
  10. package/dist/db/task-crud.d.ts +13 -0
  11. package/dist/db/task-crud.d.ts.map +1 -0
  12. package/dist/db/task-graph.d.ts +27 -0
  13. package/dist/db/task-graph.d.ts.map +1 -0
  14. package/dist/db/task-lifecycle.d.ts +80 -0
  15. package/dist/db/task-lifecycle.d.ts.map +1 -0
  16. package/dist/db/task-relations.d.ts +86 -0
  17. package/dist/db/task-relations.d.ts.map +1 -0
  18. package/dist/db/task-status.d.ts +65 -0
  19. package/dist/db/task-status.d.ts.map +1 -0
  20. package/dist/db/tasks.d.ts +10 -255
  21. package/dist/db/tasks.d.ts.map +1 -1
  22. package/dist/db/webhooks.d.ts +6 -1
  23. package/dist/db/webhooks.d.ts.map +1 -1
  24. package/dist/index.js +2381 -1788
  25. package/dist/lib/github.d.ts +1 -1
  26. package/dist/lib/github.d.ts.map +1 -1
  27. package/dist/lib/north-star.d.ts +33 -0
  28. package/dist/lib/north-star.d.ts.map +1 -0
  29. package/dist/lib/task-runner.d.ts +101 -0
  30. package/dist/lib/task-runner.d.ts.map +1 -0
  31. package/dist/mcp/index.d.ts.map +1 -1
  32. package/dist/mcp/index.js +21955 -25937
  33. package/dist/mcp/tools/cloud.d.ts.map +1 -1
  34. package/dist/mcp/tools/code-tools.d.ts +15 -0
  35. package/dist/mcp/tools/code-tools.d.ts.map +1 -0
  36. package/dist/mcp/tools/task-adv-tools.d.ts +20 -0
  37. package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -0
  38. package/dist/mcp/tools/task-auto-tools.d.ts +20 -0
  39. package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -0
  40. package/dist/mcp/tools/task-crud.d.ts +20 -0
  41. package/dist/mcp/tools/task-crud.d.ts.map +1 -0
  42. package/dist/mcp/tools/task-meta-tools.d.ts +12 -0
  43. package/dist/mcp/tools/task-meta-tools.d.ts.map +1 -0
  44. package/dist/mcp/tools/task-project-tools.d.ts +20 -0
  45. package/dist/mcp/tools/task-project-tools.d.ts.map +1 -0
  46. package/dist/mcp/tools/task-rel-tools.d.ts +19 -0
  47. package/dist/mcp/tools/task-rel-tools.d.ts.map +1 -0
  48. package/dist/mcp/tools/task-resources.d.ts +13 -0
  49. package/dist/mcp/tools/task-resources.d.ts.map +1 -0
  50. package/dist/mcp/tools/task-workflow-tools.d.ts +20 -0
  51. package/dist/mcp/tools/task-workflow-tools.d.ts.map +1 -0
  52. package/dist/sdk/client.d.ts +361 -0
  53. package/dist/sdk/client.d.ts.map +1 -0
  54. package/dist/sdk/index.d.ts +14 -0
  55. package/dist/sdk/index.d.ts.map +1 -0
  56. package/dist/sdk/types.d.ts +167 -0
  57. package/dist/sdk/types.d.ts.map +1 -0
  58. package/dist/sdk.d.ts +15 -182
  59. package/dist/sdk.d.ts.map +1 -1
  60. package/dist/server/index.js +1961 -2803
  61. package/dist/server/routes.d.ts +85 -0
  62. package/dist/server/routes.d.ts.map +1 -0
  63. package/dist/server/serve.d.ts +29 -0
  64. package/dist/server/serve.d.ts.map +1 -1
  65. package/dist/types/index.d.ts +77 -0
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/package.json +1 -1
@@ -14,7 +14,7 @@ export declare function parseGitHubUrl(url: string): {
14
14
  repo: string;
15
15
  number: number;
16
16
  } | null;
17
- /** Fetch a GitHub issue using the gh CLI */
17
+ /** Fetch a GitHub issue using the gh CLI with safe argument passing */
18
18
  export declare function fetchGitHubIssue(owner: string, repo: string, number: number): GitHubIssue;
19
19
  /** Convert a GitHub issue to a CreateTaskInput */
20
20
  export declare function issueToTask(issue: GitHubIssue, opts?: {
@@ -1 +1 @@
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,CAIlG;AAED,4CAA4C;AAC5C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAezF;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
+ {"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"}
@@ -0,0 +1,33 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,101 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/lib/task-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAML,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAI9B,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,EAAE,EAAE,QAAQ,CAAC;IACb,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,SAAS,CAAC;IAC7G,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;CAC1D;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,UAAU,CAAK;gBAEX,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,QAAQ;IAQlD,KAAK;IAKL,IAAI,OAAO,YAEV;IAED,4CAA4C;IAC5C,cAAc,CAAC,MAAM,EAAE,MAAM;IAa7B,aAAa;IAOb,mFAAmF;IACnF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAsBnD,oDAAoD;IAC9C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IA+G3G,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc9B,gCAAgC;IAChC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;IAQrD,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM;;;;;;;IAIvB,oCAAoC;IACpC,aAAa,CAAC,MAAM,EAAE,MAAM;YAId,iBAAiB;IAkC/B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,qBAAqB;CAY9B;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAKnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAyJA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AA8FA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E"}