@marktoflow/cli 2.0.0-alpha.10

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.
@@ -0,0 +1,371 @@
1
+ /**
2
+ * Dry-run mode for workflows
3
+ *
4
+ * Simulates workflow execution without actually calling external services.
5
+ * Useful for testing workflow logic, validating steps, and debugging.
6
+ */
7
+ import chalk from 'chalk';
8
+ import { WorkflowStatus } from '@marktoflow/core';
9
+ // ============================================================================
10
+ // Mock Response Generator
11
+ // ============================================================================
12
+ /**
13
+ * Generate mock responses based on action type
14
+ */
15
+ export function generateMockResponse(action, inputs) {
16
+ const [service, ...methodParts] = action.split('.');
17
+ const method = methodParts.join('.');
18
+ // Service-specific mock responses
19
+ switch (service) {
20
+ case 'slack':
21
+ return generateSlackMock(method, inputs);
22
+ case 'github':
23
+ return generateGitHubMock(method, inputs);
24
+ case 'jira':
25
+ return generateJiraMock(method, inputs);
26
+ case 'gmail':
27
+ return generateGmailMock(method, inputs);
28
+ case 'linear':
29
+ return generateLinearMock(method, inputs);
30
+ case 'notion':
31
+ return generateNotionMock(method, inputs);
32
+ case 'claude':
33
+ return generateClaudeMock(method, inputs);
34
+ case 'ollama':
35
+ return generateOllamaMock(method, inputs);
36
+ default:
37
+ return { success: true, message: `Mock response for ${action}` };
38
+ }
39
+ }
40
+ function generateSlackMock(method, inputs) {
41
+ switch (method) {
42
+ case 'chat.postMessage':
43
+ return {
44
+ ok: true,
45
+ ts: '1234567890.123456',
46
+ channel: inputs.channel || 'C1234567890',
47
+ message: {
48
+ text: inputs.text || '',
49
+ ts: '1234567890.123456',
50
+ },
51
+ };
52
+ case 'conversations.history':
53
+ return {
54
+ ok: true,
55
+ messages: [
56
+ { type: 'message', user: 'U123', text: 'Mock message 1', ts: '1234567890.001' },
57
+ { type: 'message', user: 'U456', text: 'Mock message 2', ts: '1234567890.002' },
58
+ ],
59
+ };
60
+ case 'users.info':
61
+ return {
62
+ ok: true,
63
+ user: {
64
+ id: 'U123456',
65
+ name: 'mockuser',
66
+ real_name: 'Mock User',
67
+ email: 'mock@example.com',
68
+ },
69
+ };
70
+ default:
71
+ return { ok: true, channel: inputs.channel };
72
+ }
73
+ }
74
+ function generateGitHubMock(method, inputs) {
75
+ switch (method) {
76
+ case 'pulls.get':
77
+ return {
78
+ number: inputs.pull_number || 42,
79
+ title: 'Mock Pull Request',
80
+ html_url: `https://github.com/${inputs.owner}/${inputs.repo}/pull/${inputs.pull_number || 42}`,
81
+ state: 'open',
82
+ user: { login: 'mockuser' },
83
+ additions: 50,
84
+ deletions: 10,
85
+ };
86
+ case 'pulls.listReviews':
87
+ return [
88
+ { id: 1, user: { login: 'reviewer1' }, state: 'APPROVED' },
89
+ { id: 2, user: { login: 'reviewer2' }, state: 'CHANGES_REQUESTED' },
90
+ ];
91
+ case 'issues.create':
92
+ return {
93
+ number: 123,
94
+ html_url: `https://github.com/${inputs.owner}/${inputs.repo}/issues/123`,
95
+ title: inputs.title || 'Mock Issue',
96
+ state: 'open',
97
+ };
98
+ default:
99
+ return { id: 123, html_url: 'https://github.com/mock' };
100
+ }
101
+ }
102
+ function generateJiraMock(method, inputs) {
103
+ switch (method) {
104
+ case 'issues.createIssue':
105
+ case 'issueSearch.createIssue':
106
+ return {
107
+ key: 'MOCK-123',
108
+ id: '10001',
109
+ self: 'https://jira.example.com/browse/MOCK-123',
110
+ fields: inputs.fields || {},
111
+ };
112
+ case 'issueSearch.searchForIssuesUsingJql':
113
+ return {
114
+ issues: [
115
+ {
116
+ key: 'MOCK-1',
117
+ fields: {
118
+ summary: 'Mock Issue 1',
119
+ status: { name: 'In Progress' },
120
+ assignee: { displayName: 'Mock User' },
121
+ },
122
+ },
123
+ {
124
+ key: 'MOCK-2',
125
+ fields: {
126
+ summary: 'Mock Issue 2',
127
+ status: { name: 'Done' },
128
+ assignee: { displayName: 'Mock User 2' },
129
+ },
130
+ },
131
+ ],
132
+ };
133
+ default:
134
+ return { key: 'MOCK-123', id: '10001' };
135
+ }
136
+ }
137
+ function generateGmailMock(method, _inputs) {
138
+ switch (method) {
139
+ case 'users.messages.list':
140
+ return {
141
+ messages: [
142
+ { id: 'msg1', threadId: 'thread1' },
143
+ { id: 'msg2', threadId: 'thread2' },
144
+ ],
145
+ };
146
+ case 'users.messages.send':
147
+ return {
148
+ id: 'msg123',
149
+ threadId: 'thread123',
150
+ labelIds: ['SENT'],
151
+ };
152
+ default:
153
+ return { id: 'msg123' };
154
+ }
155
+ }
156
+ function generateLinearMock(_method, inputs) {
157
+ return {
158
+ id: 'issue-123',
159
+ title: inputs.title || 'Mock Linear Issue',
160
+ url: 'https://linear.app/team/issue/mock-123',
161
+ };
162
+ }
163
+ function generateNotionMock(method, inputs) {
164
+ switch (method) {
165
+ case 'pages.create':
166
+ return {
167
+ id: 'page-123',
168
+ url: 'https://notion.so/page-123',
169
+ properties: inputs.properties || {},
170
+ };
171
+ default:
172
+ return { id: 'page-123', url: 'https://notion.so/page-123' };
173
+ }
174
+ }
175
+ function generateClaudeMock(_method, inputs) {
176
+ return {
177
+ id: 'msg_123',
178
+ type: 'message',
179
+ role: 'assistant',
180
+ content: [
181
+ {
182
+ type: 'text',
183
+ text: 'This is a mock response from Claude. In a real execution, this would contain the actual AI-generated content based on your prompt.',
184
+ },
185
+ ],
186
+ model: inputs.model || 'claude-3-5-sonnet-20241022',
187
+ stop_reason: 'end_turn',
188
+ usage: {
189
+ input_tokens: 50,
190
+ output_tokens: 100,
191
+ },
192
+ };
193
+ }
194
+ function generateOllamaMock(_method, inputs) {
195
+ return {
196
+ model: inputs.model || 'llama2',
197
+ response: 'This is a mock response from Ollama. In a real execution, this would contain the actual AI-generated content.',
198
+ done: true,
199
+ };
200
+ }
201
+ /**
202
+ * Simulate workflow execution with mock data
203
+ */
204
+ export async function executeDryRun(workflow, inputs, options = {}) {
205
+ const startTime = Date.now();
206
+ const steps = [];
207
+ const variables = {};
208
+ const context = {
209
+ workflowId: workflow.metadata.id,
210
+ runId: 'dry-run-' + Date.now(),
211
+ variables,
212
+ inputs,
213
+ startedAt: new Date(),
214
+ currentStepIndex: 0,
215
+ status: WorkflowStatus.RUNNING,
216
+ stepMetadata: {},
217
+ };
218
+ console.log(chalk.bold.cyan('\n🧪 Dry Run Mode\n'));
219
+ console.log(chalk.gray(`Simulating workflow: ${workflow.metadata.name}`));
220
+ console.log(chalk.gray(`Steps: ${workflow.steps.length}\n`));
221
+ // Simulate each step
222
+ for (let i = 0; i < workflow.steps.length; i++) {
223
+ const step = workflow.steps[i];
224
+ context.currentStepIndex = i;
225
+ const stepStart = Date.now();
226
+ // Check conditions
227
+ let stepStatus = 'completed';
228
+ if (step.conditions && step.conditions.length > 0) {
229
+ const conditionMet = evaluateConditions(step.conditions, context);
230
+ if (!conditionMet) {
231
+ stepStatus = 'skipped';
232
+ }
233
+ }
234
+ // Resolve inputs with template variables
235
+ const resolvedInputs = resolveInputTemplates(step.inputs, context);
236
+ // Generate mock response (skip for sub-workflows in dry-run mode)
237
+ let mockOutput = null;
238
+ if (stepStatus !== 'skipped') {
239
+ if (step.action) {
240
+ mockOutput = generateMockResponse(step.action, resolvedInputs);
241
+ }
242
+ else if (step.workflow) {
243
+ // For sub-workflows, generate a simple mock output
244
+ mockOutput = { subWorkflowResult: 'mock-sub-workflow-output' };
245
+ }
246
+ }
247
+ // Store output variable
248
+ if (step.outputVariable && mockOutput) {
249
+ variables[step.outputVariable] = mockOutput;
250
+ }
251
+ const stepDuration = Date.now() - stepStart + Math.random() * 50; // Add small random delay
252
+ const stepResult = {
253
+ stepId: step.id,
254
+ action: step.action,
255
+ workflow: step.workflow,
256
+ status: stepStatus,
257
+ mockOutput,
258
+ resolvedInputs,
259
+ duration: stepDuration,
260
+ };
261
+ steps.push(stepResult);
262
+ // Display step result
263
+ displayStepResult(stepResult, options);
264
+ // Small delay for realism
265
+ await sleep(50);
266
+ }
267
+ const totalDuration = Date.now() - startTime;
268
+ return {
269
+ workflowId: workflow.metadata.id,
270
+ status: 'completed',
271
+ steps,
272
+ variables,
273
+ duration: totalDuration,
274
+ };
275
+ }
276
+ /**
277
+ * Simple condition evaluation for dry-run
278
+ */
279
+ function evaluateConditions(conditions, context) {
280
+ // Very basic evaluation - just check if variables exist
281
+ for (const condition of conditions) {
282
+ const varName = condition.split('.')[0].trim();
283
+ if (!(varName in context.variables)) {
284
+ return false;
285
+ }
286
+ }
287
+ return true;
288
+ }
289
+ /**
290
+ * Resolve template variables in inputs
291
+ */
292
+ function resolveInputTemplates(inputs, context) {
293
+ const resolved = {};
294
+ for (const [key, value] of Object.entries(inputs)) {
295
+ if (typeof value === 'string' && value.includes('{{')) {
296
+ // Simple template resolution
297
+ let resolved_value = value;
298
+ const matches = value.matchAll(/\{\{([^}]+)\}\}/g);
299
+ for (const match of matches) {
300
+ const varPath = match[1].trim();
301
+ if (varPath.startsWith('inputs.')) {
302
+ const inputKey = varPath.slice(7);
303
+ resolved_value = resolved_value.replace(match[0], String(context.inputs[inputKey] || ''));
304
+ }
305
+ else if (varPath in context.variables) {
306
+ const varValue = context.variables[varPath];
307
+ resolved_value = resolved_value.replace(match[0], String(varValue));
308
+ }
309
+ }
310
+ resolved[key] = resolved_value;
311
+ }
312
+ else if (typeof value === 'object' && value !== null) {
313
+ resolved[key] = resolveInputTemplates(value, context);
314
+ }
315
+ else {
316
+ resolved[key] = value;
317
+ }
318
+ }
319
+ return resolved;
320
+ }
321
+ /**
322
+ * Display step result with formatting
323
+ */
324
+ function displayStepResult(result, options) {
325
+ const statusIcon = result.status === 'completed'
326
+ ? chalk.green('āœ“')
327
+ : result.status === 'skipped'
328
+ ? chalk.yellow('ā—‹')
329
+ : chalk.red('āœ—');
330
+ const actionOrWorkflow = result.action || `workflow: ${result.workflow}` || 'unknown';
331
+ console.log(`${statusIcon} ${chalk.cyan(result.stepId)} ${chalk.gray('→')} ${chalk.white(actionOrWorkflow)} ${chalk.dim(`(${result.duration.toFixed(0)}ms)`)}`);
332
+ if (options.verbose) {
333
+ if (result.status !== 'skipped' && options.showMockData) {
334
+ console.log(chalk.gray(' Mock output:'), JSON.stringify(result.mockOutput, null, 2)
335
+ .split('\n')
336
+ .map((line) => ` ${chalk.dim(line)}`)
337
+ .join('\n'));
338
+ }
339
+ }
340
+ }
341
+ /**
342
+ * Display final summary
343
+ */
344
+ export function displayDryRunSummary(result, options) {
345
+ console.log(chalk.bold.cyan('\nšŸ“Š Dry Run Summary\n'));
346
+ const completed = result.steps.filter((s) => s.status === 'completed').length;
347
+ const skipped = result.steps.filter((s) => s.status === 'skipped').length;
348
+ const failed = result.steps.filter((s) => s.status === 'would-fail').length;
349
+ console.log(` ${chalk.green('āœ“')} Completed: ${completed}`);
350
+ if (skipped > 0)
351
+ console.log(` ${chalk.yellow('ā—‹')} Skipped: ${skipped}`);
352
+ if (failed > 0)
353
+ console.log(` ${chalk.red('āœ—')} Would fail: ${failed}`);
354
+ console.log(` ${chalk.gray('ā±')} Duration: ${result.duration.toFixed(0)}ms (simulated)`);
355
+ if (options.showVariables && Object.keys(result.variables).length > 0) {
356
+ console.log(chalk.bold.cyan('\nšŸ“ Final Variables\n'));
357
+ for (const [key, value] of Object.entries(result.variables)) {
358
+ console.log(` ${chalk.cyan(key)}: ${chalk.gray(typeof value === 'object' ? JSON.stringify(value) : String(value))}`);
359
+ }
360
+ }
361
+ console.log(chalk.bold.green('\nāœ… Dry run completed successfully\n'));
362
+ console.log(chalk.gray('Note: No external services were called. All responses are mocked.'));
363
+ console.log(chalk.gray('To execute for real, run without --dry-run flag.\n'));
364
+ }
365
+ // ============================================================================
366
+ // Helpers
367
+ // ============================================================================
368
+ function sleep(ms) {
369
+ return new Promise((resolve) => setTimeout(resolve, ms));
370
+ }
371
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../src/commands/dry-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * marktoflow new - Interactive workflow wizard
3
+ *
4
+ * Creates new workflows from templates or from scratch with guided prompts.
5
+ */
6
+ export declare function runWorkflowWizard(options: {
7
+ output?: string;
8
+ template?: string;
9
+ }): Promise<void>;
10
+ /**
11
+ * List available workflow templates
12
+ */
13
+ export declare function listTemplates(): void;
14
+ //# sourceMappingURL=new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0TH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,iBA8JtF;AAED;;GAEG;AACH,wBAAgB,aAAa,SA2C5B"}