@agentistics/mcp 2.49.1 → 2.50.0
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/agentistics-mcp.js +5 -7
- package/package.json +1 -1
package/dist/agentistics-mcp.js
CHANGED
|
@@ -604,7 +604,7 @@ var TOOLS = [
|
|
|
604
604
|
},
|
|
605
605
|
{
|
|
606
606
|
name: "agentistics_task_subtask",
|
|
607
|
-
description: "BETA — the task board is new and still changing; its shapes may move between releases. Add a subtask, or change one. Pass `title` to add; pass `id` with `done`, `status`, `
|
|
607
|
+
description: "BETA — the task board is new and still changing; its shapes may move between releases. Add a subtask, or change one. Pass `title` to add; pass `id` with `done`, `status`, `dueDate`, `startDate`, `blockedBy` or `parentGroupId` to edit one. `startedAt`/`deliveredAt` are system-stamped facts (when real work began / when this piece reached `done`) and are never set through this tool — they are read back on the subtask record. A subtask carries the same columns its parent does; its own cost, tokens, rounds and harness are rolled up from the sessions filed under it — the PARENT task's rollup is the sum of all its subtasks' sessions. A subtask CAN be blocked by another subtask of the SAME parent (pass `blockedBy` as the full list of sibling subtask ids that must be `done` first; a sibling outside this task, or the subtask itself, is dropped rather than accepted) — this is separate from agentistics_task_blocked_by, which blocks a whole TASK on other tasks. **`done` REQUIRES the subtask to have at least one session filed under it** and is refused (422, `done_needs_session`) without one — EXCEPT for a group MEMBER (`parentGroupId` set), which can never hold a session of its own (see below) and therefore reaches `done` through this same edit with no session required; a GROUP itself (`isGroup: true`) and an ordinary loose subtask both still need one. **The moment every one of a task's top-level subtasks (loose subtasks and groups — a group's own members never count separately) reaches `done`, the parent task auto-delivers too.** To put a session ON a subtask use agentistics_task_session with `subtaskId` — a subtask holds ANY NUMBER of sessions, so the link lives on the session, not in a field here. **SUBTASK GROUPS are a real hierarchy level, not a label**: pass `isGroup: true` with `title` to create a GROUP — a peer row that CAN hold a session, exactly like a loose subtask. Pass `id` (a subtask) with `parentGroupId` (a group's own subtask id, from the SAME parent task) to make it a MEMBER of that group — join with the group's id, leave with `parentGroupId: ''`. A refused reference (the id names no subtask, names one that is not `isGroup: true`, names a different task, or the subtask being patched is itself a group) is refused as `invalid_group` (422). **Joining a group is ALSO refused (422, `subtask_has_sessions`) when the subtask already has a session filed on it** — a member gets no rollup bucket of its own, so that session's cost would silently drop out of every visible breakdown while the task's own total kept counting it; detach the session first. **A MEMBER can never hold a session of its own** — filing on one is refused by agentistics_task_session with `subtask_in_group` (422); only the group itself accounts for a session, and a member's own status/dates/comments still exist and feed the group's progress percentage.",
|
|
608
608
|
inputSchema: {
|
|
609
609
|
type: "object",
|
|
610
610
|
properties: {
|
|
@@ -619,7 +619,6 @@ var TOOLS = [
|
|
|
619
619
|
type: "string",
|
|
620
620
|
enum: ["backlog", "todo", "in_progress", "blocked", "in_review", "done", "abandoned"]
|
|
621
621
|
},
|
|
622
|
-
assignee: { type: "string" },
|
|
623
622
|
dueDate: { type: "string" },
|
|
624
623
|
startDate: { type: "string" },
|
|
625
624
|
blockedBy: {
|
|
@@ -695,7 +694,7 @@ var TOOLS = [
|
|
|
695
694
|
},
|
|
696
695
|
{
|
|
697
696
|
name: "agentistics_task_activity",
|
|
698
|
-
description: "BETA — the task board is new and still changing; its shapes may move between releases. What has been HAPPENING, newest first — status moves, claims, releases, priority
|
|
697
|
+
description: "BETA — the task board is new and still changing; its shapes may move between releases. What has been HAPPENING, newest first — status moves, claims, releases, priority changes, sessions filed. Pass `ref` for one task, or nothing for the whole board. On a board several agents drive this is how you find out what the others did without asking them.",
|
|
699
698
|
inputSchema: {
|
|
700
699
|
type: "object",
|
|
701
700
|
properties: { ref: { type: "string" }, limit: { type: "number" } },
|
|
@@ -704,7 +703,7 @@ var TOOLS = [
|
|
|
704
703
|
},
|
|
705
704
|
{
|
|
706
705
|
name: "agentistics_task_edit",
|
|
707
|
-
description: "BETA — the task board is new and still changing; its shapes may move between releases. Set a task's fields: `title`, `detail`, `priority` (urgent | high | medium | low | none), `
|
|
706
|
+
description: "BETA — the task board is new and still changing; its shapes may move between releases. Set a task's fields: `title`, `detail`, `priority` (urgent | high | medium | low | none), `dueDate` / `startDate` (yyyy-mm-dd), `labels`. An absent field is left alone; an EMPTY STRING clears it. `priority` defaults to `none`, which means 'nobody has said' and is not the same as `low`. `startedAt`/`deliveredAt` are system-stamped facts and are never set through this tool. Pass `actor` so the change is recorded against you in the activity log.",
|
|
708
707
|
inputSchema: {
|
|
709
708
|
type: "object",
|
|
710
709
|
properties: {
|
|
@@ -712,7 +711,6 @@ var TOOLS = [
|
|
|
712
711
|
title: { type: "string" },
|
|
713
712
|
detail: { type: "string" },
|
|
714
713
|
priority: { type: "string", enum: ["urgent", "high", "medium", "low", "none"] },
|
|
715
|
-
assignee: { type: "string" },
|
|
716
714
|
dueDate: { type: "string" },
|
|
717
715
|
startDate: { type: "string" },
|
|
718
716
|
labels: { type: "array", items: { type: "string" } },
|
|
@@ -1018,7 +1016,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
1018
1016
|
}
|
|
1019
1017
|
case "agentistics_task_subtask": {
|
|
1020
1018
|
const a = args;
|
|
1021
|
-
const cols = ["status", "
|
|
1019
|
+
const cols = ["status", "dueDate", "startDate", "title", "parentGroupId"];
|
|
1022
1020
|
const named = cols.filter((c) => typeof a?.[c] === "string");
|
|
1023
1021
|
const blockedBy = Array.isArray(a?.blockedBy) ? { blockedBy: a.blockedBy } : {};
|
|
1024
1022
|
const payload = a?.id !== undefined ? named.length > 0 || Array.isArray(a?.blockedBy) ? { id: a.id, ...Object.fromEntries(named.map((c) => [c, a[c]])), ...blockedBy } : { id: a.id, done: a?.done === true } : { title: a?.title, ...a?.isGroup === true ? { isGroup: true } : {} };
|
|
@@ -1076,7 +1074,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
1076
1074
|
const a = args;
|
|
1077
1075
|
const ref = encodeURIComponent(String(a?.ref ?? ""));
|
|
1078
1076
|
const patch = {};
|
|
1079
|
-
for (const f of ["title", "detail", "priority", "
|
|
1077
|
+
for (const f of ["title", "detail", "priority", "dueDate", "startDate", "actor"]) {
|
|
1080
1078
|
if (typeof a?.[f] === "string")
|
|
1081
1079
|
patch[f] = a[f];
|
|
1082
1080
|
}
|