@oneie/mcp 0.5.5 → 0.6.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/index.d.ts CHANGED
@@ -13,18 +13,31 @@ export { fnTools } from "./tools/fn.js";
13
13
  export { seoTools } from "./tools/seo.js";
14
14
  export { viewsTools } from "./tools/views.js";
15
15
  export { workflowTools } from "./tools/workflow.js";
16
+ export { tasksTools } from "./tools/tasks.js";
16
17
  export declare const MCP_VERSION: string;
17
18
  export declare const MCP_TOOLS: {
18
19
  substrate: readonly ["signal", "ask", "mark", "warn", "fade", "follow", "select", "recall", "reveal", "forget", "frontier", "know", "highways", "groups", "actors", "things", "paths", "events", "learning"];
19
- lifecycle: readonly ["auth_agent", "tasks_mine", "tasks_claim", "tasks_link", "sync_agent", "publish_agent", "pull_agent", "unpublish_agent", "list_agents", "agent_history", "rollback_agent", "discover_skill", "register", "pay", "list_skills", "unimport_skill", "own_me", "skill_eval"];
20
+ lifecycle: readonly ["auth_agent", "tasks_mine", "tasks_claim", "tasks_link", "sync_agent", "publish_agent", "pull_agent", "unpublish_agent", "list_agents", "agent_history", "rollback_agent", "discover_skill", "register", "pay", "list_skills", "unimport_skill", "own_me", "skill_eval", "tasks_everywhere"];
20
21
  observability: readonly ["stats", "health", "revenue", "frontiers_global", "export_units", "export_highways", "ingest_event", "chat_turn"];
21
22
  discovery: readonly ["scaffold_agent", "list_presets", "get_agent"];
22
23
  social: readonly ["social_list_posts", "social_create_post", "social_accounts"];
23
24
  video: readonly ["create_room", "delete_room", "contact_call", "invite_to_call", "schedule_webinar", "create_session", "quick_call", "start_recording", "start_stream", "video_summary", "get_room_status"];
24
- broadcast: readonly ["broadcast_create", "broadcast_list", "broadcast_get", "broadcast_send", "newsletter_update"];
25
+ broadcast: readonly ["broadcast_create", "broadcast_list", "broadcast_get", "broadcast_send", "newsletter_update", "segment_list", "segment_get", "segment_preview"];
25
26
  messaging: readonly ["message", "chat_send", "chat_broadcast"];
26
27
  seo: readonly ["seo_backlinks", "seo_ai_visibility", "seo_research_keywords", "seo_serp", "seo_keyword_metrics", "seo_gsc"];
27
28
  views: readonly ["create_view", "list_views"];
28
- workflow: readonly ["workflow_list", "workflow_get", "workflow_apply_diff", "workflow_run", "workflow_runs"];
29
+ workflow: readonly ["workflow_list", "workflow_get", "workflow_apply_diff", "workflow_run", "workflow_runs", "workflow_validate", "workflow_resolve"];
30
+ tasks: readonly ["tasks_list", "tasks_create", "tasks_status", "tasks_priority", "tasks_tag", "tasks_notes", "tasks_schedule", "tasks_rename", "tasks_comment", "tasks_subtask", "tasks_depend", "tasks_approve"];
31
+ };
32
+ /**
33
+ * MCP_TOOLS is hand-maintained, and the note above MCP_VERSION records what that
34
+ * costs: a literal nothing forces to move drifts stale and stays wrong for
35
+ * releases. This is the forcing function — `bun run check:tools` fails when the
36
+ * manifest and the router disagree. `fn_*` is excluded because those are
37
+ * generated from FN_MAP at runtime and deliberately absent from the manifest.
38
+ */
39
+ export declare function toolManifestDrift(): {
40
+ missing: string[];
41
+ extra: string[];
29
42
  };
30
43
  export declare function createOneRouter(): import("./serve.js").McpRouter;
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ import { fnTools } from "./tools/fn.js";
15
15
  import { seoTools } from "./tools/seo.js";
16
16
  import { viewsTools } from "./tools/views.js";
17
17
  import { workflowTools } from "./tools/workflow.js";
18
+ import { tasksTools } from "./tools/tasks.js";
18
19
  export { createRouter, serve, apiCall } from "./serve.js";
19
20
  export { readEnv } from "./env.js";
20
21
  export { substrateTools } from "./tools/substrate.js";
@@ -28,6 +29,7 @@ export { fnTools } from "./tools/fn.js";
28
29
  export { seoTools } from "./tools/seo.js";
29
30
  export { viewsTools } from "./tools/views.js";
30
31
  export { workflowTools } from "./tools/workflow.js";
32
+ export { tasksTools } from "./tools/tasks.js";
31
33
  // Read live from package.json rather than a hand-maintained literal — the
32
34
  // literal drifted stale for 8+ releases (last touched at 0.4.6, silently
33
35
  // wrong ever since) because nothing forced it to move with the real version.
@@ -35,21 +37,39 @@ const _pkgPath = join(dirname(fileURLToPath(import.meta.url)), "..", "package.js
35
37
  export const MCP_VERSION = JSON.parse(readFileSync(_pkgPath, "utf8")).version;
36
38
  export const MCP_TOOLS = {
37
39
  substrate: ["signal", "ask", "mark", "warn", "fade", "follow", "select", "recall", "reveal", "forget", "frontier", "know", "highways", "groups", "actors", "things", "paths", "events", "learning"],
38
- lifecycle: ["auth_agent", "tasks_mine", "tasks_claim", "tasks_link", "sync_agent", "publish_agent", "pull_agent", "unpublish_agent", "list_agents", "agent_history", "rollback_agent", "discover_skill", "register", "pay", "list_skills", "unimport_skill", "own_me", "skill_eval"],
40
+ lifecycle: ["auth_agent", "tasks_mine", "tasks_claim", "tasks_link", "sync_agent", "publish_agent", "pull_agent", "unpublish_agent", "list_agents", "agent_history", "rollback_agent", "discover_skill", "register", "pay", "list_skills", "unimport_skill", "own_me", "skill_eval", "tasks_everywhere"],
39
41
  observability: ["stats", "health", "revenue", "frontiers_global", "export_units", "export_highways", "ingest_event", "chat_turn"],
40
42
  discovery: ["scaffold_agent", "list_presets", "get_agent"],
41
43
  social: ["social_list_posts", "social_create_post", "social_accounts"],
42
44
  video: ["create_room", "delete_room", "contact_call", "invite_to_call", "schedule_webinar", "create_session", "quick_call", "start_recording", "start_stream", "video_summary", "get_room_status"],
43
- broadcast: ["broadcast_create", "broadcast_list", "broadcast_get", "broadcast_send", "newsletter_update"],
45
+ broadcast: ["broadcast_create", "broadcast_list", "broadcast_get", "broadcast_send", "newsletter_update", "segment_list", "segment_get", "segment_preview"],
44
46
  messaging: ["message", "chat_send", "chat_broadcast"],
45
47
  seo: ["seo_backlinks", "seo_ai_visibility", "seo_research_keywords", "seo_serp", "seo_keyword_metrics", "seo_gsc"],
46
48
  views: ["create_view", "list_views"],
47
- workflow: ["workflow_list", "workflow_get", "workflow_apply_diff", "workflow_run", "workflow_runs"],
49
+ workflow: ["workflow_list", "workflow_get", "workflow_apply_diff", "workflow_run", "workflow_runs", "workflow_validate", "workflow_resolve"],
50
+ // The board + the write verbs. lifecycle's tasks_* model the PULL (subscription
51
+ // queue, claim, close); these manage a workspace's tasks outright.
52
+ tasks: ["tasks_list", "tasks_create", "tasks_status", "tasks_priority", "tasks_tag", "tasks_notes", "tasks_schedule", "tasks_rename", "tasks_comment", "tasks_subtask", "tasks_depend", "tasks_approve"],
48
53
  // fn_* tools are generated dynamically from FN_MAP; see tools/fn.ts ALLOWLIST for the current set
49
54
  };
55
+ /**
56
+ * MCP_TOOLS is hand-maintained, and the note above MCP_VERSION records what that
57
+ * costs: a literal nothing forces to move drifts stale and stays wrong for
58
+ * releases. This is the forcing function — `bun run check:tools` fails when the
59
+ * manifest and the router disagree. `fn_*` is excluded because those are
60
+ * generated from FN_MAP at runtime and deliberately absent from the manifest.
61
+ */
62
+ export function toolManifestDrift() {
63
+ const live = new Set([...createOneRouter().tools.keys()].filter((n) => !n.startsWith("fn_")));
64
+ const declared = new Set(Object.values(MCP_TOOLS).flat());
65
+ return {
66
+ missing: [...live].filter((n) => !declared.has(n)).sort(),
67
+ extra: [...declared].filter((n) => !live.has(n)).sort(),
68
+ };
69
+ }
50
70
  export function createOneRouter() {
51
71
  const router = createRouter();
52
- for (const tool of [...substrateTools(), ...lifecycleTools(), ...observabilityTools(), ...discoveryTools(), ...socialTools(), ...videoTools(), ...broadcastTools(), ...messagingTools(), ...chatTools(), ...fnTools(), ...seoTools(), ...viewsTools(), ...workflowTools()]) {
72
+ for (const tool of [...substrateTools(), ...lifecycleTools(), ...observabilityTools(), ...discoveryTools(), ...socialTools(), ...videoTools(), ...broadcastTools(), ...messagingTools(), ...chatTools(), ...fnTools(), ...seoTools(), ...viewsTools(), ...workflowTools(), ...tasksTools()]) {
53
73
  router.register(tool);
54
74
  }
55
75
  return router;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type McpTool } from "../serve.js";
2
+ export declare function tasksTools(): McpTool[];
@@ -0,0 +1,244 @@
1
+ import { apiCall } from "../serve.js";
2
+ /**
3
+ * Task management from an MCP client (Claude Code, Cursor, Claude Desktop).
4
+ *
5
+ * Why these are separate from the four task tools in lifecycle.ts: those model
6
+ * the *pull* — `tasks_mine` / `tasks_everywhere` rank a subscriber's queue by
7
+ * learned weight, and `tasks_claim` / `tasks_link` lease and close what the
8
+ * puller picked up. That surface is deliberately follow-scoped (a task is
9
+ * visible when you're in its workspace AND you follow one of its words, or it's
10
+ * assigned to you), which makes it the right door for "what should I build
11
+ * next" and the WRONG door for "show me everything on the board".
12
+ *
13
+ * An operator managing a workspace needs the board, not the queue — and needs to
14
+ * WRITE. The substrate has had 18 `tasks:*` receivers for a while; MCP exposed
15
+ * four of them, none of which could create a task or change one. These wrap the
16
+ * rest, so a session can run a workspace's tasks end to end without leaving the
17
+ * editor.
18
+ *
19
+ * `workspace` is optional on every write. Omitted, the receiver's
20
+ * `effectiveWorkspace` resolves to the caller's own slug; supplied, it is
21
+ * honoured only when the caller is staff or actually controls that workspace
22
+ * (resolvers/tasks.ts:32) — the parameter is a request, never an authorisation.
23
+ */
24
+ const ask = (env, receiver, data) => apiCall(env.baseUrl, env.apiKey, `/api/ask/${encodeURIComponent(receiver)}`, {
25
+ method: "POST",
26
+ body: JSON.stringify({ data }),
27
+ });
28
+ /** Drop undefined keys so an omitted arg never reaches a receiver as `null`. */
29
+ const only = (o) => Object.fromEntries(Object.entries(o).filter(([, v]) => v !== undefined));
30
+ const TID = { type: "string", description: "Task id, e.g. task:abc123 (from tasks_list)" };
31
+ const WS = {
32
+ type: "string",
33
+ description: "Workspace slug to act in. Omit for your own. Honoured only if you're staff or control it.",
34
+ };
35
+ export function tasksTools() {
36
+ return [
37
+ {
38
+ name: "tasks_list",
39
+ description: "The task BOARD for a workspace — every task, not just the ones matching your subscriptions. This is the read the /u/<slug>/tasks page makes, so what you see here is what the operator sees. Use this (not tasks_mine) to manage a workspace's tasks; tasks_mine answers the narrower question 'what matches what I subscribed to'. Returns id, name, status, priority, tags, dueAt, notes.",
40
+ inputSchema: {
41
+ type: "object",
42
+ properties: {
43
+ workspace: { type: "string", description: "Workspace slug, e.g. 'one'" },
44
+ limit: { type: "number", description: "Max tasks (default 50, cap 200)" },
45
+ search: { type: "string", description: "Substring match on task name" },
46
+ status: { type: "string", description: "Filter by task-status, e.g. open | picked | done | verified | dissolved" },
47
+ tag: { type: "string", description: "Filter by a single tag" },
48
+ sort: { type: "string", description: "name | due-at | priority | updated-at (default name)" },
49
+ dir: { type: "string", description: "asc | desc (default asc)" },
50
+ scope: { type: "string", description: "Pass 'tree' to include every descendant workspace's tasks too" },
51
+ kind: { type: "string", description: "work (authored tasks) | approval (workflow suspensions awaiting a human) | all (default)" },
52
+ },
53
+ required: ["workspace"],
54
+ },
55
+ handler: async (args, env) => {
56
+ const q = new URLSearchParams({ type: "task", workspace: String(args.workspace) });
57
+ for (const k of ["limit", "search", "status", "tag", "sort", "dir", "scope"]) {
58
+ if (args[k] !== undefined)
59
+ q.set(k, String(args[k]));
60
+ }
61
+ const res = (await apiCall(env.baseUrl, env.apiKey, `/api/things?${q}`));
62
+ const things = res?.things ?? [];
63
+ // A board holds two populations that read identically in a flat list:
64
+ // work someone authored, and `human:ask` suspensions a workflow run
65
+ // minted while waiting for an answer. Mistaking the second for clutter
66
+ // is expensive — "cleaning up" 12 approval rows abandons 12 live runs.
67
+ // They're already distinguishable by the `approval` tag; this labels
68
+ // them and counts them so the distinction survives a glance.
69
+ const kindOf = (t) => (Array.isArray(t.tags) && t.tags.includes("approval") ? "approval" : "work");
70
+ const labelled = things.map((t) => ({ ...t, kind: kindOf(t) }));
71
+ const want = args.kind === undefined ? "all" : String(args.kind);
72
+ const tasks = want === "all" ? labelled : labelled.filter((t) => t.kind === want);
73
+ const count = (k, open) => labelled.filter((t) => t.kind === k && (open === undefined || t.status === "open")).length;
74
+ return {
75
+ things: tasks,
76
+ summary: {
77
+ returned: tasks.length,
78
+ work: count("work"), workOpen: count("work", true),
79
+ approvals: count("approval"), approvalsPending: count("approval", true),
80
+ },
81
+ };
82
+ },
83
+ },
84
+ {
85
+ name: "tasks_create",
86
+ description: "Create a task on a workspace's board. `notes` is the prose goal a future puller reads to know what 'done' means — a task with a bare title and no notes is the one that sits in the queue untouched. Returns the new tid.",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ title: { type: "string", description: "What the task is, as a doer would name it" },
91
+ notes: { type: "string", description: "The goal in prose: what done looks like, and why" },
92
+ tags: { type: "array", items: { type: "string" }, description: "Plain words, no ':' or '@' — those namespaces are reserved for workspace:/assignee tags" },
93
+ assignee: { type: "string", description: "Actor slug to assign to (becomes the @slug tag)" },
94
+ workspace: WS,
95
+ },
96
+ required: ["title"],
97
+ },
98
+ handler: async (args, env) => ask(env, "tasks:create", only({
99
+ title: args.title, notes: args.notes, tags: args.tags,
100
+ assignee: args.assignee, workspace: args.workspace,
101
+ })),
102
+ },
103
+ {
104
+ name: "tasks_status",
105
+ description: "Move a task through its lifecycle: open | picked | done | verified | dissolved. Use tasks_claim instead when you're taking work off the queue for yourself — it also stamps @you so nobody double-builds it.",
106
+ inputSchema: {
107
+ type: "object",
108
+ properties: { tid: TID, status: { type: "string", description: "open | picked | done | verified | dissolved" }, workspace: WS },
109
+ required: ["tid", "status"],
110
+ },
111
+ handler: async (args, env) => ask(env, "tasks:status", only({ tid: args.tid, status: args.status, workspace: args.workspace })),
112
+ },
113
+ {
114
+ name: "tasks_priority",
115
+ description: "Set a task's priority slider (1-100). Note the board ranks by LEARNED weight where it has evidence, so priority is the authored starting point, not the final order.",
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: { tid: TID, priority: { type: "number", description: "1-100" }, workspace: WS },
119
+ required: ["tid", "priority"],
120
+ },
121
+ handler: async (args, env) => ask(env, "tasks:priority", only({ tid: args.tid, priority: args.priority, workspace: args.workspace })),
122
+ },
123
+ {
124
+ name: "tasks_tag",
125
+ description: "Add or remove a task's tags. Tags are how a task finds its doer — they're matched against what actors subscribed to, so tagging is routing, not labelling. Reserved prefixes ':' and '@' are rejected (workspace:/assignee tags are set by create/claim).",
126
+ inputSchema: {
127
+ type: "object",
128
+ properties: {
129
+ tid: TID,
130
+ add: { type: "array", items: { type: "string" }, description: "Tags to add" },
131
+ remove: { type: "array", items: { type: "string" }, description: "Tags to remove" },
132
+ workspace: WS,
133
+ },
134
+ required: ["tid"],
135
+ },
136
+ handler: async (args, env) => ask(env, "tasks:tag", only({ tid: args.tid, add: args.add, remove: args.remove, workspace: args.workspace })),
137
+ },
138
+ {
139
+ name: "tasks_notes",
140
+ description: "Set or clear a task's notes (the prose goal). Pass an empty string to clear.",
141
+ inputSchema: {
142
+ type: "object",
143
+ properties: { tid: TID, notes: { type: "string", description: "The goal in prose; empty string clears" }, workspace: WS },
144
+ required: ["tid", "notes"],
145
+ },
146
+ handler: async (args, env) => ask(env, "tasks:notes", only({ tid: args.tid, notes: args.notes, workspace: args.workspace })),
147
+ },
148
+ {
149
+ name: "tasks_schedule",
150
+ description: "Set or clear a task's dates. Pass null to clear a field; omit a field to leave it untouched.",
151
+ inputSchema: {
152
+ type: "object",
153
+ properties: {
154
+ tid: TID,
155
+ dueAt: { type: "string", description: "ISO date/datetime, or null to clear" },
156
+ startAt: { type: "string", description: "ISO date/datetime, or null to clear" },
157
+ workspace: WS,
158
+ },
159
+ required: ["tid"],
160
+ },
161
+ handler: async (args, env) => {
162
+ // `in data` is what the receiver tests to tell "clear this" from "leave it
163
+ // alone", so an explicitly-passed null must survive — only() would keep it
164
+ // (it drops undefined, not null), but the keys must not be added at all
165
+ // when the caller omitted them.
166
+ const d = { tid: args.tid };
167
+ if ("dueAt" in args)
168
+ d.dueAt = args.dueAt;
169
+ if ("startAt" in args)
170
+ d.startAt = args.startAt;
171
+ if (args.workspace !== undefined)
172
+ d.workspace = args.workspace;
173
+ return ask(env, "tasks:schedule", d);
174
+ },
175
+ },
176
+ {
177
+ name: "tasks_rename",
178
+ description: "Rename a task. The tid is stable — links, dependencies and provenance survive a rename.",
179
+ inputSchema: {
180
+ type: "object",
181
+ properties: { tid: TID, title: { type: "string", description: "New title" }, workspace: WS },
182
+ required: ["tid", "title"],
183
+ },
184
+ handler: async (args, env) => ask(env, "tasks:rename", only({ tid: args.tid, title: args.title, workspace: args.workspace })),
185
+ },
186
+ {
187
+ name: "tasks_comment",
188
+ description: "Post a comment on a task's thread — the durable record of why a decision was made, readable by the next actor (human or agent) who picks it up. Requires only read-level access to the task, unlike the write verbs above.",
189
+ inputSchema: {
190
+ type: "object",
191
+ properties: { tid: TID, body: { type: "string", description: "Comment text" }, workspace: WS },
192
+ required: ["tid", "body"],
193
+ },
194
+ handler: async (args, env) => ask(env, "tasks:comment", only({ tid: args.tid, body: args.body, workspace: args.workspace })),
195
+ },
196
+ {
197
+ name: "tasks_subtask",
198
+ description: "Create a child task under a parent — a containment relation, so closing the parent surfaces what's still open beneath it.",
199
+ inputSchema: {
200
+ type: "object",
201
+ properties: {
202
+ parent: { type: "string", description: "Parent task id" },
203
+ title: { type: "string", description: "Subtask title" },
204
+ workspace: WS,
205
+ },
206
+ required: ["parent", "title"],
207
+ },
208
+ handler: async (args, env) => ask(env, "tasks:subtask", only({ parent: args.parent, title: args.title, workspace: args.workspace })),
209
+ },
210
+ {
211
+ name: "tasks_approve",
212
+ description: "Answer a task whose kind is `approval` — a workflow run parked at a human step. This RESUMES the run; the task closing is a side effect, so setting such a task to done with tasks_status leaves the run parked forever. Take runId and stepId from the task's `run:` and `step:` tags.",
213
+ inputSchema: {
214
+ type: "object",
215
+ properties: {
216
+ runId: { type: "string", description: "From the task's `run:<id>` tag" },
217
+ stepId: { type: "string", description: "From the task's `step:<id>` tag" },
218
+ decision: { type: "string", description: "approved (default) | rejected" },
219
+ formPayload: { type: "object", description: "Answers for a form step, e.g. { email: 'x@y.com' }" },
220
+ },
221
+ required: ["runId", "stepId"],
222
+ },
223
+ handler: async (args, env) => ask(env, "human:resolve", only({
224
+ runId: args.runId, stepId: args.stepId,
225
+ decision: args.decision ?? "approved", formPayload: args.formPayload,
226
+ })),
227
+ },
228
+ {
229
+ name: "tasks_depend",
230
+ description: "Record that a task is blocked by another. A blocked task refuses tasks_claim until its blockers resolve — the dependency is enforced, not decorative.",
231
+ inputSchema: {
232
+ type: "object",
233
+ properties: {
234
+ tid: TID,
235
+ blockedBy: { type: "string", description: "Task id that must finish first" },
236
+ workspace: WS,
237
+ },
238
+ required: ["tid", "blockedBy"],
239
+ },
240
+ handler: async (args, env) => ask(env, "tasks:depend", only({ tid: args.tid, blockedBy: args.blockedBy, workspace: args.workspace })),
241
+ },
242
+ ];
243
+ }
244
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,34 @@ export function workflowTools() {
48
48
  inputSchema: { type: "object", properties: { workflowId: { type: "string" }, runId: { type: "string", description: "optional — return this run's event timeline" }, limit: { type: "number" } }, required: ["workflowId"] },
49
49
  handler: async (args, env) => ask(env, "workflow:runs", { workflowId: args.workflowId, runId: args.runId, limit: args.limit }),
50
50
  },
51
+ {
52
+ name: "workflow_validate",
53
+ description: "Run the §9 gate on a WorkflowDiff without persisting — checks kinds/config, exactly-one-trigger, edges reference real steps, and no cycles. Returns ok + advisory warnings. Call before workflow_apply_diff to catch a bad diff early.",
54
+ inputSchema: {
55
+ type: "object",
56
+ properties: {
57
+ workflowId: { type: "string", description: "id from workflow_list" },
58
+ diff: { type: "object", description: "the WorkflowDiff to validate (see @oneie/sdk WorkflowDiffSchema)" },
59
+ },
60
+ required: ["workflowId", "diff"],
61
+ },
62
+ handler: async (args, env) => ask(env, "workflow:validate", { workflowId: args.workflowId, diff: args.diff }),
63
+ },
64
+ {
65
+ name: "workflow_resolve",
66
+ description: "Resolve a suspended human step in a run — pass decision approved|rejected, or a formPayload. Use after workflow_runs shows a run parked on a human step.",
67
+ inputSchema: {
68
+ type: "object",
69
+ properties: {
70
+ runId: { type: "string", description: "run id from workflow_runs" },
71
+ stepId: { type: "string", description: "the suspended human step id" },
72
+ decision: { type: "string", enum: ["approved", "rejected"], description: "approve or reject the step" },
73
+ formPayload: { type: "object", description: "optional form data for a form step" },
74
+ },
75
+ required: ["runId", "stepId"],
76
+ },
77
+ handler: async (args, env) => ask(env, "human:resolve", { runId: args.runId, stepId: args.stepId, decision: args.decision, formPayload: args.formPayload }),
78
+ },
51
79
  ];
52
80
  }
53
81
  //# sourceMappingURL=workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneie/mcp",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "description": "ONE substrate MCP server — 12 substrate verbs + 3 discovery tools.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -15,10 +15,11 @@
15
15
  "build": "tsc",
16
16
  "dev": "tsc --watch",
17
17
  "typecheck": "tsc --noEmit",
18
- "prepublishOnly": "bun run build"
18
+ "prepublishOnly": "bun run build",
19
+ "check:tools": "bun run build && node -e \"import('./dist/index.js').then(m=>{const d=m.toolManifestDrift();if(d.missing.length||d.extra.length){console.error('MCP_TOOLS drift — missing:',d.missing,'extra:',d.extra);process.exit(1)}console.log('MCP_TOOLS matches the router')})\""
19
20
  },
20
21
  "dependencies": {
21
- "@oneie/sdk": "^0.14.9",
22
+ "@oneie/sdk": "^0.14.11",
22
23
  "@oneie/templates": "^0.2.0",
23
24
  "@modelcontextprotocol/sdk": "^1.0.0"
24
25
  },