@artyfacts/mcp-server 1.0.5 → 1.1.1
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/chunk-XJM3QWEZ.js +606 -0
- package/dist/chunk-XLUIPOCO.js +605 -0
- package/dist/index.cjs +39 -33
- package/dist/index.js +1 -1
- package/dist/server.cjs +39 -33
- package/dist/server.js +1 -1
- package/package.json +1 -1
- package/src/server.ts +39 -33
package/dist/index.cjs
CHANGED
|
@@ -219,8 +219,9 @@ var ARTYFACTS_TOOLS = [
|
|
|
219
219
|
type: "object",
|
|
220
220
|
properties: {
|
|
221
221
|
task_id: { type: "string", description: "Task ID" },
|
|
222
|
+
output_text: { type: "string", description: "Completion summary / what was done" },
|
|
222
223
|
output_url: { type: "string", description: "URL to deliverable (PR, doc, etc.)" },
|
|
223
|
-
|
|
224
|
+
output_artifact_id: { type: "string", description: "UUID of artifact produced by this task" }
|
|
224
225
|
},
|
|
225
226
|
required: ["task_id"]
|
|
226
227
|
}
|
|
@@ -317,46 +318,50 @@ var ARTYFACTS_TOOLS = [
|
|
|
317
318
|
required: ["agent_id"]
|
|
318
319
|
}
|
|
319
320
|
},
|
|
320
|
-
//
|
|
321
|
+
// Inbox tools (human-in-the-loop)
|
|
321
322
|
{
|
|
322
|
-
name: "
|
|
323
|
-
description: "
|
|
323
|
+
name: "create_inbox_item",
|
|
324
|
+
description: "Request human approval, a decision, or an answer before proceeding. Automatically blocks the task. Use for agent creation, risky actions, or anything requiring human sign-off.",
|
|
324
325
|
inputSchema: {
|
|
325
326
|
type: "object",
|
|
326
327
|
properties: {
|
|
327
|
-
|
|
328
|
-
|
|
328
|
+
task_id: { type: "string", description: "UUID of the task being blocked (required)" },
|
|
329
|
+
type: { type: "string", description: "Type: approval, decision, question" },
|
|
330
|
+
title: { type: "string", description: "Short summary shown to the human in the inbox" },
|
|
331
|
+
content: { type: "string", description: "Full context and details for the human" },
|
|
332
|
+
action: { type: "string", description: "Action to auto-execute if approved (e.g. agent.create)" },
|
|
333
|
+
action_payload: { type: "object", description: "Data for the action (e.g. full agent spec for agent.create)" },
|
|
334
|
+
options: { type: "array", description: "Options for decision type: [{id, label, description}]" }
|
|
329
335
|
},
|
|
330
|
-
required: []
|
|
336
|
+
required: ["task_id", "type", "title"]
|
|
331
337
|
}
|
|
332
338
|
},
|
|
333
339
|
{
|
|
334
|
-
name: "
|
|
335
|
-
description: "
|
|
340
|
+
name: "list_inbox",
|
|
341
|
+
description: "List pending inbox items (approvals, decisions, questions) waiting for human resolution.",
|
|
336
342
|
inputSchema: {
|
|
337
343
|
type: "object",
|
|
338
344
|
properties: {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
description: { type: "string", description: "Details" },
|
|
343
|
-
options: { type: "array", description: "Options for decisions" },
|
|
344
|
-
blocked_tasks: { type: "array", items: { type: "string" }, description: "Task IDs blocked by this" }
|
|
345
|
+
status: { type: "string", description: "Filter by status: pending (default), resolved" },
|
|
346
|
+
type: { type: "string", description: "Filter by type: approval, decision, question" },
|
|
347
|
+
limit: { type: "number", description: "Max results (default 50)" }
|
|
345
348
|
},
|
|
346
|
-
required: [
|
|
349
|
+
required: []
|
|
347
350
|
}
|
|
348
351
|
},
|
|
349
352
|
{
|
|
350
|
-
name: "
|
|
351
|
-
description: "Resolve
|
|
353
|
+
name: "resolve_inbox",
|
|
354
|
+
description: "Resolve an inbox item from the agent side. Humans resolve via the UI \u2014 only use this for automated resolution.",
|
|
352
355
|
inputSchema: {
|
|
353
356
|
type: "object",
|
|
354
357
|
properties: {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
+
item_id: { type: "string", description: "Inbox item UUID" },
|
|
359
|
+
approved: { type: "boolean", description: "For approvals: true to approve, false to deny" },
|
|
360
|
+
chosen_option: { type: "string", description: "For decisions: the selected option ID" },
|
|
361
|
+
answer: { type: "string", description: "For questions: the answer text" },
|
|
362
|
+
notes: { type: "string", description: "Optional notes" }
|
|
358
363
|
},
|
|
359
|
-
required: ["
|
|
364
|
+
required: ["item_id"]
|
|
360
365
|
}
|
|
361
366
|
},
|
|
362
367
|
// Search tools
|
|
@@ -526,20 +531,21 @@ var toolHandlers = {
|
|
|
526
531
|
const { agent_id, ...body } = args;
|
|
527
532
|
return client.patch(`/agents/${agent_id}`, body);
|
|
528
533
|
},
|
|
529
|
-
//
|
|
530
|
-
|
|
534
|
+
// Inbox (human-in-the-loop)
|
|
535
|
+
create_inbox_item: (client, args) => {
|
|
536
|
+
const { task_id, type, title, content, action, action_payload, options } = args;
|
|
537
|
+
return client.post("/inbox", { task_id, type, title, content, action, action_payload, options });
|
|
538
|
+
},
|
|
539
|
+
list_inbox: (client, args) => {
|
|
531
540
|
const params = new URLSearchParams();
|
|
532
|
-
if (args.artifact_id) params.set("artifact_id", String(args.artifact_id));
|
|
533
541
|
if (args.status) params.set("status", String(args.status));
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
const { artifact_id, ...body } = args;
|
|
538
|
-
return client.post(`/artifacts/${artifact_id}/blockers`, body);
|
|
542
|
+
if (args.type) params.set("type", String(args.type));
|
|
543
|
+
if (args.limit) params.set("limit", String(args.limit));
|
|
544
|
+
return client.get(`/inbox?${params}`);
|
|
539
545
|
},
|
|
540
|
-
|
|
541
|
-
const {
|
|
542
|
-
return client.post(`/
|
|
546
|
+
resolve_inbox: (client, args) => {
|
|
547
|
+
const { item_id, ...body } = args;
|
|
548
|
+
return client.post(`/inbox/${item_id}/resolve`, body);
|
|
543
549
|
},
|
|
544
550
|
// Search
|
|
545
551
|
search_artifacts: (client, args) => {
|
package/dist/index.js
CHANGED
package/dist/server.cjs
CHANGED
|
@@ -217,8 +217,9 @@ var ARTYFACTS_TOOLS = [
|
|
|
217
217
|
type: "object",
|
|
218
218
|
properties: {
|
|
219
219
|
task_id: { type: "string", description: "Task ID" },
|
|
220
|
+
output_text: { type: "string", description: "Completion summary / what was done" },
|
|
220
221
|
output_url: { type: "string", description: "URL to deliverable (PR, doc, etc.)" },
|
|
221
|
-
|
|
222
|
+
output_artifact_id: { type: "string", description: "UUID of artifact produced by this task" }
|
|
222
223
|
},
|
|
223
224
|
required: ["task_id"]
|
|
224
225
|
}
|
|
@@ -315,46 +316,50 @@ var ARTYFACTS_TOOLS = [
|
|
|
315
316
|
required: ["agent_id"]
|
|
316
317
|
}
|
|
317
318
|
},
|
|
318
|
-
//
|
|
319
|
+
// Inbox tools (human-in-the-loop)
|
|
319
320
|
{
|
|
320
|
-
name: "
|
|
321
|
-
description: "
|
|
321
|
+
name: "create_inbox_item",
|
|
322
|
+
description: "Request human approval, a decision, or an answer before proceeding. Automatically blocks the task. Use for agent creation, risky actions, or anything requiring human sign-off.",
|
|
322
323
|
inputSchema: {
|
|
323
324
|
type: "object",
|
|
324
325
|
properties: {
|
|
325
|
-
|
|
326
|
-
|
|
326
|
+
task_id: { type: "string", description: "UUID of the task being blocked (required)" },
|
|
327
|
+
type: { type: "string", description: "Type: approval, decision, question" },
|
|
328
|
+
title: { type: "string", description: "Short summary shown to the human in the inbox" },
|
|
329
|
+
content: { type: "string", description: "Full context and details for the human" },
|
|
330
|
+
action: { type: "string", description: "Action to auto-execute if approved (e.g. agent.create)" },
|
|
331
|
+
action_payload: { type: "object", description: "Data for the action (e.g. full agent spec for agent.create)" },
|
|
332
|
+
options: { type: "array", description: "Options for decision type: [{id, label, description}]" }
|
|
327
333
|
},
|
|
328
|
-
required: []
|
|
334
|
+
required: ["task_id", "type", "title"]
|
|
329
335
|
}
|
|
330
336
|
},
|
|
331
337
|
{
|
|
332
|
-
name: "
|
|
333
|
-
description: "
|
|
338
|
+
name: "list_inbox",
|
|
339
|
+
description: "List pending inbox items (approvals, decisions, questions) waiting for human resolution.",
|
|
334
340
|
inputSchema: {
|
|
335
341
|
type: "object",
|
|
336
342
|
properties: {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
description: { type: "string", description: "Details" },
|
|
341
|
-
options: { type: "array", description: "Options for decisions" },
|
|
342
|
-
blocked_tasks: { type: "array", items: { type: "string" }, description: "Task IDs blocked by this" }
|
|
343
|
+
status: { type: "string", description: "Filter by status: pending (default), resolved" },
|
|
344
|
+
type: { type: "string", description: "Filter by type: approval, decision, question" },
|
|
345
|
+
limit: { type: "number", description: "Max results (default 50)" }
|
|
343
346
|
},
|
|
344
|
-
required: [
|
|
347
|
+
required: []
|
|
345
348
|
}
|
|
346
349
|
},
|
|
347
350
|
{
|
|
348
|
-
name: "
|
|
349
|
-
description: "Resolve
|
|
351
|
+
name: "resolve_inbox",
|
|
352
|
+
description: "Resolve an inbox item from the agent side. Humans resolve via the UI \u2014 only use this for automated resolution.",
|
|
350
353
|
inputSchema: {
|
|
351
354
|
type: "object",
|
|
352
355
|
properties: {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
+
item_id: { type: "string", description: "Inbox item UUID" },
|
|
357
|
+
approved: { type: "boolean", description: "For approvals: true to approve, false to deny" },
|
|
358
|
+
chosen_option: { type: "string", description: "For decisions: the selected option ID" },
|
|
359
|
+
answer: { type: "string", description: "For questions: the answer text" },
|
|
360
|
+
notes: { type: "string", description: "Optional notes" }
|
|
356
361
|
},
|
|
357
|
-
required: ["
|
|
362
|
+
required: ["item_id"]
|
|
358
363
|
}
|
|
359
364
|
},
|
|
360
365
|
// Search tools
|
|
@@ -524,20 +529,21 @@ var toolHandlers = {
|
|
|
524
529
|
const { agent_id, ...body } = args;
|
|
525
530
|
return client.patch(`/agents/${agent_id}`, body);
|
|
526
531
|
},
|
|
527
|
-
//
|
|
528
|
-
|
|
532
|
+
// Inbox (human-in-the-loop)
|
|
533
|
+
create_inbox_item: (client, args) => {
|
|
534
|
+
const { task_id, type, title, content, action, action_payload, options } = args;
|
|
535
|
+
return client.post("/inbox", { task_id, type, title, content, action, action_payload, options });
|
|
536
|
+
},
|
|
537
|
+
list_inbox: (client, args) => {
|
|
529
538
|
const params = new URLSearchParams();
|
|
530
|
-
if (args.artifact_id) params.set("artifact_id", String(args.artifact_id));
|
|
531
539
|
if (args.status) params.set("status", String(args.status));
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
const { artifact_id, ...body } = args;
|
|
536
|
-
return client.post(`/artifacts/${artifact_id}/blockers`, body);
|
|
540
|
+
if (args.type) params.set("type", String(args.type));
|
|
541
|
+
if (args.limit) params.set("limit", String(args.limit));
|
|
542
|
+
return client.get(`/inbox?${params}`);
|
|
537
543
|
},
|
|
538
|
-
|
|
539
|
-
const {
|
|
540
|
-
return client.post(`/
|
|
544
|
+
resolve_inbox: (client, args) => {
|
|
545
|
+
const { item_id, ...body } = args;
|
|
546
|
+
return client.post(`/inbox/${item_id}/resolve`, body);
|
|
541
547
|
},
|
|
542
548
|
// Search
|
|
543
549
|
search_artifacts: (client, args) => {
|
package/dist/server.js
CHANGED
package/package.json
CHANGED
package/src/server.ts
CHANGED
|
@@ -225,8 +225,9 @@ const ARTYFACTS_TOOLS: Tool[] = [
|
|
|
225
225
|
type: 'object',
|
|
226
226
|
properties: {
|
|
227
227
|
task_id: { type: 'string', description: 'Task ID' },
|
|
228
|
+
output_text: { type: 'string', description: 'Completion summary / what was done' },
|
|
228
229
|
output_url: { type: 'string', description: 'URL to deliverable (PR, doc, etc.)' },
|
|
229
|
-
|
|
230
|
+
output_artifact_id: { type: 'string', description: 'UUID of artifact produced by this task' },
|
|
230
231
|
},
|
|
231
232
|
required: ['task_id'],
|
|
232
233
|
},
|
|
@@ -325,46 +326,50 @@ const ARTYFACTS_TOOLS: Tool[] = [
|
|
|
325
326
|
},
|
|
326
327
|
},
|
|
327
328
|
|
|
328
|
-
//
|
|
329
|
+
// Inbox tools (human-in-the-loop)
|
|
329
330
|
{
|
|
330
|
-
name: '
|
|
331
|
-
description: '
|
|
331
|
+
name: 'create_inbox_item',
|
|
332
|
+
description: 'Request human approval, a decision, or an answer before proceeding. Automatically blocks the task. Use for agent creation, risky actions, or anything requiring human sign-off.',
|
|
332
333
|
inputSchema: {
|
|
333
334
|
type: 'object',
|
|
334
335
|
properties: {
|
|
335
|
-
|
|
336
|
-
|
|
336
|
+
task_id: { type: 'string', description: 'UUID of the task being blocked (required)' },
|
|
337
|
+
type: { type: 'string', description: 'Type: approval, decision, question' },
|
|
338
|
+
title: { type: 'string', description: 'Short summary shown to the human in the inbox' },
|
|
339
|
+
content: { type: 'string', description: 'Full context and details for the human' },
|
|
340
|
+
action: { type: 'string', description: 'Action to auto-execute if approved (e.g. agent.create)' },
|
|
341
|
+
action_payload: { type: 'object', description: 'Data for the action (e.g. full agent spec for agent.create)' },
|
|
342
|
+
options: { type: 'array', description: 'Options for decision type: [{id, label, description}]' },
|
|
337
343
|
},
|
|
338
|
-
required: [],
|
|
344
|
+
required: ['task_id', 'type', 'title'],
|
|
339
345
|
},
|
|
340
346
|
},
|
|
341
347
|
{
|
|
342
|
-
name: '
|
|
343
|
-
description: '
|
|
348
|
+
name: 'list_inbox',
|
|
349
|
+
description: 'List pending inbox items (approvals, decisions, questions) waiting for human resolution.',
|
|
344
350
|
inputSchema: {
|
|
345
351
|
type: 'object',
|
|
346
352
|
properties: {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
description: { type: 'string', description: 'Details' },
|
|
351
|
-
options: { type: 'array', description: 'Options for decisions' },
|
|
352
|
-
blocked_tasks: { type: 'array', items: { type: 'string' }, description: 'Task IDs blocked by this' },
|
|
353
|
+
status: { type: 'string', description: 'Filter by status: pending (default), resolved' },
|
|
354
|
+
type: { type: 'string', description: 'Filter by type: approval, decision, question' },
|
|
355
|
+
limit: { type: 'number', description: 'Max results (default 50)' },
|
|
353
356
|
},
|
|
354
|
-
required: [
|
|
357
|
+
required: [],
|
|
355
358
|
},
|
|
356
359
|
},
|
|
357
360
|
{
|
|
358
|
-
name: '
|
|
359
|
-
description: 'Resolve
|
|
361
|
+
name: 'resolve_inbox',
|
|
362
|
+
description: 'Resolve an inbox item from the agent side. Humans resolve via the UI — only use this for automated resolution.',
|
|
360
363
|
inputSchema: {
|
|
361
364
|
type: 'object',
|
|
362
365
|
properties: {
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
+
item_id: { type: 'string', description: 'Inbox item UUID' },
|
|
367
|
+
approved: { type: 'boolean', description: 'For approvals: true to approve, false to deny' },
|
|
368
|
+
chosen_option: { type: 'string', description: 'For decisions: the selected option ID' },
|
|
369
|
+
answer: { type: 'string', description: 'For questions: the answer text' },
|
|
370
|
+
notes: { type: 'string', description: 'Optional notes' },
|
|
366
371
|
},
|
|
367
|
-
required: ['
|
|
372
|
+
required: ['item_id'],
|
|
368
373
|
},
|
|
369
374
|
},
|
|
370
375
|
|
|
@@ -554,20 +559,21 @@ const toolHandlers: Record<string, ToolHandler> = {
|
|
|
554
559
|
return client.patch(`/agents/${agent_id}`, body);
|
|
555
560
|
},
|
|
556
561
|
|
|
557
|
-
//
|
|
558
|
-
|
|
562
|
+
// Inbox (human-in-the-loop)
|
|
563
|
+
create_inbox_item: (client, args) => {
|
|
564
|
+
const { task_id, type, title, content, action, action_payload, options } = args;
|
|
565
|
+
return client.post('/inbox', { task_id, type, title, content, action, action_payload, options });
|
|
566
|
+
},
|
|
567
|
+
list_inbox: (client, args) => {
|
|
559
568
|
const params = new URLSearchParams();
|
|
560
|
-
if (args.artifact_id) params.set('artifact_id', String(args.artifact_id));
|
|
561
569
|
if (args.status) params.set('status', String(args.status));
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
const { artifact_id, ...body } = args;
|
|
566
|
-
return client.post(`/artifacts/${artifact_id}/blockers`, body);
|
|
570
|
+
if (args.type) params.set('type', String(args.type));
|
|
571
|
+
if (args.limit) params.set('limit', String(args.limit));
|
|
572
|
+
return client.get(`/inbox?${params}`);
|
|
567
573
|
},
|
|
568
|
-
|
|
569
|
-
const {
|
|
570
|
-
return client.post(`/
|
|
574
|
+
resolve_inbox: (client, args) => {
|
|
575
|
+
const { item_id, ...body } = args;
|
|
576
|
+
return client.post(`/inbox/${item_id}/resolve`, body);
|
|
571
577
|
},
|
|
572
578
|
|
|
573
579
|
// Search
|