@flowdot.ai/mcp-server 1.0.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/README.md +162 -0
- package/bin/flowdot-mcp.js +15 -0
- package/dist/api-client.d.ts +349 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +789 -0
- package/dist/api-client.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +96 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/add-connection.d.ts +16 -0
- package/dist/tools/add-connection.d.ts.map +1 -0
- package/dist/tools/add-connection.js +62 -0
- package/dist/tools/add-connection.js.map +1 -0
- package/dist/tools/add-custom-node-comment.d.ts +15 -0
- package/dist/tools/add-custom-node-comment.d.ts.map +1 -0
- package/dist/tools/add-custom-node-comment.js +69 -0
- package/dist/tools/add-custom-node-comment.js.map +1 -0
- package/dist/tools/add-node.d.ts +18 -0
- package/dist/tools/add-node.d.ts.map +1 -0
- package/dist/tools/add-node.js +66 -0
- package/dist/tools/add-node.js.map +1 -0
- package/dist/tools/add-shared-result-comment.d.ts +15 -0
- package/dist/tools/add-shared-result-comment.d.ts.map +1 -0
- package/dist/tools/add-shared-result-comment.js +70 -0
- package/dist/tools/add-shared-result-comment.js.map +1 -0
- package/dist/tools/add-workflow-comment.d.ts +14 -0
- package/dist/tools/add-workflow-comment.d.ts.map +1 -0
- package/dist/tools/add-workflow-comment.js +66 -0
- package/dist/tools/add-workflow-comment.js.map +1 -0
- package/dist/tools/agent-chat.d.ts +14 -0
- package/dist/tools/agent-chat.d.ts.map +1 -0
- package/dist/tools/agent-chat.js +80 -0
- package/dist/tools/agent-chat.js.map +1 -0
- package/dist/tools/cancel-execution.d.ts +12 -0
- package/dist/tools/cancel-execution.d.ts.map +1 -0
- package/dist/tools/cancel-execution.js +37 -0
- package/dist/tools/cancel-execution.js.map +1 -0
- package/dist/tools/clone-app.d.ts +11 -0
- package/dist/tools/clone-app.d.ts.map +1 -0
- package/dist/tools/clone-app.js +63 -0
- package/dist/tools/clone-app.js.map +1 -0
- package/dist/tools/copy-custom-node.d.ts +14 -0
- package/dist/tools/copy-custom-node.d.ts.map +1 -0
- package/dist/tools/copy-custom-node.js +50 -0
- package/dist/tools/copy-custom-node.js.map +1 -0
- package/dist/tools/create-app.d.ts +11 -0
- package/dist/tools/create-app.d.ts.map +1 -0
- package/dist/tools/create-app.js +182 -0
- package/dist/tools/create-app.js.map +1 -0
- package/dist/tools/create-custom-node.d.ts +28 -0
- package/dist/tools/create-custom-node.d.ts.map +1 -0
- package/dist/tools/create-custom-node.js +221 -0
- package/dist/tools/create-custom-node.js.map +1 -0
- package/dist/tools/create-input-preset.d.ts +15 -0
- package/dist/tools/create-input-preset.d.ts.map +1 -0
- package/dist/tools/create-input-preset.js +76 -0
- package/dist/tools/create-input-preset.js.map +1 -0
- package/dist/tools/create-shared-result.d.ts +17 -0
- package/dist/tools/create-shared-result.d.ts.map +1 -0
- package/dist/tools/create-shared-result.js +78 -0
- package/dist/tools/create-shared-result.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +13 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +49 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-app.d.ts +11 -0
- package/dist/tools/delete-app.d.ts.map +1 -0
- package/dist/tools/delete-app.js +40 -0
- package/dist/tools/delete-app.js.map +1 -0
- package/dist/tools/delete-connection.d.ts +13 -0
- package/dist/tools/delete-connection.d.ts.map +1 -0
- package/dist/tools/delete-connection.js +41 -0
- package/dist/tools/delete-connection.js.map +1 -0
- package/dist/tools/delete-custom-node.d.ts +13 -0
- package/dist/tools/delete-custom-node.d.ts.map +1 -0
- package/dist/tools/delete-custom-node.js +41 -0
- package/dist/tools/delete-custom-node.js.map +1 -0
- package/dist/tools/delete-input-preset.d.ts +13 -0
- package/dist/tools/delete-input-preset.d.ts.map +1 -0
- package/dist/tools/delete-input-preset.js +42 -0
- package/dist/tools/delete-input-preset.js.map +1 -0
- package/dist/tools/delete-node.d.ts +13 -0
- package/dist/tools/delete-node.d.ts.map +1 -0
- package/dist/tools/delete-node.js +41 -0
- package/dist/tools/delete-node.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +12 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +37 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/duplicate-workflow.d.ts +13 -0
- package/dist/tools/duplicate-workflow.d.ts.map +1 -0
- package/dist/tools/duplicate-workflow.js +49 -0
- package/dist/tools/duplicate-workflow.js.map +1 -0
- package/dist/tools/execute-workflow.d.ts +15 -0
- package/dist/tools/execute-workflow.d.ts.map +1 -0
- package/dist/tools/execute-workflow.js +112 -0
- package/dist/tools/execute-workflow.js.map +1 -0
- package/dist/tools/favorite-custom-node.d.ts +14 -0
- package/dist/tools/favorite-custom-node.d.ts.map +1 -0
- package/dist/tools/favorite-custom-node.js +48 -0
- package/dist/tools/favorite-custom-node.js.map +1 -0
- package/dist/tools/favorite-workflow.d.ts +13 -0
- package/dist/tools/favorite-workflow.d.ts.map +1 -0
- package/dist/tools/favorite-workflow.js +42 -0
- package/dist/tools/favorite-workflow.js.map +1 -0
- package/dist/tools/get-app-template.d.ts +10 -0
- package/dist/tools/get-app-template.d.ts.map +1 -0
- package/dist/tools/get-app-template.js +856 -0
- package/dist/tools/get-app-template.js.map +1 -0
- package/dist/tools/get-app.d.ts +11 -0
- package/dist/tools/get-app.d.ts.map +1 -0
- package/dist/tools/get-app.js +124 -0
- package/dist/tools/get-app.js.map +1 -0
- package/dist/tools/get-custom-node-comments.d.ts +13 -0
- package/dist/tools/get-custom-node-comments.d.ts.map +1 -0
- package/dist/tools/get-custom-node-comments.js +65 -0
- package/dist/tools/get-custom-node-comments.js.map +1 -0
- package/dist/tools/get-custom-node-template.d.ts +31 -0
- package/dist/tools/get-custom-node-template.d.ts.map +1 -0
- package/dist/tools/get-custom-node-template.js +212 -0
- package/dist/tools/get-custom-node-template.js.map +1 -0
- package/dist/tools/get-custom-node.d.ts +13 -0
- package/dist/tools/get-custom-node.d.ts.map +1 -0
- package/dist/tools/get-custom-node.js +98 -0
- package/dist/tools/get-custom-node.js.map +1 -0
- package/dist/tools/get-execution-history.d.ts +14 -0
- package/dist/tools/get-execution-history.d.ts.map +1 -0
- package/dist/tools/get-execution-history.js +65 -0
- package/dist/tools/get-execution-history.js.map +1 -0
- package/dist/tools/get-execution.d.ts +12 -0
- package/dist/tools/get-execution.d.ts.map +1 -0
- package/dist/tools/get-execution.js +81 -0
- package/dist/tools/get-execution.js.map +1 -0
- package/dist/tools/get-input-preset.d.ts +13 -0
- package/dist/tools/get-input-preset.d.ts.map +1 -0
- package/dist/tools/get-input-preset.js +69 -0
- package/dist/tools/get-input-preset.js.map +1 -0
- package/dist/tools/get-node-connections.d.ts +13 -0
- package/dist/tools/get-node-connections.d.ts.map +1 -0
- package/dist/tools/get-node-connections.js +67 -0
- package/dist/tools/get-node-connections.js.map +1 -0
- package/dist/tools/get-node-schema.d.ts +12 -0
- package/dist/tools/get-node-schema.d.ts.map +1 -0
- package/dist/tools/get-node-schema.js +113 -0
- package/dist/tools/get-node-schema.js.map +1 -0
- package/dist/tools/get-public-workflows.d.ts +13 -0
- package/dist/tools/get-public-workflows.d.ts.map +1 -0
- package/dist/tools/get-public-workflows.js +63 -0
- package/dist/tools/get-public-workflows.js.map +1 -0
- package/dist/tools/get-shared-result-comments.d.ts +13 -0
- package/dist/tools/get-shared-result-comments.d.ts.map +1 -0
- package/dist/tools/get-shared-result-comments.js +62 -0
- package/dist/tools/get-shared-result-comments.js.map +1 -0
- package/dist/tools/get-shared-result.d.ts +13 -0
- package/dist/tools/get-shared-result.d.ts.map +1 -0
- package/dist/tools/get-shared-result.js +83 -0
- package/dist/tools/get-shared-result.js.map +1 -0
- package/dist/tools/get-workflow-comments.d.ts +12 -0
- package/dist/tools/get-workflow-comments.d.ts.map +1 -0
- package/dist/tools/get-workflow-comments.js +60 -0
- package/dist/tools/get-workflow-comments.js.map +1 -0
- package/dist/tools/get-workflow-details.d.ts +12 -0
- package/dist/tools/get-workflow-details.d.ts.map +1 -0
- package/dist/tools/get-workflow-details.js +87 -0
- package/dist/tools/get-workflow-details.js.map +1 -0
- package/dist/tools/get-workflow-graph.d.ts +12 -0
- package/dist/tools/get-workflow-graph.d.ts.map +1 -0
- package/dist/tools/get-workflow-graph.js +83 -0
- package/dist/tools/get-workflow-graph.js.map +1 -0
- package/dist/tools/get-workflow-inputs-schema.d.ts +12 -0
- package/dist/tools/get-workflow-inputs-schema.d.ts.map +1 -0
- package/dist/tools/get-workflow-inputs-schema.js +74 -0
- package/dist/tools/get-workflow-inputs-schema.js.map +1 -0
- package/dist/tools/get-workflow-metrics.d.ts +13 -0
- package/dist/tools/get-workflow-metrics.d.ts.map +1 -0
- package/dist/tools/get-workflow-metrics.js +65 -0
- package/dist/tools/get-workflow-metrics.js.map +1 -0
- package/dist/tools/get-workflow-public-url.d.ts +12 -0
- package/dist/tools/get-workflow-public-url.d.ts.map +1 -0
- package/dist/tools/get-workflow-public-url.js +48 -0
- package/dist/tools/get-workflow-public-url.js.map +1 -0
- package/dist/tools/get-workflow-tags.d.ts +12 -0
- package/dist/tools/get-workflow-tags.d.ts.map +1 -0
- package/dist/tools/get-workflow-tags.js +42 -0
- package/dist/tools/get-workflow-tags.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +407 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/link-app-workflow.d.ts +11 -0
- package/dist/tools/link-app-workflow.d.ts.map +1 -0
- package/dist/tools/link-app-workflow.js +69 -0
- package/dist/tools/link-app-workflow.js.map +1 -0
- package/dist/tools/list-apps.d.ts +11 -0
- package/dist/tools/list-apps.d.ts.map +1 -0
- package/dist/tools/list-apps.js +75 -0
- package/dist/tools/list-apps.js.map +1 -0
- package/dist/tools/list-available-nodes.d.ts +10 -0
- package/dist/tools/list-available-nodes.d.ts.map +1 -0
- package/dist/tools/list-available-nodes.js +94 -0
- package/dist/tools/list-available-nodes.js.map +1 -0
- package/dist/tools/list-custom-nodes.d.ts +16 -0
- package/dist/tools/list-custom-nodes.d.ts.map +1 -0
- package/dist/tools/list-custom-nodes.js +80 -0
- package/dist/tools/list-custom-nodes.js.map +1 -0
- package/dist/tools/list-input-presets.d.ts +15 -0
- package/dist/tools/list-input-presets.d.ts.map +1 -0
- package/dist/tools/list-input-presets.js +100 -0
- package/dist/tools/list-input-presets.js.map +1 -0
- package/dist/tools/list-shared-results.d.ts +15 -0
- package/dist/tools/list-shared-results.d.ts.map +1 -0
- package/dist/tools/list-shared-results.js +80 -0
- package/dist/tools/list-shared-results.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +13 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +70 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/publish-app.d.ts +11 -0
- package/dist/tools/publish-app.d.ts.map +1 -0
- package/dist/tools/publish-app.js +44 -0
- package/dist/tools/publish-app.js.map +1 -0
- package/dist/tools/retry-execution.d.ts +12 -0
- package/dist/tools/retry-execution.d.ts.map +1 -0
- package/dist/tools/retry-execution.js +45 -0
- package/dist/tools/retry-execution.js.map +1 -0
- package/dist/tools/search-apps.d.ts +11 -0
- package/dist/tools/search-apps.d.ts.map +1 -0
- package/dist/tools/search-apps.js +104 -0
- package/dist/tools/search-apps.js.map +1 -0
- package/dist/tools/search-public-custom-nodes.d.ts +19 -0
- package/dist/tools/search-public-custom-nodes.d.ts.map +1 -0
- package/dist/tools/search-public-custom-nodes.js +101 -0
- package/dist/tools/search-public-custom-nodes.js.map +1 -0
- package/dist/tools/search-workflows.d.ts +14 -0
- package/dist/tools/search-workflows.d.ts.map +1 -0
- package/dist/tools/search-workflows.js +62 -0
- package/dist/tools/search-workflows.js.map +1 -0
- package/dist/tools/set-workflow-tags.d.ts +13 -0
- package/dist/tools/set-workflow-tags.d.ts.map +1 -0
- package/dist/tools/set-workflow-tags.js +42 -0
- package/dist/tools/set-workflow-tags.js.map +1 -0
- package/dist/tools/stream-execution.d.ts +13 -0
- package/dist/tools/stream-execution.d.ts.map +1 -0
- package/dist/tools/stream-execution.js +70 -0
- package/dist/tools/stream-execution.js.map +1 -0
- package/dist/tools/toggle-community-inputs.d.ts +13 -0
- package/dist/tools/toggle-community-inputs.d.ts.map +1 -0
- package/dist/tools/toggle-community-inputs.js +49 -0
- package/dist/tools/toggle-community-inputs.js.map +1 -0
- package/dist/tools/toggle-custom-node-visibility.d.ts +14 -0
- package/dist/tools/toggle-custom-node-visibility.d.ts.map +1 -0
- package/dist/tools/toggle-custom-node-visibility.js +59 -0
- package/dist/tools/toggle-custom-node-visibility.js.map +1 -0
- package/dist/tools/toggle-workflow-public.d.ts +13 -0
- package/dist/tools/toggle-workflow-public.d.ts.map +1 -0
- package/dist/tools/toggle-workflow-public.js +42 -0
- package/dist/tools/toggle-workflow-public.js.map +1 -0
- package/dist/tools/unlink-app-workflow.d.ts +11 -0
- package/dist/tools/unlink-app-workflow.d.ts.map +1 -0
- package/dist/tools/unlink-app-workflow.js +44 -0
- package/dist/tools/unlink-app-workflow.js.map +1 -0
- package/dist/tools/unpublish-app.d.ts +11 -0
- package/dist/tools/unpublish-app.d.ts.map +1 -0
- package/dist/tools/unpublish-app.js +39 -0
- package/dist/tools/unpublish-app.js.map +1 -0
- package/dist/tools/update-app.d.ts +11 -0
- package/dist/tools/update-app.d.ts.map +1 -0
- package/dist/tools/update-app.js +101 -0
- package/dist/tools/update-app.js.map +1 -0
- package/dist/tools/update-custom-node.d.ts +28 -0
- package/dist/tools/update-custom-node.d.ts.map +1 -0
- package/dist/tools/update-custom-node.js +174 -0
- package/dist/tools/update-custom-node.js.map +1 -0
- package/dist/tools/update-input-preset.d.ts +16 -0
- package/dist/tools/update-input-preset.d.ts.map +1 -0
- package/dist/tools/update-input-preset.js +79 -0
- package/dist/tools/update-input-preset.js.map +1 -0
- package/dist/tools/update-node.d.ts +18 -0
- package/dist/tools/update-node.d.ts.map +1 -0
- package/dist/tools/update-node.js +73 -0
- package/dist/tools/update-node.js.map +1 -0
- package/dist/tools/validate-workflow.d.ts +12 -0
- package/dist/tools/validate-workflow.d.ts.map +1 -0
- package/dist/tools/validate-workflow.js +61 -0
- package/dist/tools/validate-workflow.js.map +1 -0
- package/dist/tools/vote-custom-node.d.ts +14 -0
- package/dist/tools/vote-custom-node.d.ts.map +1 -0
- package/dist/tools/vote-custom-node.js +60 -0
- package/dist/tools/vote-custom-node.js.map +1 -0
- package/dist/tools/vote-input-preset.d.ts +14 -0
- package/dist/tools/vote-input-preset.d.ts.map +1 -0
- package/dist/tools/vote-input-preset.js +49 -0
- package/dist/tools/vote-input-preset.js.map +1 -0
- package/dist/tools/vote-shared-result.d.ts +14 -0
- package/dist/tools/vote-shared-result.d.ts.map +1 -0
- package/dist/tools/vote-shared-result.js +49 -0
- package/dist/tools/vote-shared-result.js.map +1 -0
- package/dist/tools/vote-workflow.d.ts +13 -0
- package/dist/tools/vote-workflow.d.ts.map +1 -0
- package/dist/tools/vote-workflow.js +45 -0
- package/dist/tools/vote-workflow.js.map +1 -0
- package/dist/types.d.ts +670 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/script-validator.d.ts +35 -0
- package/dist/utils/script-validator.d.ts.map +1 -0
- package/dist/utils/script-validator.js +282 -0
- package/dist/utils/script-validator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_shared_result_comments MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets comments on a shared execution result.
|
|
5
|
+
*/
|
|
6
|
+
export const getSharedResultCommentsTool = {
|
|
7
|
+
name: 'get_shared_result_comments',
|
|
8
|
+
description: 'Get user comments on a shared execution result.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
result_hash: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The shared result hash',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['workflow_id', 'result_hash'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
function formatComment(comment, indent = '') {
|
|
25
|
+
const lines = [
|
|
26
|
+
`${indent}**${comment.user_name}** (${comment.created_at})`,
|
|
27
|
+
`${indent}${comment.content}`,
|
|
28
|
+
`${indent}Votes: ${comment.vote_count}`,
|
|
29
|
+
];
|
|
30
|
+
if (comment.replies && comment.replies.length > 0) {
|
|
31
|
+
lines.push(`${indent}Replies:`);
|
|
32
|
+
for (const reply of comment.replies) {
|
|
33
|
+
lines.push(formatComment(reply, indent + ' '));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return lines.join('\n');
|
|
37
|
+
}
|
|
38
|
+
export async function handleGetSharedResultComments(api, args) {
|
|
39
|
+
try {
|
|
40
|
+
const comments = await api.getSharedResultComments(args.workflow_id, args.result_hash);
|
|
41
|
+
if (!comments || comments.length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: 'text', text: 'No comments on this shared result yet.' }],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const formatted = comments
|
|
47
|
+
.filter(c => c && typeof c === 'object')
|
|
48
|
+
.map(c => formatComment(c))
|
|
49
|
+
.join('\n\n---\n\n');
|
|
50
|
+
return {
|
|
51
|
+
content: [{ type: 'text', text: `## Shared Result Comments (${comments.length})\n\n${formatted}` }],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: 'text', text: `Error getting shared result comments: ${message}` }],
|
|
58
|
+
isError: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=get-shared-result-comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-shared-result-comments.js","sourceRoot":"","sources":["../../src/tools/get-shared-result-comments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,CAAC,MAAM,2BAA2B,GAAS;IAC/C,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,iDAAiD;IAC9D,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;KACzC;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,OAA4B,EAAE,SAAiB,EAAE;IACtE,MAAM,KAAK,GAAG;QACZ,GAAG,MAAM,KAAK,OAAO,CAAC,SAAS,OAAO,OAAO,CAAC,UAAU,GAAG;QAC3D,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;QAC7B,GAAG,MAAM,UAAU,OAAO,CAAC,UAAU,EAAE;KACxC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAqB,EACrB,IAAkD;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aAC1B,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,QAAQ,CAAC,MAAM,QAAQ,SAAS,EAAE,EAAE,CAAC;SACpG,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,OAAO,EAAE,EAAE,CAAC;YACrF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_shared_result MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets details of a specific shared execution result.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getSharedResultTool: Tool;
|
|
9
|
+
export declare function handleGetSharedResult(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
result_hash: string;
|
|
12
|
+
}): Promise<CallToolResult>;
|
|
13
|
+
//# sourceMappingURL=get-shared-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-shared-result.d.ts","sourceRoot":"","sources":["../../src/tools/get-shared-result.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,mBAAmB,EAAE,IAiBjC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,cAAc,CAAC,CAkEzB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_shared_result MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets details of a specific shared execution result.
|
|
5
|
+
*/
|
|
6
|
+
export const getSharedResultTool = {
|
|
7
|
+
name: 'get_shared_result',
|
|
8
|
+
description: 'Get detailed information about a specific shared execution result, including the shared outputs and inputs.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
result_hash: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The shared result hash',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['workflow_id', 'result_hash'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export async function handleGetSharedResult(api, args) {
|
|
25
|
+
try {
|
|
26
|
+
const result = await api.getSharedResult(args.workflow_id, args.result_hash);
|
|
27
|
+
const lines = [
|
|
28
|
+
`## ${result.title || 'Untitled Result'}`,
|
|
29
|
+
'',
|
|
30
|
+
`**Hash:** ${result.hash}`,
|
|
31
|
+
`**Share URL:** ${result.share_url}`,
|
|
32
|
+
`**Views:** ${result.view_count} | **Votes:** ${result.vote_count}`,
|
|
33
|
+
`**Status:** ${result.is_active ? '✓ Active' : '✗ Inactive'}`,
|
|
34
|
+
`**Created:** ${result.created_at}`,
|
|
35
|
+
];
|
|
36
|
+
if (result.description) {
|
|
37
|
+
lines.push('', `**Description:** ${result.description}`);
|
|
38
|
+
}
|
|
39
|
+
if (result.expires_at) {
|
|
40
|
+
lines.push(`**Expires:** ${result.expires_at}`);
|
|
41
|
+
}
|
|
42
|
+
if (result.workflow) {
|
|
43
|
+
lines.push('', '### Workflow');
|
|
44
|
+
lines.push(`- **Name:** ${result.workflow.name}`);
|
|
45
|
+
lines.push(`- **Hash:** ${result.workflow.hash}`);
|
|
46
|
+
if (result.workflow.description) {
|
|
47
|
+
lines.push(`- **Description:** ${result.workflow.description}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (result.user) {
|
|
51
|
+
lines.push('', `**Shared by:** ${result.user.name} (${result.user.hash})`);
|
|
52
|
+
}
|
|
53
|
+
// Show shared inputs
|
|
54
|
+
if (result.shared_inputs && Object.keys(result.shared_inputs).length > 0) {
|
|
55
|
+
lines.push('', '### Shared Inputs');
|
|
56
|
+
lines.push('```json');
|
|
57
|
+
lines.push(JSON.stringify(result.shared_inputs, null, 2));
|
|
58
|
+
lines.push('```');
|
|
59
|
+
}
|
|
60
|
+
// Show shared outputs (summarized)
|
|
61
|
+
if (result.shared_node_results && Object.keys(result.shared_node_results).length > 0) {
|
|
62
|
+
const nodeCount = Object.keys(result.shared_node_results).length;
|
|
63
|
+
lines.push('', `### Shared Outputs (${nodeCount} nodes)`);
|
|
64
|
+
for (const [nodeId, nodeResult] of Object.entries(result.shared_node_results)) {
|
|
65
|
+
const summary = typeof nodeResult === 'object'
|
|
66
|
+
? JSON.stringify(nodeResult).substring(0, 200) + '...'
|
|
67
|
+
: String(nodeResult).substring(0, 200);
|
|
68
|
+
lines.push(`- **${nodeId}:** ${summary}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
77
|
+
return {
|
|
78
|
+
content: [{ type: 'text', text: `Error getting shared result: ${message}` }],
|
|
79
|
+
isError: true,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=get-shared-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-shared-result.js","sourceRoot":"","sources":["../../src/tools/get-shared-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_comments MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets user comments on a workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowCommentsTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowComments(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=get-workflow-comments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-comments.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-comments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,eAAO,MAAM,uBAAuB,EAAE,IAarC,CAAC;AAmBF,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CA4BzB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_comments MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets user comments on a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowCommentsTool = {
|
|
7
|
+
name: 'get_workflow_comments',
|
|
8
|
+
description: 'Get user comments and ratings on a workflow. Only available for public workflows.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['workflow_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
function formatComment(comment, indent = '') {
|
|
21
|
+
const lines = [
|
|
22
|
+
`${indent}**${comment.user_name}** (${comment.created_at})`,
|
|
23
|
+
`${indent}${comment.content}`,
|
|
24
|
+
`${indent}Votes: ${comment.vote_count}`,
|
|
25
|
+
];
|
|
26
|
+
if (comment.replies && comment.replies.length > 0) {
|
|
27
|
+
lines.push(`${indent}Replies:`);
|
|
28
|
+
for (const reply of comment.replies) {
|
|
29
|
+
lines.push(formatComment(reply, indent + ' '));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return lines.join('\n');
|
|
33
|
+
}
|
|
34
|
+
export async function handleGetWorkflowComments(api, args) {
|
|
35
|
+
try {
|
|
36
|
+
const response = await api.getWorkflowComments(args.workflow_id);
|
|
37
|
+
// Handle unexpected response formats
|
|
38
|
+
const comments = Array.isArray(response) ? response : [];
|
|
39
|
+
if (comments.length === 0) {
|
|
40
|
+
return {
|
|
41
|
+
content: [{ type: 'text', text: 'No comments on this workflow yet.' }],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const formatted = comments
|
|
45
|
+
.filter(c => c && typeof c === 'object')
|
|
46
|
+
.map(c => formatComment(c))
|
|
47
|
+
.join('\n\n---\n\n');
|
|
48
|
+
return {
|
|
49
|
+
content: [{ type: 'text', text: `## Workflow Comments (${comments.length})\n\n${formatted}` }],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
54
|
+
return {
|
|
55
|
+
content: [{ type: 'text', text: `Error getting workflow comments: ${message}` }],
|
|
56
|
+
isError: true,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=get-workflow-comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-comments.js","sourceRoot":"","sources":["../../src/tools/get-workflow-comments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,CAAC,MAAM,uBAAuB,GAAS;IAC3C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,mFAAmF;IAChG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,OAAwB,EAAE,SAAiB,EAAE;IAClE,MAAM,KAAK,GAAG;QACZ,GAAG,MAAM,KAAK,OAAO,CAAC,SAAS,OAAO,OAAO,CAAC,UAAU,GAAG;QAC3D,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;QAC7B,GAAG,MAAM,UAAU,OAAO,CAAC,UAAU,EAAE;KACxC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAqB,EACrB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjE,qCAAqC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAAC;aACvE,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aAC1B,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,QAAQ,CAAC,MAAM,QAAQ,SAAS,EAAE,EAAE,CAAC;SAC/F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,OAAO,EAAE,EAAE,CAAC;YAChF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_details MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets detailed workflow information including nodes, connections, and signature.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowDetailsTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowDetails(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=get-workflow-details.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-details.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-details.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,sBAAsB,EAAE,IAapC,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CAwEzB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_details MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets detailed workflow information including nodes, connections, and signature.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowDetailsTool = {
|
|
7
|
+
name: 'get_workflow_details',
|
|
8
|
+
description: 'Get detailed workflow information including nodes, connections, input/output signature, and metadata.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['workflow_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function handleGetWorkflowDetails(api, args) {
|
|
21
|
+
try {
|
|
22
|
+
const details = await api.getWorkflowDetails(args.workflow_id);
|
|
23
|
+
const lines = [
|
|
24
|
+
`## ${details.name}`,
|
|
25
|
+
'',
|
|
26
|
+
details.description || 'No description',
|
|
27
|
+
'',
|
|
28
|
+
`**ID:** ${details.id}`,
|
|
29
|
+
`**Public:** ${details.is_public ? 'Yes' : 'No'}`,
|
|
30
|
+
`**Visibility:** ${details.visibility}`,
|
|
31
|
+
`**Disabled:** ${details.is_disabled ? 'Yes' : 'No'}`,
|
|
32
|
+
`**Favorited:** ${details.is_favorited ? 'Yes' : 'No'}`,
|
|
33
|
+
`**Tags:** ${details.tags?.join(', ') || 'None'}`,
|
|
34
|
+
'',
|
|
35
|
+
'### Stats',
|
|
36
|
+
`- Favorites: ${details.favorite_count}`,
|
|
37
|
+
`- Votes: ${details.vote_count}`,
|
|
38
|
+
`- Copies: ${details.copy_count}`,
|
|
39
|
+
'',
|
|
40
|
+
];
|
|
41
|
+
// Signature
|
|
42
|
+
if (details.signature) {
|
|
43
|
+
if (details.signature.inputs?.length > 0) {
|
|
44
|
+
lines.push('### Inputs');
|
|
45
|
+
for (const input of details.signature.inputs) {
|
|
46
|
+
lines.push(`- **${input.name}** (${input.dataType}) - Node: ${input.nodeId}`);
|
|
47
|
+
}
|
|
48
|
+
lines.push('');
|
|
49
|
+
}
|
|
50
|
+
if (details.signature.outputs?.length > 0) {
|
|
51
|
+
lines.push('### Outputs');
|
|
52
|
+
for (const output of details.signature.outputs) {
|
|
53
|
+
lines.push(`- **${output.name}** (${output.dataType}) - Node: ${output.nodeType}`);
|
|
54
|
+
}
|
|
55
|
+
lines.push('');
|
|
56
|
+
}
|
|
57
|
+
if (details.signature.settings?.length > 0) {
|
|
58
|
+
lines.push('### Settings');
|
|
59
|
+
for (const setting of details.signature.settings) {
|
|
60
|
+
lines.push(`- **${setting.name}** (${setting.type}): ${JSON.stringify(setting.currentValue)}`);
|
|
61
|
+
}
|
|
62
|
+
lines.push('');
|
|
63
|
+
}
|
|
64
|
+
if (details.signature.usage_notes?.length > 0) {
|
|
65
|
+
lines.push('### Usage Notes');
|
|
66
|
+
for (const note of details.signature.usage_notes) {
|
|
67
|
+
lines.push(`- ${note}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Node count
|
|
72
|
+
const nodeCount = details.nodes ? Object.keys(details.nodes).length : 0;
|
|
73
|
+
const connectionCount = details.connections ? Object.keys(details.connections).length : 0;
|
|
74
|
+
lines.push('', `**Nodes:** ${nodeCount} | **Connections:** ${connectionCount}`);
|
|
75
|
+
return {
|
|
76
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
81
|
+
return {
|
|
82
|
+
content: [{ type: 'text', text: `Error getting workflow details: ${message}` }],
|
|
83
|
+
isError: true,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=get-workflow-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-details.js","sourceRoot":"","sources":["../../src/tools/get-workflow-details.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_graph MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the full node and connection graph of a workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowGraphTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowGraph(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=get-workflow-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-graph.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,oBAAoB,EAAE,IAalC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CA8DzB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_graph MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the full node and connection graph of a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowGraphTool = {
|
|
7
|
+
name: 'get_workflow_graph',
|
|
8
|
+
description: 'Get the complete graph structure of a workflow including all nodes and connections.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['workflow_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function handleGetWorkflowGraph(api, args) {
|
|
21
|
+
try {
|
|
22
|
+
const graph = await api.getWorkflowGraph(args.workflow_id);
|
|
23
|
+
const nodeCount = graph.nodes ? Object.keys(graph.nodes).length : 0;
|
|
24
|
+
const connectionCount = graph.connections ? Object.keys(graph.connections).length : 0;
|
|
25
|
+
const lines = [
|
|
26
|
+
'## Workflow Graph',
|
|
27
|
+
'',
|
|
28
|
+
`**Nodes:** ${nodeCount}`,
|
|
29
|
+
`**Connections:** ${connectionCount}`,
|
|
30
|
+
'',
|
|
31
|
+
];
|
|
32
|
+
// List nodes
|
|
33
|
+
if (nodeCount > 0) {
|
|
34
|
+
lines.push('### Nodes');
|
|
35
|
+
for (const [id, node] of Object.entries(graph.nodes)) {
|
|
36
|
+
lines.push(`- **${node.title}** (${id})`);
|
|
37
|
+
lines.push(` Type: ${node.type} | Position: (${node.position.x}, ${node.position.y})`);
|
|
38
|
+
if (node.inputs && node.inputs.length > 0) {
|
|
39
|
+
lines.push(` Inputs: ${node.inputs.map(i => i.name).join(', ')}`);
|
|
40
|
+
}
|
|
41
|
+
if (node.outputs && node.outputs.length > 0) {
|
|
42
|
+
lines.push(` Outputs: ${node.outputs.map(o => o.name).join(', ')}`);
|
|
43
|
+
}
|
|
44
|
+
// Show properties info for debugging
|
|
45
|
+
if (node.properties === null) {
|
|
46
|
+
lines.push(` Properties: **null** (BUG!)`);
|
|
47
|
+
}
|
|
48
|
+
else if (node.properties === undefined) {
|
|
49
|
+
lines.push(` Properties: **undefined** (BUG!)`);
|
|
50
|
+
}
|
|
51
|
+
else if (!Array.isArray(node.properties)) {
|
|
52
|
+
lines.push(` Properties: **${typeof node.properties}** (BUG! Expected array, got: ${JSON.stringify(node.properties).substring(0, 100)})`);
|
|
53
|
+
}
|
|
54
|
+
else if (node.properties.length === 0) {
|
|
55
|
+
lines.push(` Properties: [] (empty array)`);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
lines.push(` Properties: [${node.properties.length} items] ${node.properties.map(p => p.key).join(', ')}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
lines.push('');
|
|
62
|
+
}
|
|
63
|
+
// List connections
|
|
64
|
+
if (connectionCount > 0) {
|
|
65
|
+
lines.push('### Connections');
|
|
66
|
+
for (const [id, conn] of Object.entries(graph.connections)) {
|
|
67
|
+
const feedback = conn.isFeedback ? ' (feedback)' : '';
|
|
68
|
+
lines.push(`- ${conn.sourceNodeId}.${conn.sourceSocketId} -> ${conn.targetNodeId}.${conn.targetSocketId}${feedback}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
77
|
+
return {
|
|
78
|
+
content: [{ type: 'text', text: `Error getting workflow graph: ${message}` }],
|
|
79
|
+
isError: true,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=get-workflow-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-graph.js","sourceRoot":"","sources":["../../src/tools/get-workflow-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_inputs_schema MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the input schema for a workflow - what inputs it expects.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowInputsSchemaTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowInputsSchema(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=get-workflow-inputs-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-inputs-schema.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-inputs-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,2BAA2B,EAAE,IAazC,CAAC;AAEF,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CA2DzB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_inputs_schema MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the input schema for a workflow - what inputs it expects.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowInputsSchemaTool = {
|
|
7
|
+
name: 'get_workflow_inputs_schema',
|
|
8
|
+
description: 'Get the input schema for a workflow - shows what inputs are expected, their types, and whether they are required.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['workflow_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function handleGetWorkflowInputsSchema(api, args) {
|
|
21
|
+
try {
|
|
22
|
+
const result = await api.getWorkflowInputsSchema(args.workflow_id);
|
|
23
|
+
// API returns { workflow_id, inputs: [...], settings: [...], usage_notes: [...] }
|
|
24
|
+
const inputs = Array.isArray(result?.inputs) ? result.inputs : [];
|
|
25
|
+
const settings = Array.isArray(result?.settings) ? result.settings : [];
|
|
26
|
+
const usageNotes = Array.isArray(result?.usage_notes) ? result.usage_notes : [];
|
|
27
|
+
if (inputs.length === 0 && settings.length === 0) {
|
|
28
|
+
return {
|
|
29
|
+
content: [{ type: 'text', text: 'This workflow has no defined inputs or configurable settings.' }],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const lines = ['## Workflow Input Schema', ''];
|
|
33
|
+
if (inputs.length > 0) {
|
|
34
|
+
lines.push('### Inputs');
|
|
35
|
+
for (const input of inputs) {
|
|
36
|
+
const required = input.required ? '(required)' : '(optional)';
|
|
37
|
+
lines.push(`#### ${input.name} ${required}`);
|
|
38
|
+
lines.push(`- **Type:** ${input.type || 'text'}`);
|
|
39
|
+
if (input.description) {
|
|
40
|
+
lines.push(`- **Description:** ${input.description}`);
|
|
41
|
+
}
|
|
42
|
+
if (input.default !== undefined) {
|
|
43
|
+
lines.push(`- **Default:** ${JSON.stringify(input.default)}`);
|
|
44
|
+
}
|
|
45
|
+
lines.push('');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (settings.length > 0) {
|
|
49
|
+
lines.push('### Settings');
|
|
50
|
+
for (const setting of settings) {
|
|
51
|
+
lines.push(`- **${setting.name}:** ${setting.description || setting.type || 'configurable'}`);
|
|
52
|
+
}
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
if (usageNotes.length > 0) {
|
|
56
|
+
lines.push('### Usage Notes');
|
|
57
|
+
for (const note of usageNotes) {
|
|
58
|
+
lines.push(`- ${note}`);
|
|
59
|
+
}
|
|
60
|
+
lines.push('');
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text: `Error getting workflow inputs schema: ${message}` }],
|
|
70
|
+
isError: true,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=get-workflow-inputs-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-inputs-schema.js","sourceRoot":"","sources":["../../src/tools/get-workflow-inputs-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_metrics MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets execution metrics for a workflow including counts, success rates, and average duration.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowMetricsTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowMetrics(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
period?: string;
|
|
12
|
+
}): Promise<CallToolResult>;
|
|
13
|
+
//# sourceMappingURL=get-workflow-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-metrics.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,sBAAsB,EAAE,IAkBpC,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,cAAc,CAAC,CA2CzB"}
|