@hasna/todos 0.11.81 → 0.11.82
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/cloud-router.d.ts +20 -1
- package/dist/cli/cloud-router.d.ts.map +1 -1
- package/dist/cli/commands/agent-commands.d.ts.map +1 -1
- package/dist/cli/commands/plan-template-commands.d.ts.map +1 -1
- package/dist/cli/commands/project-commands.d.ts.map +1 -1
- package/dist/cli/commands/query-commands.d.ts.map +1 -1
- package/dist/cli/commands/task-commands.d.ts.map +1 -1
- package/dist/cli/index.js +216 -20
- package/dist/index.js +2 -0
- package/dist/mcp/index.js +129 -1
- package/dist/mcp/tools/agents.d.ts.map +1 -1
- package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-workflow-tools.d.ts.map +1 -1
- package/dist/release-provenance.json +3 -3
- package/dist/server/index.js +129 -1
- package/dist/server/v1.d.ts.map +1 -1
- package/dist/storage/interfaces.d.ts +1 -0
- package/dist/storage/interfaces.d.ts.map +1 -1
- package/dist/storage/local-sqlite.d.ts.map +1 -1
- package/dist/storage/postgres-adapter.d.ts.map +1 -1
- package/dist/storage.js +2 -0
- package/package.json +1 -1
|
@@ -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 { Task, TaskFilter } from "../types/index.js";
|
|
24
|
+
import type { Agent, Plan, Project, Task, TaskComment, TaskFilter } 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
|
|
@@ -60,6 +60,25 @@ export interface CloudStats {
|
|
|
60
60
|
* local SQLite island.
|
|
61
61
|
*/
|
|
62
62
|
export declare function cloudGetStats(client: HasnaStorageClient): Promise<CloudStats>;
|
|
63
|
+
/** List registered agents from the cloud (`GET /v1/agents`). */
|
|
64
|
+
export declare function cloudListAgents(client: HasnaStorageClient): Promise<Agent[]>;
|
|
65
|
+
/** List projects from the cloud (`GET /v1/projects`). */
|
|
66
|
+
export declare function cloudListProjects(client: HasnaStorageClient): Promise<Project[]>;
|
|
67
|
+
/** List plans from the cloud (`GET /v1/plans`), optionally scoped to a project. */
|
|
68
|
+
export declare function cloudListPlans(client: HasnaStorageClient, projectId?: string): Promise<Plan[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Add a comment to a task in the cloud (`POST /v1/tasks/:id/comments`). The server
|
|
71
|
+
* validates that the task exists and returns 404 (surfaced as a thrown error by the
|
|
72
|
+
* transport) when it does not — so a comment on a missing cloud task fails loudly
|
|
73
|
+
* instead of silently succeeding.
|
|
74
|
+
*/
|
|
75
|
+
export declare function cloudAddComment(client: HasnaStorageClient, taskId: string, input: {
|
|
76
|
+
content: string;
|
|
77
|
+
agent_id?: string;
|
|
78
|
+
session_id?: string;
|
|
79
|
+
type?: string;
|
|
80
|
+
progress_pct?: number;
|
|
81
|
+
}): Promise<TaskComment>;
|
|
63
82
|
/**
|
|
64
83
|
* Count tasks matching a filter. The `/v1/tasks` list response now returns a
|
|
65
84
|
* SQL-side `total` (full match count, independent of limit/offset), so we ask for
|
|
@@ -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,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
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;
|
|
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,QAmZrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-template-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan-template-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-template-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan-template-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,QAwe5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/project-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"project-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/project-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqJzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA05BvD"}
|
|
@@ -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;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwMzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"task-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwMzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAglCpD"}
|
package/dist/cli/index.js
CHANGED
|
@@ -8548,6 +8548,29 @@ async function cloudGetStats(client) {
|
|
|
8548
8548
|
const raw = await client.transport.get("/stats");
|
|
8549
8549
|
return raw ?? {};
|
|
8550
8550
|
}
|
|
8551
|
+
async function cloudListAgents(client) {
|
|
8552
|
+
const res = await client.list("agents");
|
|
8553
|
+
const envelope = res.raw;
|
|
8554
|
+
return Array.isArray(envelope?.agents) ? envelope.agents : res.items;
|
|
8555
|
+
}
|
|
8556
|
+
async function cloudListProjects(client) {
|
|
8557
|
+
const res = await client.list("projects");
|
|
8558
|
+
const envelope = res.raw;
|
|
8559
|
+
return Array.isArray(envelope?.projects) ? envelope.projects : res.items;
|
|
8560
|
+
}
|
|
8561
|
+
async function cloudListPlans(client, projectId) {
|
|
8562
|
+
const query = projectId ? { project_id: projectId } : {};
|
|
8563
|
+
const res = await client.list("plans", { query });
|
|
8564
|
+
const envelope = res.raw;
|
|
8565
|
+
return Array.isArray(envelope?.plans) ? envelope.plans : res.items;
|
|
8566
|
+
}
|
|
8567
|
+
async function cloudAddComment(client, taskId, input) {
|
|
8568
|
+
const raw = await client.transport.post(`/tasks/${encodeURIComponent(taskId)}/comments`, input);
|
|
8569
|
+
if (raw && typeof raw === "object" && "comment" in raw) {
|
|
8570
|
+
return raw.comment;
|
|
8571
|
+
}
|
|
8572
|
+
return raw;
|
|
8573
|
+
}
|
|
8551
8574
|
async function cloudCountTasks(client, filter = {}) {
|
|
8552
8575
|
const { limit: _drop, offset: _o, ...rest } = filter;
|
|
8553
8576
|
const res = await client.list("tasks", { query: { ...toListQuery(rest), limit: 1 } });
|
|
@@ -20505,11 +20528,23 @@ function registerTaskCommands(program2) {
|
|
|
20505
20528
|
if (active.length > 0)
|
|
20506
20529
|
resolvedId = active[0].id;
|
|
20507
20530
|
}
|
|
20531
|
+
const cloud = getTodosCloudClient();
|
|
20532
|
+
if (!resolvedId && cloud && globalOpts.agent) {
|
|
20533
|
+
const active = await cloudListTasks(cloud, { status: "in_progress", assigned_to: globalOpts.agent, limit: 1 });
|
|
20534
|
+
if (active.length > 0)
|
|
20535
|
+
resolvedId = active[0].id;
|
|
20536
|
+
}
|
|
20508
20537
|
if (!resolvedId) {
|
|
20509
20538
|
console.error(chalk2.red("No task ID given and no active task found. Pass an ID or use --agent."));
|
|
20510
20539
|
process.exit(1);
|
|
20511
20540
|
}
|
|
20512
|
-
|
|
20541
|
+
let task2;
|
|
20542
|
+
if (cloud) {
|
|
20543
|
+
const remote = await cloudGetTask(cloud, resolvedId);
|
|
20544
|
+
task2 = remote ? { subtasks: [], dependencies: [], blocked_by: [], comments: [], checklist: [], ...remote, tags: remote.tags ?? [] } : null;
|
|
20545
|
+
} else {
|
|
20546
|
+
task2 = getTaskWithRelations(resolvedId);
|
|
20547
|
+
}
|
|
20513
20548
|
if (!task2) {
|
|
20514
20549
|
console.error(chalk2.red(`Task not found: ${id || resolvedId}`));
|
|
20515
20550
|
process.exit(1);
|
|
@@ -21643,9 +21678,10 @@ function resolvePlanCliRef(ref, projectId) {
|
|
|
21643
21678
|
process.exit(1);
|
|
21644
21679
|
}
|
|
21645
21680
|
function registerPlanTemplateCommands(program2) {
|
|
21646
|
-
program2.command("plans").description("List and manage plans").option("--add <name>", "Create a plan").option("--slug <slug>", "Readable plan slug (with --add)").option("-d, --description <text>", "Plan description (with --add)").option("--show <id-or-slug>", "Show plan details with its tasks").option("--artifact <id-or-slug>", "Show local Markdown artifact diagnostics for a plan").option("--write-artifacts", "Write local Markdown artifacts for all project-scoped plans in scope").option("--delete <id>", "Delete a plan").option("--complete <id>", "Mark a plan as completed").action((opts) => {
|
|
21681
|
+
program2.command("plans").description("List and manage plans").option("--add <name>", "Create a plan").option("--slug <slug>", "Readable plan slug (with --add)").option("-d, --description <text>", "Plan description (with --add)").option("--show <id-or-slug>", "Show plan details with its tasks").option("--artifact <id-or-slug>", "Show local Markdown artifact diagnostics for a plan").option("--write-artifacts", "Write local Markdown artifacts for all project-scoped plans in scope").option("--delete <id>", "Delete a plan").option("--complete <id>", "Mark a plan as completed").action(async (opts) => {
|
|
21647
21682
|
const globalOpts = program2.opts();
|
|
21648
|
-
const
|
|
21683
|
+
const cloud = getTodosCloudClient();
|
|
21684
|
+
const projectId = cloud ? undefined : autoProject(globalOpts);
|
|
21649
21685
|
if (opts.add) {
|
|
21650
21686
|
let plan;
|
|
21651
21687
|
try {
|
|
@@ -21804,7 +21840,7 @@ function registerPlanTemplateCommands(program2) {
|
|
|
21804
21840
|
}
|
|
21805
21841
|
return;
|
|
21806
21842
|
}
|
|
21807
|
-
const plans = listPlans(projectId);
|
|
21843
|
+
const plans = cloud ? await cloudListPlans(cloud, projectId) : listPlans(projectId);
|
|
21808
21844
|
if (globalOpts.json) {
|
|
21809
21845
|
output(plans, true);
|
|
21810
21846
|
return;
|
|
@@ -22129,6 +22165,7 @@ var init_plan_template_commands = __esm(() => {
|
|
|
22129
22165
|
init_tasks();
|
|
22130
22166
|
init_plan_artifacts();
|
|
22131
22167
|
init_helpers();
|
|
22168
|
+
init_cloud_router();
|
|
22132
22169
|
});
|
|
22133
22170
|
|
|
22134
22171
|
// src/lib/local-fields.ts
|
|
@@ -31376,10 +31413,11 @@ function registerProjectCommands(program2) {
|
|
|
31376
31413
|
handleError(e);
|
|
31377
31414
|
}
|
|
31378
31415
|
});
|
|
31379
|
-
program2.command("comment <id> <text>").alias("log-progress").description("Add a comment to a task (alias: log-progress, for recording intermediate progress)").option("--pct <percent>", "Progress percentage (0-100) to record alongside the note").action((id, text, opts) => {
|
|
31416
|
+
program2.command("comment <id> <text>").alias("log-progress").description("Add a comment to a task (alias: log-progress, for recording intermediate progress)").option("--pct <percent>", "Progress percentage (0-100) to record alongside the note").action(async (id, text, opts) => {
|
|
31380
31417
|
const globalOpts = program2.opts();
|
|
31381
31418
|
const resolvedId = resolveTaskId(id);
|
|
31382
31419
|
let content = text;
|
|
31420
|
+
let progressPct;
|
|
31383
31421
|
if (opts.pct !== undefined) {
|
|
31384
31422
|
const pct = parseInt(opts.pct, 10);
|
|
31385
31423
|
if (!Number.isFinite(pct) || pct < 0 || pct > 100) {
|
|
@@ -31387,17 +31425,28 @@ function registerProjectCommands(program2) {
|
|
|
31387
31425
|
process.exit(1);
|
|
31388
31426
|
}
|
|
31389
31427
|
content = `[progress ${pct}%] ${text}`;
|
|
31428
|
+
progressPct = pct;
|
|
31390
31429
|
}
|
|
31391
|
-
|
|
31392
|
-
|
|
31393
|
-
|
|
31394
|
-
|
|
31395
|
-
|
|
31396
|
-
|
|
31397
|
-
|
|
31398
|
-
|
|
31399
|
-
|
|
31400
|
-
|
|
31430
|
+
try {
|
|
31431
|
+
const cloud = getTodosCloudClient();
|
|
31432
|
+
const comment = cloud ? await cloudAddComment(cloud, resolvedId, {
|
|
31433
|
+
content,
|
|
31434
|
+
agent_id: globalOpts.agent,
|
|
31435
|
+
session_id: globalOpts.session,
|
|
31436
|
+
...progressPct !== undefined ? { type: "progress", progress_pct: progressPct } : {}
|
|
31437
|
+
}) : addComment({
|
|
31438
|
+
task_id: resolvedId,
|
|
31439
|
+
content,
|
|
31440
|
+
agent_id: globalOpts.agent,
|
|
31441
|
+
session_id: globalOpts.session
|
|
31442
|
+
});
|
|
31443
|
+
if (globalOpts.json) {
|
|
31444
|
+
output(comment, true);
|
|
31445
|
+
} else {
|
|
31446
|
+
console.log(chalk4.green("Comment added."));
|
|
31447
|
+
}
|
|
31448
|
+
} catch (e) {
|
|
31449
|
+
handleError(e);
|
|
31401
31450
|
}
|
|
31402
31451
|
});
|
|
31403
31452
|
program2.command("search <query>").description("Search local tasks, or run/save a cross-entity search view").option("--status <status>", "Filter by status").option("--priority <p>", "Filter by priority").option("--assigned <agent>", "Filter by assigned agent").option("--agent-id <agent>", "Filter by creator/run/comment agent").option("--task-list <id>", "Filter by task list").option("--plan <id>", "Filter by plan").option("--task <id>", "Filter runs/comments by task").option("--tag <tag>", "Filter by task tag (repeatable or comma-separated)", collectOption, []).option("--field-label <label>", "Filter by local field label (repeatable or comma-separated)", collectOption, []).option("--field-owner <owner>", "Filter by local field owner").option("--field-area <area>", "Filter by local field area").option("--field-severity <severity>", "Filter by local field severity").option("--field-custom <json>", "Filter by local custom fields as JSON").option("--since <date>", "Only tasks updated after this date (ISO)").option("--created-after <date>", "Only records created after this date (ISO)").option("--blocked", "Only blocked tasks (incomplete dependencies)").option("--has-deps", "Only tasks with dependencies").option("--depends-on <id>", "Only tasks that depend on a task").option("--blocks <id>", "Only tasks that block a task").option("--scope <scope>", "Search scope: tasks, projects, plans, runs, comments, all", "tasks").option("--limit <n>", "Maximum results", "100").option("--filter <json>", "Merge an advanced saved-search filter JSON object").option("--save-as <name>", "Save this search as a named view").option("--description <text>", "Saved view description").option("--all-projects", "Do not auto-scope the search to the current project").action((query, opts) => {
|
|
@@ -31651,7 +31700,8 @@ function registerProjectCommands(program2) {
|
|
|
31651
31700
|
}
|
|
31652
31701
|
return;
|
|
31653
31702
|
}
|
|
31654
|
-
const
|
|
31703
|
+
const cloud = getTodosCloudClient();
|
|
31704
|
+
const projects = cloud ? await cloudListProjects(cloud) : listProjects();
|
|
31655
31705
|
if (globalOpts.json) {
|
|
31656
31706
|
output(projects, true);
|
|
31657
31707
|
return;
|
|
@@ -32057,6 +32107,7 @@ var init_project_commands = __esm(() => {
|
|
|
32057
32107
|
init_database();
|
|
32058
32108
|
init_projects();
|
|
32059
32109
|
init_comments();
|
|
32110
|
+
init_cloud_router();
|
|
32060
32111
|
init_saved_search_views();
|
|
32061
32112
|
init_sync();
|
|
32062
32113
|
init_config2();
|
|
@@ -32826,7 +32877,8 @@ Use ${chalk5.cyan(`--agent ${result.id}`)} on future commands.`);
|
|
|
32826
32877
|
program2.command("agents").description("List registered agents").action(async () => {
|
|
32827
32878
|
const globalOpts = program2.opts();
|
|
32828
32879
|
try {
|
|
32829
|
-
const
|
|
32880
|
+
const cloud = getTodosCloudClient();
|
|
32881
|
+
const agents = cloud ? await cloudListAgents(cloud) : listAgents();
|
|
32830
32882
|
if (globalOpts.json) {
|
|
32831
32883
|
output(agents, true);
|
|
32832
32884
|
return;
|
|
@@ -33095,6 +33147,7 @@ var init_agent_commands = __esm(() => {
|
|
|
33095
33147
|
init_task_lists();
|
|
33096
33148
|
init_tasks();
|
|
33097
33149
|
init_helpers();
|
|
33150
|
+
init_cloud_router();
|
|
33098
33151
|
});
|
|
33099
33152
|
|
|
33100
33153
|
// src/lib/retention-cleanup.ts
|
|
@@ -37343,6 +37396,7 @@ function createLocalSqliteTodosStorageAdapter(options = {}) {
|
|
|
37343
37396
|
audit: {
|
|
37344
37397
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId) => logTaskChange(taskId, action, field, oldValue, newValue, agentId, database()),
|
|
37345
37398
|
addComment: (input) => addComment(input, database()),
|
|
37399
|
+
getComments: (taskId) => listComments(taskId, database()),
|
|
37346
37400
|
getTaskHistory: (taskId) => getTaskHistory(taskId, database()),
|
|
37347
37401
|
getRecentActivity: (limit) => getRecentActivity(limit, database())
|
|
37348
37402
|
},
|
|
@@ -38356,6 +38410,7 @@ function createPostgresTodosStorageAdapter(options) {
|
|
|
38356
38410
|
audit: {
|
|
38357
38411
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId, context) => logTaskChange2(taskId, action, field, oldValue, newValue, agentId, store, context),
|
|
38358
38412
|
addComment: (input, context) => addComment2(input, store, context),
|
|
38413
|
+
getComments: async (taskId) => (await store.list("comments")).filter((comment) => comment.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
38359
38414
|
getTaskHistory: async (taskId) => (await store.list("audit_history")).filter((entry2) => entry2.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
38360
38415
|
getRecentActivity: async (limit = 20) => (await store.list("audit_history")).sort((a, b) => b.created_at.localeCompare(a.created_at)).slice(0, limit)
|
|
38361
38416
|
},
|
|
@@ -39685,6 +39740,31 @@ async function handleV1Request(req, url) {
|
|
|
39685
39740
|
return error(405, `method ${method} not allowed on /v1/tasks`);
|
|
39686
39741
|
}
|
|
39687
39742
|
if (action) {
|
|
39743
|
+
if (action === "comments") {
|
|
39744
|
+
if (method === "GET") {
|
|
39745
|
+
const comments = await store.audit.getComments(id);
|
|
39746
|
+
return json2({ comments, count: comments.length });
|
|
39747
|
+
}
|
|
39748
|
+
if (method === "POST") {
|
|
39749
|
+
const body2 = await readJson(req) ?? {};
|
|
39750
|
+
if (typeof body2.content !== "string" || !body2.content.trim()) {
|
|
39751
|
+
return error(400, "content is required");
|
|
39752
|
+
}
|
|
39753
|
+
const target = await store.tasks.get(id);
|
|
39754
|
+
if (!target)
|
|
39755
|
+
return error(404, "task not found");
|
|
39756
|
+
const comment = await store.audit.addComment({
|
|
39757
|
+
task_id: id,
|
|
39758
|
+
content: body2.content,
|
|
39759
|
+
agent_id: body2.agent_id ?? principal.agent ?? undefined,
|
|
39760
|
+
session_id: body2.session_id,
|
|
39761
|
+
type: body2.type,
|
|
39762
|
+
progress_pct: body2.progress_pct
|
|
39763
|
+
}, contextFromPrincipal(principal, body2));
|
|
39764
|
+
return json2({ comment }, 201);
|
|
39765
|
+
}
|
|
39766
|
+
return error(405, `method ${method} not allowed on /v1/tasks/:id/comments`);
|
|
39767
|
+
}
|
|
39688
39768
|
const body = await readJson(req) ?? {};
|
|
39689
39769
|
const agentId = body.agent_id || principal.agent || "todos-serve";
|
|
39690
39770
|
if (action === "start" && method === "POST") {
|
|
@@ -49865,6 +49945,11 @@ Tasks:` : null,
|
|
|
49865
49945
|
author: exports_external3.string().optional().describe("Author agent ID or name")
|
|
49866
49946
|
}, async ({ task_id, body, author }) => {
|
|
49867
49947
|
try {
|
|
49948
|
+
const cloud = getTodosCloudClient();
|
|
49949
|
+
if (cloud) {
|
|
49950
|
+
await cloudAddComment(cloud, task_id, { content: body, agent_id: author });
|
|
49951
|
+
return { content: [{ type: "text", text: `Comment added to ${task_id.slice(0, 8)}: ${body.slice(0, 50)}${body.length > 50 ? "..." : ""}` }] };
|
|
49952
|
+
}
|
|
49868
49953
|
const resolvedId = resolveId(task_id);
|
|
49869
49954
|
const resolvedAuthor = author ? resolveId(author, "agents") : undefined;
|
|
49870
49955
|
const comment = addComment({ task_id: resolvedId, content: body, agent_id: resolvedAuthor });
|
|
@@ -50775,6 +50860,56 @@ function registerTaskWorkflowTools(server, ctx) {
|
|
|
50775
50860
|
max_description_chars: exports_external3.number().optional().describe("Max task description chars in compact mode (default: 180)")
|
|
50776
50861
|
}, async ({ agent_id, project_id, task_list_id, explain_blocked, detail, max_description_chars }) => {
|
|
50777
50862
|
try {
|
|
50863
|
+
const cloud = getTodosCloudClient();
|
|
50864
|
+
if (cloud) {
|
|
50865
|
+
const baseFilter = {};
|
|
50866
|
+
if (project_id)
|
|
50867
|
+
baseFilter.project_id = project_id;
|
|
50868
|
+
if (task_list_id)
|
|
50869
|
+
baseFilter.task_list_id = task_list_id;
|
|
50870
|
+
const [stats, pending, in_progress, completed, activeTasks, nextTasks] = await Promise.all([
|
|
50871
|
+
cloudGetStats(cloud),
|
|
50872
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "pending" }),
|
|
50873
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "in_progress" }),
|
|
50874
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "completed" }),
|
|
50875
|
+
cloudListTasks(cloud, { ...baseFilter, status: "in_progress", limit: 5 }),
|
|
50876
|
+
cloudListTasks(cloud, { ...baseFilter, status: "pending", limit: 1 })
|
|
50877
|
+
]);
|
|
50878
|
+
const cloudStatus = {
|
|
50879
|
+
source: "cloud",
|
|
50880
|
+
total: stats.tasks ?? pending + in_progress + completed,
|
|
50881
|
+
pending,
|
|
50882
|
+
in_progress,
|
|
50883
|
+
completed,
|
|
50884
|
+
active_work: activeTasks,
|
|
50885
|
+
next_task: nextTasks[0] ?? null,
|
|
50886
|
+
stale_count: 0,
|
|
50887
|
+
overdue_recurring: 0
|
|
50888
|
+
};
|
|
50889
|
+
const next_task2 = nextTasks[0] ?? null;
|
|
50890
|
+
const payload2 = {
|
|
50891
|
+
status: cloudStatus,
|
|
50892
|
+
next_task: next_task2,
|
|
50893
|
+
overdue_count: 0,
|
|
50894
|
+
latest_handoff: null,
|
|
50895
|
+
as_of: new Date().toISOString()
|
|
50896
|
+
};
|
|
50897
|
+
if (detail === "full") {
|
|
50898
|
+
return { content: [{ type: "text", text: JSON.stringify(payload2, null, 2) }] };
|
|
50899
|
+
}
|
|
50900
|
+
return {
|
|
50901
|
+
content: [{
|
|
50902
|
+
type: "text",
|
|
50903
|
+
text: compactJson({
|
|
50904
|
+
status: compactStatus(cloudStatus),
|
|
50905
|
+
next_task: next_task2 ? compactTask(next_task2, max_description_chars || 180) : null,
|
|
50906
|
+
overdue_count: 0,
|
|
50907
|
+
latest_handoff: null,
|
|
50908
|
+
as_of: payload2.as_of
|
|
50909
|
+
})
|
|
50910
|
+
}]
|
|
50911
|
+
};
|
|
50912
|
+
}
|
|
50778
50913
|
const { getStatus: getStatus2, getNextTask: getNextTask3, getOverdueTasks: getOverdueTasks2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
50779
50914
|
const { getLatestHandoff: getLatestHandoff2 } = (init_handoffs(), __toCommonJS(exports_handoffs));
|
|
50780
50915
|
const filters = {};
|
|
@@ -51210,6 +51345,27 @@ ${lines.join(`
|
|
|
51210
51345
|
if (shouldRegisterTool("get_health")) {
|
|
51211
51346
|
server.tool("get_health", "Get system health: task counts by status, active agents, project summary.", async () => {
|
|
51212
51347
|
try {
|
|
51348
|
+
const cloud = getTodosCloudClient();
|
|
51349
|
+
if (cloud) {
|
|
51350
|
+
const [stats, pending2, inProgress2, completed2, cancelled2, projects2, agents2] = await Promise.all([
|
|
51351
|
+
cloudGetStats(cloud),
|
|
51352
|
+
cloudCountTasks(cloud, { status: "pending" }),
|
|
51353
|
+
cloudCountTasks(cloud, { status: "in_progress" }),
|
|
51354
|
+
cloudCountTasks(cloud, { status: "completed" }),
|
|
51355
|
+
cloudCountTasks(cloud, { status: "cancelled" }),
|
|
51356
|
+
cloudListProjects(cloud),
|
|
51357
|
+
cloudListAgents(cloud)
|
|
51358
|
+
]);
|
|
51359
|
+
const projectCount = stats.projects ?? projects2.length;
|
|
51360
|
+
const lines2 = [
|
|
51361
|
+
`=== System Health (cloud) ===`,
|
|
51362
|
+
`Tasks: ${pending2} pending | ${inProgress2} in progress | ${completed2} completed | ${cancelled2} cancelled`,
|
|
51363
|
+
`Projects: ${projectCount} total`,
|
|
51364
|
+
`Agents: ${agents2.length} registered`
|
|
51365
|
+
];
|
|
51366
|
+
return { content: [{ type: "text", text: lines2.join(`
|
|
51367
|
+
`) }] };
|
|
51368
|
+
}
|
|
51213
51369
|
const { countTasks: countTasks2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
51214
51370
|
const { listProjects: listProjects2 } = (init_projects(), __toCommonJS(exports_projects));
|
|
51215
51371
|
const { listAgents: listAgents2 } = (init_agents(), __toCommonJS(exports_agents));
|
|
@@ -51248,6 +51404,7 @@ ${lines.join(`
|
|
|
51248
51404
|
}
|
|
51249
51405
|
var init_task_auto_tools = __esm(() => {
|
|
51250
51406
|
init_zod();
|
|
51407
|
+
init_cloud_router();
|
|
51251
51408
|
});
|
|
51252
51409
|
|
|
51253
51410
|
// src/lib/context-packs.ts
|
|
@@ -52570,6 +52727,11 @@ No blocked tasks.`,
|
|
|
52570
52727
|
author: exports_external3.string().optional().describe("Author agent ID or name")
|
|
52571
52728
|
}, async ({ task_id, body, author }) => {
|
|
52572
52729
|
try {
|
|
52730
|
+
const cloud = getTodosCloudClient();
|
|
52731
|
+
if (cloud) {
|
|
52732
|
+
await cloudAddComment(cloud, task_id, { content: body, agent_id: author });
|
|
52733
|
+
return { content: [{ type: "text", text: `Comment added to ${task_id.slice(0, 8)}` }] };
|
|
52734
|
+
}
|
|
52573
52735
|
const { addComment: addComment3 } = (init_comments(), __toCommonJS(exports_comments));
|
|
52574
52736
|
const resolvedId = resolveId(task_id);
|
|
52575
52737
|
const resolvedAuthor = author ? resolveId(author, "agents") : undefined;
|
|
@@ -62330,7 +62492,8 @@ No names available. Wait for an active agent to go stale (30min timeout).`
|
|
|
62330
62492
|
include_archived: exports_external3.boolean().optional().describe("Include archived agents in the list (default: false)")
|
|
62331
62493
|
}, async ({ include_archived }) => {
|
|
62332
62494
|
try {
|
|
62333
|
-
const
|
|
62495
|
+
const cloud = getTodosCloudClient();
|
|
62496
|
+
const agents = cloud ? await cloudListAgents(cloud) : listAgents({ include_archived: include_archived ?? false });
|
|
62334
62497
|
if (agents.length === 0) {
|
|
62335
62498
|
return { content: [{ type: "text", text: "No agents registered." }] };
|
|
62336
62499
|
}
|
|
@@ -62550,6 +62713,7 @@ var init_agents2 = __esm(() => {
|
|
|
62550
62713
|
init_agents();
|
|
62551
62714
|
init_config2();
|
|
62552
62715
|
init_database();
|
|
62716
|
+
init_cloud_router();
|
|
62553
62717
|
});
|
|
62554
62718
|
|
|
62555
62719
|
// src/mcp/tools/templates.ts
|
|
@@ -68219,11 +68383,42 @@ function registerQueryCommands(program2) {
|
|
|
68219
68383
|
program2.command("status").description("Show full project health snapshot").option("--agent <id>", "Include next task for this agent").option("--project <id>", "Filter to project").option("-j, --json", "Output as JSON").action(async (opts) => {
|
|
68220
68384
|
const globalOpts = program2.opts();
|
|
68221
68385
|
const json3 = opts.json || globalOpts.json;
|
|
68222
|
-
const db = getDatabase();
|
|
68223
68386
|
const filters = {};
|
|
68224
68387
|
if (opts.project)
|
|
68225
68388
|
filters.project_id = opts.project;
|
|
68226
|
-
const
|
|
68389
|
+
const cloud = getTodosCloudClient();
|
|
68390
|
+
let s;
|
|
68391
|
+
if (cloud) {
|
|
68392
|
+
const baseFilter = opts.project ? { project_id: opts.project } : {};
|
|
68393
|
+
const [stats2, pending, in_progress, completed, activeTasks, nextTasks] = await Promise.all([
|
|
68394
|
+
cloudGetStats(cloud),
|
|
68395
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "pending" }),
|
|
68396
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "in_progress" }),
|
|
68397
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "completed" }),
|
|
68398
|
+
cloudListTasks(cloud, { ...baseFilter, status: "in_progress", limit: 5 }),
|
|
68399
|
+
cloudListTasks(cloud, { ...baseFilter, status: "pending", limit: 1 })
|
|
68400
|
+
]);
|
|
68401
|
+
s = {
|
|
68402
|
+
source: "cloud",
|
|
68403
|
+
pending,
|
|
68404
|
+
in_progress,
|
|
68405
|
+
completed,
|
|
68406
|
+
total: stats2.tasks ?? pending + in_progress + completed,
|
|
68407
|
+
active_work: activeTasks.map((t) => ({
|
|
68408
|
+
id: t.id,
|
|
68409
|
+
short_id: t.short_id ?? null,
|
|
68410
|
+
title: t.title,
|
|
68411
|
+
assigned_to: t.assigned_to ?? null,
|
|
68412
|
+
locked_by: t.locked_by ?? null
|
|
68413
|
+
})),
|
|
68414
|
+
next_task: nextTasks[0] ?? null,
|
|
68415
|
+
stale_count: 0,
|
|
68416
|
+
overdue_recurring: 0
|
|
68417
|
+
};
|
|
68418
|
+
} else {
|
|
68419
|
+
const db = getDatabase();
|
|
68420
|
+
s = getStatus(Object.keys(filters).length ? filters : undefined, opts.agent, undefined, db);
|
|
68421
|
+
}
|
|
68227
68422
|
if (json3) {
|
|
68228
68423
|
console.log(JSON.stringify(s, null, 2));
|
|
68229
68424
|
return;
|
|
@@ -70617,6 +70812,7 @@ var init_query_commands = __esm(() => {
|
|
|
70617
70812
|
init_workflow_states();
|
|
70618
70813
|
init_local_reports();
|
|
70619
70814
|
init_helpers();
|
|
70815
|
+
init_cloud_router();
|
|
70620
70816
|
init_types();
|
|
70621
70817
|
});
|
|
70622
70818
|
|
package/dist/index.js
CHANGED
|
@@ -23220,6 +23220,7 @@ function createLocalSqliteTodosStorageAdapter(options = {}) {
|
|
|
23220
23220
|
audit: {
|
|
23221
23221
|
logTaskChange: (taskId, action, field2, oldValue, newValue, agentId) => logTaskChange(taskId, action, field2, oldValue, newValue, agentId, database()),
|
|
23222
23222
|
addComment: (input) => addComment(input, database()),
|
|
23223
|
+
getComments: (taskId) => listComments(taskId, database()),
|
|
23223
23224
|
getTaskHistory: (taskId) => getTaskHistory(taskId, database()),
|
|
23224
23225
|
getRecentActivity: (limit) => getRecentActivity(limit, database())
|
|
23225
23226
|
},
|
|
@@ -23570,6 +23571,7 @@ function createPostgresTodosStorageAdapter(options) {
|
|
|
23570
23571
|
audit: {
|
|
23571
23572
|
logTaskChange: (taskId, action, field2, oldValue, newValue, agentId, context) => logTaskChange2(taskId, action, field2, oldValue, newValue, agentId, store, context),
|
|
23572
23573
|
addComment: (input, context) => addComment2(input, store, context),
|
|
23574
|
+
getComments: async (taskId) => (await store.list("comments")).filter((comment) => comment.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
23573
23575
|
getTaskHistory: async (taskId) => (await store.list("audit_history")).filter((entry2) => entry2.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
23574
23576
|
getRecentActivity: async (limit = 20) => (await store.list("audit_history")).sort((a, b) => b.created_at.localeCompare(a.created_at)).slice(0, limit)
|
|
23575
23577
|
},
|
package/dist/mcp/index.js
CHANGED
|
@@ -22837,6 +22837,23 @@ async function cloudGetStats(client) {
|
|
|
22837
22837
|
const raw = await client.transport.get("/stats");
|
|
22838
22838
|
return raw ?? {};
|
|
22839
22839
|
}
|
|
22840
|
+
async function cloudListAgents(client) {
|
|
22841
|
+
const res = await client.list("agents");
|
|
22842
|
+
const envelope = res.raw;
|
|
22843
|
+
return Array.isArray(envelope?.agents) ? envelope.agents : res.items;
|
|
22844
|
+
}
|
|
22845
|
+
async function cloudListProjects(client) {
|
|
22846
|
+
const res = await client.list("projects");
|
|
22847
|
+
const envelope = res.raw;
|
|
22848
|
+
return Array.isArray(envelope?.projects) ? envelope.projects : res.items;
|
|
22849
|
+
}
|
|
22850
|
+
async function cloudAddComment(client, taskId, input) {
|
|
22851
|
+
const raw = await client.transport.post(`/tasks/${encodeURIComponent(taskId)}/comments`, input);
|
|
22852
|
+
if (raw && typeof raw === "object" && "comment" in raw) {
|
|
22853
|
+
return raw.comment;
|
|
22854
|
+
}
|
|
22855
|
+
return raw;
|
|
22856
|
+
}
|
|
22840
22857
|
async function cloudCountTasks(client, filter = {}) {
|
|
22841
22858
|
const { limit: _drop, offset: _o, ...rest } = filter;
|
|
22842
22859
|
const res = await client.list("tasks", { query: { ...toListQuery(rest), limit: 1 } });
|
|
@@ -30183,6 +30200,11 @@ Tasks:` : null,
|
|
|
30183
30200
|
author: exports_external.string().optional().describe("Author agent ID or name")
|
|
30184
30201
|
}, async ({ task_id, body, author }) => {
|
|
30185
30202
|
try {
|
|
30203
|
+
const cloud = getTodosCloudClient();
|
|
30204
|
+
if (cloud) {
|
|
30205
|
+
await cloudAddComment(cloud, task_id, { content: body, agent_id: author });
|
|
30206
|
+
return { content: [{ type: "text", text: `Comment added to ${task_id.slice(0, 8)}: ${body.slice(0, 50)}${body.length > 50 ? "..." : ""}` }] };
|
|
30207
|
+
}
|
|
30186
30208
|
const resolvedId = resolveId(task_id);
|
|
30187
30209
|
const resolvedAuthor = author ? resolveId(author, "agents") : undefined;
|
|
30188
30210
|
const comment = addComment({ task_id: resolvedId, content: body, agent_id: resolvedAuthor });
|
|
@@ -31093,6 +31115,56 @@ function registerTaskWorkflowTools(server, ctx) {
|
|
|
31093
31115
|
max_description_chars: exports_external.number().optional().describe("Max task description chars in compact mode (default: 180)")
|
|
31094
31116
|
}, async ({ agent_id, project_id, task_list_id, explain_blocked, detail, max_description_chars }) => {
|
|
31095
31117
|
try {
|
|
31118
|
+
const cloud = getTodosCloudClient();
|
|
31119
|
+
if (cloud) {
|
|
31120
|
+
const baseFilter = {};
|
|
31121
|
+
if (project_id)
|
|
31122
|
+
baseFilter.project_id = project_id;
|
|
31123
|
+
if (task_list_id)
|
|
31124
|
+
baseFilter.task_list_id = task_list_id;
|
|
31125
|
+
const [stats, pending, in_progress, completed, activeTasks, nextTasks] = await Promise.all([
|
|
31126
|
+
cloudGetStats(cloud),
|
|
31127
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "pending" }),
|
|
31128
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "in_progress" }),
|
|
31129
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "completed" }),
|
|
31130
|
+
cloudListTasks(cloud, { ...baseFilter, status: "in_progress", limit: 5 }),
|
|
31131
|
+
cloudListTasks(cloud, { ...baseFilter, status: "pending", limit: 1 })
|
|
31132
|
+
]);
|
|
31133
|
+
const cloudStatus = {
|
|
31134
|
+
source: "cloud",
|
|
31135
|
+
total: stats.tasks ?? pending + in_progress + completed,
|
|
31136
|
+
pending,
|
|
31137
|
+
in_progress,
|
|
31138
|
+
completed,
|
|
31139
|
+
active_work: activeTasks,
|
|
31140
|
+
next_task: nextTasks[0] ?? null,
|
|
31141
|
+
stale_count: 0,
|
|
31142
|
+
overdue_recurring: 0
|
|
31143
|
+
};
|
|
31144
|
+
const next_task2 = nextTasks[0] ?? null;
|
|
31145
|
+
const payload2 = {
|
|
31146
|
+
status: cloudStatus,
|
|
31147
|
+
next_task: next_task2,
|
|
31148
|
+
overdue_count: 0,
|
|
31149
|
+
latest_handoff: null,
|
|
31150
|
+
as_of: new Date().toISOString()
|
|
31151
|
+
};
|
|
31152
|
+
if (detail === "full") {
|
|
31153
|
+
return { content: [{ type: "text", text: JSON.stringify(payload2, null, 2) }] };
|
|
31154
|
+
}
|
|
31155
|
+
return {
|
|
31156
|
+
content: [{
|
|
31157
|
+
type: "text",
|
|
31158
|
+
text: compactJson({
|
|
31159
|
+
status: compactStatus(cloudStatus),
|
|
31160
|
+
next_task: next_task2 ? compactTask(next_task2, max_description_chars || 180) : null,
|
|
31161
|
+
overdue_count: 0,
|
|
31162
|
+
latest_handoff: null,
|
|
31163
|
+
as_of: payload2.as_of
|
|
31164
|
+
})
|
|
31165
|
+
}]
|
|
31166
|
+
};
|
|
31167
|
+
}
|
|
31096
31168
|
const { getStatus: getStatus2, getNextTask: getNextTask2, getOverdueTasks: getOverdueTasks2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
31097
31169
|
const { getLatestHandoff: getLatestHandoff2 } = (init_handoffs(), __toCommonJS(exports_handoffs));
|
|
31098
31170
|
const filters = {};
|
|
@@ -31922,6 +31994,27 @@ ${lines.join(`
|
|
|
31922
31994
|
if (shouldRegisterTool("get_health")) {
|
|
31923
31995
|
server.tool("get_health", "Get system health: task counts by status, active agents, project summary.", async () => {
|
|
31924
31996
|
try {
|
|
31997
|
+
const cloud = getTodosCloudClient();
|
|
31998
|
+
if (cloud) {
|
|
31999
|
+
const [stats, pending2, inProgress2, completed2, cancelled2, projects2, agents2] = await Promise.all([
|
|
32000
|
+
cloudGetStats(cloud),
|
|
32001
|
+
cloudCountTasks(cloud, { status: "pending" }),
|
|
32002
|
+
cloudCountTasks(cloud, { status: "in_progress" }),
|
|
32003
|
+
cloudCountTasks(cloud, { status: "completed" }),
|
|
32004
|
+
cloudCountTasks(cloud, { status: "cancelled" }),
|
|
32005
|
+
cloudListProjects(cloud),
|
|
32006
|
+
cloudListAgents(cloud)
|
|
32007
|
+
]);
|
|
32008
|
+
const projectCount = stats.projects ?? projects2.length;
|
|
32009
|
+
const lines2 = [
|
|
32010
|
+
`=== System Health (cloud) ===`,
|
|
32011
|
+
`Tasks: ${pending2} pending | ${inProgress2} in progress | ${completed2} completed | ${cancelled2} cancelled`,
|
|
32012
|
+
`Projects: ${projectCount} total`,
|
|
32013
|
+
`Agents: ${agents2.length} registered`
|
|
32014
|
+
];
|
|
32015
|
+
return { content: [{ type: "text", text: lines2.join(`
|
|
32016
|
+
`) }] };
|
|
32017
|
+
}
|
|
31925
32018
|
const { countTasks: countTasks2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
31926
32019
|
const { listProjects: listProjects2 } = (init_projects(), __toCommonJS(exports_projects));
|
|
31927
32020
|
const { listAgents: listAgents2 } = (init_agents(), __toCommonJS(exports_agents));
|
|
@@ -31960,6 +32053,7 @@ ${lines.join(`
|
|
|
31960
32053
|
}
|
|
31961
32054
|
var init_task_auto_tools = __esm(() => {
|
|
31962
32055
|
init_zod();
|
|
32056
|
+
init_cloud_router();
|
|
31963
32057
|
});
|
|
31964
32058
|
|
|
31965
32059
|
// src/lib/context-packs.ts
|
|
@@ -33282,6 +33376,11 @@ No blocked tasks.`,
|
|
|
33282
33376
|
author: exports_external.string().optional().describe("Author agent ID or name")
|
|
33283
33377
|
}, async ({ task_id, body, author }) => {
|
|
33284
33378
|
try {
|
|
33379
|
+
const cloud = getTodosCloudClient();
|
|
33380
|
+
if (cloud) {
|
|
33381
|
+
await cloudAddComment(cloud, task_id, { content: body, agent_id: author });
|
|
33382
|
+
return { content: [{ type: "text", text: `Comment added to ${task_id.slice(0, 8)}` }] };
|
|
33383
|
+
}
|
|
33285
33384
|
const { addComment: addComment2 } = (init_comments(), __toCommonJS(exports_comments));
|
|
33286
33385
|
const resolvedId = resolveId(task_id);
|
|
33287
33386
|
const resolvedAuthor = author ? resolveId(author, "agents") : undefined;
|
|
@@ -44189,7 +44288,8 @@ No names available. Wait for an active agent to go stale (30min timeout).`
|
|
|
44189
44288
|
include_archived: exports_external.boolean().optional().describe("Include archived agents in the list (default: false)")
|
|
44190
44289
|
}, async ({ include_archived }) => {
|
|
44191
44290
|
try {
|
|
44192
|
-
const
|
|
44291
|
+
const cloud = getTodosCloudClient();
|
|
44292
|
+
const agents = cloud ? await cloudListAgents(cloud) : listAgents({ include_archived: include_archived ?? false });
|
|
44193
44293
|
if (agents.length === 0) {
|
|
44194
44294
|
return { content: [{ type: "text", text: "No agents registered." }] };
|
|
44195
44295
|
}
|
|
@@ -44409,6 +44509,7 @@ var init_agents2 = __esm(() => {
|
|
|
44409
44509
|
init_agents();
|
|
44410
44510
|
init_config2();
|
|
44411
44511
|
init_database();
|
|
44512
|
+
init_cloud_router();
|
|
44412
44513
|
});
|
|
44413
44514
|
|
|
44414
44515
|
// src/db/builtin-templates.ts
|
|
@@ -46022,6 +46123,7 @@ function createLocalSqliteTodosStorageAdapter(options = {}) {
|
|
|
46022
46123
|
audit: {
|
|
46023
46124
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId) => logTaskChange(taskId, action, field, oldValue, newValue, agentId, database()),
|
|
46024
46125
|
addComment: (input) => addComment(input, database()),
|
|
46126
|
+
getComments: (taskId) => listComments(taskId, database()),
|
|
46025
46127
|
getTaskHistory: (taskId) => getTaskHistory(taskId, database()),
|
|
46026
46128
|
getRecentActivity: (limit) => getRecentActivity(limit, database())
|
|
46027
46129
|
},
|
|
@@ -48038,6 +48140,7 @@ function createPostgresTodosStorageAdapter(options) {
|
|
|
48038
48140
|
audit: {
|
|
48039
48141
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId, context) => logTaskChange2(taskId, action, field, oldValue, newValue, agentId, store, context),
|
|
48040
48142
|
addComment: (input, context) => addComment2(input, store, context),
|
|
48143
|
+
getComments: async (taskId) => (await store.list("comments")).filter((comment) => comment.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
48041
48144
|
getTaskHistory: async (taskId) => (await store.list("audit_history")).filter((entry2) => entry2.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
48042
48145
|
getRecentActivity: async (limit = 20) => (await store.list("audit_history")).sort((a, b) => b.created_at.localeCompare(a.created_at)).slice(0, limit)
|
|
48043
48146
|
},
|
|
@@ -49367,6 +49470,31 @@ async function handleV1Request(req, url) {
|
|
|
49367
49470
|
return error(405, `method ${method} not allowed on /v1/tasks`);
|
|
49368
49471
|
}
|
|
49369
49472
|
if (action) {
|
|
49473
|
+
if (action === "comments") {
|
|
49474
|
+
if (method === "GET") {
|
|
49475
|
+
const comments = await store.audit.getComments(id);
|
|
49476
|
+
return json2({ comments, count: comments.length });
|
|
49477
|
+
}
|
|
49478
|
+
if (method === "POST") {
|
|
49479
|
+
const body2 = await readJson(req) ?? {};
|
|
49480
|
+
if (typeof body2.content !== "string" || !body2.content.trim()) {
|
|
49481
|
+
return error(400, "content is required");
|
|
49482
|
+
}
|
|
49483
|
+
const target = await store.tasks.get(id);
|
|
49484
|
+
if (!target)
|
|
49485
|
+
return error(404, "task not found");
|
|
49486
|
+
const comment = await store.audit.addComment({
|
|
49487
|
+
task_id: id,
|
|
49488
|
+
content: body2.content,
|
|
49489
|
+
agent_id: body2.agent_id ?? principal.agent ?? undefined,
|
|
49490
|
+
session_id: body2.session_id,
|
|
49491
|
+
type: body2.type,
|
|
49492
|
+
progress_pct: body2.progress_pct
|
|
49493
|
+
}, contextFromPrincipal(principal, body2));
|
|
49494
|
+
return json2({ comment }, 201);
|
|
49495
|
+
}
|
|
49496
|
+
return error(405, `method ${method} not allowed on /v1/tasks/:id/comments`);
|
|
49497
|
+
}
|
|
49370
49498
|
const body = await readJson(req) ?? {};
|
|
49371
49499
|
const agentId = body.agent_id || principal.agent || "todos-serve";
|
|
49372
49500
|
if (action === "start" && method === "POST") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,UAAU,UAAU;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,OAAO,GAAG;IACb,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACpC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;CAC5D,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,OAAO,GAAG,IAAI,CA6bjJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-adv-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-adv-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,UAAU,cAAc;IACtB,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"task-adv-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-adv-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,UAAU,cAAc;IACtB,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,QAunB1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-auto-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-auto-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-auto-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-auto-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGjD,UAAU,eAAe;IACvB,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,QAoX5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-project-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-project-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAmJjD,UAAU,kBAAkB;IAC1B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"task-project-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-project-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAmJjD,UAAU,kBAAkB;IAC1B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,QAo4FlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-workflow-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-workflow-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAKjD,UAAU,mBAAmB;IAC3B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"task-workflow-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-workflow-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAKjD,UAAU,mBAAmB;IAC3B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,mBAAmB,QAkZpF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@hasna/todos",
|
|
3
|
-
"packageVersion": "0.11.
|
|
3
|
+
"packageVersion": "0.11.82",
|
|
4
4
|
"repository": "https://github.com/hasna/todos.git",
|
|
5
|
-
"gitCommit": "
|
|
6
|
-
"generatedAt": "2026-07-
|
|
5
|
+
"gitCommit": "c6e5695eeb5700d03c6c7f70b722fdb18dc60e32",
|
|
6
|
+
"generatedAt": "2026-07-08T13:21:23.262Z"
|
|
7
7
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -989,6 +989,7 @@ function createPostgresTodosStorageAdapter(options) {
|
|
|
989
989
|
audit: {
|
|
990
990
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId, context) => logTaskChange(taskId, action, field, oldValue, newValue, agentId, store, context),
|
|
991
991
|
addComment: (input, context) => addComment(input, store, context),
|
|
992
|
+
getComments: async (taskId) => (await store.list("comments")).filter((comment) => comment.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
992
993
|
getTaskHistory: async (taskId) => (await store.list("audit_history")).filter((entry2) => entry2.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
993
994
|
getRecentActivity: async (limit = 20) => (await store.list("audit_history")).sort((a, b) => b.created_at.localeCompare(a.created_at)).slice(0, limit)
|
|
994
995
|
},
|
|
@@ -14825,6 +14826,7 @@ function createLocalSqliteTodosStorageAdapter(options = {}) {
|
|
|
14825
14826
|
audit: {
|
|
14826
14827
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId) => logTaskChange2(taskId, action, field, oldValue, newValue, agentId, database()),
|
|
14827
14828
|
addComment: (input) => addComment2(input, database()),
|
|
14829
|
+
getComments: (taskId) => listComments(taskId, database()),
|
|
14828
14830
|
getTaskHistory: (taskId) => getTaskHistory(taskId, database()),
|
|
14829
14831
|
getRecentActivity: (limit) => getRecentActivity(limit, database())
|
|
14830
14832
|
},
|
|
@@ -15616,6 +15618,31 @@ async function handleV1Request(req, url) {
|
|
|
15616
15618
|
return error(405, `method ${method} not allowed on /v1/tasks`);
|
|
15617
15619
|
}
|
|
15618
15620
|
if (action) {
|
|
15621
|
+
if (action === "comments") {
|
|
15622
|
+
if (method === "GET") {
|
|
15623
|
+
const comments = await store.audit.getComments(id);
|
|
15624
|
+
return json2({ comments, count: comments.length });
|
|
15625
|
+
}
|
|
15626
|
+
if (method === "POST") {
|
|
15627
|
+
const body2 = await readJson(req) ?? {};
|
|
15628
|
+
if (typeof body2.content !== "string" || !body2.content.trim()) {
|
|
15629
|
+
return error(400, "content is required");
|
|
15630
|
+
}
|
|
15631
|
+
const target = await store.tasks.get(id);
|
|
15632
|
+
if (!target)
|
|
15633
|
+
return error(404, "task not found");
|
|
15634
|
+
const comment = await store.audit.addComment({
|
|
15635
|
+
task_id: id,
|
|
15636
|
+
content: body2.content,
|
|
15637
|
+
agent_id: body2.agent_id ?? principal.agent ?? undefined,
|
|
15638
|
+
session_id: body2.session_id,
|
|
15639
|
+
type: body2.type,
|
|
15640
|
+
progress_pct: body2.progress_pct
|
|
15641
|
+
}, contextFromPrincipal(principal, body2));
|
|
15642
|
+
return json2({ comment }, 201);
|
|
15643
|
+
}
|
|
15644
|
+
return error(405, `method ${method} not allowed on /v1/tasks/:id/comments`);
|
|
15645
|
+
}
|
|
15619
15646
|
const body = await readJson(req) ?? {};
|
|
15620
15647
|
const agentId = body.agent_id || principal.agent || "todos-serve";
|
|
15621
15648
|
if (action === "start" && method === "POST") {
|
|
@@ -43550,6 +43577,23 @@ async function cloudGetStats(client) {
|
|
|
43550
43577
|
const raw = await client.transport.get("/stats");
|
|
43551
43578
|
return raw ?? {};
|
|
43552
43579
|
}
|
|
43580
|
+
async function cloudListAgents(client) {
|
|
43581
|
+
const res = await client.list("agents");
|
|
43582
|
+
const envelope = res.raw;
|
|
43583
|
+
return Array.isArray(envelope?.agents) ? envelope.agents : res.items;
|
|
43584
|
+
}
|
|
43585
|
+
async function cloudListProjects(client) {
|
|
43586
|
+
const res = await client.list("projects");
|
|
43587
|
+
const envelope = res.raw;
|
|
43588
|
+
return Array.isArray(envelope?.projects) ? envelope.projects : res.items;
|
|
43589
|
+
}
|
|
43590
|
+
async function cloudAddComment(client, taskId, input) {
|
|
43591
|
+
const raw = await client.transport.post(`/tasks/${encodeURIComponent(taskId)}/comments`, input);
|
|
43592
|
+
if (raw && typeof raw === "object" && "comment" in raw) {
|
|
43593
|
+
return raw.comment;
|
|
43594
|
+
}
|
|
43595
|
+
return raw;
|
|
43596
|
+
}
|
|
43553
43597
|
async function cloudCountTasks(client, filter = {}) {
|
|
43554
43598
|
const { limit: _drop, offset: _o, ...rest } = filter;
|
|
43555
43599
|
const res = await client.list("tasks", { query: { ...toListQuery(rest), limit: 1 } });
|
|
@@ -50896,6 +50940,11 @@ Tasks:` : null,
|
|
|
50896
50940
|
author: exports_external.string().optional().describe("Author agent ID or name")
|
|
50897
50941
|
}, async ({ task_id, body, author }) => {
|
|
50898
50942
|
try {
|
|
50943
|
+
const cloud = getTodosCloudClient();
|
|
50944
|
+
if (cloud) {
|
|
50945
|
+
await cloudAddComment(cloud, task_id, { content: body, agent_id: author });
|
|
50946
|
+
return { content: [{ type: "text", text: `Comment added to ${task_id.slice(0, 8)}: ${body.slice(0, 50)}${body.length > 50 ? "..." : ""}` }] };
|
|
50947
|
+
}
|
|
50899
50948
|
const resolvedId = resolveId(task_id);
|
|
50900
50949
|
const resolvedAuthor = author ? resolveId(author, "agents") : undefined;
|
|
50901
50950
|
const comment = addComment2({ task_id: resolvedId, content: body, agent_id: resolvedAuthor });
|
|
@@ -51806,6 +51855,56 @@ function registerTaskWorkflowTools(server, ctx) {
|
|
|
51806
51855
|
max_description_chars: exports_external.number().optional().describe("Max task description chars in compact mode (default: 180)")
|
|
51807
51856
|
}, async ({ agent_id, project_id, task_list_id, explain_blocked, detail, max_description_chars }) => {
|
|
51808
51857
|
try {
|
|
51858
|
+
const cloud = getTodosCloudClient();
|
|
51859
|
+
if (cloud) {
|
|
51860
|
+
const baseFilter = {};
|
|
51861
|
+
if (project_id)
|
|
51862
|
+
baseFilter.project_id = project_id;
|
|
51863
|
+
if (task_list_id)
|
|
51864
|
+
baseFilter.task_list_id = task_list_id;
|
|
51865
|
+
const [stats, pending, in_progress, completed, activeTasks, nextTasks] = await Promise.all([
|
|
51866
|
+
cloudGetStats(cloud),
|
|
51867
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "pending" }),
|
|
51868
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "in_progress" }),
|
|
51869
|
+
cloudCountTasks(cloud, { ...baseFilter, status: "completed" }),
|
|
51870
|
+
cloudListTasks(cloud, { ...baseFilter, status: "in_progress", limit: 5 }),
|
|
51871
|
+
cloudListTasks(cloud, { ...baseFilter, status: "pending", limit: 1 })
|
|
51872
|
+
]);
|
|
51873
|
+
const cloudStatus = {
|
|
51874
|
+
source: "cloud",
|
|
51875
|
+
total: stats.tasks ?? pending + in_progress + completed,
|
|
51876
|
+
pending,
|
|
51877
|
+
in_progress,
|
|
51878
|
+
completed,
|
|
51879
|
+
active_work: activeTasks,
|
|
51880
|
+
next_task: nextTasks[0] ?? null,
|
|
51881
|
+
stale_count: 0,
|
|
51882
|
+
overdue_recurring: 0
|
|
51883
|
+
};
|
|
51884
|
+
const next_task2 = nextTasks[0] ?? null;
|
|
51885
|
+
const payload2 = {
|
|
51886
|
+
status: cloudStatus,
|
|
51887
|
+
next_task: next_task2,
|
|
51888
|
+
overdue_count: 0,
|
|
51889
|
+
latest_handoff: null,
|
|
51890
|
+
as_of: new Date().toISOString()
|
|
51891
|
+
};
|
|
51892
|
+
if (detail === "full") {
|
|
51893
|
+
return { content: [{ type: "text", text: JSON.stringify(payload2, null, 2) }] };
|
|
51894
|
+
}
|
|
51895
|
+
return {
|
|
51896
|
+
content: [{
|
|
51897
|
+
type: "text",
|
|
51898
|
+
text: compactJson({
|
|
51899
|
+
status: compactStatus(cloudStatus),
|
|
51900
|
+
next_task: next_task2 ? compactTask(next_task2, max_description_chars || 180) : null,
|
|
51901
|
+
overdue_count: 0,
|
|
51902
|
+
latest_handoff: null,
|
|
51903
|
+
as_of: payload2.as_of
|
|
51904
|
+
})
|
|
51905
|
+
}]
|
|
51906
|
+
};
|
|
51907
|
+
}
|
|
51809
51908
|
const { getStatus: getStatus2, getNextTask: getNextTask3, getOverdueTasks: getOverdueTasks2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
51810
51909
|
const { getLatestHandoff: getLatestHandoff2 } = (init_handoffs(), __toCommonJS(exports_handoffs));
|
|
51811
51910
|
const filters = {};
|
|
@@ -52241,6 +52340,27 @@ ${lines.join(`
|
|
|
52241
52340
|
if (shouldRegisterTool("get_health")) {
|
|
52242
52341
|
server.tool("get_health", "Get system health: task counts by status, active agents, project summary.", async () => {
|
|
52243
52342
|
try {
|
|
52343
|
+
const cloud = getTodosCloudClient();
|
|
52344
|
+
if (cloud) {
|
|
52345
|
+
const [stats, pending2, inProgress2, completed2, cancelled2, projects2, agents2] = await Promise.all([
|
|
52346
|
+
cloudGetStats(cloud),
|
|
52347
|
+
cloudCountTasks(cloud, { status: "pending" }),
|
|
52348
|
+
cloudCountTasks(cloud, { status: "in_progress" }),
|
|
52349
|
+
cloudCountTasks(cloud, { status: "completed" }),
|
|
52350
|
+
cloudCountTasks(cloud, { status: "cancelled" }),
|
|
52351
|
+
cloudListProjects(cloud),
|
|
52352
|
+
cloudListAgents(cloud)
|
|
52353
|
+
]);
|
|
52354
|
+
const projectCount = stats.projects ?? projects2.length;
|
|
52355
|
+
const lines2 = [
|
|
52356
|
+
`=== System Health (cloud) ===`,
|
|
52357
|
+
`Tasks: ${pending2} pending | ${inProgress2} in progress | ${completed2} completed | ${cancelled2} cancelled`,
|
|
52358
|
+
`Projects: ${projectCount} total`,
|
|
52359
|
+
`Agents: ${agents2.length} registered`
|
|
52360
|
+
];
|
|
52361
|
+
return { content: [{ type: "text", text: lines2.join(`
|
|
52362
|
+
`) }] };
|
|
52363
|
+
}
|
|
52244
52364
|
const { countTasks: countTasks2 } = (init_tasks(), __toCommonJS(exports_tasks));
|
|
52245
52365
|
const { listProjects: listProjects2 } = (init_projects(), __toCommonJS(exports_projects));
|
|
52246
52366
|
const { listAgents: listAgents2 } = (init_agents(), __toCommonJS(exports_agents));
|
|
@@ -52279,6 +52399,7 @@ ${lines.join(`
|
|
|
52279
52399
|
}
|
|
52280
52400
|
var init_task_auto_tools = __esm(() => {
|
|
52281
52401
|
init_zod();
|
|
52402
|
+
init_cloud_router();
|
|
52282
52403
|
});
|
|
52283
52404
|
|
|
52284
52405
|
// src/lib/context-packs.ts
|
|
@@ -53601,6 +53722,11 @@ No blocked tasks.`,
|
|
|
53601
53722
|
author: exports_external.string().optional().describe("Author agent ID or name")
|
|
53602
53723
|
}, async ({ task_id, body, author }) => {
|
|
53603
53724
|
try {
|
|
53725
|
+
const cloud = getTodosCloudClient();
|
|
53726
|
+
if (cloud) {
|
|
53727
|
+
await cloudAddComment(cloud, task_id, { content: body, agent_id: author });
|
|
53728
|
+
return { content: [{ type: "text", text: `Comment added to ${task_id.slice(0, 8)}` }] };
|
|
53729
|
+
}
|
|
53604
53730
|
const { addComment: addComment3 } = (init_comments(), __toCommonJS(exports_comments));
|
|
53605
53731
|
const resolvedId = resolveId(task_id);
|
|
53606
53732
|
const resolvedAuthor = author ? resolveId(author, "agents") : undefined;
|
|
@@ -88254,7 +88380,8 @@ No names available. Wait for an active agent to go stale (30min timeout).`
|
|
|
88254
88380
|
include_archived: exports_external.boolean().optional().describe("Include archived agents in the list (default: false)")
|
|
88255
88381
|
}, async ({ include_archived }) => {
|
|
88256
88382
|
try {
|
|
88257
|
-
const
|
|
88383
|
+
const cloud = getTodosCloudClient();
|
|
88384
|
+
const agents = cloud ? await cloudListAgents(cloud) : listAgents({ include_archived: include_archived ?? false });
|
|
88258
88385
|
if (agents.length === 0) {
|
|
88259
88386
|
return { content: [{ type: "text", text: "No agents registered." }] };
|
|
88260
88387
|
}
|
|
@@ -88474,6 +88601,7 @@ var init_agents2 = __esm(() => {
|
|
|
88474
88601
|
init_agents();
|
|
88475
88602
|
init_config2();
|
|
88476
88603
|
init_database();
|
|
88604
|
+
init_cloud_router();
|
|
88477
88605
|
});
|
|
88478
88606
|
|
|
88479
88607
|
// src/db/builtin-templates.ts
|
package/dist/server/v1.d.ts.map
CHANGED
|
@@ -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,
|
|
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,CA6RtF"}
|
|
@@ -118,6 +118,7 @@ export interface UpdateTemplateInput {
|
|
|
118
118
|
export interface TodosAuditStore {
|
|
119
119
|
logTaskChange(taskId: string, action: string, field?: string, oldValue?: string | null, newValue?: string | null, agentId?: string | null, context?: TodosStorageContext): MaybePromise<TaskHistory>;
|
|
120
120
|
addComment(input: CreateCommentInput, context?: TodosStorageContext): MaybePromise<TaskComment>;
|
|
121
|
+
getComments(taskId: string, context?: TodosStorageContext): MaybePromise<TaskComment[]>;
|
|
121
122
|
getTaskHistory(taskId: string, context?: TodosStorageContext): MaybePromise<TaskHistory[]>;
|
|
122
123
|
getRecentActivity(limit?: number, context?: TodosStorageContext): MaybePromise<TaskHistory[]>;
|
|
123
124
|
}
|
|
@@ -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":"local-sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/local-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6D3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3D,MAAM,WAAW,2CAA2C;IAC1D,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,wBAAgB,oCAAoC,CAClD,OAAO,GAAE,2CAAgD,GACxD,mBAAmB,
|
|
1
|
+
{"version":3,"file":"local-sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/local-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6D3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3D,MAAM,WAAW,2CAA2C;IAC1D,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,wBAAgB,oCAAoC,CAClD,OAAO,GAAE,2CAAgD,GACxD,mBAAmB,CAsFrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/postgres-adapter.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAIV,mBAAmB,EAUpB,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,
|
|
1
|
+
{"version":3,"file":"postgres-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/postgres-adapter.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAIV,mBAAmB,EAUpB,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,CAgGrB"}
|
package/dist/storage.js
CHANGED
|
@@ -11602,6 +11602,7 @@ function createLocalSqliteTodosStorageAdapter(options = {}) {
|
|
|
11602
11602
|
audit: {
|
|
11603
11603
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId) => logTaskChange(taskId, action, field, oldValue, newValue, agentId, database()),
|
|
11604
11604
|
addComment: (input) => addComment(input, database()),
|
|
11605
|
+
getComments: (taskId) => listComments(taskId, database()),
|
|
11605
11606
|
getTaskHistory: (taskId) => getTaskHistory(taskId, database()),
|
|
11606
11607
|
getRecentActivity: (limit) => getRecentActivity(limit, database())
|
|
11607
11608
|
},
|
|
@@ -11952,6 +11953,7 @@ function createPostgresTodosStorageAdapter(options) {
|
|
|
11952
11953
|
audit: {
|
|
11953
11954
|
logTaskChange: (taskId, action, field, oldValue, newValue, agentId, context) => logTaskChange2(taskId, action, field, oldValue, newValue, agentId, store, context),
|
|
11954
11955
|
addComment: (input, context) => addComment2(input, store, context),
|
|
11956
|
+
getComments: async (taskId) => (await store.list("comments")).filter((comment) => comment.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
11955
11957
|
getTaskHistory: async (taskId) => (await store.list("audit_history")).filter((entry2) => entry2.task_id === taskId).sort((a, b) => a.created_at.localeCompare(b.created_at)),
|
|
11956
11958
|
getRecentActivity: async (limit = 20) => (await store.list("audit_history")).sort((a, b) => b.created_at.localeCompare(a.created_at)).slice(0, limit)
|
|
11957
11959
|
},
|