@marktoflow/core 2.0.0-alpha.12
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 +307 -0
- package/dist/bundle.d.ts +43 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +202 -0
- package/dist/bundle.js.map +1 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +27 -0
- package/dist/config.js.map +1 -0
- package/dist/core-tools.d.ts +39 -0
- package/dist/core-tools.d.ts.map +1 -0
- package/dist/core-tools.js +58 -0
- package/dist/core-tools.js.map +1 -0
- package/dist/costs.d.ts +182 -0
- package/dist/costs.d.ts.map +1 -0
- package/dist/costs.js +464 -0
- package/dist/costs.js.map +1 -0
- package/dist/credentials.d.ts +162 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +646 -0
- package/dist/credentials.js.map +1 -0
- package/dist/engine.d.ts +243 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1453 -0
- package/dist/engine.js.map +1 -0
- package/dist/env.d.ts +59 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +256 -0
- package/dist/env.js.map +1 -0
- package/dist/failover.d.ts +43 -0
- package/dist/failover.d.ts.map +1 -0
- package/dist/failover.js +53 -0
- package/dist/failover.js.map +1 -0
- package/dist/filewatcher.d.ts +32 -0
- package/dist/filewatcher.d.ts.map +1 -0
- package/dist/filewatcher.js +92 -0
- package/dist/filewatcher.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/logging.d.ts +62 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +211 -0
- package/dist/logging.js.map +1 -0
- package/dist/mcp-loader.d.ts +29 -0
- package/dist/mcp-loader.d.ts.map +1 -0
- package/dist/mcp-loader.js +60 -0
- package/dist/mcp-loader.js.map +1 -0
- package/dist/metrics.d.ts +19 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +65 -0
- package/dist/metrics.js.map +1 -0
- package/dist/models.d.ts +1686 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +333 -0
- package/dist/models.js.map +1 -0
- package/dist/parser.d.ts +40 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +532 -0
- package/dist/parser.js.map +1 -0
- package/dist/permissions.d.ts +49 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +286 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugins.d.ts +105 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +182 -0
- package/dist/plugins.js.map +1 -0
- package/dist/prompt-loader.d.ts +47 -0
- package/dist/prompt-loader.d.ts.map +1 -0
- package/dist/prompt-loader.js +268 -0
- package/dist/prompt-loader.js.map +1 -0
- package/dist/queue.d.ts +114 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +385 -0
- package/dist/queue.js.map +1 -0
- package/dist/rollback.d.ts +117 -0
- package/dist/rollback.d.ts.map +1 -0
- package/dist/rollback.js +374 -0
- package/dist/rollback.js.map +1 -0
- package/dist/routing.d.ts +144 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +457 -0
- package/dist/routing.js.map +1 -0
- package/dist/scheduler.d.ts +91 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +259 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/script-tool.d.ts +22 -0
- package/dist/script-tool.d.ts.map +1 -0
- package/dist/script-tool.js +90 -0
- package/dist/script-tool.js.map +1 -0
- package/dist/sdk-registry.d.ts +94 -0
- package/dist/sdk-registry.d.ts.map +1 -0
- package/dist/sdk-registry.js +328 -0
- package/dist/sdk-registry.js.map +1 -0
- package/dist/security.d.ts +155 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +362 -0
- package/dist/security.js.map +1 -0
- package/dist/state.d.ts +67 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +276 -0
- package/dist/state.js.map +1 -0
- package/dist/templates.d.ts +70 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +244 -0
- package/dist/templates.js.map +1 -0
- package/dist/tool-base.d.ts +54 -0
- package/dist/tool-base.d.ts.map +1 -0
- package/dist/tool-base.js +43 -0
- package/dist/tool-base.js.map +1 -0
- package/dist/tool-registry.d.ts +24 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +164 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/custom-tool.d.ts +16 -0
- package/dist/tools/custom-tool.d.ts.map +1 -0
- package/dist/tools/custom-tool.js +85 -0
- package/dist/tools/custom-tool.js.map +1 -0
- package/dist/tools/mcp-tool.d.ts +16 -0
- package/dist/tools/mcp-tool.d.ts.map +1 -0
- package/dist/tools/mcp-tool.js +98 -0
- package/dist/tools/mcp-tool.js.map +1 -0
- package/dist/tools/openapi-tool.d.ts +17 -0
- package/dist/tools/openapi-tool.d.ts.map +1 -0
- package/dist/tools/openapi-tool.js +165 -0
- package/dist/tools/openapi-tool.js.map +1 -0
- package/dist/trigger-manager.d.ts +26 -0
- package/dist/trigger-manager.d.ts.map +1 -0
- package/dist/trigger-manager.js +107 -0
- package/dist/trigger-manager.js.map +1 -0
- package/dist/webhook.d.ts +95 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +261 -0
- package/dist/webhook.js.map +1 -0
- package/dist/workflow-tools.d.ts +102 -0
- package/dist/workflow-tools.d.ts.map +1 -0
- package/dist/workflow-tools.js +130 -0
- package/dist/workflow-tools.js.map +1 -0
- package/package.json +62 -0
package/dist/webhook.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook receiver for marktoflow v2.0
|
|
3
|
+
*
|
|
4
|
+
* HTTP server for receiving webhook events from external services.
|
|
5
|
+
*/
|
|
6
|
+
import { createServer } from 'node:http';
|
|
7
|
+
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Signature Verification
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Verify a GitHub-style webhook signature.
|
|
13
|
+
* Format: sha256=<hex signature>
|
|
14
|
+
*/
|
|
15
|
+
export function verifyGitHubSignature(payload, signature, secret) {
|
|
16
|
+
if (!signature.startsWith('sha256=')) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const expected = 'sha256=' + createHmac('sha256', secret).update(payload).digest('hex');
|
|
20
|
+
try {
|
|
21
|
+
return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Verify a generic HMAC-SHA256 signature.
|
|
29
|
+
*/
|
|
30
|
+
export function verifyHmacSignature(payload, signature, secret) {
|
|
31
|
+
const expected = createHmac('sha256', secret).update(payload).digest('hex');
|
|
32
|
+
try {
|
|
33
|
+
return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Verify a Slack webhook signature.
|
|
41
|
+
* Uses headers: x-slack-signature (v0=...) and x-slack-request-timestamp.
|
|
42
|
+
*/
|
|
43
|
+
export function verifySlackSignature(payload, signature, timestamp, secret) {
|
|
44
|
+
if (!signature.startsWith('v0='))
|
|
45
|
+
return false;
|
|
46
|
+
const base = `v0:${timestamp}:${payload}`;
|
|
47
|
+
const expected = 'v0=' + createHmac('sha256', secret).update(base).digest('hex');
|
|
48
|
+
try {
|
|
49
|
+
return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Generate a signature for testing.
|
|
57
|
+
*/
|
|
58
|
+
export function generateSignature(payload, secret) {
|
|
59
|
+
return 'sha256=' + createHmac('sha256', secret).update(payload).digest('hex');
|
|
60
|
+
}
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// WebhookReceiver Implementation
|
|
63
|
+
// ============================================================================
|
|
64
|
+
export class WebhookReceiver {
|
|
65
|
+
server = null;
|
|
66
|
+
endpoints = new Map();
|
|
67
|
+
handlers = new Map();
|
|
68
|
+
host;
|
|
69
|
+
port;
|
|
70
|
+
constructor(options = {}) {
|
|
71
|
+
this.host = options.host || '0.0.0.0';
|
|
72
|
+
this.port = options.port || 3000;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Register a webhook endpoint.
|
|
76
|
+
*/
|
|
77
|
+
registerEndpoint(endpoint, handler) {
|
|
78
|
+
this.endpoints.set(endpoint.path, endpoint);
|
|
79
|
+
this.handlers.set(endpoint.path, handler);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Unregister a webhook endpoint.
|
|
83
|
+
*/
|
|
84
|
+
unregisterEndpoint(path) {
|
|
85
|
+
this.handlers.delete(path);
|
|
86
|
+
return this.endpoints.delete(path);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get all registered endpoints.
|
|
90
|
+
*/
|
|
91
|
+
getEndpoints() {
|
|
92
|
+
return Array.from(this.endpoints.values());
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Start the webhook server.
|
|
96
|
+
*/
|
|
97
|
+
async start() {
|
|
98
|
+
return new Promise((resolve, reject) => {
|
|
99
|
+
this.server = createServer((req, res) => {
|
|
100
|
+
this.handleRequest(req, res).catch((error) => {
|
|
101
|
+
console.error('Webhook handler error:', error);
|
|
102
|
+
res.statusCode = 500;
|
|
103
|
+
res.end('Internal Server Error');
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
this.server.on('error', reject);
|
|
107
|
+
this.server.listen(this.port, this.host, () => {
|
|
108
|
+
console.log(`Webhook receiver listening on ${this.host}:${this.port}`);
|
|
109
|
+
resolve();
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Stop the webhook server.
|
|
115
|
+
*/
|
|
116
|
+
async stop() {
|
|
117
|
+
return new Promise((resolve, reject) => {
|
|
118
|
+
if (!this.server) {
|
|
119
|
+
resolve();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.server.close((error) => {
|
|
123
|
+
if (error) {
|
|
124
|
+
reject(error);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.server = null;
|
|
128
|
+
resolve();
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if server is running.
|
|
135
|
+
*/
|
|
136
|
+
isRunning() {
|
|
137
|
+
return this.server !== null;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the server URL.
|
|
141
|
+
*/
|
|
142
|
+
getUrl() {
|
|
143
|
+
return `http://${this.host}:${this.port}`;
|
|
144
|
+
}
|
|
145
|
+
async handleRequest(req, res) {
|
|
146
|
+
const url = new URL(req.url || '/', `http://${req.headers.host}`);
|
|
147
|
+
const path = url.pathname;
|
|
148
|
+
const method = req.method || 'GET';
|
|
149
|
+
// Find matching endpoint
|
|
150
|
+
const endpoint = this.endpoints.get(path);
|
|
151
|
+
const handler = this.handlers.get(path);
|
|
152
|
+
if (!endpoint || !handler) {
|
|
153
|
+
res.statusCode = 404;
|
|
154
|
+
res.end('Not Found');
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (!endpoint.enabled) {
|
|
158
|
+
res.statusCode = 503;
|
|
159
|
+
res.end('Endpoint Disabled');
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (!endpoint.methods.includes(method)) {
|
|
163
|
+
res.statusCode = 405;
|
|
164
|
+
res.end('Method Not Allowed');
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// Read body
|
|
168
|
+
const body = await this.readBody(req);
|
|
169
|
+
// Verify signature if secret is configured
|
|
170
|
+
if (endpoint.secret) {
|
|
171
|
+
const signature = req.headers['x-hub-signature-256'] ||
|
|
172
|
+
req.headers['x-signature'];
|
|
173
|
+
if (!signature) {
|
|
174
|
+
res.statusCode = 401;
|
|
175
|
+
res.end('Missing Signature');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const isValid = signature.startsWith('sha256=')
|
|
179
|
+
? verifyGitHubSignature(body, signature, endpoint.secret)
|
|
180
|
+
: verifyHmacSignature(body, signature, endpoint.secret);
|
|
181
|
+
if (!isValid) {
|
|
182
|
+
res.statusCode = 401;
|
|
183
|
+
res.end('Invalid Signature');
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Parse query parameters
|
|
188
|
+
const query = {};
|
|
189
|
+
url.searchParams.forEach((value, key) => {
|
|
190
|
+
query[key] = value;
|
|
191
|
+
});
|
|
192
|
+
// Create webhook event
|
|
193
|
+
const event = {
|
|
194
|
+
id: crypto.randomUUID(),
|
|
195
|
+
path,
|
|
196
|
+
method,
|
|
197
|
+
headers: this.flattenHeaders(req.headers),
|
|
198
|
+
body,
|
|
199
|
+
query,
|
|
200
|
+
receivedAt: new Date(),
|
|
201
|
+
};
|
|
202
|
+
// Call handler
|
|
203
|
+
try {
|
|
204
|
+
const response = await handler(event);
|
|
205
|
+
res.statusCode = response.status;
|
|
206
|
+
if (response.headers) {
|
|
207
|
+
for (const [key, value] of Object.entries(response.headers)) {
|
|
208
|
+
res.setHeader(key, value);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
res.end(response.body || '');
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
console.error('Handler error:', error);
|
|
215
|
+
res.statusCode = 500;
|
|
216
|
+
res.end('Handler Error');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
readBody(req) {
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
221
|
+
const chunks = [];
|
|
222
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
223
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
|
|
224
|
+
req.on('error', reject);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
flattenHeaders(headers) {
|
|
228
|
+
const result = {};
|
|
229
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
230
|
+
if (value) {
|
|
231
|
+
result[key] = Array.isArray(value) ? value.join(', ') : value;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// ============================================================================
|
|
238
|
+
// Helper Functions
|
|
239
|
+
// ============================================================================
|
|
240
|
+
export function createEndpoint(path, options = {}) {
|
|
241
|
+
return {
|
|
242
|
+
path,
|
|
243
|
+
secret: options.secret,
|
|
244
|
+
workflowId: options.workflowId,
|
|
245
|
+
methods: options.methods || ['POST'],
|
|
246
|
+
enabled: true,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
export function parseWebhookBody(event) {
|
|
250
|
+
const contentType = event.headers['content-type'] || '';
|
|
251
|
+
if (contentType.includes('application/json')) {
|
|
252
|
+
try {
|
|
253
|
+
return JSON.parse(event.body);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return event.body;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return event.body;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in workflow tools for controlling workflow execution
|
|
3
|
+
*
|
|
4
|
+
* These actions are always available in workflows without needing to be declared.
|
|
5
|
+
*/
|
|
6
|
+
import { SDKInitializer } from './sdk-registry.js';
|
|
7
|
+
/**
|
|
8
|
+
* Workflow tools client that provides workflow control actions
|
|
9
|
+
*/
|
|
10
|
+
export declare class WorkflowToolsClient {
|
|
11
|
+
/**
|
|
12
|
+
* Set workflow output variables
|
|
13
|
+
*
|
|
14
|
+
* This action sets the final output values of the workflow that can be accessed
|
|
15
|
+
* by the caller or displayed at the end of execution.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```yaml
|
|
19
|
+
* action: workflow.set_outputs
|
|
20
|
+
* inputs:
|
|
21
|
+
* result: '{{ calculation_result }}'
|
|
22
|
+
* status: 'success'
|
|
23
|
+
* message: 'Workflow completed'
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
set_outputs(inputs: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
27
|
+
/**
|
|
28
|
+
* Sleep for a specified duration
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```yaml
|
|
32
|
+
* action: workflow.sleep
|
|
33
|
+
* inputs:
|
|
34
|
+
* duration: 5000 # milliseconds
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
sleep(inputs: {
|
|
38
|
+
duration: number;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
slept: number;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Fail the workflow with an error message
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```yaml
|
|
47
|
+
* action: workflow.fail
|
|
48
|
+
* inputs:
|
|
49
|
+
* message: 'Validation failed'
|
|
50
|
+
* code: 'VALIDATION_ERROR'
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
fail(inputs: {
|
|
54
|
+
message: string;
|
|
55
|
+
code?: string;
|
|
56
|
+
}): Promise<never>;
|
|
57
|
+
/**
|
|
58
|
+
* Log a message (alias for core.log)
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```yaml
|
|
62
|
+
* action: workflow.log
|
|
63
|
+
* inputs:
|
|
64
|
+
* message: 'Processing item {{ item_id }}'
|
|
65
|
+
* level: 'info'
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
log(inputs: {
|
|
69
|
+
message: string;
|
|
70
|
+
level?: string;
|
|
71
|
+
metadata?: Record<string, unknown>;
|
|
72
|
+
}): Promise<{
|
|
73
|
+
logged: true;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Create a timestamp
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```yaml
|
|
80
|
+
* action: workflow.timestamp
|
|
81
|
+
* inputs:
|
|
82
|
+
* format: 'iso' # 'iso', 'unix', or 'ms'
|
|
83
|
+
* output_variable: timestamp
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
timestamp(inputs?: {
|
|
87
|
+
format?: string;
|
|
88
|
+
}): Promise<{
|
|
89
|
+
timestamp: string | number;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* No-op action (useful for testing or placeholders)
|
|
93
|
+
*/
|
|
94
|
+
noop(): Promise<{
|
|
95
|
+
success: true;
|
|
96
|
+
}>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Workflow SDK initializer
|
|
100
|
+
*/
|
|
101
|
+
export declare const WorkflowInitializer: SDKInitializer;
|
|
102
|
+
//# sourceMappingURL=workflow-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IASpF;;;;;;;;;OASG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAMrE;;;;;;;;;;OAUG;IACG,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAQtE;;;;;;;;;;OAUG;IACG,GAAG,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE,CAAC;IAiB7B;;;;;;;;;;OAUG;IACG,SAAS,CAAC,MAAM,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAe1F;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;CAGzC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,cAIjC,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in workflow tools for controlling workflow execution
|
|
3
|
+
*
|
|
4
|
+
* These actions are always available in workflows without needing to be declared.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Workflow tools client that provides workflow control actions
|
|
8
|
+
*/
|
|
9
|
+
export class WorkflowToolsClient {
|
|
10
|
+
/**
|
|
11
|
+
* Set workflow output variables
|
|
12
|
+
*
|
|
13
|
+
* This action sets the final output values of the workflow that can be accessed
|
|
14
|
+
* by the caller or displayed at the end of execution.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```yaml
|
|
18
|
+
* action: workflow.set_outputs
|
|
19
|
+
* inputs:
|
|
20
|
+
* result: '{{ calculation_result }}'
|
|
21
|
+
* status: 'success'
|
|
22
|
+
* message: 'Workflow completed'
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
async set_outputs(inputs) {
|
|
26
|
+
// The engine will capture this special return value and set it as workflow outputs
|
|
27
|
+
// This is a marker that tells the engine to update the workflow's output variables
|
|
28
|
+
return {
|
|
29
|
+
__workflow_outputs__: inputs,
|
|
30
|
+
...inputs,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Sleep for a specified duration
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```yaml
|
|
38
|
+
* action: workflow.sleep
|
|
39
|
+
* inputs:
|
|
40
|
+
* duration: 5000 # milliseconds
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
async sleep(inputs) {
|
|
44
|
+
const duration = inputs.duration || 0;
|
|
45
|
+
await new Promise(resolve => setTimeout(resolve, duration));
|
|
46
|
+
return { slept: duration };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Fail the workflow with an error message
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```yaml
|
|
53
|
+
* action: workflow.fail
|
|
54
|
+
* inputs:
|
|
55
|
+
* message: 'Validation failed'
|
|
56
|
+
* code: 'VALIDATION_ERROR'
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
async fail(inputs) {
|
|
60
|
+
const error = new Error(inputs.message);
|
|
61
|
+
if (inputs.code) {
|
|
62
|
+
error.code = inputs.code;
|
|
63
|
+
}
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Log a message (alias for core.log)
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```yaml
|
|
71
|
+
* action: workflow.log
|
|
72
|
+
* inputs:
|
|
73
|
+
* message: 'Processing item {{ item_id }}'
|
|
74
|
+
* level: 'info'
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
async log(inputs) {
|
|
78
|
+
const level = inputs.level || 'info';
|
|
79
|
+
const message = inputs.message;
|
|
80
|
+
const metadata = inputs.metadata;
|
|
81
|
+
const logFn = level === 'error' || level === 'critical' ? console.error :
|
|
82
|
+
level === 'warning' ? console.warn : console.log;
|
|
83
|
+
if (metadata && Object.keys(metadata).length > 0) {
|
|
84
|
+
logFn(`[${level.toUpperCase()}] ${message}`, metadata);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
logFn(`[${level.toUpperCase()}] ${message}`);
|
|
88
|
+
}
|
|
89
|
+
return { logged: true };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create a timestamp
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```yaml
|
|
96
|
+
* action: workflow.timestamp
|
|
97
|
+
* inputs:
|
|
98
|
+
* format: 'iso' # 'iso', 'unix', or 'ms'
|
|
99
|
+
* output_variable: timestamp
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
async timestamp(inputs = {}) {
|
|
103
|
+
const format = inputs.format || 'iso';
|
|
104
|
+
switch (format) {
|
|
105
|
+
case 'iso':
|
|
106
|
+
return { timestamp: new Date().toISOString() };
|
|
107
|
+
case 'unix':
|
|
108
|
+
return { timestamp: Math.floor(Date.now() / 1000) };
|
|
109
|
+
case 'ms':
|
|
110
|
+
return { timestamp: Date.now() };
|
|
111
|
+
default:
|
|
112
|
+
return { timestamp: new Date().toISOString() };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* No-op action (useful for testing or placeholders)
|
|
117
|
+
*/
|
|
118
|
+
async noop() {
|
|
119
|
+
return { success: true };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Workflow SDK initializer
|
|
124
|
+
*/
|
|
125
|
+
export const WorkflowInitializer = {
|
|
126
|
+
async initialize(_module, _config) {
|
|
127
|
+
return new WorkflowToolsClient();
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=workflow-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@marktoflow/core",
|
|
3
|
+
"version": "2.0.0-alpha.12",
|
|
4
|
+
"description": "Core engine for marktoflow - parser, executor, state management",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/marktoflow/marktoflow.git",
|
|
11
|
+
"directory": "packages/core"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/marktoflow/marktoflow#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/marktoflow/marktoflow/issues"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"import": "./dist/index.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"lint": "tsc --noEmit",
|
|
28
|
+
"clean": "rm -rf dist"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
32
|
+
"amqplib": "^0.10.9",
|
|
33
|
+
"better-sqlite3": "11.10.0",
|
|
34
|
+
"chokidar": "^5.0.0",
|
|
35
|
+
"dotenv": "^16.4.5",
|
|
36
|
+
"ioredis": "^5.9.2",
|
|
37
|
+
"minimatch": "^10.1.1",
|
|
38
|
+
"prom-client": "^15.1.3",
|
|
39
|
+
"yaml": "^2.6.0",
|
|
40
|
+
"zod": "^3.24.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/amqplib": "^0.10.8",
|
|
44
|
+
"@types/better-sqlite3": "^7.6.0"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"typescript": "^5.0.0"
|
|
48
|
+
},
|
|
49
|
+
"files": [
|
|
50
|
+
"dist",
|
|
51
|
+
"README.md"
|
|
52
|
+
],
|
|
53
|
+
"keywords": [
|
|
54
|
+
"marktoflow",
|
|
55
|
+
"workflow",
|
|
56
|
+
"parser",
|
|
57
|
+
"automation",
|
|
58
|
+
"mcp"
|
|
59
|
+
],
|
|
60
|
+
"author": "Scott Glover",
|
|
61
|
+
"license": "Apache-2.0"
|
|
62
|
+
}
|