@opencx/mcp 1.8.2 → 1.8.4
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/server.d.ts.map +1 -1
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +67 -51
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/autopilot.d.ts.map +1 -1
- package/dist/tools/autopilot.js +26 -6
- package/dist/tools/autopilot.js.map +1 -1
- package/dist/tools/blocklist.d.ts.map +1 -1
- package/dist/tools/blocklist.js +40 -16
- package/dist/tools/blocklist.js.map +1 -1
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +35 -19
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/crawl.d.ts.map +1 -1
- package/dist/tools/crawl.js +35 -17
- package/dist/tools/crawl.js.map +1 -1
- package/dist/tools/csat.d.ts.map +1 -1
- package/dist/tools/csat.js +18 -5
- package/dist/tools/csat.js.map +1 -1
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +43 -29
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/handoff-analytics.d.ts.map +1 -1
- package/dist/tools/handoff-analytics.js +12 -9
- package/dist/tools/handoff-analytics.js.map +1 -1
- package/dist/tools/help-center.d.ts +4 -0
- package/dist/tools/help-center.d.ts.map +1 -0
- package/dist/tools/help-center.js +84 -0
- package/dist/tools/help-center.js.map +1 -0
- package/dist/tools/insights.d.ts.map +1 -1
- package/dist/tools/insights.js +24 -9
- package/dist/tools/insights.js.map +1 -1
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +5 -4
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/office-hours.d.ts.map +1 -1
- package/dist/tools/office-hours.js +30 -18
- package/dist/tools/office-hours.js.map +1 -1
- package/dist/tools/org.d.ts.map +1 -1
- package/dist/tools/org.js +9 -2
- package/dist/tools/org.js.map +1 -1
- package/dist/tools/phone.d.ts.map +1 -1
- package/dist/tools/phone.js +75 -56
- package/dist/tools/phone.js.map +1 -1
- package/dist/tools/redaction.d.ts +4 -0
- package/dist/tools/redaction.d.ts.map +1 -0
- package/dist/tools/redaction.js +30 -0
- package/dist/tools/redaction.js.map +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +7 -4
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/sequences.d.ts.map +1 -1
- package/dist/tools/sequences.js +46 -28
- package/dist/tools/sequences.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +117 -80
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/sla-analytics.d.ts.map +1 -1
- package/dist/tools/sla-analytics.js +25 -13
- package/dist/tools/sla-analytics.js.map +1 -1
- package/dist/tools/sla.d.ts.map +1 -1
- package/dist/tools/sla.js +65 -51
- package/dist/tools/sla.js.map +1 -1
- package/dist/tools/tags.d.ts.map +1 -1
- package/dist/tools/tags.js +28 -13
- package/dist/tools/tags.js.map +1 -1
- package/dist/tools/teams.d.ts.map +1 -1
- package/dist/tools/teams.js +40 -17
- package/dist/tools/teams.js.map +1 -1
- package/dist/tools/training.d.ts.map +1 -1
- package/dist/tools/training.js +126 -81
- package/dist/tools/training.js.map +1 -1
- package/dist/tools/whatsapp.d.ts.map +1 -1
- package/dist/tools/whatsapp.js +21 -20
- package/dist/tools/whatsapp.js.map +1 -1
- package/dist/tools/widget.d.ts +4 -0
- package/dist/tools/widget.d.ts.map +1 -0
- package/dist/tools/widget.js +23 -0
- package/dist/tools/widget.js.map +1 -0
- package/dist/tools/workflows.d.ts.map +1 -1
- package/dist/tools/workflows.js +118 -66
- package/dist/tools/workflows.js.map +1 -1
- package/dist/workflow-editor-state.d.ts +34 -0
- package/dist/workflow-editor-state.d.ts.map +1 -0
- package/dist/workflow-editor-state.js +74 -0
- package/dist/workflow-editor-state.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerWidgetTools(server, client) {
|
|
3
|
+
server.registerTool('authenticate_widget_user', {
|
|
4
|
+
description: 'Generate a JWT token for an authenticated chat widget user. Creates or updates the contact and returns a token for embedding the widget with verified identity. Use this to enable authenticated chat experiences.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
email: z.string().describe('Contact email address (used as unique identifier)'),
|
|
7
|
+
name: z.string().optional().describe('Contact display name'),
|
|
8
|
+
phone: z.string().optional().describe('Contact phone number'),
|
|
9
|
+
customData: z
|
|
10
|
+
.record(z.string(), z.union([z.string(), z.number(), z.boolean()]))
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('Custom key-value data to attach to the contact'),
|
|
13
|
+
chat_context: z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Additional context for the AI agent about this user (e.g. "VIP customer, premium plan")'),
|
|
17
|
+
},
|
|
18
|
+
}, async (params) => {
|
|
19
|
+
const data = await client.post('/widget/authenticate-user', params);
|
|
20
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAoB;IACzE,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,oNAAoN;QACtN,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC7D,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAClE,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,yFAAyF,CAC1F;SACJ;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AA0F1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA+P5E"}
|
package/dist/tools/workflows.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
|
+
import { blocksToEditorState } from '../workflow-editor-state.js';
|
|
3
4
|
const TRIGGER_TYPES = [
|
|
4
5
|
'manual-trigger',
|
|
5
6
|
'ai-trigger',
|
|
@@ -31,7 +32,9 @@ const triggerTypeSchema = z
|
|
|
31
32
|
const actionStepSchema = z
|
|
32
33
|
.object({
|
|
33
34
|
$kind: z.literal('Action'),
|
|
34
|
-
id: z
|
|
35
|
+
id: z
|
|
36
|
+
.string()
|
|
37
|
+
.describe('Unique step ID (e.g. "step_1"). Used in references like {{step_1.output.field}}'),
|
|
35
38
|
type: z
|
|
36
39
|
.string()
|
|
37
40
|
.describe('Action type from list_workflow_definitions (e.g. "ask-ai", "hold-value", "send-webhook", "tag-ticket")'),
|
|
@@ -47,7 +50,10 @@ const conditionSchema = z
|
|
|
47
50
|
.string()
|
|
48
51
|
.describe('Comparison operator: "equals", "not_equals", "contains", "not_contains", "greater_than", "less_than", "is_empty", "is_not_empty", "and", "or"'),
|
|
49
52
|
left: z.unknown().describe('Left operand — static value or {{step_id.output.field}} reference'),
|
|
50
|
-
right: z
|
|
53
|
+
right: z
|
|
54
|
+
.unknown()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Right operand (not needed for unary operators like is_empty)'),
|
|
51
57
|
})
|
|
52
58
|
.describe('A condition for if-else/switch blocks');
|
|
53
59
|
const blockStepSchema = z
|
|
@@ -67,16 +73,21 @@ const workflowBlockSchema = z
|
|
|
67
73
|
.union([actionStepSchema, blockStepSchema])
|
|
68
74
|
.describe('A workflow step: either an Action or a Block');
|
|
69
75
|
export function registerWorkflowTools(server, client) {
|
|
70
|
-
server.
|
|
71
|
-
'
|
|
72
|
-
|
|
76
|
+
server.registerTool('list_workflow_definitions', {
|
|
77
|
+
description: 'List all available workflow action types (with their input/output field schemas), trigger types, and block types. ' +
|
|
78
|
+
'ALWAYS call this first before creating a workflow — it tells you exactly what action types exist, ' +
|
|
79
|
+
'what input fields each action expects, and what output fields you can reference with {{step_id.output.field}}.',
|
|
80
|
+
}, async () => {
|
|
73
81
|
const data = await client.get('/workflows/definitions');
|
|
74
82
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
75
83
|
});
|
|
76
|
-
server.
|
|
77
|
-
'
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
server.registerTool('validate_workflow', {
|
|
85
|
+
description: 'Validate workflow blocks without creating a workflow. Returns issues and action types used. ' +
|
|
86
|
+
'Use before create_workflow to catch errors early.',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
trigger_type: triggerTypeSchema,
|
|
89
|
+
workflow_blocks: z.array(workflowBlockSchema).describe('Workflow blocks to validate'),
|
|
90
|
+
},
|
|
80
91
|
}, async ({ trigger_type, workflow_blocks }) => {
|
|
81
92
|
const data = await client.post('/workflows/validate', {
|
|
82
93
|
trigger_type,
|
|
@@ -84,23 +95,27 @@ export function registerWorkflowTools(server, client) {
|
|
|
84
95
|
});
|
|
85
96
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
86
97
|
});
|
|
87
|
-
server.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
98
|
+
server.registerTool('create_workflow', {
|
|
99
|
+
description: 'Create a new workflow. Created as an inactive draft — use activate_workflow to make it live. ' +
|
|
100
|
+
'IMPORTANT: Call list_workflow_definitions first to see available action types and their input fields.',
|
|
101
|
+
inputSchema: {
|
|
102
|
+
name: z.string().describe('Workflow name'),
|
|
103
|
+
description: z.string().optional().describe('Workflow description'),
|
|
104
|
+
trigger_type: triggerTypeSchema,
|
|
105
|
+
trigger_configuration: z
|
|
106
|
+
.record(z.string(), z.unknown())
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('Trigger-specific config (e.g. cron expression for cron-trigger)'),
|
|
109
|
+
trigger_constraints: z
|
|
110
|
+
.record(z.string(), z.unknown())
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('JSON Logic constraints that must be satisfied for the trigger to fire'),
|
|
113
|
+
workflow_blocks: z
|
|
114
|
+
.array(workflowBlockSchema)
|
|
115
|
+
.describe('Workflow steps and blocks. Use {{step_id.output.field}} to reference earlier step outputs.'),
|
|
116
|
+
},
|
|
117
|
+
}, async ({ name, description, trigger_type, trigger_configuration, trigger_constraints, workflow_blocks, }) => {
|
|
118
|
+
const editorState = blocksToEditorState(trigger_type, workflow_blocks, trigger_configuration, trigger_constraints);
|
|
104
119
|
const data = await client.post('/workflows/', {
|
|
105
120
|
name,
|
|
106
121
|
description,
|
|
@@ -108,67 +123,101 @@ export function registerWorkflowTools(server, client) {
|
|
|
108
123
|
trigger_configuration: trigger_configuration ?? null,
|
|
109
124
|
trigger_constraints: trigger_constraints ?? null,
|
|
110
125
|
workflow_blocks,
|
|
126
|
+
workflow_editor_state: editorState,
|
|
111
127
|
});
|
|
112
128
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
113
129
|
});
|
|
114
|
-
server.
|
|
130
|
+
server.registerTool('list_workflows', {
|
|
131
|
+
description: 'List all workflows in your organization. Returns the latest version of each with name, trigger type, and active status.',
|
|
132
|
+
}, async () => {
|
|
115
133
|
const data = await client.get('/workflows/');
|
|
116
134
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
117
135
|
});
|
|
118
|
-
server.
|
|
136
|
+
server.registerTool('get_workflow', {
|
|
137
|
+
description: 'Get a specific workflow by UUID, including its blocks, trigger configuration, active status, and version number.',
|
|
138
|
+
inputSchema: { workflow_id: z.string().describe('The workflow UUID') },
|
|
139
|
+
}, async ({ workflow_id }) => {
|
|
119
140
|
const data = await client.get(`/workflows/${safePath(workflow_id)}`);
|
|
120
141
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
121
142
|
});
|
|
122
|
-
server.
|
|
123
|
-
'
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
server.registerTool('update_workflow', {
|
|
144
|
+
description: 'Update a workflow by creating a new version. Only provided fields change; omitted fields carry over. ' +
|
|
145
|
+
'New version is inactive — use activate_workflow to make it live.',
|
|
146
|
+
inputSchema: {
|
|
147
|
+
workflow_id: z.string().describe('The workflow UUID to update'),
|
|
148
|
+
name: z.string().optional().describe('New workflow name'),
|
|
149
|
+
description: z.string().optional().describe('New workflow description'),
|
|
150
|
+
trigger_type: triggerTypeSchema.optional(),
|
|
151
|
+
trigger_configuration: z
|
|
152
|
+
.record(z.string(), z.unknown())
|
|
153
|
+
.optional()
|
|
154
|
+
.describe('New trigger configuration'),
|
|
155
|
+
trigger_constraints: z
|
|
156
|
+
.record(z.string(), z.unknown())
|
|
157
|
+
.optional()
|
|
158
|
+
.describe('New trigger constraints'),
|
|
159
|
+
workflow_blocks: z
|
|
160
|
+
.array(workflowBlockSchema)
|
|
161
|
+
.optional()
|
|
162
|
+
.describe('New workflow blocks (replaces existing)'),
|
|
163
|
+
},
|
|
140
164
|
}, async ({ workflow_id, ...body }) => {
|
|
141
|
-
|
|
165
|
+
// Fetch existing to merge blocks/trigger for editor state generation
|
|
166
|
+
const existing = await client.get(`/workflows/${safePath(workflow_id)}`);
|
|
167
|
+
const blocks = body.workflow_blocks ?? existing.workflow_blocks ?? [];
|
|
168
|
+
const triggerType = body.trigger_type ?? existing.trigger_type;
|
|
169
|
+
const triggerConfig = body.trigger_configuration ?? existing.trigger_configuration;
|
|
170
|
+
const triggerConstraints = body.trigger_constraints ?? existing.trigger_constraints;
|
|
171
|
+
const editorState = blocksToEditorState(triggerType, blocks, triggerConfig, triggerConstraints);
|
|
172
|
+
const data = await client.patch(`/workflows/${safePath(workflow_id)}`, {
|
|
173
|
+
...body,
|
|
174
|
+
workflow_editor_state: editorState,
|
|
175
|
+
});
|
|
142
176
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
143
177
|
});
|
|
144
|
-
server.
|
|
178
|
+
server.registerTool('delete_workflow', {
|
|
179
|
+
description: 'Delete a workflow and all its versions. Active versions are deactivated first. Cannot be undone.',
|
|
180
|
+
inputSchema: { workflow_id: z.string().describe('The workflow UUID to delete') },
|
|
181
|
+
}, async ({ workflow_id }) => {
|
|
145
182
|
const data = await client.delete(`/workflows/${safePath(workflow_id)}`);
|
|
146
183
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
147
184
|
});
|
|
148
|
-
server.
|
|
185
|
+
server.registerTool('activate_workflow', {
|
|
186
|
+
description: 'Activate the latest version of a workflow. Any previously active version is deactivated.',
|
|
187
|
+
inputSchema: { workflow_id: z.string().describe('The workflow UUID to activate') },
|
|
188
|
+
}, async ({ workflow_id }) => {
|
|
149
189
|
const data = await client.post(`/workflows/${safePath(workflow_id)}/activate`);
|
|
150
190
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
151
191
|
});
|
|
152
|
-
server.
|
|
192
|
+
server.registerTool('deactivate_workflow', {
|
|
193
|
+
description: 'Deactivate the currently active version of a workflow.',
|
|
194
|
+
inputSchema: { workflow_id: z.string().describe('The workflow UUID to deactivate') },
|
|
195
|
+
}, async ({ workflow_id }) => {
|
|
153
196
|
const data = await client.post(`/workflows/${safePath(workflow_id)}/deactivate`);
|
|
154
197
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
155
198
|
});
|
|
156
|
-
server.
|
|
199
|
+
server.registerTool('trigger_workflow', {
|
|
200
|
+
description: 'Manually trigger a workflow. Must be "manual-trigger" type and active. Runs in background.',
|
|
201
|
+
inputSchema: { workflow_id: z.string().describe('The workflow UUID to trigger') },
|
|
202
|
+
}, async ({ workflow_id }) => {
|
|
157
203
|
await client.post(`/workflows/${safePath(workflow_id)}/trigger`);
|
|
158
204
|
return { content: [{ type: 'text', text: `Workflow ${workflow_id} triggered.` }] };
|
|
159
205
|
});
|
|
160
|
-
server.
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
206
|
+
server.registerTool('list_workflow_runs', {
|
|
207
|
+
description: 'List execution runs for a workflow with optional filters.',
|
|
208
|
+
inputSchema: {
|
|
209
|
+
workflow_id: z.string().describe('The workflow UUID'),
|
|
210
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
211
|
+
limit: z.number().optional().describe('Results per page (default: 20, max: 50)'),
|
|
212
|
+
status: z
|
|
213
|
+
.string()
|
|
214
|
+
.optional()
|
|
215
|
+
.describe('Comma-separated: completed, failed, in_progress, canceled, idle'),
|
|
216
|
+
trigger_cause: z
|
|
217
|
+
.string()
|
|
218
|
+
.optional()
|
|
219
|
+
.describe('Comma-separated: manual, automatic, scheduled'),
|
|
220
|
+
},
|
|
172
221
|
}, async ({ workflow_id, page, limit, status, trigger_cause }) => {
|
|
173
222
|
const data = await client.get(`/workflows/${safePath(workflow_id)}/runs`, {
|
|
174
223
|
page: page?.toString(),
|
|
@@ -178,9 +227,12 @@ export function registerWorkflowTools(server, client) {
|
|
|
178
227
|
});
|
|
179
228
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
180
229
|
});
|
|
181
|
-
server.
|
|
182
|
-
|
|
183
|
-
|
|
230
|
+
server.registerTool('get_workflow_run', {
|
|
231
|
+
description: 'Get details of a specific workflow run.',
|
|
232
|
+
inputSchema: {
|
|
233
|
+
workflow_id: z.string().describe('The workflow UUID'),
|
|
234
|
+
run_id: z.string().describe('The run UUID'),
|
|
235
|
+
},
|
|
184
236
|
}, async ({ workflow_id, run_id }) => {
|
|
185
237
|
const data = await client.get(`/workflows/${safePath(workflow_id)}/runs/${safePath(run_id)}`);
|
|
186
238
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a React Flow editor state (nodes, edges, viewport) from workflow blocks
|
|
3
|
+
* and trigger type. This allows workflows created via MCP to render correctly
|
|
4
|
+
* in the dashboard visual editor without requiring a backend deployment.
|
|
5
|
+
*/
|
|
6
|
+
interface Position {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
}
|
|
10
|
+
interface FlowNode {
|
|
11
|
+
id: string;
|
|
12
|
+
type: string;
|
|
13
|
+
position: Position;
|
|
14
|
+
data: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
interface FlowEdge {
|
|
17
|
+
id: string;
|
|
18
|
+
source: string;
|
|
19
|
+
target: string;
|
|
20
|
+
sourceHandle: string;
|
|
21
|
+
targetHandle: string;
|
|
22
|
+
}
|
|
23
|
+
export interface EditorState {
|
|
24
|
+
nodes: FlowNode[];
|
|
25
|
+
edges: FlowEdge[];
|
|
26
|
+
viewport: {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
zoom: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export declare function blocksToEditorState(triggerType: string, blocks: unknown[], triggerConfiguration?: unknown, triggerConstraints?: unknown): EditorState;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=workflow-editor-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-editor-state.d.ts","sourceRoot":"","sources":["../src/workflow-editor-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,QAAQ;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAYD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AA0ED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,EAAE,EACjB,oBAAoB,CAAC,EAAE,OAAO,EAC9B,kBAAkB,CAAC,EAAE,OAAO,GAC3B,WAAW,CA4Bb"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a React Flow editor state (nodes, edges, viewport) from workflow blocks
|
|
3
|
+
* and trigger type. This allows workflows created via MCP to render correctly
|
|
4
|
+
* in the dashboard visual editor without requiring a backend deployment.
|
|
5
|
+
*/
|
|
6
|
+
const NODE_X_START = 200;
|
|
7
|
+
const NODE_Y_CENTER = 200;
|
|
8
|
+
const NODE_X_OFFSET = 300;
|
|
9
|
+
const BRANCH_Y_OFFSET = 200;
|
|
10
|
+
function createEdge(source, target, sourceHandle, targetHandle) {
|
|
11
|
+
return { id: `${source}-${target}`, source, target, sourceHandle, targetHandle };
|
|
12
|
+
}
|
|
13
|
+
function processBlocks(blocks, startX, yCenter, parentId, parentHandle, nodes, edges) {
|
|
14
|
+
let currentX = startX;
|
|
15
|
+
let prevId = parentId;
|
|
16
|
+
let prevHandle = parentHandle;
|
|
17
|
+
for (const block of blocks) {
|
|
18
|
+
const position = { x: currentX, y: yCenter };
|
|
19
|
+
if (block.$kind === 'Block' && block.type === 'if-else') {
|
|
20
|
+
nodes.push({
|
|
21
|
+
id: block.id,
|
|
22
|
+
type: 'ifBlock',
|
|
23
|
+
position,
|
|
24
|
+
data: { $kind: 'Block', id: block.id, type: block.type, inputs: block.inputs ?? {} },
|
|
25
|
+
});
|
|
26
|
+
edges.push(createEdge(prevId, block.id, prevHandle, 'ifBlockInput'));
|
|
27
|
+
const thenBlocks = (block.branches?.then ?? []);
|
|
28
|
+
const elseBlocks = (block.branches?.else ?? []);
|
|
29
|
+
let maxX = currentX + NODE_X_OFFSET;
|
|
30
|
+
if (thenBlocks.length > 0) {
|
|
31
|
+
maxX = Math.max(maxX, processBlocks(thenBlocks, currentX + NODE_X_OFFSET, yCenter - BRANCH_Y_OFFSET, block.id, 'ifBlockThen', nodes, edges));
|
|
32
|
+
}
|
|
33
|
+
if (elseBlocks.length > 0) {
|
|
34
|
+
maxX = Math.max(maxX, processBlocks(elseBlocks, currentX + NODE_X_OFFSET, yCenter + BRANCH_Y_OFFSET, block.id, 'ifBlockElse', nodes, edges));
|
|
35
|
+
}
|
|
36
|
+
currentX = maxX;
|
|
37
|
+
prevId = block.id;
|
|
38
|
+
prevHandle = 'actionOutput';
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
nodes.push({
|
|
42
|
+
id: block.id,
|
|
43
|
+
type: 'action',
|
|
44
|
+
position,
|
|
45
|
+
data: { $kind: 'Action', id: block.id, type: block.type, name: block.name ?? block.type, input: block.input ?? {} },
|
|
46
|
+
});
|
|
47
|
+
edges.push(createEdge(prevId, block.id, prevHandle, 'actionInput'));
|
|
48
|
+
currentX += NODE_X_OFFSET;
|
|
49
|
+
prevId = block.id;
|
|
50
|
+
prevHandle = 'actionOutput';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return currentX;
|
|
54
|
+
}
|
|
55
|
+
export function blocksToEditorState(triggerType, blocks, triggerConfiguration, triggerConstraints) {
|
|
56
|
+
const nodes = [];
|
|
57
|
+
const edges = [];
|
|
58
|
+
const triggerData = {
|
|
59
|
+
$kind: 'Trigger',
|
|
60
|
+
type: triggerType,
|
|
61
|
+
id: 'trigger',
|
|
62
|
+
payload: {},
|
|
63
|
+
};
|
|
64
|
+
if (triggerConfiguration != null)
|
|
65
|
+
triggerData.configuration = triggerConfiguration;
|
|
66
|
+
if (triggerConstraints != null)
|
|
67
|
+
triggerData.constraints = triggerConstraints;
|
|
68
|
+
nodes.push({ id: 'trigger', type: 'trigger', position: { x: NODE_X_START, y: NODE_Y_CENTER }, data: triggerData });
|
|
69
|
+
if (blocks.length > 0) {
|
|
70
|
+
processBlocks(blocks, NODE_X_START + NODE_X_OFFSET, NODE_Y_CENTER, 'trigger', 'triggerOutput', nodes, edges);
|
|
71
|
+
}
|
|
72
|
+
return { nodes, edges, viewport: { x: 0, y: 0, zoom: 1 } };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=workflow-editor-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-editor-state.js","sourceRoot":"","sources":["../src/workflow-editor-state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED