@hasna/todos 0.11.83 → 0.11.84

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.
@@ -21,7 +21,7 @@
21
21
  * subnet routing — pure API-client path per the locked architecture.
22
22
  */
23
23
  import { type HasnaStorageClient } from "@hasna/contracts/client/storage";
24
- import type { Agent, Plan, Project, RegisterAgentInput, Task, TaskComment, TaskDependency, TaskFilter } from "../types/index.js";
24
+ import type { Agent, Plan, Project, RegisterAgentInput, Task, TaskComment, TaskDependency, TaskFilter, TaskHistory, TaskList } from "../types/index.js";
25
25
  type Env = Record<string, string | undefined>;
26
26
  /**
27
27
  * Resolve the todos cloud storage client from the environment. Returns a ready
@@ -150,5 +150,130 @@ export declare function cloudRecordVerification(client: HasnaStorageClient, id:
150
150
  artifact_path?: string;
151
151
  agent_id?: string;
152
152
  }): Promise<CloudTaskVerification>;
153
+ /** All non-terminal tasks (pending + in_progress) — the "active" working set. */
154
+ export declare function cloudActiveTasks(client: HasnaStorageClient, filter?: TaskFilter): Promise<Task[]>;
155
+ /** In-progress tasks, priority- then recency-sorted (parity with `getActiveWork`). */
156
+ export declare function cloudActiveWork(client: HasnaStorageClient, filter?: TaskFilter): Promise<Task[]>;
157
+ /** In-progress tasks whose last update (or lock) is older than `minutes` (parity with `getStaleTasks`). */
158
+ export declare function cloudStaleTasks(client: HasnaStorageClient, minutes: number, filter?: TaskFilter): Promise<Task[]>;
159
+ /** Non-terminal tasks past their due date (parity with `getOverdueTasks`). */
160
+ export declare function cloudOverdueTasks(client: HasnaStorageClient, projectId?: string, at?: Date): Promise<Task[]>;
161
+ export interface CloudEscalatedTask {
162
+ task: Task;
163
+ reasons: Array<"overdue" | "sla_breached">;
164
+ breached_at: string;
165
+ }
166
+ /** Overdue or SLA-breached non-terminal tasks (parity with `getEscalatedTasks`). */
167
+ export declare function cloudEscalatedTasks(client: HasnaStorageClient, opts?: {
168
+ project_id?: string;
169
+ agent_id?: string;
170
+ }, at?: Date): Promise<CloudEscalatedTask[]>;
171
+ /** Tasks updated since `since` (parity with `getTasksChangedSince`). */
172
+ export declare function cloudChangedSince(client: HasnaStorageClient, since: string, filter?: TaskFilter): Promise<Task[]>;
173
+ export interface CloudTaskStats {
174
+ total: number;
175
+ by_status: Record<string, number>;
176
+ by_priority: Record<string, number>;
177
+ completion_rate: number;
178
+ by_agent: Record<string, number>;
179
+ }
180
+ /** Task counts grouped by status/priority/agent (parity with `getTaskStats`). */
181
+ export declare function cloudTaskStats(client: HasnaStorageClient, filter?: TaskFilter): Promise<CloudTaskStats>;
182
+ /**
183
+ * Recent task-history entries (`GET /v1/activity`). Powers `log` and `burndown`.
184
+ * Requires the `/v1/activity` server route (ECS redeploy).
185
+ */
186
+ export declare function cloudRecentActivity(client: HasnaStorageClient, limit?: number): Promise<TaskHistory[]>;
187
+ /**
188
+ * Task lists (`GET /v1/task-lists`). Powers `lists`. Requires the
189
+ * `/v1/task-lists` server route (ECS redeploy).
190
+ */
191
+ export declare function cloudListTaskLists(client: HasnaStorageClient, projectId?: string): Promise<TaskList[]>;
192
+ /**
193
+ * The single best pending task to work on next (`GET /v1/next`) — the server
194
+ * applies the same agent-affinity + priority ranking + blocked-exclusion as the
195
+ * local `getNextTask`. Powers `next`. Requires the `/v1/next` route (ECS redeploy).
196
+ */
197
+ export declare function cloudNextTask(client: HasnaStorageClient, agent?: string, filters?: {
198
+ project_id?: string;
199
+ task_list_id?: string;
200
+ plan_id?: string;
201
+ }): Promise<Task | null>;
202
+ /**
203
+ * Every dependency edge in the shared dataset (`GET /v1/dependencies`). Edges are
204
+ * far fewer than tasks, so this stays cheap even on the full cloud set. Powers the
205
+ * blocked/ready/sprint/recap dependency analytics. Requires the `/v1/dependencies`
206
+ * route (ECS redeploy).
207
+ */
208
+ export declare function cloudAllDependencies(client: HasnaStorageClient): Promise<TaskDependency[]>;
209
+ /** Fetch a set of tasks by id via bounded parallel `GET /v1/tasks/:id`. */
210
+ export declare function cloudGetTasksByIds(client: HasnaStorageClient, ids: readonly string[]): Promise<Map<string, Task>>;
211
+ /**
212
+ * For each candidate task, its incomplete blocking dependencies (parity with
213
+ * `getBlockingDeps`): the tasks it depends on whose status is not `completed`.
214
+ */
215
+ export declare function cloudBlockingDepsMap(client: HasnaStorageClient, candidates: readonly Task[]): Promise<Map<string, Task[]>>;
216
+ export interface CloudRecapSummary {
217
+ hours: number;
218
+ since: string;
219
+ completed: Array<Task & {
220
+ duration_minutes: number | null;
221
+ }>;
222
+ created: Task[];
223
+ in_progress: Task[];
224
+ blocked: Task[];
225
+ stale: Task[];
226
+ agents: {
227
+ name: string;
228
+ completed_count: number;
229
+ in_progress_count: number;
230
+ last_seen_at: string;
231
+ }[];
232
+ }
233
+ /**
234
+ * The `recap`/`standup` summary computed over the shared cloud dataset (parity
235
+ * with `getRecap`): completed/created in the window, current in-progress, blocked
236
+ * (incomplete deps), stale, and per-agent activity. Uses `/v1/dependencies` for
237
+ * the blocked set and `/v1/agents` for the roster.
238
+ */
239
+ export declare function cloudRecap(client: HasnaStorageClient, hours: number, projectId?: string): Promise<CloudRecapSummary>;
240
+ export interface CloudTimelineEntry {
241
+ id: string;
242
+ source: string;
243
+ event_type: string;
244
+ entity_type: "task";
245
+ entity_id: string;
246
+ task_id: string;
247
+ project_id: string | null;
248
+ plan_id: string | null;
249
+ run_id: string | null;
250
+ agent_id: string | null;
251
+ created_at: string;
252
+ title: string;
253
+ message: string | null;
254
+ metadata: Record<string, unknown>;
255
+ }
256
+ export interface CloudTimelinePage {
257
+ entries: CloudTimelineEntry[];
258
+ total: number;
259
+ limit: number;
260
+ offset: number;
261
+ }
262
+ export interface CloudTimelineOptions {
263
+ entity_type?: "task" | "run" | "project" | "plan";
264
+ entity_id?: string;
265
+ since?: string;
266
+ until?: string;
267
+ limit?: number;
268
+ offset?: number;
269
+ order?: "asc" | "desc";
270
+ }
271
+ /**
272
+ * A cloud activity timeline built from the shared task-history ledger
273
+ * (`GET /v1/activity`). The shared cloud dataset only carries task history (not the
274
+ * local run-ledger / project / plan sources), so `entity_type` filters other than
275
+ * `task` return no rows — a documented degradation from the richer local timeline.
276
+ */
277
+ export declare function cloudTimeline(client: HasnaStorageClient, options?: CloudTimelineOptions): Promise<CloudTimelinePage>;
153
278
  export {};
154
279
  //# sourceMappingURL=cloud-router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-router.d.ts","sourceRoot":"","sources":["../../src/cli/cloud-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChG,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjI,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAI9C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,GAAwB,GAAG,kBAAkB,GAAG,IAAI,CAiB5F;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,GAAE,GAAwB,GAAG,OAAO,CAErE;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAwBD,8EAA8E;AAC9E,wBAAsB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAIzG;AAED,iEAAiE;AACjE,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAG/F;AAED,oEAAoE;AACpE,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/G;AAED,6CAA6C;AAC7C,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3H;AAED,wEAAwE;AACxE,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9F;AAED,sFAAsF;AACtF,wBAAsB,eAAe,CACnC,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,EAC/C,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAGnF;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAIlF;AAED,yDAAyD;AACzD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAItF;AAED,mFAAmF;AACnF,wBAAsB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAKpG;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACvG,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ1G;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAM9G;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMrH;AAED,oEAAoE;AACpE,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAShH;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,+EAA+E;AAC/E,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAIjH;AAED,iFAAiF;AACjF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAM3H;AAED,6FAA6F;AAC7F,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvH;AAED,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9G,OAAO,CAAC,qBAAqB,CAAC,CAMhC"}
1
+ {"version":3,"file":"cloud-router.d.ts","sourceRoot":"","sources":["../../src/cli/cloud-router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA0ZrD"}
1
+ {"version":3,"file":"agent-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAiarD"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/query-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8NzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAg4FrD"}
1
+ {"version":3,"file":"query-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/query-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8OzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA++FrD"}
package/dist/cli/index.js CHANGED
@@ -8627,9 +8627,230 @@ async function cloudRecordVerification(client, id, input) {
8627
8627
  }
8628
8628
  return raw;
8629
8629
  }
8630
- var _cache;
8630
+ function priorityRank(priority) {
8631
+ return PRIORITY_RANK[priority ?? ""] ?? 4;
8632
+ }
8633
+ async function cloudActiveTasks(client, filter = {}) {
8634
+ const [pending, inProgress] = await Promise.all([
8635
+ cloudListTasks(client, { ...filter, status: "pending" }),
8636
+ cloudListTasks(client, { ...filter, status: "in_progress" })
8637
+ ]);
8638
+ return [...pending, ...inProgress];
8639
+ }
8640
+ async function cloudActiveWork(client, filter = {}) {
8641
+ const tasks = await cloudListTasks(client, { ...filter, status: "in_progress" });
8642
+ return tasks.sort((a, b) => priorityRank(a.priority) - priorityRank(b.priority) || (b.updated_at ?? "").localeCompare(a.updated_at ?? ""));
8643
+ }
8644
+ async function cloudStaleTasks(client, minutes, filter = {}) {
8645
+ const cutoff = new Date(Date.now() - minutes * 60 * 1000).toISOString();
8646
+ const tasks = await cloudListTasks(client, { ...filter, status: "in_progress" });
8647
+ return tasks.filter((t) => (t.updated_at ?? "") < cutoff || t.locked_at != null && t.locked_at < cutoff).sort((a, b) => (a.updated_at ?? "").localeCompare(b.updated_at ?? ""));
8648
+ }
8649
+ async function cloudOverdueTasks(client, projectId, at = new Date) {
8650
+ const nowStr = at.toISOString();
8651
+ const filter = projectId ? { project_id: projectId } : {};
8652
+ const active = await cloudActiveTasks(client, filter);
8653
+ return active.filter((t) => !t.archived_at && t.due_at != null && t.due_at < nowStr).sort((a, b) => (a.due_at ?? "").localeCompare(b.due_at ?? ""));
8654
+ }
8655
+ async function cloudEscalatedTasks(client, opts = {}, at = new Date) {
8656
+ const nowMs = at.getTime();
8657
+ const filter = {};
8658
+ if (opts.project_id)
8659
+ filter.project_id = opts.project_id;
8660
+ const active = await cloudActiveTasks(client, filter);
8661
+ return active.filter((t) => !t.archived_at && (opts.agent_id ? t.assigned_to === opts.agent_id : true)).map((task) => {
8662
+ const reasons = [];
8663
+ const breachedTimes = [];
8664
+ if (task.due_at) {
8665
+ const dueMs = new Date(task.due_at).getTime();
8666
+ if (Number.isFinite(dueMs) && dueMs < nowMs) {
8667
+ reasons.push("overdue");
8668
+ breachedTimes.push(dueMs);
8669
+ }
8670
+ }
8671
+ if (task.sla_minutes != null) {
8672
+ const startMs = new Date(task.started_at ?? task.created_at).getTime();
8673
+ const breachedMs = startMs + task.sla_minutes * 60000;
8674
+ if (Number.isFinite(breachedMs) && breachedMs < nowMs) {
8675
+ reasons.push("sla_breached");
8676
+ breachedTimes.push(breachedMs);
8677
+ }
8678
+ }
8679
+ if (reasons.length === 0)
8680
+ return null;
8681
+ return { task, reasons, breached_at: new Date(Math.min(...breachedTimes)).toISOString() };
8682
+ }).filter((item) => item !== null).sort((a, b) => (a.task.due_at ?? "").localeCompare(b.task.due_at ?? "") || a.task.created_at.localeCompare(b.task.created_at));
8683
+ }
8684
+ async function cloudChangedSince(client, since, filter = {}) {
8685
+ const tasks = await cloudListTasks(client, filter);
8686
+ return tasks.filter((t) => (t.updated_at ?? "") > since).sort((a, b) => (b.updated_at ?? "").localeCompare(a.updated_at ?? ""));
8687
+ }
8688
+ async function cloudTaskStats(client, filter = {}) {
8689
+ const tasks = await cloudListTasks(client, filter);
8690
+ const by_status = {};
8691
+ const by_priority = {};
8692
+ const by_agent = {};
8693
+ for (const t of tasks) {
8694
+ by_status[t.status] = (by_status[t.status] ?? 0) + 1;
8695
+ by_priority[t.priority] = (by_priority[t.priority] ?? 0) + 1;
8696
+ const agent = t.assigned_to ?? t.agent_id ?? "unassigned";
8697
+ by_agent[agent] = (by_agent[agent] ?? 0) + 1;
8698
+ }
8699
+ const completed = by_status["completed"] ?? 0;
8700
+ return {
8701
+ total: tasks.length,
8702
+ by_status,
8703
+ by_priority,
8704
+ by_agent,
8705
+ completion_rate: tasks.length > 0 ? Math.round(completed / tasks.length * 100) : 0
8706
+ };
8707
+ }
8708
+ async function cloudRecentActivity(client, limit = 50) {
8709
+ const raw = await client.transport.get("/activity", { query: { limit } });
8710
+ const envelope = raw ?? {};
8711
+ if (Array.isArray(envelope.activity))
8712
+ return envelope.activity;
8713
+ if (Array.isArray(envelope.entries))
8714
+ return envelope.entries;
8715
+ return Array.isArray(raw) ? raw : [];
8716
+ }
8717
+ async function cloudListTaskLists(client, projectId) {
8718
+ const query = projectId ? { project_id: projectId } : {};
8719
+ const raw = await client.transport.get("/task-lists", { query });
8720
+ const envelope = raw ?? {};
8721
+ if (Array.isArray(envelope.task_lists))
8722
+ return envelope.task_lists;
8723
+ if (Array.isArray(envelope.taskLists))
8724
+ return envelope.taskLists;
8725
+ return Array.isArray(raw) ? raw : [];
8726
+ }
8727
+ async function cloudNextTask(client, agent, filters) {
8728
+ const query = {};
8729
+ if (agent)
8730
+ query["agent"] = agent;
8731
+ if (filters?.project_id)
8732
+ query["project_id"] = filters.project_id;
8733
+ if (filters?.task_list_id)
8734
+ query["task_list_id"] = filters.task_list_id;
8735
+ if (filters?.plan_id)
8736
+ query["plan_id"] = filters.plan_id;
8737
+ const raw = await client.transport.get("/next", { query });
8738
+ if (raw == null)
8739
+ return null;
8740
+ const task = unwrapTask(raw);
8741
+ return task && task.id ? task : null;
8742
+ }
8743
+ async function cloudAllDependencies(client) {
8744
+ const raw = await client.transport.get("/dependencies");
8745
+ const envelope = raw ?? {};
8746
+ if (Array.isArray(envelope.dependencies))
8747
+ return envelope.dependencies;
8748
+ return Array.isArray(raw) ? raw : [];
8749
+ }
8750
+ async function cloudGetTasksByIds(client, ids) {
8751
+ const unique = Array.from(new Set(ids));
8752
+ const map = new Map;
8753
+ const CONCURRENCY = 8;
8754
+ for (let i = 0;i < unique.length; i += CONCURRENCY) {
8755
+ const batch = unique.slice(i, i + CONCURRENCY);
8756
+ const tasks = await Promise.all(batch.map((id) => cloudGetTask(client, id)));
8757
+ for (const task of tasks)
8758
+ if (task && task.id)
8759
+ map.set(task.id, task);
8760
+ }
8761
+ return map;
8762
+ }
8763
+ async function cloudBlockingDepsMap(client, candidates) {
8764
+ const result = new Map;
8765
+ if (candidates.length === 0)
8766
+ return result;
8767
+ const edges = await cloudAllDependencies(client);
8768
+ const dependsByTask = new Map;
8769
+ for (const edge of edges) {
8770
+ if (!edge.task_id || !edge.depends_on)
8771
+ continue;
8772
+ const arr = dependsByTask.get(edge.task_id) ?? [];
8773
+ arr.push(edge.depends_on);
8774
+ dependsByTask.set(edge.task_id, arr);
8775
+ }
8776
+ const candidateIds = new Set(candidates.map((t) => t.id));
8777
+ const blockerIds = new Set;
8778
+ for (const id of candidateIds)
8779
+ for (const dep of dependsByTask.get(id) ?? [])
8780
+ blockerIds.add(dep);
8781
+ const blockers = await cloudGetTasksByIds(client, Array.from(blockerIds));
8782
+ for (const task of candidates) {
8783
+ const deps = dependsByTask.get(task.id) ?? [];
8784
+ const incomplete = deps.map((depId) => blockers.get(depId)).filter((b) => b != null && b.status !== "completed");
8785
+ if (incomplete.length > 0)
8786
+ result.set(task.id, incomplete);
8787
+ }
8788
+ return result;
8789
+ }
8790
+ async function cloudRecap(client, hours, projectId) {
8791
+ const since = new Date(Date.now() - hours * 60 * 60 * 1000).toISOString();
8792
+ const staleWindow = new Date(Date.now() - 30 * 60 * 1000).toISOString();
8793
+ const filter = projectId ? { project_id: projectId } : {};
8794
+ const [all, agents] = await Promise.all([cloudListTasks(client, filter), cloudListAgents(client)]);
8795
+ const completed = all.filter((t) => t.status === "completed" && t.completed_at != null && t.completed_at > since).sort((a, b) => (b.completed_at ?? "").localeCompare(a.completed_at ?? "")).map((t) => ({
8796
+ ...t,
8797
+ duration_minutes: t.started_at && t.completed_at ? Math.round((new Date(t.completed_at).getTime() - new Date(t.started_at).getTime()) / 60000) : null
8798
+ }));
8799
+ const created = all.filter((t) => t.created_at > since).sort((a, b) => b.created_at.localeCompare(a.created_at));
8800
+ const in_progress = all.filter((t) => t.status === "in_progress").sort((a, b) => (b.updated_at ?? "").localeCompare(a.updated_at ?? ""));
8801
+ const stale = in_progress.filter((t) => (t.updated_at ?? "") < staleWindow).sort((a, b) => (a.updated_at ?? "").localeCompare(b.updated_at ?? ""));
8802
+ const pending = all.filter((t) => t.status === "pending");
8803
+ const blockedMap = await cloudBlockingDepsMap(client, pending);
8804
+ const blocked = pending.filter((t) => blockedMap.has(t.id));
8805
+ const sinceMs = new Date(since).getTime();
8806
+ const agentSummaries = agents.map((agent) => {
8807
+ const owned = all.filter((t) => t.assigned_to === agent.id || t.agent_id === agent.id);
8808
+ return {
8809
+ name: agent.name,
8810
+ completed_count: owned.filter((t) => t.status === "completed" && t.completed_at != null && t.completed_at > since).length,
8811
+ in_progress_count: owned.filter((t) => t.status === "in_progress").length,
8812
+ last_seen_at: agent.last_seen_at
8813
+ };
8814
+ }).filter((a) => a.last_seen_at != null && new Date(a.last_seen_at).getTime() > sinceMs).sort((a, b) => b.completed_count - a.completed_count);
8815
+ return { hours, since, completed, created, in_progress, blocked, stale, agents: agentSummaries };
8816
+ }
8817
+ async function cloudTimeline(client, options = {}) {
8818
+ const activity = await cloudRecentActivity(client, 5000);
8819
+ let entries = activity.map((h) => ({
8820
+ id: h.id,
8821
+ source: "task_history",
8822
+ event_type: h.action,
8823
+ entity_type: "task",
8824
+ entity_id: h.task_id,
8825
+ task_id: h.task_id,
8826
+ project_id: null,
8827
+ plan_id: null,
8828
+ run_id: null,
8829
+ agent_id: h.agent_id ?? null,
8830
+ created_at: h.created_at,
8831
+ title: "",
8832
+ message: h.field ? `${h.field}: ${h.old_value ?? ""}${h.new_value != null ? ` -> ${h.new_value}` : ""}`.trim() : null,
8833
+ metadata: {}
8834
+ }));
8835
+ if (options.entity_type && options.entity_type !== "task") {
8836
+ entries = [];
8837
+ } else if (options.entity_type === "task" && options.entity_id) {
8838
+ entries = entries.filter((e) => e.task_id === options.entity_id);
8839
+ }
8840
+ if (options.since)
8841
+ entries = entries.filter((e) => e.created_at >= options.since);
8842
+ if (options.until)
8843
+ entries = entries.filter((e) => e.created_at <= options.until);
8844
+ entries.sort((a, b) => options.order === "asc" ? a.created_at.localeCompare(b.created_at) : b.created_at.localeCompare(a.created_at));
8845
+ const total = entries.length;
8846
+ const offset = options.offset ?? 0;
8847
+ const limit = options.limit ?? 50;
8848
+ return { entries: entries.slice(offset, offset + limit), total, limit, offset };
8849
+ }
8850
+ var _cache, PRIORITY_RANK;
8631
8851
  var init_cloud_router = __esm(() => {
8632
8852
  init_storage();
8853
+ PRIORITY_RANK = { critical: 0, high: 1, medium: 2, low: 3 };
8633
8854
  });
8634
8855
 
8635
8856
  // src/db/migrations.ts
@@ -16438,11 +16659,11 @@ function listTasks(filter = {}, db) {
16438
16659
  }
16439
16660
  }
16440
16661
  addMetadataConditions(filter.metadata, conditions, params);
16441
- const PRIORITY_RANK = `CASE priority WHEN 'critical' THEN 0 WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END`;
16662
+ const PRIORITY_RANK2 = `CASE priority WHEN 'critical' THEN 0 WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END`;
16442
16663
  if (filter.cursor) {
16443
16664
  try {
16444
16665
  const decoded = JSON.parse(Buffer.from(filter.cursor, "base64").toString("utf8"));
16445
- conditions.push(`(${PRIORITY_RANK} > ? OR (${PRIORITY_RANK} = ? AND created_at < ?) OR (${PRIORITY_RANK} = ? AND created_at = ? AND id > ?))`);
16666
+ conditions.push(`(${PRIORITY_RANK2} > ? OR (${PRIORITY_RANK2} = ? AND created_at < ?) OR (${PRIORITY_RANK2} = ? AND created_at = ? AND id > ?))`);
16446
16667
  params.push(decoded.p, decoded.p, decoded.c, decoded.p, decoded.c, decoded.i);
16447
16668
  } catch {}
16448
16669
  }
@@ -16459,7 +16680,7 @@ function listTasks(filter = {}, db) {
16459
16680
  params.push(filter.offset);
16460
16681
  }
16461
16682
  }
16462
- const rows = d.query(`SELECT * FROM tasks ${where} ORDER BY ${PRIORITY_RANK}, created_at DESC, id ASC${limitClause}`).all(...params);
16683
+ const rows = d.query(`SELECT * FROM tasks ${where} ORDER BY ${PRIORITY_RANK2}, created_at DESC, id ASC${limitClause}`).all(...params);
16463
16684
  return rows.map(rowToTask);
16464
16685
  }
16465
16686
  function getTaskByFingerprint(fingerprint, db) {
@@ -29707,11 +29928,11 @@ function taskSummary(task, blockers) {
29707
29928
  const firstLine = task.description?.split(/\r?\n/).map((line) => line.trim()).find(Boolean);
29708
29929
  return firstLine || undefined;
29709
29930
  }
29710
- function priorityRank(priority) {
29931
+ function priorityRank2(priority) {
29711
29932
  return { critical: 0, high: 1, medium: 2, low: 3 }[priority];
29712
29933
  }
29713
29934
  function sortActionableTasks(a, b) {
29714
- const priority = priorityRank(a.priority) - priorityRank(b.priority);
29935
+ const priority = priorityRank2(a.priority) - priorityRank2(b.priority);
29715
29936
  if (priority !== 0)
29716
29937
  return priority;
29717
29938
  return b.updated_at.localeCompare(a.updated_at);
@@ -33043,14 +33264,15 @@ Use ${chalk5.cyan(`--agent ${result.id}`)} on future commands.`);
33043
33264
  });
33044
33265
  program2.command("agent <name>").description("Show all info about an agent: tasks, status, last seen, stats").option("-j, --json", "Output as JSON").action(async (name, opts) => {
33045
33266
  const globalOpts = program2.opts();
33267
+ const cloud = getTodosCloudClient();
33046
33268
  const { getAgentByName: findByName } = await Promise.resolve().then(() => (init_agents(), exports_agents));
33047
- const agent = findByName(name);
33269
+ const agent = cloud ? (await cloudListAgents(cloud)).find((a) => a.name === name || a.id === name) ?? null : findByName(name);
33048
33270
  if (!agent) {
33049
33271
  console.error(chalk5.red(`Agent not found: ${name}`));
33050
33272
  process.exit(1);
33051
33273
  }
33052
- const byAssigned = listTasks({ assigned_to: agent.name });
33053
- const byId = listTasks({ agent_id: agent.id });
33274
+ const byAssigned = cloud ? await cloudListTasks(cloud, { assigned_to: agent.name }) : listTasks({ assigned_to: agent.name });
33275
+ const byId = cloud ? await cloudListTasks(cloud, { agent_id: agent.id }) : listTasks({ agent_id: agent.id });
33054
33276
  const seen = new Set;
33055
33277
  const allTasks = [...byAssigned, ...byId].filter((t) => {
33056
33278
  if (seen.has(t.id))
@@ -33188,7 +33410,8 @@ ${isOnline ? chalk5.green("\u25CF") : chalk5.dim("\u25CB")} ${chalk5.bold(agent.
33188
33410
  console.log(chalk5.green("Task list deleted."));
33189
33411
  return;
33190
33412
  }
33191
- const lists = listTaskLists(projectId);
33413
+ const cloud = getTodosCloudClient();
33414
+ const lists = cloud ? await cloudListTaskLists(cloud, projectId ?? undefined) : listTaskLists(projectId);
33192
33415
  if (globalOpts.json) {
33193
33416
  output(lists, true);
33194
33417
  return;
@@ -38467,7 +38690,8 @@ function createPostgresTodosStorageAdapter(options) {
38467
38690
  dependencies: {
38468
38691
  add: (taskId, dependsOn, context) => addDependency2(taskId, dependsOn, store, context),
38469
38692
  remove: (taskId, dependsOn) => removeDependency2(taskId, dependsOn, store),
38470
- list: (taskId) => listDependencies(taskId, store)
38693
+ list: (taskId) => listDependencies(taskId, store),
38694
+ listAll: () => store.list("dependencies")
38471
38695
  },
38472
38696
  verifications: {
38473
38697
  add: (input, context) => addVerification(input, store, context),
@@ -40170,6 +40394,42 @@ async function handleV1Request(req, url) {
40170
40394
  return agent ? json2({ agent }) : error(404, "agent not found");
40171
40395
  }
40172
40396
  }
40397
+ if (resource === "activity" && !id) {
40398
+ if (method !== "GET")
40399
+ return error(405, `method ${method} not allowed on /v1/activity`);
40400
+ const limitParam = url.searchParams.get("limit");
40401
+ const limit = limitParam ? Math.max(1, Math.min(1e4, Number(limitParam) || 50)) : 50;
40402
+ const activity = await store.audit.getRecentActivity(limit);
40403
+ return json2({ activity, count: activity.length });
40404
+ }
40405
+ if (resource === "task-lists" && !id) {
40406
+ if (method !== "GET")
40407
+ return error(405, `method ${method} not allowed on /v1/task-lists`);
40408
+ const projectId = url.searchParams.get("project_id") ?? undefined;
40409
+ const taskLists = await store.taskLists.list(projectId);
40410
+ return json2({ task_lists: taskLists, count: taskLists.length });
40411
+ }
40412
+ if (resource === "dependencies" && !id) {
40413
+ if (method !== "GET")
40414
+ return error(405, `method ${method} not allowed on /v1/dependencies`);
40415
+ if (typeof store.dependencies?.listAll !== "function") {
40416
+ return error(501, "dependency edge listing is not supported by this storage backend");
40417
+ }
40418
+ const dependencies = await store.dependencies.listAll();
40419
+ return json2({ dependencies, count: dependencies.length });
40420
+ }
40421
+ if (resource === "next" && !id) {
40422
+ if (method !== "GET")
40423
+ return error(405, `method ${method} not allowed on /v1/next`);
40424
+ const agent = url.searchParams.get("agent") ?? undefined;
40425
+ const filters = {
40426
+ ...url.searchParams.get("project_id") ? { project_id: url.searchParams.get("project_id") } : {},
40427
+ ...url.searchParams.get("task_list_id") ? { task_list_id: url.searchParams.get("task_list_id") } : {},
40428
+ ...url.searchParams.get("plan_id") ? { plan_id: url.searchParams.get("plan_id") } : {}
40429
+ };
40430
+ const task = await store.tasks.getNext(agent, filters);
40431
+ return json2({ task: task ?? null });
40432
+ }
40173
40433
  if (resource === "stats" && method === "GET") {
40174
40434
  const [tasks, tasksAll, projects] = await Promise.all([
40175
40435
  store.tasks.count(),
@@ -68640,7 +68900,8 @@ function registerQueryCommands(program2) {
68640
68900
  if (pid)
68641
68901
  filters.project_id = pid;
68642
68902
  }
68643
- const task2 = getNextTask(opts.agent, Object.keys(filters).length ? filters : undefined, db);
68903
+ const cloud = getTodosCloudClient();
68904
+ const task2 = cloud ? await cloudNextTask(cloud, opts.agent, Object.keys(filters).length ? filters : undefined) : getNextTask(opts.agent, Object.keys(filters).length ? filters : undefined, db);
68644
68905
  if (!task2) {
68645
68906
  if (json3) {
68646
68907
  console.log(JSON.stringify(null));
@@ -68761,9 +69022,10 @@ Next up:`));
68761
69022
  console.log(` ${chalk7.cyan(t.short_id || t.id.slice(0, 8))} ${chalk7.yellow(t.priority)} ${t.title}`);
68762
69023
  }
68763
69024
  });
68764
- program2.command("recap").description("Show what happened in the last N hours \u2014 completed tasks, new tasks, agent activity, blockers").option("--hours <n>", "Look back N hours (default: 8)", "8").option("--project <id>", "Filter to project").action((opts) => {
69025
+ program2.command("recap").description("Show what happened in the last N hours \u2014 completed tasks, new tasks, agent activity, blockers").option("--hours <n>", "Look back N hours (default: 8)", "8").option("--project <id>", "Filter to project").action(async (opts) => {
68765
69026
  const globalOpts = program2.opts();
68766
- const recap = getRecap(parseInt(opts.hours, 10), opts.project);
69027
+ const cloud = getTodosCloudClient();
69028
+ const recap = cloud ? await cloudRecap(cloud, parseInt(opts.hours, 10), opts.project) : getRecap(parseInt(opts.hours, 10), opts.project);
68767
69029
  if (globalOpts.json) {
68768
69030
  output(recap, true);
68769
69031
  return;
@@ -68826,11 +69088,12 @@ Agents:`));
68826
69088
  }
68827
69089
  console.log();
68828
69090
  });
68829
- program2.command("standup").description("Generate standup notes \u2014 completed since yesterday, in progress, blocked. Grouped by agent.").option("--since <date>", "ISO date or 'yesterday' (default: yesterday)").option("--project <id>", "Filter to project").action((opts) => {
69091
+ program2.command("standup").description("Generate standup notes \u2014 completed since yesterday, in progress, blocked. Grouped by agent.").option("--since <date>", "ISO date or 'yesterday' (default: yesterday)").option("--project <id>", "Filter to project").action(async (opts) => {
68830
69092
  const globalOpts = program2.opts();
68831
69093
  const sinceDate = opts.since === "yesterday" || !opts.since ? new Date(Date.now() - 24 * 60 * 60 * 1000) : new Date(opts.since);
68832
69094
  const hours = Math.max(1, Math.round((Date.now() - sinceDate.getTime()) / (60 * 60 * 1000)));
68833
- const recap = getRecap(hours, opts.project);
69095
+ const cloud = getTodosCloudClient();
69096
+ const recap = cloud ? await cloudRecap(cloud, hours, opts.project) : getRecap(hours, opts.project);
68834
69097
  if (globalOpts.json) {
68835
69098
  output(recap, true);
68836
69099
  return;
@@ -68900,7 +69163,8 @@ Blocked:`));
68900
69163
  const filters = {};
68901
69164
  if (opts.project)
68902
69165
  filters.project_id = opts.project;
68903
- const work = getActiveWork(Object.keys(filters).length ? filters : undefined, db);
69166
+ const cloud = getTodosCloudClient();
69167
+ const work = cloud ? await cloudActiveWork(cloud, Object.keys(filters).length ? filters : {}) : getActiveWork(Object.keys(filters).length ? filters : undefined, db);
68904
69168
  if (json3) {
68905
69169
  console.log(JSON.stringify(work, null, 2));
68906
69170
  return;
@@ -68923,7 +69187,8 @@ Blocked:`));
68923
69187
  const filters = {};
68924
69188
  if (opts.project)
68925
69189
  filters.project_id = opts.project;
68926
- const tasks = getStaleTasks(parseInt(opts.minutes, 10), Object.keys(filters).length ? filters : undefined, db);
69190
+ const cloud = getTodosCloudClient();
69191
+ const tasks = cloud ? await cloudStaleTasks(cloud, parseInt(opts.minutes, 10), Object.keys(filters).length ? filters : {}) : getStaleTasks(parseInt(opts.minutes, 10), Object.keys(filters).length ? filters : undefined, db);
68927
69192
  if (json3) {
68928
69193
  console.log(JSON.stringify(tasks, null, 2));
68929
69194
  return;
@@ -69075,12 +69340,13 @@ No task claimed (nothing available).`));
69075
69340
  filter.project_id = projectId;
69076
69341
  if (opts.agent)
69077
69342
  filter.assigned_to = opts.agent;
69343
+ const cloud = getTodosCloudClient();
69078
69344
  const { getTasksChangedSince: getTasksChangedSince2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69079
- const changed = getTasksChangedSince2(since, Object.keys(filter).length ? filter : undefined, db);
69345
+ const changed = cloud ? await cloudChangedSince(cloud, since, filter) : getTasksChangedSince2(since, Object.keys(filter).length ? filter : undefined, db);
69080
69346
  const completed = changed.filter((t) => t.status === "completed");
69081
69347
  const inProgress = changed.filter((t) => t.status === "in_progress");
69082
69348
  const failed = changed.filter((t) => t.status === "failed");
69083
- const allTasks = listTasks({ ...filter, status: "pending" });
69349
+ const allTasks = cloud ? await cloudListTasks(cloud, { ...filter, status: "pending" }) : listTasks({ ...filter, status: "pending" });
69084
69350
  if (opts.json || globalOpts.json) {
69085
69351
  console.log(JSON.stringify({ completed, in_progress: inProgress, failed, pending: allTasks.length, period_days: days }, null, 2));
69086
69352
  return;
@@ -69347,12 +69613,13 @@ Findings`));
69347
69613
  const filter = {};
69348
69614
  if (projectId)
69349
69615
  filter.project_id = projectId;
69616
+ const cloud = getTodosCloudClient();
69350
69617
  const { getTasksChangedSince: getTasksChangedSince2, getTaskStats: getTaskStats2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69351
- const changed = getTasksChangedSince2(since, Object.keys(filter).length ? filter : undefined, db);
69618
+ const changed = cloud ? await cloudChangedSince(cloud, since, filter) : getTasksChangedSince2(since, Object.keys(filter).length ? filter : undefined, db);
69352
69619
  const completed = changed.filter((t) => t.status === "completed");
69353
69620
  const failed = changed.filter((t) => t.status === "failed");
69354
- const all = listTasks(filter);
69355
- const stats2 = getTaskStats2(Object.keys(filter).length ? filter : undefined, db);
69621
+ const all = cloud ? await cloudListTasks(cloud, filter) : listTasks(filter);
69622
+ const stats2 = cloud ? await cloudTaskStats(cloud, filter) : getTaskStats2(Object.keys(filter).length ? filter : undefined, db);
69356
69623
  const byDay = {};
69357
69624
  for (const t of changed) {
69358
69625
  const day = t.updated_at.slice(0, 10);
@@ -69406,10 +69673,11 @@ Findings`));
69406
69673
  program2.command("today").description("Show task activity from today").option("-j, --json", "Output as JSON").action(async (opts) => {
69407
69674
  const globalOpts = program2.opts();
69408
69675
  const db = getDatabase();
69676
+ const cloud = getTodosCloudClient();
69409
69677
  const { getTasksChangedSince: getTasksChangedSince2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69410
69678
  const start = new Date;
69411
69679
  start.setHours(0, 0, 0, 0);
69412
- const tasks = getTasksChangedSince2(start.toISOString(), undefined, db);
69680
+ const tasks = cloud ? await cloudChangedSince(cloud, start.toISOString()) : getTasksChangedSince2(start.toISOString(), undefined, db);
69413
69681
  const completed = tasks.filter((t) => t.status === "completed");
69414
69682
  const started = tasks.filter((t) => t.status === "in_progress");
69415
69683
  const other = tasks.filter((t) => t.status !== "completed" && t.status !== "in_progress");
@@ -69436,13 +69704,14 @@ Findings`));
69436
69704
  program2.command("yesterday").description("Show task activity from yesterday").option("-j, --json", "Output as JSON").action(async (opts) => {
69437
69705
  const globalOpts = program2.opts();
69438
69706
  const db = getDatabase();
69707
+ const cloud = getTodosCloudClient();
69439
69708
  const { getTasksChangedSince: getTasksChangedSince2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69440
69709
  const start = new Date;
69441
69710
  start.setDate(start.getDate() - 1);
69442
69711
  start.setHours(0, 0, 0, 0);
69443
69712
  const end = new Date(start);
69444
69713
  end.setHours(23, 59, 59, 999);
69445
- const allChanged = getTasksChangedSince2(start.toISOString(), undefined, db);
69714
+ const allChanged = cloud ? await cloudChangedSince(cloud, start.toISOString()) : getTasksChangedSince2(start.toISOString(), undefined, db);
69446
69715
  const tasks = allChanged.filter((t) => t.updated_at <= end.toISOString());
69447
69716
  const completed = tasks.filter((t) => t.status === "completed");
69448
69717
  const started = tasks.filter((t) => t.status === "in_progress");
@@ -69470,14 +69739,15 @@ Findings`));
69470
69739
  const globalOpts = program2.opts();
69471
69740
  const db = getDatabase();
69472
69741
  const projectId = globalOpts.project ? autoProject(globalOpts) || undefined : undefined;
69742
+ const cloud = getTodosCloudClient();
69473
69743
  const filter = { assigned_to: agent };
69474
69744
  if (projectId)
69475
69745
  filter.project_id = projectId;
69476
- const tasks = listTasks(filter, db);
69746
+ const tasks = cloud ? await cloudListTasks(cloud, filter) : listTasks(filter, db);
69477
69747
  const filterByAgent = { agent_id: agent };
69478
69748
  if (projectId)
69479
69749
  filterByAgent.project_id = projectId;
69480
- const agentTasks = listTasks(filterByAgent, db);
69750
+ const agentTasks = cloud ? await cloudListTasks(cloud, filterByAgent) : listTasks(filterByAgent, db);
69481
69751
  const seen = new Set(tasks.map((t) => t.id));
69482
69752
  for (const t of agentTasks) {
69483
69753
  if (!seen.has(t.id)) {
@@ -69519,17 +69789,27 @@ Findings`));
69519
69789
  program2.command("blocked").description("Show tasks blocked by incomplete dependencies").option("-j, --json", "Output as JSON").option("--project <id>", "Filter to project").action(async (opts) => {
69520
69790
  const globalOpts = program2.opts();
69521
69791
  const db = getDatabase();
69522
- const { getBlockingDeps: getBlockingDeps2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69792
+ const cloud = getTodosCloudClient();
69523
69793
  const projectId = autoProject(globalOpts) || opts.project || undefined;
69524
69794
  const filter = { status: "pending" };
69525
69795
  if (projectId)
69526
69796
  filter.project_id = projectId;
69527
- const allPending = listTasks(filter, db);
69797
+ const allPending = cloud ? await cloudListTasks(cloud, filter) : listTasks(filter, db);
69528
69798
  const blockedTasks = [];
69529
- for (const t of allPending) {
69530
- const blockers = getBlockingDeps2(t.id, db);
69531
- if (blockers.length > 0)
69532
- blockedTasks.push({ task: t, blockers });
69799
+ if (cloud) {
69800
+ const map = await cloudBlockingDepsMap(cloud, allPending);
69801
+ for (const t of allPending) {
69802
+ const blockers = map.get(t.id);
69803
+ if (blockers && blockers.length > 0)
69804
+ blockedTasks.push({ task: t, blockers });
69805
+ }
69806
+ } else {
69807
+ const { getBlockingDeps: getBlockingDeps2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69808
+ for (const t of allPending) {
69809
+ const blockers = getBlockingDeps2(t.id, db);
69810
+ if (blockers.length > 0)
69811
+ blockedTasks.push({ task: t, blockers });
69812
+ }
69533
69813
  }
69534
69814
  if (opts.json || globalOpts.json) {
69535
69815
  console.log(JSON.stringify(blockedTasks.map((b) => ({ ...b.task, blocked_by: b.blockers.map((bl) => ({ id: bl.id, short_id: bl.short_id, title: bl.title, status: bl.status })) }))));
@@ -69551,8 +69831,9 @@ Findings`));
69551
69831
  program2.command("overdue").description("Show tasks past their due date").option("-j, --json", "Output as JSON").option("--project <id>", "Filter to project").action(async (opts) => {
69552
69832
  const globalOpts = program2.opts();
69553
69833
  const projectId = autoProject(globalOpts) || opts.project || undefined;
69834
+ const cloud = getTodosCloudClient();
69554
69835
  const { getOverdueTasks: getOverdueTasks2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69555
- const tasks = getOverdueTasks2(projectId);
69836
+ const tasks = cloud ? await cloudOverdueTasks(cloud, projectId) : getOverdueTasks2(projectId);
69556
69837
  if (opts.json || globalOpts.json) {
69557
69838
  console.log(JSON.stringify(tasks));
69558
69839
  return;
@@ -69573,10 +69854,8 @@ Findings`));
69573
69854
  program2.command("sla").description("Show overdue or SLA-breached tasks that need escalation").option("-j, --json", "Output as JSON").option("--project <id>", "Filter to project").option("--agent <id>", "Filter to assigned agent").option("--limit <n>", "Max tasks to show", "50").action(async (opts) => {
69574
69855
  const globalOpts = program2.opts();
69575
69856
  const projectId = autoProject(globalOpts) || opts.project || undefined;
69576
- const escalations = getEscalatedTasks({
69577
- project_id: projectId,
69578
- agent_id: opts.agent
69579
- }).slice(0, parseInt(opts.limit, 10));
69857
+ const cloud = getTodosCloudClient();
69858
+ const escalations = (cloud ? await cloudEscalatedTasks(cloud, { project_id: projectId, agent_id: opts.agent }) : getEscalatedTasks({ project_id: projectId, agent_id: opts.agent })).slice(0, parseInt(opts.limit, 10));
69580
69859
  if (opts.json || globalOpts.json) {
69581
69860
  console.log(JSON.stringify(escalations));
69582
69861
  return;
@@ -69596,12 +69875,13 @@ Findings`));
69596
69875
  program2.command("week").description("Show task activity from the past 7 days").option("-j, --json", "Output as JSON").action(async (opts) => {
69597
69876
  const globalOpts = program2.opts();
69598
69877
  const db = getDatabase();
69878
+ const cloud = getTodosCloudClient();
69599
69879
  const { getTasksChangedSince: getTasksChangedSince2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
69600
69880
  const now4 = new Date;
69601
69881
  const start = new Date(now4);
69602
69882
  start.setDate(start.getDate() - 7);
69603
69883
  start.setHours(0, 0, 0, 0);
69604
- const tasks = getTasksChangedSince2(start.toISOString(), undefined, db);
69884
+ const tasks = cloud ? await cloudChangedSince(cloud, start.toISOString()) : getTasksChangedSince2(start.toISOString(), undefined, db);
69605
69885
  const days = {};
69606
69886
  for (let i = 0;i < 7; i++) {
69607
69887
  const d = new Date(now4);
@@ -69649,9 +69929,10 @@ Findings`));
69649
69929
  program2.command("burndown").description("Show task completion velocity over the past 7 days").option("--days <n>", "Number of days", "7").option("-j, --json", "Output as JSON").action(async (opts) => {
69650
69930
  const globalOpts = program2.opts();
69651
69931
  const db = getDatabase();
69932
+ const cloud = getTodosCloudClient();
69652
69933
  const { getRecentActivity: getRecentActivity2 } = await Promise.resolve().then(() => (init_audit(), exports_audit));
69653
69934
  const numDays = parseInt(opts.days, 10);
69654
- const entries = getRecentActivity2(5000, db);
69935
+ const entries = cloud ? await cloudRecentActivity(cloud, 5000) : getRecentActivity2(5000, db);
69655
69936
  const now4 = new Date;
69656
69937
  const dayStats = [];
69657
69938
  for (let i = numDays - 1;i >= 0; i--) {
@@ -69691,8 +69972,9 @@ Findings`));
69691
69972
  program2.command("log").description("Show recent task activity log (git-log style)").option("--limit <n>", "Number of entries", "30").option("-j, --json", "Output as JSON").action(async (opts) => {
69692
69973
  const globalOpts = program2.opts();
69693
69974
  const db = getDatabase();
69975
+ const cloud = getTodosCloudClient();
69694
69976
  const { getRecentActivity: getRecentActivity2 } = await Promise.resolve().then(() => (init_audit(), exports_audit));
69695
- const entries = getRecentActivity2(parseInt(opts.limit, 10), db);
69977
+ const entries = cloud ? await cloudRecentActivity(cloud, parseInt(opts.limit, 10)) : getRecentActivity2(parseInt(opts.limit, 10), db);
69696
69978
  if (opts.json || globalOpts.json) {
69697
69979
  console.log(JSON.stringify(entries));
69698
69980
  return;
@@ -69735,6 +70017,39 @@ Findings`));
69735
70017
  program2.command("timeline").description("Show a unified local activity timeline for tasks, projects, plans, or runs").option("--task <id>", "Filter to a task").option("--project <id>", "Filter to a project").option("--plan <id>", "Filter to a plan").option("--run <id>", "Filter to a run ledger").option("--since <iso>", "Only include entries at or after this ISO timestamp").option("--until <iso>", "Only include entries at or before this ISO timestamp").option("--limit <n>", "Number of entries", "50").option("--offset <n>", "Entries to skip", "0").option("--order <order>", "Sort order: asc or desc", "desc").option("-j, --json", "Output as JSON").action(async (opts) => {
69736
70018
  const globalOpts = program2.opts();
69737
70019
  const db = getDatabase();
70020
+ const cloud = getTodosCloudClient();
70021
+ if (cloud) {
70022
+ const cloudOptions = {
70023
+ since: opts.since,
70024
+ until: opts.until,
70025
+ limit: parseInt(opts.limit, 10),
70026
+ offset: parseInt(opts.offset, 10),
70027
+ order: opts.order === "asc" ? "asc" : "desc",
70028
+ ...opts.task ? { entity_type: "task", entity_id: opts.task } : {},
70029
+ ...opts.project ? { entity_type: "project", entity_id: opts.project } : {},
70030
+ ...opts.plan ? { entity_type: "plan", entity_id: opts.plan } : {},
70031
+ ...opts.run ? { entity_type: "run", entity_id: opts.run } : {}
70032
+ };
70033
+ const timeline2 = await cloudTimeline(cloud, cloudOptions);
70034
+ if (opts.json || globalOpts.json) {
70035
+ console.log(JSON.stringify(timeline2, null, 2));
70036
+ return;
70037
+ }
70038
+ if (timeline2.entries.length === 0) {
70039
+ console.log(chalk7.dim(" No activity yet."));
70040
+ return;
70041
+ }
70042
+ console.log(chalk7.bold(`Activity timeline (${timeline2.total}${timeline2.total > timeline2.entries.length ? `, showing ${timeline2.entries.length}` : ""}):
70043
+ `));
70044
+ for (const entry2 of timeline2.entries) {
70045
+ const time2 = entry2.created_at.replace("T", " ").slice(0, 16);
70046
+ const ref = entry2.run_id ? `run ${entry2.run_id.slice(0, 8)}` : `task ${entry2.task_id.slice(0, 8)}`;
70047
+ const agent = entry2.agent_id ? chalk7.dim(` (${entry2.agent_id})`) : "";
70048
+ const message = entry2.message ? ` ${entry2.message}` : "";
70049
+ console.log(` ${chalk7.dim(time2)} ${chalk7.cyan(entry2.source)} ${chalk7.dim(ref)} ${entry2.event_type}${message}${agent}`);
70050
+ }
70051
+ return;
70052
+ }
69738
70053
  const { getLocalActivityTimeline: getLocalActivityTimeline2 } = await Promise.resolve().then(() => (init_activity_timeline(), exports_activity_timeline));
69739
70054
  const { resolveTaskRunId: resolveTaskRunId2 } = await Promise.resolve().then(() => (init_task_runs(), exports_task_runs));
69740
70055
  const options = {
@@ -69819,21 +70134,35 @@ Findings`));
69819
70134
  return;
69820
70135
  }
69821
70136
  const db = getDatabase();
69822
- const { getBlockingDeps: getBlockingDeps2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
70137
+ const cloud = getTodosCloudClient();
69823
70138
  const { isLockExpired: isLockExpired2 } = await Promise.resolve().then(() => (init_database(), exports_database));
69824
70139
  const projectId = autoProject(globalOpts) || opts.project || undefined;
69825
70140
  const filter = { status: "pending" };
69826
70141
  if (projectId)
69827
70142
  filter.project_id = projectId;
69828
- const pending = listTasks(filter, db);
69829
- const ready = pending.filter((t) => {
69830
- if (t.locked_by && !isLockExpired2(t.locked_at))
69831
- return false;
69832
- const blockers = getBlockingDeps2(t.id, db);
69833
- return blockers.length === 0;
69834
- });
70143
+ const pending = cloud ? await cloudListTasks(cloud, filter) : listTasks(filter, db);
70144
+ let ready;
70145
+ if (cloud) {
70146
+ const map = await cloudBlockingDepsMap(cloud, pending);
70147
+ ready = pending.filter((t) => {
70148
+ if (t.locked_by && !isLockExpired2(t.locked_at))
70149
+ return false;
70150
+ return !map.has(t.id);
70151
+ });
70152
+ } else {
70153
+ const { getBlockingDeps: getBlockingDeps2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
70154
+ ready = pending.filter((t) => {
70155
+ if (t.locked_by && !isLockExpired2(t.locked_at))
70156
+ return false;
70157
+ return getBlockingDeps2(t.id, db).length === 0;
70158
+ });
70159
+ }
69835
70160
  const limited2 = ready.slice(0, parseInt(opts.limit, 10));
69836
70161
  if (opts.json || globalOpts.json) {
70162
+ if (cloud) {
70163
+ console.log(JSON.stringify(limited2));
70164
+ return;
70165
+ }
69837
70166
  const { getTaskRouteState: getTaskRouteState2 } = await Promise.resolve().then(() => (init_task_routing(), exports_task_routing));
69838
70167
  console.log(JSON.stringify(limited2.map((task2) => ({ ...task2, route_state: getTaskRouteState2(task2, db) }))));
69839
70168
  return;
@@ -69853,19 +70182,29 @@ Findings`));
69853
70182
  program2.command("sprint").description("Sprint dashboard: in-progress, next up, blockers, and overdue").option("-j, --json", "Output as JSON").option("--project <id>", "Filter to project").action(async (opts) => {
69854
70183
  const globalOpts = program2.opts();
69855
70184
  const db = getDatabase();
69856
- const { getBlockingDeps: getBlockingDeps2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
70185
+ const cloud = getTodosCloudClient();
69857
70186
  const projectId = autoProject(globalOpts) || opts.project || undefined;
69858
70187
  const baseFilter = {};
69859
70188
  if (projectId)
69860
70189
  baseFilter.project_id = projectId;
69861
- const inProgress = listTasks({ ...baseFilter, status: "in_progress" }, db);
69862
- const pending = listTasks({ ...baseFilter, status: "pending" }, db);
70190
+ const inProgress = cloud ? await cloudListTasks(cloud, { ...baseFilter, status: "in_progress" }) : listTasks({ ...baseFilter, status: "in_progress" }, db);
70191
+ const pending = cloud ? await cloudListTasks(cloud, { ...baseFilter, status: "pending" }) : listTasks({ ...baseFilter, status: "pending" }, db);
69863
70192
  const nowStr = new Date().toISOString();
69864
70193
  const blocked = [];
69865
- for (const t of pending) {
69866
- const blockers = getBlockingDeps2(t.id, db);
69867
- if (blockers.length > 0)
69868
- blocked.push({ task: t, blockers });
70194
+ if (cloud) {
70195
+ const map = await cloudBlockingDepsMap(cloud, pending);
70196
+ for (const t of pending) {
70197
+ const blockers = map.get(t.id);
70198
+ if (blockers && blockers.length > 0)
70199
+ blocked.push({ task: t, blockers });
70200
+ }
70201
+ } else {
70202
+ const { getBlockingDeps: getBlockingDeps2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
70203
+ for (const t of pending) {
70204
+ const blockers = getBlockingDeps2(t.id, db);
70205
+ if (blockers.length > 0)
70206
+ blocked.push({ task: t, blockers });
70207
+ }
69869
70208
  }
69870
70209
  const overdue = [...inProgress, ...pending].filter((t) => t.due_at && t.due_at < nowStr);
69871
70210
  const blockedIds = new Set(blocked.map((b) => b.task.id));
@@ -70096,17 +70435,20 @@ Findings`));
70096
70435
  program2.command("priorities").description("Show task counts grouped by priority").option("-j, --json", "Output as JSON").option("--project <id>", "Filter to project").action(async (opts) => {
70097
70436
  const globalOpts = program2.opts();
70098
70437
  const db = getDatabase();
70438
+ const cloud = getTodosCloudClient();
70099
70439
  const { countTasks: countTasks2 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
70440
+ const countFn = cloud ? (f) => cloudCountTasks(cloud, f) : (f) => Promise.resolve(countTasks2(f, db));
70100
70441
  const projectId = autoProject(globalOpts) || opts.project || undefined;
70101
70442
  const base = projectId ? { project_id: projectId } : {};
70102
70443
  const priorities = ["critical", "high", "medium", "low", "none"];
70103
70444
  const counts = {};
70104
70445
  for (const p of priorities) {
70446
+ const base2 = { ...base, priority: p === "none" ? undefined : p };
70105
70447
  counts[p] = {
70106
- total: countTasks2({ ...base, priority: p === "none" ? undefined : p }, db),
70107
- pending: countTasks2({ ...base, priority: p === "none" ? undefined : p, status: "pending" }, db),
70108
- in_progress: countTasks2({ ...base, priority: p === "none" ? undefined : p, status: "in_progress" }, db),
70109
- completed: countTasks2({ ...base, priority: p === "none" ? undefined : p, status: "completed" }, db)
70448
+ total: await countFn(base2),
70449
+ pending: await countFn({ ...base2, status: "pending" }),
70450
+ in_progress: await countFn({ ...base2, status: "in_progress" }),
70451
+ completed: await countFn({ ...base2, status: "completed" })
70110
70452
  };
70111
70453
  }
70112
70454
  if (opts.json || globalOpts.json) {
package/dist/index.js CHANGED
@@ -23532,7 +23532,8 @@ function createPostgresTodosStorageAdapter(options) {
23532
23532
  dependencies: {
23533
23533
  add: (taskId, dependsOn, context) => addDependency2(taskId, dependsOn, store, context),
23534
23534
  remove: (taskId, dependsOn) => removeDependency2(taskId, dependsOn, store),
23535
- list: (taskId) => listDependencies(taskId, store)
23535
+ list: (taskId) => listDependencies(taskId, store),
23536
+ listAll: () => store.list("dependencies")
23536
23537
  },
23537
23538
  verifications: {
23538
23539
  add: (input, context) => addVerification(input, store, context),
package/dist/mcp/index.js CHANGED
@@ -48135,7 +48135,8 @@ function createPostgresTodosStorageAdapter(options) {
48135
48135
  dependencies: {
48136
48136
  add: (taskId, dependsOn, context) => addDependency2(taskId, dependsOn, store, context),
48137
48137
  remove: (taskId, dependsOn) => removeDependency2(taskId, dependsOn, store),
48138
- list: (taskId) => listDependencies(taskId, store)
48138
+ list: (taskId) => listDependencies(taskId, store),
48139
+ listAll: () => store.list("dependencies")
48139
48140
  },
48140
48141
  verifications: {
48141
48142
  add: (input, context) => addVerification(input, store, context),
@@ -49838,6 +49839,42 @@ async function handleV1Request(req, url) {
49838
49839
  return agent ? json2({ agent }) : error(404, "agent not found");
49839
49840
  }
49840
49841
  }
49842
+ if (resource === "activity" && !id) {
49843
+ if (method !== "GET")
49844
+ return error(405, `method ${method} not allowed on /v1/activity`);
49845
+ const limitParam = url.searchParams.get("limit");
49846
+ const limit = limitParam ? Math.max(1, Math.min(1e4, Number(limitParam) || 50)) : 50;
49847
+ const activity = await store.audit.getRecentActivity(limit);
49848
+ return json2({ activity, count: activity.length });
49849
+ }
49850
+ if (resource === "task-lists" && !id) {
49851
+ if (method !== "GET")
49852
+ return error(405, `method ${method} not allowed on /v1/task-lists`);
49853
+ const projectId = url.searchParams.get("project_id") ?? undefined;
49854
+ const taskLists = await store.taskLists.list(projectId);
49855
+ return json2({ task_lists: taskLists, count: taskLists.length });
49856
+ }
49857
+ if (resource === "dependencies" && !id) {
49858
+ if (method !== "GET")
49859
+ return error(405, `method ${method} not allowed on /v1/dependencies`);
49860
+ if (typeof store.dependencies?.listAll !== "function") {
49861
+ return error(501, "dependency edge listing is not supported by this storage backend");
49862
+ }
49863
+ const dependencies = await store.dependencies.listAll();
49864
+ return json2({ dependencies, count: dependencies.length });
49865
+ }
49866
+ if (resource === "next" && !id) {
49867
+ if (method !== "GET")
49868
+ return error(405, `method ${method} not allowed on /v1/next`);
49869
+ const agent = url.searchParams.get("agent") ?? undefined;
49870
+ const filters = {
49871
+ ...url.searchParams.get("project_id") ? { project_id: url.searchParams.get("project_id") } : {},
49872
+ ...url.searchParams.get("task_list_id") ? { task_list_id: url.searchParams.get("task_list_id") } : {},
49873
+ ...url.searchParams.get("plan_id") ? { plan_id: url.searchParams.get("plan_id") } : {}
49874
+ };
49875
+ const task2 = await store.tasks.getNext(agent, filters);
49876
+ return json2({ task: task2 ?? null });
49877
+ }
49841
49878
  if (resource === "stats" && method === "GET") {
49842
49879
  const [tasks, tasksAll, projects] = await Promise.all([
49843
49880
  store.tasks.count(),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "packageName": "@hasna/todos",
3
- "packageVersion": "0.11.83",
3
+ "packageVersion": "0.11.84",
4
4
  "repository": "https://github.com/hasna/todos.git",
5
- "gitCommit": "69a46e4c566599f0e473686aa6c49aa6df6be20d",
6
- "generatedAt": "2026-07-08T14:22:35.687Z"
5
+ "gitCommit": "f7fcea3d57bf87853fcc48b009019733b2206ca7",
6
+ "generatedAt": "2026-07-08T15:23:54.541Z"
7
7
  }
@@ -950,7 +950,8 @@ function createPostgresTodosStorageAdapter(options) {
950
950
  dependencies: {
951
951
  add: (taskId, dependsOn, context) => addDependency(taskId, dependsOn, store, context),
952
952
  remove: (taskId, dependsOn) => removeDependency(taskId, dependsOn, store),
953
- list: (taskId) => listDependencies(taskId, store)
953
+ list: (taskId) => listDependencies(taskId, store),
954
+ listAll: () => store.list("dependencies")
954
955
  },
955
956
  verifications: {
956
957
  add: (input, context) => addVerification(input, store, context),
@@ -15952,6 +15953,42 @@ async function handleV1Request(req, url) {
15952
15953
  return agent ? json2({ agent }) : error(404, "agent not found");
15953
15954
  }
15954
15955
  }
15956
+ if (resource === "activity" && !id) {
15957
+ if (method !== "GET")
15958
+ return error(405, `method ${method} not allowed on /v1/activity`);
15959
+ const limitParam = url.searchParams.get("limit");
15960
+ const limit = limitParam ? Math.max(1, Math.min(1e4, Number(limitParam) || 50)) : 50;
15961
+ const activity = await store.audit.getRecentActivity(limit);
15962
+ return json2({ activity, count: activity.length });
15963
+ }
15964
+ if (resource === "task-lists" && !id) {
15965
+ if (method !== "GET")
15966
+ return error(405, `method ${method} not allowed on /v1/task-lists`);
15967
+ const projectId = url.searchParams.get("project_id") ?? undefined;
15968
+ const taskLists = await store.taskLists.list(projectId);
15969
+ return json2({ task_lists: taskLists, count: taskLists.length });
15970
+ }
15971
+ if (resource === "dependencies" && !id) {
15972
+ if (method !== "GET")
15973
+ return error(405, `method ${method} not allowed on /v1/dependencies`);
15974
+ if (typeof store.dependencies?.listAll !== "function") {
15975
+ return error(501, "dependency edge listing is not supported by this storage backend");
15976
+ }
15977
+ const dependencies = await store.dependencies.listAll();
15978
+ return json2({ dependencies, count: dependencies.length });
15979
+ }
15980
+ if (resource === "next" && !id) {
15981
+ if (method !== "GET")
15982
+ return error(405, `method ${method} not allowed on /v1/next`);
15983
+ const agent = url.searchParams.get("agent") ?? undefined;
15984
+ const filters = {
15985
+ ...url.searchParams.get("project_id") ? { project_id: url.searchParams.get("project_id") } : {},
15986
+ ...url.searchParams.get("task_list_id") ? { task_list_id: url.searchParams.get("task_list_id") } : {},
15987
+ ...url.searchParams.get("plan_id") ? { plan_id: url.searchParams.get("plan_id") } : {}
15988
+ };
15989
+ const task = await store.tasks.getNext(agent, filters);
15990
+ return json2({ task: task ?? null });
15991
+ }
15955
15992
  if (resource === "stats" && method === "GET") {
15956
15993
  const [tasks, tasksAll, projects] = await Promise.all([
15957
15994
  store.tasks.count(),
@@ -1 +1 @@
1
- {"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../src/server/v1.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA4B1F;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAgB1E;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAYpE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6XtF"}
1
+ {"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../src/server/v1.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA4B1F;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAgB1E;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAYpE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6atF"}
@@ -52,6 +52,12 @@ export interface TodosDependencyStore {
52
52
  add(taskId: string, dependsOn: string, context?: TodosStorageContext): MaybePromise<TaskDependency>;
53
53
  remove(taskId: string, dependsOn: string, context?: TodosStorageContext): MaybePromise<boolean>;
54
54
  list(taskId: string, context?: TodosStorageContext): MaybePromise<TodosTaskDependencies>;
55
+ /**
56
+ * Every dependency edge in the dataset. Optional — present on the Postgres
57
+ * (self_hosted) adapter so the CLI can derive blocked/ready/sprint/recap
58
+ * dependency analytics over the shared cloud set in one round trip.
59
+ */
60
+ listAll?(context?: TodosStorageContext): MaybePromise<TaskDependency[]>;
55
61
  }
56
62
  export interface TodosTaskVerification {
57
63
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/storage/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/storage/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/postgres-adapter.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAMV,mBAAmB,EAYpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,KAAK,wBAAwB,EAE9B,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,wCAAwC;IACvD,MAAM,EAAE,wBAAwB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuBD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,wCAAwC,GAChD,mBAAmB,CA2GrB"}
1
+ {"version":3,"file":"postgres-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/postgres-adapter.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAMV,mBAAmB,EAYpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,KAAK,wBAAwB,EAE9B,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,wCAAwC;IACvD,MAAM,EAAE,wBAAwB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuBD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,wCAAwC,GAChD,mBAAmB,CA4GrB"}
package/dist/storage.js CHANGED
@@ -11914,7 +11914,8 @@ function createPostgresTodosStorageAdapter(options) {
11914
11914
  dependencies: {
11915
11915
  add: (taskId, dependsOn, context) => addDependency2(taskId, dependsOn, store, context),
11916
11916
  remove: (taskId, dependsOn) => removeDependency2(taskId, dependsOn, store),
11917
- list: (taskId) => listDependencies(taskId, store)
11917
+ list: (taskId) => listDependencies(taskId, store),
11918
+ listAll: () => store.list("dependencies")
11918
11919
  },
11919
11920
  verifications: {
11920
11921
  add: (input, context) => addVerification(input, store, context),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/todos",
3
- "version": "0.11.83",
3
+ "version": "0.11.84",
4
4
  "description": "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",