@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.
Files changed (142) hide show
  1. package/README.md +307 -0
  2. package/dist/bundle.d.ts +43 -0
  3. package/dist/bundle.d.ts.map +1 -0
  4. package/dist/bundle.js +202 -0
  5. package/dist/bundle.js.map +1 -0
  6. package/dist/config.d.ts +33 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +27 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/core-tools.d.ts +39 -0
  11. package/dist/core-tools.d.ts.map +1 -0
  12. package/dist/core-tools.js +58 -0
  13. package/dist/core-tools.js.map +1 -0
  14. package/dist/costs.d.ts +182 -0
  15. package/dist/costs.d.ts.map +1 -0
  16. package/dist/costs.js +464 -0
  17. package/dist/costs.js.map +1 -0
  18. package/dist/credentials.d.ts +162 -0
  19. package/dist/credentials.d.ts.map +1 -0
  20. package/dist/credentials.js +646 -0
  21. package/dist/credentials.js.map +1 -0
  22. package/dist/engine.d.ts +243 -0
  23. package/dist/engine.d.ts.map +1 -0
  24. package/dist/engine.js +1453 -0
  25. package/dist/engine.js.map +1 -0
  26. package/dist/env.d.ts +59 -0
  27. package/dist/env.d.ts.map +1 -0
  28. package/dist/env.js +256 -0
  29. package/dist/env.js.map +1 -0
  30. package/dist/failover.d.ts +43 -0
  31. package/dist/failover.d.ts.map +1 -0
  32. package/dist/failover.js +53 -0
  33. package/dist/failover.js.map +1 -0
  34. package/dist/filewatcher.d.ts +32 -0
  35. package/dist/filewatcher.d.ts.map +1 -0
  36. package/dist/filewatcher.js +92 -0
  37. package/dist/filewatcher.js.map +1 -0
  38. package/dist/index.d.ts +40 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +77 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/logging.d.ts +62 -0
  43. package/dist/logging.d.ts.map +1 -0
  44. package/dist/logging.js +211 -0
  45. package/dist/logging.js.map +1 -0
  46. package/dist/mcp-loader.d.ts +29 -0
  47. package/dist/mcp-loader.d.ts.map +1 -0
  48. package/dist/mcp-loader.js +60 -0
  49. package/dist/mcp-loader.js.map +1 -0
  50. package/dist/metrics.d.ts +19 -0
  51. package/dist/metrics.d.ts.map +1 -0
  52. package/dist/metrics.js +65 -0
  53. package/dist/metrics.js.map +1 -0
  54. package/dist/models.d.ts +1686 -0
  55. package/dist/models.d.ts.map +1 -0
  56. package/dist/models.js +333 -0
  57. package/dist/models.js.map +1 -0
  58. package/dist/parser.d.ts +40 -0
  59. package/dist/parser.d.ts.map +1 -0
  60. package/dist/parser.js +532 -0
  61. package/dist/parser.js.map +1 -0
  62. package/dist/permissions.d.ts +49 -0
  63. package/dist/permissions.d.ts.map +1 -0
  64. package/dist/permissions.js +286 -0
  65. package/dist/permissions.js.map +1 -0
  66. package/dist/plugins.d.ts +105 -0
  67. package/dist/plugins.d.ts.map +1 -0
  68. package/dist/plugins.js +182 -0
  69. package/dist/plugins.js.map +1 -0
  70. package/dist/prompt-loader.d.ts +47 -0
  71. package/dist/prompt-loader.d.ts.map +1 -0
  72. package/dist/prompt-loader.js +268 -0
  73. package/dist/prompt-loader.js.map +1 -0
  74. package/dist/queue.d.ts +114 -0
  75. package/dist/queue.d.ts.map +1 -0
  76. package/dist/queue.js +385 -0
  77. package/dist/queue.js.map +1 -0
  78. package/dist/rollback.d.ts +117 -0
  79. package/dist/rollback.d.ts.map +1 -0
  80. package/dist/rollback.js +374 -0
  81. package/dist/rollback.js.map +1 -0
  82. package/dist/routing.d.ts +144 -0
  83. package/dist/routing.d.ts.map +1 -0
  84. package/dist/routing.js +457 -0
  85. package/dist/routing.js.map +1 -0
  86. package/dist/scheduler.d.ts +91 -0
  87. package/dist/scheduler.d.ts.map +1 -0
  88. package/dist/scheduler.js +259 -0
  89. package/dist/scheduler.js.map +1 -0
  90. package/dist/script-tool.d.ts +22 -0
  91. package/dist/script-tool.d.ts.map +1 -0
  92. package/dist/script-tool.js +90 -0
  93. package/dist/script-tool.js.map +1 -0
  94. package/dist/sdk-registry.d.ts +94 -0
  95. package/dist/sdk-registry.d.ts.map +1 -0
  96. package/dist/sdk-registry.js +328 -0
  97. package/dist/sdk-registry.js.map +1 -0
  98. package/dist/security.d.ts +155 -0
  99. package/dist/security.d.ts.map +1 -0
  100. package/dist/security.js +362 -0
  101. package/dist/security.js.map +1 -0
  102. package/dist/state.d.ts +67 -0
  103. package/dist/state.d.ts.map +1 -0
  104. package/dist/state.js +276 -0
  105. package/dist/state.js.map +1 -0
  106. package/dist/templates.d.ts +70 -0
  107. package/dist/templates.d.ts.map +1 -0
  108. package/dist/templates.js +244 -0
  109. package/dist/templates.js.map +1 -0
  110. package/dist/tool-base.d.ts +54 -0
  111. package/dist/tool-base.d.ts.map +1 -0
  112. package/dist/tool-base.js +43 -0
  113. package/dist/tool-base.js.map +1 -0
  114. package/dist/tool-registry.d.ts +24 -0
  115. package/dist/tool-registry.d.ts.map +1 -0
  116. package/dist/tool-registry.js +164 -0
  117. package/dist/tool-registry.js.map +1 -0
  118. package/dist/tools/custom-tool.d.ts +16 -0
  119. package/dist/tools/custom-tool.d.ts.map +1 -0
  120. package/dist/tools/custom-tool.js +85 -0
  121. package/dist/tools/custom-tool.js.map +1 -0
  122. package/dist/tools/mcp-tool.d.ts +16 -0
  123. package/dist/tools/mcp-tool.d.ts.map +1 -0
  124. package/dist/tools/mcp-tool.js +98 -0
  125. package/dist/tools/mcp-tool.js.map +1 -0
  126. package/dist/tools/openapi-tool.d.ts +17 -0
  127. package/dist/tools/openapi-tool.d.ts.map +1 -0
  128. package/dist/tools/openapi-tool.js +165 -0
  129. package/dist/tools/openapi-tool.js.map +1 -0
  130. package/dist/trigger-manager.d.ts +26 -0
  131. package/dist/trigger-manager.d.ts.map +1 -0
  132. package/dist/trigger-manager.js +107 -0
  133. package/dist/trigger-manager.js.map +1 -0
  134. package/dist/webhook.d.ts +95 -0
  135. package/dist/webhook.d.ts.map +1 -0
  136. package/dist/webhook.js +261 -0
  137. package/dist/webhook.js.map +1 -0
  138. package/dist/workflow-tools.d.ts +102 -0
  139. package/dist/workflow-tools.d.ts.map +1 -0
  140. package/dist/workflow-tools.js +130 -0
  141. package/dist/workflow-tools.js.map +1 -0
  142. package/package.json +62 -0
@@ -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
+ }