@hasna/todos 0.11.93 → 0.11.94
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/commands/task-commands.d.ts.map +1 -1
- package/dist/cli/index.js +190 -14
- package/dist/contracts.js +1 -1
- package/dist/index.js +2 -2
- package/dist/mcp/index.js +145 -3
- package/dist/mcp/tools/task-crud.d.ts.map +1 -1
- package/dist/mcp/tools/task-meta-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/registry.js +1 -1
- package/dist/release-provenance.json +5 -5
- package/dist/sdk/v1.generated.d.ts +2 -0
- package/dist/sdk/v1.generated.d.ts.map +1 -1
- package/dist/server/index.js +145 -3
- package/dist/server/openapi.d.ts +8 -0
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/package.json +1 -1
|
@@ -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;AAoDzC,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D;
|
|
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;AAoDzC,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAmOD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA02CpD"}
|
package/dist/cli/index.js
CHANGED
|
@@ -2104,7 +2104,7 @@ var package_default;
|
|
|
2104
2104
|
var init_package = __esm(() => {
|
|
2105
2105
|
package_default = {
|
|
2106
2106
|
name: "@hasna/todos",
|
|
2107
|
-
version: "0.11.
|
|
2107
|
+
version: "0.11.94",
|
|
2108
2108
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
2109
2109
|
type: "module",
|
|
2110
2110
|
main: "dist/index.js",
|
|
@@ -15027,6 +15027,46 @@ function resolveTaskListRef(ref, projectId) {
|
|
|
15027
15027
|
return { id: bySlug.id };
|
|
15028
15028
|
return { error: `Could not resolve task list "${ref}" to a UUID${projectId ? " within the task's project" : ""}. Pass an exact task-list UUID.` };
|
|
15029
15029
|
}
|
|
15030
|
+
async function computeCloudReparent(cloud, current, opts) {
|
|
15031
|
+
const targetProjectId = opts.projectRef ? await cloudResolveProjectRef(cloud, opts.projectRef) : undefined;
|
|
15032
|
+
const scope = targetProjectId ?? current.project_id ?? undefined;
|
|
15033
|
+
let taskListId;
|
|
15034
|
+
if (opts.listRef)
|
|
15035
|
+
taskListId = await cloudResolveTaskListRef(cloud, opts.listRef, scope);
|
|
15036
|
+
else if (opts.clearList)
|
|
15037
|
+
taskListId = null;
|
|
15038
|
+
else if (targetProjectId && targetProjectId !== current.project_id)
|
|
15039
|
+
taskListId = null;
|
|
15040
|
+
const patch = {};
|
|
15041
|
+
if (targetProjectId !== undefined)
|
|
15042
|
+
patch.project_id = targetProjectId;
|
|
15043
|
+
if (taskListId !== undefined)
|
|
15044
|
+
patch.task_list_id = taskListId;
|
|
15045
|
+
return patch;
|
|
15046
|
+
}
|
|
15047
|
+
function computeLocalReparent(current, opts) {
|
|
15048
|
+
const targetProjectId = opts.projectRef ? resolveProjectIdOrSlug(opts.projectRef) : undefined;
|
|
15049
|
+
const scope = targetProjectId ?? current.project_id ?? null;
|
|
15050
|
+
let taskListId;
|
|
15051
|
+
if (opts.listRef) {
|
|
15052
|
+
const resolved = resolveTaskListRef(opts.listRef, scope);
|
|
15053
|
+
if ("error" in resolved) {
|
|
15054
|
+
console.error(chalk2.red(resolved.error));
|
|
15055
|
+
process.exit(1);
|
|
15056
|
+
}
|
|
15057
|
+
taskListId = resolved.id;
|
|
15058
|
+
} else if (opts.clearList) {
|
|
15059
|
+
taskListId = null;
|
|
15060
|
+
} else if (targetProjectId && targetProjectId !== current.project_id) {
|
|
15061
|
+
taskListId = null;
|
|
15062
|
+
}
|
|
15063
|
+
const patch = {};
|
|
15064
|
+
if (targetProjectId !== undefined)
|
|
15065
|
+
patch.project_id = targetProjectId;
|
|
15066
|
+
if (taskListId !== undefined)
|
|
15067
|
+
patch.task_list_id = taskListId;
|
|
15068
|
+
return patch;
|
|
15069
|
+
}
|
|
15030
15070
|
function registerTaskCommands(program2) {
|
|
15031
15071
|
program2.command("add <title>").description("Create a new task").option("-d, --description <text>", "Task description").option("-p, --priority <level>", "Priority: low, medium, high, critical").option("--parent <id>", "Parent task ID").option("-t, --tags <tags>", "Comma-separated tags").option("--tag <tags>", "Comma-separated tags (alias for --tags)").option("--plan <id>", "Assign to a plan").option("--assign <agent>", "Assign to agent").option("--status <status>", "Initial status").option("--list <id>", "Task list ID").option("--task-list <id>", "Task list ID (alias for --list)").option("--estimated <minutes>", "Estimated time in minutes").option("--sla-minutes <minutes>", "SLA minutes before unfinished work is escalated").option("--sla <minutes>", "Alias for --sla-minutes").option("--approval", "Require approval before completion").option("--recurrence <rule>", "Recurrence rule, e.g. 'every day', 'every weekday', 'every 2 weeks'").option("--due <date>", "Due date (ISO string or YYYY-MM-DD)").option("--reason <text>", "Why this task exists").option("--project <id>", "Assign to project by ID or slug (overrides auto-detect)").action(async (title, opts) => {
|
|
15032
15072
|
const globalOpts = program2.opts();
|
|
@@ -15731,7 +15771,7 @@ ${chalk2.cyan(sid)} ${statusColor(task2.status)} ${prioColor(task2.priority)} ${
|
|
|
15731
15771
|
console.log(` ${chalk2.dim(h.created_at)} ${chalk2.bold(h.action)}${field}${change}${agent}`);
|
|
15732
15772
|
}
|
|
15733
15773
|
});
|
|
15734
|
-
program2.command("update <id>").description("Update a task").option("--title <text>", "New title").option("-d, --description <text>", "New description").option("-s, --status <status>", "New status").option("-p, --priority <priority>", "New priority").option("--assign <agent>", "Assign to agent").option("--tags <tags>", "New tags (comma-separated)").option("--tag <tags>", "New tags (alias for --tags)").option("--list <id>", "Move to a task list (UUID authoritative; project-scoped slug accepted)").option("--task-list <id>", "Move to a task list (alias for --list)").option("--clear-list", "Detach from its task list (reset task_list_id to null)").option("--working-dir <path>", "Repair the task's working_dir to a specific path (routing metadata)").option("--clear-working-dir", "Reset the task's working_dir to null (undo path for routing repairs)").option("--plan <id>", "Move to a plan").option("--clear-plan", "Remove from its current plan").option("--estimated <minutes>", "Estimated time in minutes").option("--sla-minutes <minutes>", "SLA minutes before unfinished work is escalated").option("--sla <minutes>", "Alias for --sla-minutes").option("--due <date>", "Due date (ISO string or YYYY-MM-DD), empty to clear").option("--recurrence <rule>", "Recurrence rule, empty to clear").option("--approval", "Require approval before completion").option("--clear-approval", "Remove the approval requirement").action(async (id, opts) => {
|
|
15774
|
+
program2.command("update <id>").description("Update a task").option("--title <text>", "New title").option("-d, --description <text>", "New description").option("-s, --status <status>", "New status").option("-p, --priority <priority>", "New priority").option("--assign <agent>", "Assign to agent").option("--tags <tags>", "New tags (comma-separated)").option("--tag <tags>", "New tags (alias for --tags)").option("--list <id>", "Move to a task list (UUID authoritative; project-scoped slug accepted)").option("--task-list <id>", "Move to a task list (alias for --list)").option("--clear-list", "Detach from its task list (reset task_list_id to null)").option("--project <id>", "Re-parent the task to another project (by ID, slug, or path); see also `todos move`").option("--working-dir <path>", "Repair the task's working_dir to a specific path (routing metadata)").option("--clear-working-dir", "Reset the task's working_dir to null (undo path for routing repairs)").option("--plan <id>", "Move to a plan").option("--clear-plan", "Remove from its current plan").option("--estimated <minutes>", "Estimated time in minutes").option("--sla-minutes <minutes>", "SLA minutes before unfinished work is escalated").option("--sla <minutes>", "Alias for --sla-minutes").option("--due <date>", "Due date (ISO string or YYYY-MM-DD), empty to clear").option("--recurrence <rule>", "Recurrence rule, empty to clear").option("--approval", "Require approval before completion").option("--clear-approval", "Remove the approval requirement").action(async (id, opts) => {
|
|
15735
15775
|
const globalOpts = program2.opts();
|
|
15736
15776
|
opts.tags = opts.tags || opts.tag;
|
|
15737
15777
|
opts.list = opts.list || opts.taskList;
|
|
@@ -15758,7 +15798,11 @@ ${chalk2.cyan(sid)} ${statusColor(task2.status)} ${prioColor(task2.priority)} ${
|
|
|
15758
15798
|
const plan = opts.plan ? await cloudResolvePlan(cloud, opts.plan, current2.project_id ?? undefined) : null;
|
|
15759
15799
|
if (opts.plan && !plan)
|
|
15760
15800
|
throw new Error(`Plan not found: ${opts.plan}`);
|
|
15761
|
-
const
|
|
15801
|
+
const reparent2 = await computeCloudReparent(cloud, current2, {
|
|
15802
|
+
projectRef: opts.project || globalOpts.project,
|
|
15803
|
+
listRef: opts.list,
|
|
15804
|
+
clearList: opts.clearList
|
|
15805
|
+
});
|
|
15762
15806
|
task3 = await cloudUpdateTask(cloud, currentId, {
|
|
15763
15807
|
title: opts.title,
|
|
15764
15808
|
description: opts.description,
|
|
@@ -15767,7 +15811,7 @@ ${chalk2.cyan(sid)} ${statusColor(task2.status)} ${prioColor(task2.priority)} ${
|
|
|
15767
15811
|
assigned_to: opts.assign,
|
|
15768
15812
|
tags: opts.tags ? opts.tags.split(",").map((t) => t.trim()) : undefined,
|
|
15769
15813
|
plan_id: plan?.id ?? (opts.clearPlan ? null : undefined),
|
|
15770
|
-
|
|
15814
|
+
...reparent2,
|
|
15771
15815
|
working_dir: opts.workingDir ? resolve9(opts.workingDir) : opts.clearWorkingDir ? null : undefined,
|
|
15772
15816
|
estimated_minutes: opts.estimated !== undefined ? parseIntOption(opts.estimated, "--estimated") : undefined,
|
|
15773
15817
|
sla_minutes: opts.slaMinutes !== undefined || opts.sla !== undefined ? parseIntOption(opts.slaMinutes ?? opts.sla, "--sla-minutes") : undefined,
|
|
@@ -15792,14 +15836,11 @@ ${chalk2.cyan(sid)} ${statusColor(task2.status)} ${prioColor(task2.priority)} ${
|
|
|
15792
15836
|
console.error(chalk2.red(`Task not found: ${id}`));
|
|
15793
15837
|
process.exit(1);
|
|
15794
15838
|
}
|
|
15795
|
-
const
|
|
15796
|
-
|
|
15797
|
-
|
|
15798
|
-
|
|
15799
|
-
|
|
15800
|
-
}
|
|
15801
|
-
return resolved.id;
|
|
15802
|
-
})() : opts.clearList ? null : undefined;
|
|
15839
|
+
const reparent = computeLocalReparent(current, {
|
|
15840
|
+
projectRef: opts.project || globalOpts.project,
|
|
15841
|
+
listRef: opts.list,
|
|
15842
|
+
clearList: opts.clearList
|
|
15843
|
+
});
|
|
15803
15844
|
const planId = opts.plan ? resolvePlanId(opts.plan) : opts.clearPlan ? null : undefined;
|
|
15804
15845
|
let task2;
|
|
15805
15846
|
try {
|
|
@@ -15812,7 +15853,7 @@ ${chalk2.cyan(sid)} ${statusColor(task2.status)} ${prioColor(task2.priority)} ${
|
|
|
15812
15853
|
assigned_to: opts.assign,
|
|
15813
15854
|
tags: opts.tags ? opts.tags.split(",").map((t) => t.trim()) : undefined,
|
|
15814
15855
|
plan_id: planId,
|
|
15815
|
-
|
|
15856
|
+
...reparent,
|
|
15816
15857
|
working_dir: opts.workingDir ? resolve9(opts.workingDir) : opts.clearWorkingDir ? null : undefined,
|
|
15817
15858
|
estimated_minutes: opts.estimated !== undefined ? parseIntOption(opts.estimated, "--estimated") : undefined,
|
|
15818
15859
|
sla_minutes: opts.slaMinutes !== undefined || opts.sla !== undefined ? parseIntOption(opts.slaMinutes ?? opts.sla, "--sla-minutes") : undefined,
|
|
@@ -15830,6 +15871,68 @@ ${chalk2.cyan(sid)} ${statusColor(task2.status)} ${prioColor(task2.priority)} ${
|
|
|
15830
15871
|
console.log(formatTaskLine(task2));
|
|
15831
15872
|
}
|
|
15832
15873
|
});
|
|
15874
|
+
program2.command("move <id>").description("Move a task to another project and/or task list (keeps its id and history)").option("--to-project <id>", "Destination project (by ID, slug, or path)").option("--to-list <id>", "Destination task list (UUID authoritative; slug resolved in the destination project)").option("--clear-list", "Detach from its task list (reset task_list_id to null)").action(async (id, opts) => {
|
|
15875
|
+
const globalOpts = program2.opts();
|
|
15876
|
+
const projectRef = opts.toProject ?? globalOpts.project;
|
|
15877
|
+
const listRef = opts.toList;
|
|
15878
|
+
if (!projectRef && !listRef && !opts.clearList) {
|
|
15879
|
+
handleError(new Error("Nothing to move: pass --to-project, --to-list, or --clear-list."));
|
|
15880
|
+
}
|
|
15881
|
+
if (listRef && opts.clearList) {
|
|
15882
|
+
handleError(new Error("Use either --to-list or --clear-list, not both."));
|
|
15883
|
+
}
|
|
15884
|
+
const cloud = getTodosCloudClient();
|
|
15885
|
+
if (cloud) {
|
|
15886
|
+
let task3;
|
|
15887
|
+
try {
|
|
15888
|
+
const currentId = await resolveTaskIdForCommand(id, cloud);
|
|
15889
|
+
const current2 = await cloudGetTask(cloud, currentId);
|
|
15890
|
+
if (!current2)
|
|
15891
|
+
throw new Error(`Task not found: ${id}`);
|
|
15892
|
+
const reparent2 = await computeCloudReparent(cloud, current2, {
|
|
15893
|
+
projectRef,
|
|
15894
|
+
listRef,
|
|
15895
|
+
clearList: opts.clearList
|
|
15896
|
+
});
|
|
15897
|
+
if (reparent2.project_id === undefined && reparent2.task_list_id === undefined) {
|
|
15898
|
+
throw new Error("Nothing to move: the task is already in the requested project/list.");
|
|
15899
|
+
}
|
|
15900
|
+
task3 = await cloudUpdateTask(cloud, currentId, reparent2);
|
|
15901
|
+
} catch (e) {
|
|
15902
|
+
handleError(e);
|
|
15903
|
+
}
|
|
15904
|
+
if (globalOpts.json) {
|
|
15905
|
+
output(task3, true);
|
|
15906
|
+
} else {
|
|
15907
|
+
console.log(chalk2.green("Task moved:"));
|
|
15908
|
+
console.log(formatTaskLine(task3));
|
|
15909
|
+
}
|
|
15910
|
+
return;
|
|
15911
|
+
}
|
|
15912
|
+
const resolvedId = resolveTaskId(id);
|
|
15913
|
+
const current = getTask(resolvedId);
|
|
15914
|
+
if (!current) {
|
|
15915
|
+
console.error(chalk2.red(`Task not found: ${id}`));
|
|
15916
|
+
process.exit(1);
|
|
15917
|
+
}
|
|
15918
|
+
const reparent = computeLocalReparent(current, { projectRef, listRef, clearList: opts.clearList });
|
|
15919
|
+
if (reparent.project_id === undefined && reparent.task_list_id === undefined) {
|
|
15920
|
+
console.error(chalk2.red("Nothing to move: the task is already in the requested project/list."));
|
|
15921
|
+
process.exit(1);
|
|
15922
|
+
}
|
|
15923
|
+
let task2;
|
|
15924
|
+
try {
|
|
15925
|
+
task2 = updateTask(resolvedId, { version: current.version, ...reparent });
|
|
15926
|
+
} catch (e) {
|
|
15927
|
+
handleError(e);
|
|
15928
|
+
}
|
|
15929
|
+
if (globalOpts.json) {
|
|
15930
|
+
output(task2, true);
|
|
15931
|
+
} else {
|
|
15932
|
+
console.log(chalk2.green("Task moved:"));
|
|
15933
|
+
console.log(formatTaskLine(task2));
|
|
15934
|
+
}
|
|
15935
|
+
});
|
|
15833
15936
|
program2.command("done <id>").description("Mark a task as completed").option("--attach-ids <ids>", "Comma-separated @hasna/attachments IDs to link as evidence").option("--files-changed <files>", "Comma-separated list of files changed").option("--test-results <results>", "Test results summary").option("--commit-hash <hash>", "Git commit hash").option("--notes <notes>", "Completion notes").option("--confidence <0-1>", "Agent's confidence 0.0-1.0 that the task is fully complete (default: 1.0, <0.7 flagged for review)").action(async (id, opts) => {
|
|
15834
15937
|
const globalOpts = program2.opts();
|
|
15835
15938
|
const attachmentIds = opts.attachIds ? opts.attachIds.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
|
|
@@ -28144,7 +28247,7 @@ async function updateTask2(id, input, store) {
|
|
|
28144
28247
|
tags: input.tags ?? existing.tags,
|
|
28145
28248
|
metadata: input.metadata ?? existing.metadata,
|
|
28146
28249
|
requires_approval: input.requires_approval ?? existing.requires_approval,
|
|
28147
|
-
task_list_id: input.task_list_id
|
|
28250
|
+
task_list_id: input.task_list_id !== undefined ? input.task_list_id : existing.task_list_id
|
|
28148
28251
|
};
|
|
28149
28252
|
await store.upsert("tasks", task);
|
|
28150
28253
|
return task;
|
|
@@ -29092,6 +29195,8 @@ function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
|
29092
29195
|
status: { type: "string" },
|
|
29093
29196
|
priority: { type: "string" },
|
|
29094
29197
|
assigned_to: { type: "string" },
|
|
29198
|
+
project_id: { type: "string", nullable: true },
|
|
29199
|
+
task_list_id: { type: "string", nullable: true },
|
|
29095
29200
|
version: { type: "number" }
|
|
29096
29201
|
}
|
|
29097
29202
|
},
|
|
@@ -35450,6 +35555,17 @@ ${task.description}` : null
|
|
|
35450
35555
|
patch.estimated_minutes = estimate;
|
|
35451
35556
|
if (deadline !== undefined)
|
|
35452
35557
|
patch.due_at = deadline;
|
|
35558
|
+
if (typeof patch.project_id === "string" && patch.project_id) {
|
|
35559
|
+
patch.project_id = await cloudResolveProjectRef(cloud, patch.project_id);
|
|
35560
|
+
}
|
|
35561
|
+
if (typeof patch.task_list_id === "string" && patch.task_list_id) {
|
|
35562
|
+
let scope = typeof patch.project_id === "string" ? patch.project_id : undefined;
|
|
35563
|
+
if (!scope) {
|
|
35564
|
+
const current = await cloudGetTask(cloud, task_id2);
|
|
35565
|
+
scope = current?.project_id ?? undefined;
|
|
35566
|
+
}
|
|
35567
|
+
patch.task_list_id = await cloudResolveTaskListRef(cloud, patch.task_list_id, scope);
|
|
35568
|
+
}
|
|
35453
35569
|
if (version2 !== undefined)
|
|
35454
35570
|
patch.version = version2;
|
|
35455
35571
|
const updated = await cloudUpdateTask(cloud, task_id2, patch);
|
|
@@ -39667,6 +39783,63 @@ function registerTaskProjectTools(server, ctx) {
|
|
|
39667
39783
|
}
|
|
39668
39784
|
});
|
|
39669
39785
|
}
|
|
39786
|
+
if (shouldRegisterTool("move_task")) {
|
|
39787
|
+
server.tool("move_task", "Re-parent a task to another project and/or task list, preserving its id and history. " + "A task list is project-scoped, so moving to a new project detaches the old list unless to_list is given.", {
|
|
39788
|
+
task_id: exports_external.string().describe("Task ID"),
|
|
39789
|
+
to_project: exports_external.string().optional().describe("Destination project ID, slug, or path"),
|
|
39790
|
+
to_list: exports_external.string().optional().describe("Destination task list (UUID, or slug resolved in the destination project)"),
|
|
39791
|
+
clear_list: exports_external.boolean().optional().describe("Detach from its task list (set task_list_id to null)"),
|
|
39792
|
+
version: exports_external.number().optional().describe("Expected version for optimistic locking")
|
|
39793
|
+
}, async ({ task_id, to_project, to_list, clear_list, version }) => {
|
|
39794
|
+
try {
|
|
39795
|
+
if (!to_project && !to_list && !clear_list) {
|
|
39796
|
+
throw new Error("Nothing to move: pass to_project, to_list, or clear_list.");
|
|
39797
|
+
}
|
|
39798
|
+
if (to_list && clear_list) {
|
|
39799
|
+
throw new Error("Use either to_list or clear_list, not both.");
|
|
39800
|
+
}
|
|
39801
|
+
const cloud = getTodosCloudClient();
|
|
39802
|
+
if (cloud) {
|
|
39803
|
+
const current2 = await cloudGetTask(cloud, task_id);
|
|
39804
|
+
if (!current2)
|
|
39805
|
+
throw new Error(`Task not found: ${task_id}`);
|
|
39806
|
+
const targetProjectId2 = to_project ? await cloudResolveProjectRef(cloud, to_project) : undefined;
|
|
39807
|
+
const scope = targetProjectId2 ?? current2.project_id ?? undefined;
|
|
39808
|
+
const patch = {};
|
|
39809
|
+
if (targetProjectId2 !== undefined)
|
|
39810
|
+
patch.project_id = targetProjectId2;
|
|
39811
|
+
if (to_list)
|
|
39812
|
+
patch.task_list_id = await cloudResolveTaskListRef(cloud, to_list, scope);
|
|
39813
|
+
else if (clear_list)
|
|
39814
|
+
patch.task_list_id = null;
|
|
39815
|
+
else if (targetProjectId2 && targetProjectId2 !== current2.project_id)
|
|
39816
|
+
patch.task_list_id = null;
|
|
39817
|
+
if (version !== undefined)
|
|
39818
|
+
patch.version = version;
|
|
39819
|
+
const task2 = await cloudUpdateTask(cloud, task_id, patch);
|
|
39820
|
+
return { content: [{ type: "text", text: formatTask(task2) }] };
|
|
39821
|
+
}
|
|
39822
|
+
const resolvedId = resolveId(task_id);
|
|
39823
|
+
const current = getTask(resolvedId);
|
|
39824
|
+
if (!current)
|
|
39825
|
+
throw new Error(`Task not found: ${task_id}`);
|
|
39826
|
+
const targetProjectId = to_project ? resolveId(to_project, "projects") : undefined;
|
|
39827
|
+
const updates = {};
|
|
39828
|
+
if (targetProjectId !== undefined)
|
|
39829
|
+
updates.project_id = targetProjectId;
|
|
39830
|
+
if (to_list)
|
|
39831
|
+
updates.task_list_id = resolveId(to_list, "task_lists");
|
|
39832
|
+
else if (clear_list)
|
|
39833
|
+
updates.task_list_id = null;
|
|
39834
|
+
else if (targetProjectId && targetProjectId !== current.project_id)
|
|
39835
|
+
updates.task_list_id = null;
|
|
39836
|
+
const task = updateWithOptionalVersion(resolvedId, updates, version);
|
|
39837
|
+
return { content: [{ type: "text", text: formatTask(task) }] };
|
|
39838
|
+
} catch (e) {
|
|
39839
|
+
return { content: [{ type: "text", text: formatError(e) }], isError: true };
|
|
39840
|
+
}
|
|
39841
|
+
});
|
|
39842
|
+
}
|
|
39670
39843
|
if (shouldRegisterTool("reschedule_task")) {
|
|
39671
39844
|
server.tool("reschedule_task", "Update a task's deadline.", {
|
|
39672
39845
|
task_id: exports_external.string().describe("Task ID"),
|
|
@@ -43595,6 +43768,7 @@ function registerTaskMetaTools(server, ctx) {
|
|
|
43595
43768
|
complete_task: "complete_task \u2014 Mark task completed. Params: task_id, confidence, completed_at, version",
|
|
43596
43769
|
cancel_task: "cancel_task \u2014 Cancel a task. Params: task_id, version",
|
|
43597
43770
|
reassign_task: "reassign_task \u2014 Change task assignee. Params: task_id, new_assignee, version",
|
|
43771
|
+
move_task: "move_task \u2014 Re-parent a task to another project and/or task list (keeps its id and history). Params: task_id (required), to_project, to_list, clear_list, version",
|
|
43598
43772
|
reschedule_task: "reschedule_task \u2014 Update deadline. Params: task_id, deadline, version",
|
|
43599
43773
|
prioritize_task: "prioritize_task \u2014 Set priority. Params: task_id, priority, version",
|
|
43600
43774
|
search_tasks: "search_tasks \u2014 Full-text search. Params: query, project_id, status, limit",
|
|
@@ -71150,6 +71324,7 @@ var REGISTERED_CANONICAL_COMMANDS = [
|
|
|
71150
71324
|
"manual",
|
|
71151
71325
|
"mcp",
|
|
71152
71326
|
"mine",
|
|
71327
|
+
"move",
|
|
71153
71328
|
"next",
|
|
71154
71329
|
"notifications",
|
|
71155
71330
|
"onboarding",
|
|
@@ -71285,6 +71460,7 @@ var REMOTE_COMMANDS = new Set([
|
|
|
71285
71460
|
"lists",
|
|
71286
71461
|
"lock",
|
|
71287
71462
|
"log-progress",
|
|
71463
|
+
"move",
|
|
71288
71464
|
"next",
|
|
71289
71465
|
"plans",
|
|
71290
71466
|
"project-rename",
|
package/dist/contracts.js
CHANGED
|
@@ -10756,7 +10756,7 @@ var init_tasks = __esm(() => {
|
|
|
10756
10756
|
// package.json
|
|
10757
10757
|
var package_default = {
|
|
10758
10758
|
name: "@hasna/todos",
|
|
10759
|
-
version: "0.11.
|
|
10759
|
+
version: "0.11.94",
|
|
10760
10760
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
10761
10761
|
type: "module",
|
|
10762
10762
|
main: "dist/index.js",
|
package/dist/index.js
CHANGED
|
@@ -10861,7 +10861,7 @@ var init_dispatches = __esm(() => {
|
|
|
10861
10861
|
// package.json
|
|
10862
10862
|
var package_default = {
|
|
10863
10863
|
name: "@hasna/todos",
|
|
10864
|
-
version: "0.11.
|
|
10864
|
+
version: "0.11.94",
|
|
10865
10865
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
10866
10866
|
type: "module",
|
|
10867
10867
|
main: "dist/index.js",
|
|
@@ -24746,7 +24746,7 @@ async function updateTask2(id, input, store) {
|
|
|
24746
24746
|
tags: input.tags ?? existing.tags,
|
|
24747
24747
|
metadata: input.metadata ?? existing.metadata,
|
|
24748
24748
|
requires_approval: input.requires_approval ?? existing.requires_approval,
|
|
24749
|
-
task_list_id: input.task_list_id
|
|
24749
|
+
task_list_id: input.task_list_id !== undefined ? input.task_list_id : existing.task_list_id
|
|
24750
24750
|
};
|
|
24751
24751
|
await store.upsert("tasks", task2);
|
|
24752
24752
|
return task2;
|
package/dist/mcp/index.js
CHANGED
|
@@ -16658,6 +16658,7 @@ var init_token_utils = __esm(() => {
|
|
|
16658
16658
|
|
|
16659
16659
|
// src/cli/cloud-router.ts
|
|
16660
16660
|
import { resolveStorageClient } from "@hasna/contracts/client/storage";
|
|
16661
|
+
import { resolve as resolvePath } from "path";
|
|
16661
16662
|
function cleanMode(value) {
|
|
16662
16663
|
const normalized = value?.trim().toLowerCase();
|
|
16663
16664
|
return normalized || null;
|
|
@@ -16940,6 +16941,39 @@ async function cloudListProjects(client) {
|
|
|
16940
16941
|
const envelope = res.raw;
|
|
16941
16942
|
return Array.isArray(envelope?.projects) ? envelope.projects : res.items;
|
|
16942
16943
|
}
|
|
16944
|
+
function cloudProjectSlug(value) {
|
|
16945
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
16946
|
+
}
|
|
16947
|
+
function cloudProjectPathBasename(value) {
|
|
16948
|
+
return value.replace(/[\\/]+$/, "").split(/[\\/]/).pop() ?? value;
|
|
16949
|
+
}
|
|
16950
|
+
function uniqueProjectMatches(projects, predicate) {
|
|
16951
|
+
return [...new Map(projects.filter(predicate).map((project) => [project.id, project])).values()];
|
|
16952
|
+
}
|
|
16953
|
+
function resolveCloudProjectRef(projects, ref) {
|
|
16954
|
+
const input = ref.trim();
|
|
16955
|
+
const normalizedRef = input.toLowerCase();
|
|
16956
|
+
const pathLike = input.startsWith(".") || input.includes("/") || input.includes("\\");
|
|
16957
|
+
const normalizedPath = pathLike ? resolvePath(input) : undefined;
|
|
16958
|
+
const slug = cloudProjectSlug(pathLike ? cloudProjectPathBasename(input) : input);
|
|
16959
|
+
const matchGroups = [
|
|
16960
|
+
uniqueProjectMatches(projects, (project) => project.id.toLowerCase() === normalizedRef),
|
|
16961
|
+
uniqueProjectMatches(projects, (project) => project.path === input || normalizedPath !== undefined && resolvePath(project.path) === normalizedPath),
|
|
16962
|
+
uniqueProjectMatches(projects, (project) => project.name.toLowerCase() === normalizedRef),
|
|
16963
|
+
uniqueProjectMatches(projects, (project) => project.task_list_id === input || cloudProjectSlug(project.name) === slug || cloudProjectSlug(cloudProjectPathBasename(project.path)) === slug),
|
|
16964
|
+
uniqueProjectMatches(projects, (project) => project.id.toLowerCase().startsWith(normalizedRef))
|
|
16965
|
+
];
|
|
16966
|
+
for (const matches of matchGroups) {
|
|
16967
|
+
if (matches.length === 1)
|
|
16968
|
+
return matches[0].id;
|
|
16969
|
+
if (matches.length > 1)
|
|
16970
|
+
throw new Error(`Project reference is ambiguous: "${input}"`);
|
|
16971
|
+
}
|
|
16972
|
+
throw new Error(`Project not found: "${input}"`);
|
|
16973
|
+
}
|
|
16974
|
+
async function cloudResolveProjectRef(client, ref) {
|
|
16975
|
+
return resolveCloudProjectRef(await cloudListProjects(client), ref);
|
|
16976
|
+
}
|
|
16943
16977
|
async function cloudAddComment(client, taskId, input) {
|
|
16944
16978
|
const raw = await client.transport.post(`/tasks/${encodeURIComponent(taskId)}/comments`, input);
|
|
16945
16979
|
const comment = raw && typeof raw === "object" && "comment" in raw ? raw.comment : raw;
|
|
@@ -16984,9 +17018,46 @@ async function cloudReleaseAgent(client, idOrName, sessionId) {
|
|
|
16984
17018
|
const env = raw ?? {};
|
|
16985
17019
|
return { agent: env.agent ?? null, released: env.released !== false };
|
|
16986
17020
|
}
|
|
16987
|
-
|
|
17021
|
+
async function cloudListTaskLists(client, projectId) {
|
|
17022
|
+
const query = projectId ? { project_id: projectId } : {};
|
|
17023
|
+
const raw = await requiredRemoteRoute(client, "/v1/task-lists", () => client.transport.get("/task-lists", { query }));
|
|
17024
|
+
const envelope = raw ?? {};
|
|
17025
|
+
if (Array.isArray(envelope.task_lists))
|
|
17026
|
+
return envelope.task_lists;
|
|
17027
|
+
if (Array.isArray(envelope.taskLists))
|
|
17028
|
+
return envelope.taskLists;
|
|
17029
|
+
return Array.isArray(raw) ? raw : [];
|
|
17030
|
+
}
|
|
17031
|
+
async function cloudResolveTaskListRef(client, ref, projectId) {
|
|
17032
|
+
const input = ref.trim();
|
|
17033
|
+
const normalizedIdRef = input.toLowerCase();
|
|
17034
|
+
if (UUID_RE.test(input) && !projectId)
|
|
17035
|
+
return normalizedIdRef;
|
|
17036
|
+
const lists = await cloudListTaskLists(client, projectId);
|
|
17037
|
+
const exactIds = lists.filter((list) => list.id.toLowerCase() === normalizedIdRef);
|
|
17038
|
+
if (exactIds.length === 1)
|
|
17039
|
+
return exactIds[0].id;
|
|
17040
|
+
if (exactIds.length > 1) {
|
|
17041
|
+
throw new Error(`Task list reference is ambiguous: "${input}"`);
|
|
17042
|
+
}
|
|
17043
|
+
const slugs = lists.filter((list) => list.slug === input);
|
|
17044
|
+
if (slugs.length === 1)
|
|
17045
|
+
return slugs[0].id;
|
|
17046
|
+
if (slugs.length > 1) {
|
|
17047
|
+
throw new Error(`Task list reference is ambiguous: "${input}"`);
|
|
17048
|
+
}
|
|
17049
|
+
const prefixes = lists.filter((list) => list.id.toLowerCase().startsWith(normalizedIdRef));
|
|
17050
|
+
if (prefixes.length === 1)
|
|
17051
|
+
return prefixes[0].id;
|
|
17052
|
+
if (prefixes.length > 1) {
|
|
17053
|
+
throw new Error(`Task list reference is ambiguous: "${input}"`);
|
|
17054
|
+
}
|
|
17055
|
+
throw new Error(`Task list not found: "${input}"`);
|
|
17056
|
+
}
|
|
17057
|
+
var UUID_RE, CLOUD_MODES, VALID_STORAGE_MODES, completionCapabilityCache;
|
|
16988
17058
|
var init_cloud_router = __esm(() => {
|
|
16989
17059
|
init_redaction();
|
|
17060
|
+
UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
16990
17061
|
CLOUD_MODES = new Set(["self_hosted", "cloud", "remote", "hybrid"]);
|
|
16991
17062
|
VALID_STORAGE_MODES = new Set(["local", ...CLOUD_MODES]);
|
|
16992
17063
|
completionCapabilityCache = new Map;
|
|
@@ -17273,6 +17344,17 @@ ${task.description}` : null
|
|
|
17273
17344
|
patch.estimated_minutes = estimate;
|
|
17274
17345
|
if (deadline !== undefined)
|
|
17275
17346
|
patch.due_at = deadline;
|
|
17347
|
+
if (typeof patch.project_id === "string" && patch.project_id) {
|
|
17348
|
+
patch.project_id = await cloudResolveProjectRef(cloud, patch.project_id);
|
|
17349
|
+
}
|
|
17350
|
+
if (typeof patch.task_list_id === "string" && patch.task_list_id) {
|
|
17351
|
+
let scope = typeof patch.project_id === "string" ? patch.project_id : undefined;
|
|
17352
|
+
if (!scope) {
|
|
17353
|
+
const current = await cloudGetTask(cloud, task_id2);
|
|
17354
|
+
scope = current?.project_id ?? undefined;
|
|
17355
|
+
}
|
|
17356
|
+
patch.task_list_id = await cloudResolveTaskListRef(cloud, patch.task_list_id, scope);
|
|
17357
|
+
}
|
|
17276
17358
|
if (version2 !== undefined)
|
|
17277
17359
|
patch.version = version2;
|
|
17278
17360
|
const updated = await cloudUpdateTask(cloud, task_id2, patch);
|
|
@@ -23286,6 +23368,63 @@ function registerTaskProjectTools(server, ctx) {
|
|
|
23286
23368
|
}
|
|
23287
23369
|
});
|
|
23288
23370
|
}
|
|
23371
|
+
if (shouldRegisterTool("move_task")) {
|
|
23372
|
+
server.tool("move_task", "Re-parent a task to another project and/or task list, preserving its id and history. " + "A task list is project-scoped, so moving to a new project detaches the old list unless to_list is given.", {
|
|
23373
|
+
task_id: exports_external.string().describe("Task ID"),
|
|
23374
|
+
to_project: exports_external.string().optional().describe("Destination project ID, slug, or path"),
|
|
23375
|
+
to_list: exports_external.string().optional().describe("Destination task list (UUID, or slug resolved in the destination project)"),
|
|
23376
|
+
clear_list: exports_external.boolean().optional().describe("Detach from its task list (set task_list_id to null)"),
|
|
23377
|
+
version: exports_external.number().optional().describe("Expected version for optimistic locking")
|
|
23378
|
+
}, async ({ task_id, to_project, to_list, clear_list, version }) => {
|
|
23379
|
+
try {
|
|
23380
|
+
if (!to_project && !to_list && !clear_list) {
|
|
23381
|
+
throw new Error("Nothing to move: pass to_project, to_list, or clear_list.");
|
|
23382
|
+
}
|
|
23383
|
+
if (to_list && clear_list) {
|
|
23384
|
+
throw new Error("Use either to_list or clear_list, not both.");
|
|
23385
|
+
}
|
|
23386
|
+
const cloud = getTodosCloudClient();
|
|
23387
|
+
if (cloud) {
|
|
23388
|
+
const current2 = await cloudGetTask(cloud, task_id);
|
|
23389
|
+
if (!current2)
|
|
23390
|
+
throw new Error(`Task not found: ${task_id}`);
|
|
23391
|
+
const targetProjectId2 = to_project ? await cloudResolveProjectRef(cloud, to_project) : undefined;
|
|
23392
|
+
const scope = targetProjectId2 ?? current2.project_id ?? undefined;
|
|
23393
|
+
const patch = {};
|
|
23394
|
+
if (targetProjectId2 !== undefined)
|
|
23395
|
+
patch.project_id = targetProjectId2;
|
|
23396
|
+
if (to_list)
|
|
23397
|
+
patch.task_list_id = await cloudResolveTaskListRef(cloud, to_list, scope);
|
|
23398
|
+
else if (clear_list)
|
|
23399
|
+
patch.task_list_id = null;
|
|
23400
|
+
else if (targetProjectId2 && targetProjectId2 !== current2.project_id)
|
|
23401
|
+
patch.task_list_id = null;
|
|
23402
|
+
if (version !== undefined)
|
|
23403
|
+
patch.version = version;
|
|
23404
|
+
const task2 = await cloudUpdateTask(cloud, task_id, patch);
|
|
23405
|
+
return { content: [{ type: "text", text: formatTask(task2) }] };
|
|
23406
|
+
}
|
|
23407
|
+
const resolvedId = resolveId(task_id);
|
|
23408
|
+
const current = getTask(resolvedId);
|
|
23409
|
+
if (!current)
|
|
23410
|
+
throw new Error(`Task not found: ${task_id}`);
|
|
23411
|
+
const targetProjectId = to_project ? resolveId(to_project, "projects") : undefined;
|
|
23412
|
+
const updates = {};
|
|
23413
|
+
if (targetProjectId !== undefined)
|
|
23414
|
+
updates.project_id = targetProjectId;
|
|
23415
|
+
if (to_list)
|
|
23416
|
+
updates.task_list_id = resolveId(to_list, "task_lists");
|
|
23417
|
+
else if (clear_list)
|
|
23418
|
+
updates.task_list_id = null;
|
|
23419
|
+
else if (targetProjectId && targetProjectId !== current.project_id)
|
|
23420
|
+
updates.task_list_id = null;
|
|
23421
|
+
const task = updateWithOptionalVersion(resolvedId, updates, version);
|
|
23422
|
+
return { content: [{ type: "text", text: formatTask(task) }] };
|
|
23423
|
+
} catch (e) {
|
|
23424
|
+
return { content: [{ type: "text", text: formatError(e) }], isError: true };
|
|
23425
|
+
}
|
|
23426
|
+
});
|
|
23427
|
+
}
|
|
23289
23428
|
if (shouldRegisterTool("reschedule_task")) {
|
|
23290
23429
|
server.tool("reschedule_task", "Update a task's deadline.", {
|
|
23291
23430
|
task_id: exports_external.string().describe("Task ID"),
|
|
@@ -27608,6 +27747,7 @@ function registerTaskMetaTools(server, ctx) {
|
|
|
27608
27747
|
complete_task: "complete_task \u2014 Mark task completed. Params: task_id, confidence, completed_at, version",
|
|
27609
27748
|
cancel_task: "cancel_task \u2014 Cancel a task. Params: task_id, version",
|
|
27610
27749
|
reassign_task: "reassign_task \u2014 Change task assignee. Params: task_id, new_assignee, version",
|
|
27750
|
+
move_task: "move_task \u2014 Re-parent a task to another project and/or task list (keeps its id and history). Params: task_id (required), to_project, to_list, clear_list, version",
|
|
27611
27751
|
reschedule_task: "reschedule_task \u2014 Update deadline. Params: task_id, deadline, version",
|
|
27612
27752
|
prioritize_task: "prioritize_task \u2014 Set priority. Params: task_id, priority, version",
|
|
27613
27753
|
search_tasks: "search_tasks \u2014 Full-text search. Params: query, project_id, status, limit",
|
|
@@ -30647,7 +30787,7 @@ var package_default;
|
|
|
30647
30787
|
var init_package = __esm(() => {
|
|
30648
30788
|
package_default = {
|
|
30649
30789
|
name: "@hasna/todos",
|
|
30650
|
-
version: "0.11.
|
|
30790
|
+
version: "0.11.94",
|
|
30651
30791
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
30652
30792
|
type: "module",
|
|
30653
30793
|
main: "dist/index.js",
|
|
@@ -42930,7 +43070,7 @@ async function updateTask2(id, input, store) {
|
|
|
42930
43070
|
tags: input.tags ?? existing.tags,
|
|
42931
43071
|
metadata: input.metadata ?? existing.metadata,
|
|
42932
43072
|
requires_approval: input.requires_approval ?? existing.requires_approval,
|
|
42933
|
-
task_list_id: input.task_list_id
|
|
43073
|
+
task_list_id: input.task_list_id !== undefined ? input.task_list_id : existing.task_list_id
|
|
42934
43074
|
};
|
|
42935
43075
|
await store.upsert("tasks", task2);
|
|
42936
43076
|
return task2;
|
|
@@ -43875,6 +44015,8 @@ function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
|
43875
44015
|
status: { type: "string" },
|
|
43876
44016
|
priority: { type: "string" },
|
|
43877
44017
|
assigned_to: { type: "string" },
|
|
44018
|
+
project_id: { type: "string", nullable: true },
|
|
44019
|
+
task_list_id: { type: "string", nullable: true },
|
|
43878
44020
|
version: { type: "number" }
|
|
43879
44021
|
}
|
|
43880
44022
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-crud.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-crud.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-crud.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-crud.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAejD,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,QAkW5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-meta-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-meta-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,UAAU,eAAe;IACvB,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CACzC;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"task-meta-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/task-meta-tools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,UAAU,eAAe;IACvB,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CACzC;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,QAoO5E"}
|
|
@@ -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;
|
|
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;AA2JjD,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,QAy7FlF"}
|
package/dist/mcp.js
CHANGED
|
@@ -41,7 +41,7 @@ var __require = import.meta.require;
|
|
|
41
41
|
// package.json
|
|
42
42
|
var package_default = {
|
|
43
43
|
name: "@hasna/todos",
|
|
44
|
-
version: "0.11.
|
|
44
|
+
version: "0.11.94",
|
|
45
45
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
46
46
|
type: "module",
|
|
47
47
|
main: "dist/index.js",
|
package/dist/registry.js
CHANGED
|
@@ -10756,7 +10756,7 @@ var init_tasks = __esm(() => {
|
|
|
10756
10756
|
// package.json
|
|
10757
10757
|
var package_default = {
|
|
10758
10758
|
name: "@hasna/todos",
|
|
10759
|
-
version: "0.11.
|
|
10759
|
+
version: "0.11.94",
|
|
10760
10760
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
10761
10761
|
type: "module",
|
|
10762
10762
|
main: "dist/index.js",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@hasna/todos",
|
|
3
|
-
"packageVersion": "0.11.
|
|
3
|
+
"packageVersion": "0.11.94",
|
|
4
4
|
"repository": "https://github.com/hasna/todos.git",
|
|
5
|
-
"gitCommit": "
|
|
6
|
-
"gitTree": "
|
|
7
|
-
"sourceTreeSha256": "
|
|
8
|
-
"generatedAt": "2026-07-
|
|
5
|
+
"gitCommit": "a98841fdf3dcaae217b6e0a3128f85893f01fab9",
|
|
6
|
+
"gitTree": "6b7899a49b09bccf94a002580d408bac8194fdcd",
|
|
7
|
+
"sourceTreeSha256": "e00fb3da590c92f542c8c06d9fee1eb77293edaa1d17748147008863bd8a8e80",
|
|
8
|
+
"generatedAt": "2026-07-20T11:49:06.000Z"
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v1.generated.d.ts","sourceRoot":"","sources":["../../src/sdk/v1.generated.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v1.generated.d.ts","sourceRoot":"","sources":["../../src/sdk/v1.generated.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -70,7 +70,7 @@ var package_default;
|
|
|
70
70
|
var init_package = __esm(() => {
|
|
71
71
|
package_default = {
|
|
72
72
|
name: "@hasna/todos",
|
|
73
|
-
version: "0.11.
|
|
73
|
+
version: "0.11.94",
|
|
74
74
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
75
75
|
type: "module",
|
|
76
76
|
main: "dist/index.js",
|
|
@@ -1947,7 +1947,7 @@ async function updateTask(id, input, store) {
|
|
|
1947
1947
|
tags: input.tags ?? existing.tags,
|
|
1948
1948
|
metadata: input.metadata ?? existing.metadata,
|
|
1949
1949
|
requires_approval: input.requires_approval ?? existing.requires_approval,
|
|
1950
|
-
task_list_id: input.task_list_id
|
|
1950
|
+
task_list_id: input.task_list_id !== undefined ? input.task_list_id : existing.task_list_id
|
|
1951
1951
|
};
|
|
1952
1952
|
await store.upsert("tasks", task);
|
|
1953
1953
|
return task;
|
|
@@ -16082,6 +16082,8 @@ function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
|
16082
16082
|
status: { type: "string" },
|
|
16083
16083
|
priority: { type: "string" },
|
|
16084
16084
|
assigned_to: { type: "string" },
|
|
16085
|
+
project_id: { type: "string", nullable: true },
|
|
16086
|
+
task_list_id: { type: "string", nullable: true },
|
|
16085
16087
|
version: { type: "number" }
|
|
16086
16088
|
}
|
|
16087
16089
|
},
|
|
@@ -39120,6 +39122,7 @@ var init_token_utils = __esm(() => {
|
|
|
39120
39122
|
|
|
39121
39123
|
// src/cli/cloud-router.ts
|
|
39122
39124
|
import { resolveStorageClient } from "@hasna/contracts/client/storage";
|
|
39125
|
+
import { resolve as resolvePath } from "path";
|
|
39123
39126
|
function cleanMode(value) {
|
|
39124
39127
|
const normalized = value?.trim().toLowerCase();
|
|
39125
39128
|
return normalized || null;
|
|
@@ -39402,6 +39405,39 @@ async function cloudListProjects(client) {
|
|
|
39402
39405
|
const envelope = res.raw;
|
|
39403
39406
|
return Array.isArray(envelope?.projects) ? envelope.projects : res.items;
|
|
39404
39407
|
}
|
|
39408
|
+
function cloudProjectSlug(value) {
|
|
39409
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
39410
|
+
}
|
|
39411
|
+
function cloudProjectPathBasename(value) {
|
|
39412
|
+
return value.replace(/[\\/]+$/, "").split(/[\\/]/).pop() ?? value;
|
|
39413
|
+
}
|
|
39414
|
+
function uniqueProjectMatches(projects, predicate) {
|
|
39415
|
+
return [...new Map(projects.filter(predicate).map((project) => [project.id, project])).values()];
|
|
39416
|
+
}
|
|
39417
|
+
function resolveCloudProjectRef(projects, ref) {
|
|
39418
|
+
const input = ref.trim();
|
|
39419
|
+
const normalizedRef = input.toLowerCase();
|
|
39420
|
+
const pathLike = input.startsWith(".") || input.includes("/") || input.includes("\\");
|
|
39421
|
+
const normalizedPath = pathLike ? resolvePath(input) : undefined;
|
|
39422
|
+
const slug = cloudProjectSlug(pathLike ? cloudProjectPathBasename(input) : input);
|
|
39423
|
+
const matchGroups = [
|
|
39424
|
+
uniqueProjectMatches(projects, (project) => project.id.toLowerCase() === normalizedRef),
|
|
39425
|
+
uniqueProjectMatches(projects, (project) => project.path === input || normalizedPath !== undefined && resolvePath(project.path) === normalizedPath),
|
|
39426
|
+
uniqueProjectMatches(projects, (project) => project.name.toLowerCase() === normalizedRef),
|
|
39427
|
+
uniqueProjectMatches(projects, (project) => project.task_list_id === input || cloudProjectSlug(project.name) === slug || cloudProjectSlug(cloudProjectPathBasename(project.path)) === slug),
|
|
39428
|
+
uniqueProjectMatches(projects, (project) => project.id.toLowerCase().startsWith(normalizedRef))
|
|
39429
|
+
];
|
|
39430
|
+
for (const matches of matchGroups) {
|
|
39431
|
+
if (matches.length === 1)
|
|
39432
|
+
return matches[0].id;
|
|
39433
|
+
if (matches.length > 1)
|
|
39434
|
+
throw new Error(`Project reference is ambiguous: "${input}"`);
|
|
39435
|
+
}
|
|
39436
|
+
throw new Error(`Project not found: "${input}"`);
|
|
39437
|
+
}
|
|
39438
|
+
async function cloudResolveProjectRef(client, ref) {
|
|
39439
|
+
return resolveCloudProjectRef(await cloudListProjects(client), ref);
|
|
39440
|
+
}
|
|
39405
39441
|
async function cloudAddComment(client, taskId, input) {
|
|
39406
39442
|
const raw = await client.transport.post(`/tasks/${encodeURIComponent(taskId)}/comments`, input);
|
|
39407
39443
|
const comment = raw && typeof raw === "object" && "comment" in raw ? raw.comment : raw;
|
|
@@ -39446,9 +39482,46 @@ async function cloudReleaseAgent(client, idOrName, sessionId) {
|
|
|
39446
39482
|
const env = raw ?? {};
|
|
39447
39483
|
return { agent: env.agent ?? null, released: env.released !== false };
|
|
39448
39484
|
}
|
|
39449
|
-
|
|
39485
|
+
async function cloudListTaskLists(client, projectId) {
|
|
39486
|
+
const query = projectId ? { project_id: projectId } : {};
|
|
39487
|
+
const raw = await requiredRemoteRoute(client, "/v1/task-lists", () => client.transport.get("/task-lists", { query }));
|
|
39488
|
+
const envelope = raw ?? {};
|
|
39489
|
+
if (Array.isArray(envelope.task_lists))
|
|
39490
|
+
return envelope.task_lists;
|
|
39491
|
+
if (Array.isArray(envelope.taskLists))
|
|
39492
|
+
return envelope.taskLists;
|
|
39493
|
+
return Array.isArray(raw) ? raw : [];
|
|
39494
|
+
}
|
|
39495
|
+
async function cloudResolveTaskListRef(client, ref, projectId) {
|
|
39496
|
+
const input = ref.trim();
|
|
39497
|
+
const normalizedIdRef = input.toLowerCase();
|
|
39498
|
+
if (UUID_RE.test(input) && !projectId)
|
|
39499
|
+
return normalizedIdRef;
|
|
39500
|
+
const lists = await cloudListTaskLists(client, projectId);
|
|
39501
|
+
const exactIds = lists.filter((list) => list.id.toLowerCase() === normalizedIdRef);
|
|
39502
|
+
if (exactIds.length === 1)
|
|
39503
|
+
return exactIds[0].id;
|
|
39504
|
+
if (exactIds.length > 1) {
|
|
39505
|
+
throw new Error(`Task list reference is ambiguous: "${input}"`);
|
|
39506
|
+
}
|
|
39507
|
+
const slugs = lists.filter((list) => list.slug === input);
|
|
39508
|
+
if (slugs.length === 1)
|
|
39509
|
+
return slugs[0].id;
|
|
39510
|
+
if (slugs.length > 1) {
|
|
39511
|
+
throw new Error(`Task list reference is ambiguous: "${input}"`);
|
|
39512
|
+
}
|
|
39513
|
+
const prefixes = lists.filter((list) => list.id.toLowerCase().startsWith(normalizedIdRef));
|
|
39514
|
+
if (prefixes.length === 1)
|
|
39515
|
+
return prefixes[0].id;
|
|
39516
|
+
if (prefixes.length > 1) {
|
|
39517
|
+
throw new Error(`Task list reference is ambiguous: "${input}"`);
|
|
39518
|
+
}
|
|
39519
|
+
throw new Error(`Task list not found: "${input}"`);
|
|
39520
|
+
}
|
|
39521
|
+
var UUID_RE, CLOUD_MODES, VALID_STORAGE_MODES, completionCapabilityCache;
|
|
39450
39522
|
var init_cloud_router = __esm(() => {
|
|
39451
39523
|
init_redaction();
|
|
39524
|
+
UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
39452
39525
|
CLOUD_MODES = new Set(["self_hosted", "cloud", "remote", "hybrid"]);
|
|
39453
39526
|
VALID_STORAGE_MODES = new Set(["local", ...CLOUD_MODES]);
|
|
39454
39527
|
completionCapabilityCache = new Map;
|
|
@@ -39735,6 +39808,17 @@ ${task.description}` : null
|
|
|
39735
39808
|
patch.estimated_minutes = estimate;
|
|
39736
39809
|
if (deadline !== undefined)
|
|
39737
39810
|
patch.due_at = deadline;
|
|
39811
|
+
if (typeof patch.project_id === "string" && patch.project_id) {
|
|
39812
|
+
patch.project_id = await cloudResolveProjectRef(cloud, patch.project_id);
|
|
39813
|
+
}
|
|
39814
|
+
if (typeof patch.task_list_id === "string" && patch.task_list_id) {
|
|
39815
|
+
let scope = typeof patch.project_id === "string" ? patch.project_id : undefined;
|
|
39816
|
+
if (!scope) {
|
|
39817
|
+
const current = await cloudGetTask(cloud, task_id2);
|
|
39818
|
+
scope = current?.project_id ?? undefined;
|
|
39819
|
+
}
|
|
39820
|
+
patch.task_list_id = await cloudResolveTaskListRef(cloud, patch.task_list_id, scope);
|
|
39821
|
+
}
|
|
39738
39822
|
if (version3 !== undefined)
|
|
39739
39823
|
patch.version = version3;
|
|
39740
39824
|
const updated = await cloudUpdateTask(cloud, task_id2, patch);
|
|
@@ -45748,6 +45832,63 @@ function registerTaskProjectTools(server, ctx) {
|
|
|
45748
45832
|
}
|
|
45749
45833
|
});
|
|
45750
45834
|
}
|
|
45835
|
+
if (shouldRegisterTool("move_task")) {
|
|
45836
|
+
server.tool("move_task", "Re-parent a task to another project and/or task list, preserving its id and history. " + "A task list is project-scoped, so moving to a new project detaches the old list unless to_list is given.", {
|
|
45837
|
+
task_id: exports_external.string().describe("Task ID"),
|
|
45838
|
+
to_project: exports_external.string().optional().describe("Destination project ID, slug, or path"),
|
|
45839
|
+
to_list: exports_external.string().optional().describe("Destination task list (UUID, or slug resolved in the destination project)"),
|
|
45840
|
+
clear_list: exports_external.boolean().optional().describe("Detach from its task list (set task_list_id to null)"),
|
|
45841
|
+
version: exports_external.number().optional().describe("Expected version for optimistic locking")
|
|
45842
|
+
}, async ({ task_id, to_project, to_list, clear_list, version: version2 }) => {
|
|
45843
|
+
try {
|
|
45844
|
+
if (!to_project && !to_list && !clear_list) {
|
|
45845
|
+
throw new Error("Nothing to move: pass to_project, to_list, or clear_list.");
|
|
45846
|
+
}
|
|
45847
|
+
if (to_list && clear_list) {
|
|
45848
|
+
throw new Error("Use either to_list or clear_list, not both.");
|
|
45849
|
+
}
|
|
45850
|
+
const cloud = getTodosCloudClient();
|
|
45851
|
+
if (cloud) {
|
|
45852
|
+
const current2 = await cloudGetTask(cloud, task_id);
|
|
45853
|
+
if (!current2)
|
|
45854
|
+
throw new Error(`Task not found: ${task_id}`);
|
|
45855
|
+
const targetProjectId2 = to_project ? await cloudResolveProjectRef(cloud, to_project) : undefined;
|
|
45856
|
+
const scope = targetProjectId2 ?? current2.project_id ?? undefined;
|
|
45857
|
+
const patch = {};
|
|
45858
|
+
if (targetProjectId2 !== undefined)
|
|
45859
|
+
patch.project_id = targetProjectId2;
|
|
45860
|
+
if (to_list)
|
|
45861
|
+
patch.task_list_id = await cloudResolveTaskListRef(cloud, to_list, scope);
|
|
45862
|
+
else if (clear_list)
|
|
45863
|
+
patch.task_list_id = null;
|
|
45864
|
+
else if (targetProjectId2 && targetProjectId2 !== current2.project_id)
|
|
45865
|
+
patch.task_list_id = null;
|
|
45866
|
+
if (version2 !== undefined)
|
|
45867
|
+
patch.version = version2;
|
|
45868
|
+
const task2 = await cloudUpdateTask(cloud, task_id, patch);
|
|
45869
|
+
return { content: [{ type: "text", text: formatTask(task2) }] };
|
|
45870
|
+
}
|
|
45871
|
+
const resolvedId = resolveId(task_id);
|
|
45872
|
+
const current = getTask(resolvedId);
|
|
45873
|
+
if (!current)
|
|
45874
|
+
throw new Error(`Task not found: ${task_id}`);
|
|
45875
|
+
const targetProjectId = to_project ? resolveId(to_project, "projects") : undefined;
|
|
45876
|
+
const updates = {};
|
|
45877
|
+
if (targetProjectId !== undefined)
|
|
45878
|
+
updates.project_id = targetProjectId;
|
|
45879
|
+
if (to_list)
|
|
45880
|
+
updates.task_list_id = resolveId(to_list, "task_lists");
|
|
45881
|
+
else if (clear_list)
|
|
45882
|
+
updates.task_list_id = null;
|
|
45883
|
+
else if (targetProjectId && targetProjectId !== current.project_id)
|
|
45884
|
+
updates.task_list_id = null;
|
|
45885
|
+
const task = updateWithOptionalVersion(resolvedId, updates, version2);
|
|
45886
|
+
return { content: [{ type: "text", text: formatTask(task) }] };
|
|
45887
|
+
} catch (e) {
|
|
45888
|
+
return { content: [{ type: "text", text: formatError2(e) }], isError: true };
|
|
45889
|
+
}
|
|
45890
|
+
});
|
|
45891
|
+
}
|
|
45751
45892
|
if (shouldRegisterTool("reschedule_task")) {
|
|
45752
45893
|
server.tool("reschedule_task", "Update a task's deadline.", {
|
|
45753
45894
|
task_id: exports_external.string().describe("Task ID"),
|
|
@@ -73450,6 +73591,7 @@ function registerTaskMetaTools(server, ctx) {
|
|
|
73450
73591
|
complete_task: "complete_task \u2014 Mark task completed. Params: task_id, confidence, completed_at, version",
|
|
73451
73592
|
cancel_task: "cancel_task \u2014 Cancel a task. Params: task_id, version",
|
|
73452
73593
|
reassign_task: "reassign_task \u2014 Change task assignee. Params: task_id, new_assignee, version",
|
|
73594
|
+
move_task: "move_task \u2014 Re-parent a task to another project and/or task list (keeps its id and history). Params: task_id (required), to_project, to_list, clear_list, version",
|
|
73453
73595
|
reschedule_task: "reschedule_task \u2014 Update deadline. Params: task_id, deadline, version",
|
|
73454
73596
|
prioritize_task: "prioritize_task \u2014 Set priority. Params: task_id, priority, version",
|
|
73455
73597
|
search_tasks: "search_tasks \u2014 Full-text search. Params: query, project_id, status, limit",
|
package/dist/server/openapi.d.ts
CHANGED
|
@@ -261,6 +261,14 @@ export declare function buildV1OpenApiDocument(version?: string): {
|
|
|
261
261
|
assigned_to: {
|
|
262
262
|
type: string;
|
|
263
263
|
};
|
|
264
|
+
project_id: {
|
|
265
|
+
type: string;
|
|
266
|
+
nullable: boolean;
|
|
267
|
+
};
|
|
268
|
+
task_list_id: {
|
|
269
|
+
type: string;
|
|
270
|
+
nullable: boolean;
|
|
271
|
+
};
|
|
264
272
|
version: {
|
|
265
273
|
type: string;
|
|
266
274
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AAsFA,wBAAgB,sBAAsB,CAAC,OAAO,SAAsB
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AAsFA,wBAAgB,sBAAsB,CAAC,OAAO,SAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAikBnE"}
|
package/dist/storage.js
CHANGED
|
@@ -13030,7 +13030,7 @@ async function updateTask2(id, input, store) {
|
|
|
13030
13030
|
tags: input.tags ?? existing.tags,
|
|
13031
13031
|
metadata: input.metadata ?? existing.metadata,
|
|
13032
13032
|
requires_approval: input.requires_approval ?? existing.requires_approval,
|
|
13033
|
-
task_list_id: input.task_list_id
|
|
13033
|
+
task_list_id: input.task_list_id !== undefined ? input.task_list_id : existing.task_list_id
|
|
13034
13034
|
};
|
|
13035
13035
|
await store.upsert("tasks", task);
|
|
13036
13036
|
return task;
|