@hasna/todos 0.9.54 → 0.9.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +80 -2
- package/dist/index.js +41 -0
- package/dist/sdk.d.ts +29 -0
- package/dist/sdk.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -13262,7 +13262,7 @@ program2.command("add <title>").description("Create a new task").option("-d, --d
|
|
|
13262
13262
|
console.log(formatTaskLine(task));
|
|
13263
13263
|
}
|
|
13264
13264
|
});
|
|
13265
|
-
program2.command("list").description("List tasks").option("-s, --status <status>", "Filter by status").option("-p, --priority <priority>", "Filter by priority").option("--assigned <agent>", "Filter by assigned agent").option("--tags <tags>", "Filter by tags (comma-separated)").option("--tag <tags>", "Filter by tags (alias for --tags)").option("-a, --all", "Show all tasks (including completed/cancelled)").option("--list <id>", "Filter by task list ID").option("--task-list <id>", "Filter by task list ID (alias for --list)").option("--project-name <name>", "Filter by project name").option("--agent-name <name>", "Filter by agent name/assigned").option("--sort <field>", "Sort by: updated, created, priority, status").option("--format <fmt>", "Output format: table (default), compact, csv, json").action((opts) => {
|
|
13265
|
+
program2.command("list").description("List tasks").option("-s, --status <status>", "Filter by status").option("-p, --priority <priority>", "Filter by priority").option("--assigned <agent>", "Filter by assigned agent").option("--tags <tags>", "Filter by tags (comma-separated)").option("--tag <tags>", "Filter by tags (alias for --tags)").option("-a, --all", "Show all tasks (including completed/cancelled)").option("--list <id>", "Filter by task list ID").option("--task-list <id>", "Filter by task list ID (alias for --list)").option("--project-name <name>", "Filter by project name").option("--agent-name <name>", "Filter by agent name/assigned").option("--sort <field>", "Sort by: updated, created, priority, status").option("--format <fmt>", "Output format: table (default), compact, csv, json").option("--due-today", "Only tasks due today or earlier").option("--overdue", "Only overdue tasks (past due_at)").option("--recurring", "Only recurring tasks").option("--limit <n>", "Max tasks to return").action((opts) => {
|
|
13266
13266
|
const globalOpts = program2.opts();
|
|
13267
13267
|
opts.tags = opts.tags || opts.tag;
|
|
13268
13268
|
opts.list = opts.list || opts.taskList;
|
|
@@ -13303,7 +13303,20 @@ program2.command("list").description("List tasks").option("-s, --status <status>
|
|
|
13303
13303
|
if (opts.agentName) {
|
|
13304
13304
|
filter["assigned_to"] = opts.agentName;
|
|
13305
13305
|
}
|
|
13306
|
-
|
|
13306
|
+
if (opts.recurring)
|
|
13307
|
+
filter["has_recurrence"] = true;
|
|
13308
|
+
if (opts.limit)
|
|
13309
|
+
filter["limit"] = parseInt(opts.limit, 10);
|
|
13310
|
+
let tasks = listTasks(filter);
|
|
13311
|
+
if (opts.dueToday) {
|
|
13312
|
+
const todayEnd = new Date;
|
|
13313
|
+
todayEnd.setHours(23, 59, 59, 999);
|
|
13314
|
+
tasks = tasks.filter((t) => t.due_at && t.due_at <= todayEnd.toISOString());
|
|
13315
|
+
}
|
|
13316
|
+
if (opts.overdue) {
|
|
13317
|
+
const now2 = new Date().toISOString();
|
|
13318
|
+
tasks = tasks.filter((t) => t.due_at && t.due_at < now2 && t.status !== "completed");
|
|
13319
|
+
}
|
|
13307
13320
|
if (opts.sort) {
|
|
13308
13321
|
const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
|
|
13309
13322
|
tasks.sort((a, b) => {
|
|
@@ -14908,6 +14921,71 @@ program2.command("summary").description("Generate a markdown summary of recent t
|
|
|
14908
14921
|
console.log(lines.join(`
|
|
14909
14922
|
`));
|
|
14910
14923
|
});
|
|
14924
|
+
program2.command("report").description("Analytics report: task activity, completion rates, agent breakdown").option("--days <n>", "Days to include in report", "7").option("--project <id>", "Filter to project").option("--markdown", "Output as markdown").option("--json", "Output as JSON").action(async (opts) => {
|
|
14925
|
+
const globalOpts = program2.opts();
|
|
14926
|
+
const db = getDatabase();
|
|
14927
|
+
const days = parseInt(opts.days, 10);
|
|
14928
|
+
const since = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
|
|
14929
|
+
const projectId = opts.project || autoProject(globalOpts);
|
|
14930
|
+
const filter = {};
|
|
14931
|
+
if (projectId)
|
|
14932
|
+
filter.project_id = projectId;
|
|
14933
|
+
const { getTasksChangedSince: getTasksChangedSince2, getTaskStats: getTaskStats2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
14934
|
+
const changed = getTasksChangedSince2(since, Object.keys(filter).length ? filter : undefined, db);
|
|
14935
|
+
const completed = changed.filter((t) => t.status === "completed");
|
|
14936
|
+
const failed = changed.filter((t) => t.status === "failed");
|
|
14937
|
+
const all = listTasks(filter);
|
|
14938
|
+
const stats = getTaskStats2(Object.keys(filter).length ? filter : undefined, db);
|
|
14939
|
+
const byDay = {};
|
|
14940
|
+
for (const t of changed) {
|
|
14941
|
+
const day = t.updated_at.slice(0, 10);
|
|
14942
|
+
byDay[day] = (byDay[day] || 0) + 1;
|
|
14943
|
+
}
|
|
14944
|
+
const dayValues = Object.values(byDay);
|
|
14945
|
+
const maxDay = Math.max(...dayValues, 1);
|
|
14946
|
+
const sparkline = dayValues.map((v) => "\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588"[Math.min(7, Math.floor(v / maxDay * 7))] || "\u2581").join("");
|
|
14947
|
+
const byAgent = {};
|
|
14948
|
+
for (const t of completed) {
|
|
14949
|
+
const agent = t.assigned_to || "unassigned";
|
|
14950
|
+
byAgent[agent] = (byAgent[agent] || 0) + 1;
|
|
14951
|
+
}
|
|
14952
|
+
const completionRate = changed.length > 0 ? Math.round(completed.length / changed.length * 100) : 0;
|
|
14953
|
+
if (opts.json || globalOpts.json) {
|
|
14954
|
+
console.log(JSON.stringify({ days, period_since: since, changed: changed.length, completed: completed.length, failed: failed.length, completion_rate: completionRate, total: all.length, stats, by_agent: byAgent, by_day: byDay }, null, 2));
|
|
14955
|
+
return;
|
|
14956
|
+
}
|
|
14957
|
+
const lines = [];
|
|
14958
|
+
if (opts.markdown) {
|
|
14959
|
+
lines.push(`## Todos Report \u2014 last ${days} days`);
|
|
14960
|
+
lines.push(`*${new Date().toLocaleDateString()}*
|
|
14961
|
+
`);
|
|
14962
|
+
lines.push(`| Metric | Value |`);
|
|
14963
|
+
lines.push(`|--------|-------|`);
|
|
14964
|
+
lines.push(`| Active tasks | ${all.length} total (${stats.pending} pending, ${stats.in_progress} active) |`);
|
|
14965
|
+
lines.push(`| Changed (${days}d) | ${changed.length} tasks |`);
|
|
14966
|
+
lines.push(`| Completed (${days}d) | ${completed.length} (${completionRate}% rate) |`);
|
|
14967
|
+
lines.push(`| Failed (${days}d) | ${failed.length} |`);
|
|
14968
|
+
if (sparkline)
|
|
14969
|
+
lines.push(`| Activity | \`${sparkline}\` |`);
|
|
14970
|
+
} else {
|
|
14971
|
+
lines.push(chalk.bold(`todos report \u2014 last ${days} day${days !== 1 ? "s" : ""}`));
|
|
14972
|
+
lines.push("");
|
|
14973
|
+
lines.push(` Total: ${chalk.bold(String(all.length))} tasks (${chalk.yellow(String(stats.pending))} pending, ${chalk.blue(String(stats.in_progress))} active)`);
|
|
14974
|
+
lines.push(` Changed: ${chalk.bold(String(changed.length))} in period`);
|
|
14975
|
+
lines.push(` Completed: ${chalk.green(String(completed.length))} (${completionRate}% rate)`);
|
|
14976
|
+
if (failed.length > 0)
|
|
14977
|
+
lines.push(` Failed: ${chalk.red(String(failed.length))}`);
|
|
14978
|
+
if (sparkline)
|
|
14979
|
+
lines.push(` Activity: ${chalk.dim(sparkline)}`);
|
|
14980
|
+
if (Object.keys(byAgent).length > 0) {
|
|
14981
|
+
lines.push(` By agent: ${Object.entries(byAgent).map(([a, n]) => `${a}=${n}`).join(" ")}`);
|
|
14982
|
+
}
|
|
14983
|
+
if (stats.in_progress > 0)
|
|
14984
|
+
lines.push(` Stale risk: check \`todos stale\` for stuck tasks`);
|
|
14985
|
+
}
|
|
14986
|
+
console.log(lines.join(`
|
|
14987
|
+
`));
|
|
14988
|
+
});
|
|
14911
14989
|
program2.action(async () => {
|
|
14912
14990
|
if (process.stdout.isTTY) {
|
|
14913
14991
|
try {
|
package/dist/index.js
CHANGED
|
@@ -110,6 +110,13 @@ class TodosClient {
|
|
|
110
110
|
body: JSON.stringify({ agent_id: agentId })
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
+
async failTask(id, options = {}) {
|
|
114
|
+
return this.fetch(`/api/tasks/${id}/fail`, {
|
|
115
|
+
method: "POST",
|
|
116
|
+
headers: { "Content-Type": "application/json" },
|
|
117
|
+
body: JSON.stringify(options)
|
|
118
|
+
});
|
|
119
|
+
}
|
|
113
120
|
async logProgress(taskId, message, pctComplete, agentId) {
|
|
114
121
|
return this.fetch(`/api/tasks/${taskId}/progress`, {
|
|
115
122
|
method: "POST",
|
|
@@ -131,6 +138,40 @@ class TodosClient {
|
|
|
131
138
|
async getProjects() {
|
|
132
139
|
return this.fetch("/api/projects");
|
|
133
140
|
}
|
|
141
|
+
async* subscribeToStream(options = {}) {
|
|
142
|
+
const params = new URLSearchParams;
|
|
143
|
+
if (options.agentId)
|
|
144
|
+
params.set("agent_id", options.agentId);
|
|
145
|
+
if (options.projectId)
|
|
146
|
+
params.set("project_id", options.projectId);
|
|
147
|
+
if (options.events)
|
|
148
|
+
params.set("events", options.events.join(","));
|
|
149
|
+
const url = `${this.baseUrl}/api/tasks/stream?${params}`;
|
|
150
|
+
const resp = await fetch(url);
|
|
151
|
+
if (!resp.ok || !resp.body)
|
|
152
|
+
throw new Error(`SSE connection failed: ${resp.status}`);
|
|
153
|
+
const reader = resp.body.getReader();
|
|
154
|
+
const decoder = new TextDecoder;
|
|
155
|
+
let buffer = "";
|
|
156
|
+
while (true) {
|
|
157
|
+
const { done, value } = await reader.read();
|
|
158
|
+
if (done)
|
|
159
|
+
break;
|
|
160
|
+
buffer += decoder.decode(value, { stream: true });
|
|
161
|
+
const lines = buffer.split(`
|
|
162
|
+
`);
|
|
163
|
+
buffer = lines.pop() || "";
|
|
164
|
+
for (const line of lines) {
|
|
165
|
+
if (line.startsWith("data: ")) {
|
|
166
|
+
try {
|
|
167
|
+
const data = JSON.parse(line.slice(6));
|
|
168
|
+
if (data.type !== "connected")
|
|
169
|
+
yield data;
|
|
170
|
+
} catch {}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
134
175
|
}
|
|
135
176
|
function createClient(options) {
|
|
136
177
|
return new TodosClient(options);
|
package/dist/sdk.d.ts
CHANGED
|
@@ -110,6 +110,15 @@ export declare class TodosClient {
|
|
|
110
110
|
getActiveWork(projectId?: string): Promise<any[]>;
|
|
111
111
|
getTasksChangedSince(since: string, projectId?: string): Promise<any>;
|
|
112
112
|
startTask(id: string, agentId: string): Promise<any>;
|
|
113
|
+
failTask(id: string, options?: {
|
|
114
|
+
reason?: string;
|
|
115
|
+
agent_id?: string;
|
|
116
|
+
retry?: boolean;
|
|
117
|
+
error_code?: string;
|
|
118
|
+
}): Promise<{
|
|
119
|
+
task: TaskSummary;
|
|
120
|
+
retry_task: TaskSummary | null;
|
|
121
|
+
}>;
|
|
113
122
|
logProgress(taskId: string, message: string, pctComplete?: number, agentId?: string): Promise<any>;
|
|
114
123
|
exportTasks(filter?: {
|
|
115
124
|
status?: string;
|
|
@@ -117,6 +126,26 @@ export declare class TodosClient {
|
|
|
117
126
|
format?: "json" | "csv";
|
|
118
127
|
}): Promise<any>;
|
|
119
128
|
getProjects(): Promise<any[]>;
|
|
129
|
+
/**
|
|
130
|
+
* Subscribe to task events via SSE. Returns an AsyncGenerator that yields events.
|
|
131
|
+
* Events: task.created, task.started, task.completed, task.failed, task.assigned, task.status_changed
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* for await (const event of client.subscribeToStream({ agentId: "aurelius" })) {
|
|
135
|
+
* console.log(event.action, event.task_id);
|
|
136
|
+
* }
|
|
137
|
+
*/
|
|
138
|
+
subscribeToStream(options?: {
|
|
139
|
+
agentId?: string;
|
|
140
|
+
projectId?: string;
|
|
141
|
+
events?: string[];
|
|
142
|
+
}): AsyncGenerator<{
|
|
143
|
+
type: string;
|
|
144
|
+
action: string;
|
|
145
|
+
task_id?: string;
|
|
146
|
+
agent_id?: string | null;
|
|
147
|
+
timestamp: string;
|
|
148
|
+
}, void, unknown>;
|
|
120
149
|
}
|
|
121
150
|
export declare function createClient(options?: TodosClientOptions): TodosClient;
|
|
122
151
|
//# sourceMappingURL=sdk.d.ts.map
|
package/dist/sdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
|