@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/parser.js
ADDED
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Parser for marktoflow v2.0
|
|
3
|
+
*
|
|
4
|
+
* Parses markdown workflow files with YAML frontmatter.
|
|
5
|
+
* Extracts workflow metadata, tool configurations, and step definitions.
|
|
6
|
+
*/
|
|
7
|
+
import { readFile } from 'node:fs/promises';
|
|
8
|
+
import { parse as parseYaml } from 'yaml';
|
|
9
|
+
import { WorkflowSchema, WorkflowStepSchema, ToolConfigSchema, } from './models.js';
|
|
10
|
+
export class ParseError extends Error {
|
|
11
|
+
line;
|
|
12
|
+
details;
|
|
13
|
+
constructor(message, line, details) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.line = line;
|
|
16
|
+
this.details = details;
|
|
17
|
+
this.name = 'ParseError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Parser Implementation
|
|
22
|
+
// ============================================================================
|
|
23
|
+
const FRONTMATTER_REGEX = /^---\n([\s\S]*?)\n---/;
|
|
24
|
+
const STEP_CODE_BLOCK_REGEX = /```ya?ml\n([\s\S]*?)```/g;
|
|
25
|
+
/**
|
|
26
|
+
* Parse a workflow from a markdown file.
|
|
27
|
+
*/
|
|
28
|
+
export async function parseFile(path, options = {}) {
|
|
29
|
+
const content = await readFile(path, 'utf-8');
|
|
30
|
+
return parseContent(content, options);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a workflow from markdown content.
|
|
34
|
+
*/
|
|
35
|
+
export function parseContent(content, options = {}) {
|
|
36
|
+
const { validate = true, resolveEnv = true } = options;
|
|
37
|
+
const warnings = [];
|
|
38
|
+
// Extract frontmatter
|
|
39
|
+
const frontmatterMatch = content.match(FRONTMATTER_REGEX);
|
|
40
|
+
if (!frontmatterMatch) {
|
|
41
|
+
throw new ParseError('No YAML frontmatter found. Workflow must start with ---');
|
|
42
|
+
}
|
|
43
|
+
const frontmatterYaml = frontmatterMatch[1];
|
|
44
|
+
let frontmatter;
|
|
45
|
+
try {
|
|
46
|
+
frontmatter = parseYaml(frontmatterYaml);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw new ParseError('Invalid YAML in frontmatter', undefined, error);
|
|
50
|
+
}
|
|
51
|
+
// Extract markdown body (after frontmatter)
|
|
52
|
+
const markdownBody = content.slice(frontmatterMatch[0].length).trim();
|
|
53
|
+
// Parse workflow structure
|
|
54
|
+
const workflow = buildWorkflow(frontmatter, markdownBody, warnings);
|
|
55
|
+
// Resolve environment variables
|
|
56
|
+
if (resolveEnv) {
|
|
57
|
+
resolveEnvironmentVariables(workflow);
|
|
58
|
+
}
|
|
59
|
+
// Validate with Zod
|
|
60
|
+
if (validate) {
|
|
61
|
+
const result = WorkflowSchema.safeParse(workflow);
|
|
62
|
+
if (!result.success) {
|
|
63
|
+
const issues = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);
|
|
64
|
+
throw new ParseError(`Workflow validation failed:\n${issues.join('\n')}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { workflow, warnings };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build a Workflow object from parsed frontmatter and markdown body.
|
|
71
|
+
*/
|
|
72
|
+
function buildWorkflow(frontmatter, markdownBody, warnings) {
|
|
73
|
+
// Extract metadata
|
|
74
|
+
const workflowMeta = frontmatter.workflow || {};
|
|
75
|
+
const metadata = {
|
|
76
|
+
id: workflowMeta.id || 'unnamed',
|
|
77
|
+
name: workflowMeta.name || 'Unnamed Workflow',
|
|
78
|
+
version: workflowMeta.version || '1.0.0',
|
|
79
|
+
description: workflowMeta.description,
|
|
80
|
+
author: workflowMeta.author,
|
|
81
|
+
tags: workflowMeta.tags,
|
|
82
|
+
};
|
|
83
|
+
// Extract tools
|
|
84
|
+
const toolsRaw = frontmatter.tools || {};
|
|
85
|
+
const tools = {};
|
|
86
|
+
for (const [name, config] of Object.entries(toolsRaw)) {
|
|
87
|
+
const toolResult = ToolConfigSchema.safeParse(config);
|
|
88
|
+
if (toolResult.success) {
|
|
89
|
+
tools[name] = toolResult.data;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
warnings.push(`Invalid tool configuration for '${name}': ${toolResult.error.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Extract inputs (validated later by Zod)
|
|
96
|
+
const inputsRaw = frontmatter.inputs;
|
|
97
|
+
const inputs = inputsRaw;
|
|
98
|
+
// Extract triggers (validated later by Zod)
|
|
99
|
+
const triggersRaw = frontmatter.triggers;
|
|
100
|
+
const triggers = triggersRaw?.map((t) => ({
|
|
101
|
+
type: t.type,
|
|
102
|
+
enabled: t.enabled !== false,
|
|
103
|
+
config: t.config || {},
|
|
104
|
+
}));
|
|
105
|
+
// Extract steps from frontmatter or markdown body
|
|
106
|
+
let steps = [];
|
|
107
|
+
if (frontmatter.steps && Array.isArray(frontmatter.steps)) {
|
|
108
|
+
// Steps defined in frontmatter
|
|
109
|
+
steps = parseStepsFromFrontmatter(frontmatter.steps, warnings);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Steps defined in markdown code blocks
|
|
113
|
+
steps = parseStepsFromMarkdown(markdownBody, warnings);
|
|
114
|
+
}
|
|
115
|
+
// Extract workflow-level permissions
|
|
116
|
+
const permissionsRaw = frontmatter.permissions;
|
|
117
|
+
const permissions = permissionsRaw ? normalizePermissions(permissionsRaw) : undefined;
|
|
118
|
+
// Extract default agent/model
|
|
119
|
+
const defaultAgent = (frontmatter.default_agent || frontmatter.defaultAgent);
|
|
120
|
+
const defaultModel = (frontmatter.default_model || frontmatter.defaultModel);
|
|
121
|
+
return {
|
|
122
|
+
metadata,
|
|
123
|
+
tools,
|
|
124
|
+
inputs,
|
|
125
|
+
triggers,
|
|
126
|
+
steps,
|
|
127
|
+
rawContent: markdownBody,
|
|
128
|
+
permissions,
|
|
129
|
+
defaultAgent,
|
|
130
|
+
defaultModel,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Parse steps from frontmatter array.
|
|
135
|
+
*/
|
|
136
|
+
function parseStepsFromFrontmatter(stepsArray, warnings) {
|
|
137
|
+
const steps = [];
|
|
138
|
+
for (let i = 0; i < stepsArray.length; i++) {
|
|
139
|
+
const stepRaw = stepsArray[i];
|
|
140
|
+
const step = normalizeStep(stepRaw, i);
|
|
141
|
+
const result = WorkflowStepSchema.safeParse(step);
|
|
142
|
+
if (result.success) {
|
|
143
|
+
steps.push(result.data);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
warnings.push(`Invalid step at index ${i}: ${result.error.message}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return steps;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Parse steps from markdown code blocks.
|
|
153
|
+
*/
|
|
154
|
+
function parseStepsFromMarkdown(markdown, warnings) {
|
|
155
|
+
const steps = [];
|
|
156
|
+
let stepIndex = 0;
|
|
157
|
+
// Find all YAML code blocks
|
|
158
|
+
let match;
|
|
159
|
+
while ((match = STEP_CODE_BLOCK_REGEX.exec(markdown)) !== null) {
|
|
160
|
+
const yamlContent = match[1];
|
|
161
|
+
try {
|
|
162
|
+
const stepRaw = parseYaml(yamlContent);
|
|
163
|
+
// Skip non-step code blocks
|
|
164
|
+
// Check for action, workflow, or control flow fields
|
|
165
|
+
const isActionStep = !!stepRaw.action;
|
|
166
|
+
const isWorkflowStep = !!stepRaw.workflow;
|
|
167
|
+
const isControlFlowStep = stepRaw.type === 'for_each' ||
|
|
168
|
+
stepRaw.type === 'if' ||
|
|
169
|
+
stepRaw.type === 'while' ||
|
|
170
|
+
stepRaw.type === 'switch' ||
|
|
171
|
+
stepRaw.type === 'parallel' ||
|
|
172
|
+
stepRaw.type === 'try' ||
|
|
173
|
+
stepRaw.type === 'map' ||
|
|
174
|
+
stepRaw.type === 'filter' ||
|
|
175
|
+
stepRaw.type === 'reduce' ||
|
|
176
|
+
// Also detect by structure (for implicit type detection)
|
|
177
|
+
(stepRaw.items && stepRaw.steps) || // for_each/while
|
|
178
|
+
(stepRaw.condition && (stepRaw.then || stepRaw.else)) || // if
|
|
179
|
+
(stepRaw.expression && stepRaw.cases) || // switch
|
|
180
|
+
stepRaw.branches; // parallel
|
|
181
|
+
if (!isActionStep && !isWorkflowStep && !isControlFlowStep) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const step = normalizeStep(stepRaw, stepIndex);
|
|
185
|
+
const result = WorkflowStepSchema.safeParse(step);
|
|
186
|
+
if (result.success) {
|
|
187
|
+
steps.push(result.data);
|
|
188
|
+
stepIndex++;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
warnings.push(`Invalid step in markdown: ${result.error.message}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
warnings.push(`Failed to parse YAML code block: ${error}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return steps;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Normalize permissions object, converting snake_case to camelCase.
|
|
202
|
+
*/
|
|
203
|
+
function normalizePermissions(raw) {
|
|
204
|
+
if (!raw || typeof raw !== 'object') {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
const obj = raw;
|
|
208
|
+
return {
|
|
209
|
+
read: obj.read,
|
|
210
|
+
write: obj.write,
|
|
211
|
+
execute: obj.execute,
|
|
212
|
+
allowedCommands: obj.allowed_commands ?? obj.allowedCommands,
|
|
213
|
+
blockedCommands: obj.blocked_commands ?? obj.blockedCommands,
|
|
214
|
+
allowedDirectories: obj.allowed_directories ?? obj.allowedDirectories,
|
|
215
|
+
blockedPaths: obj.blocked_paths ?? obj.blockedPaths,
|
|
216
|
+
network: obj.network,
|
|
217
|
+
allowedHosts: obj.allowed_hosts ?? obj.allowedHosts,
|
|
218
|
+
maxFileSize: obj.max_file_size ?? obj.maxFileSize,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Normalize subagent config, converting snake_case to camelCase.
|
|
223
|
+
*/
|
|
224
|
+
function normalizeSubagentConfig(raw) {
|
|
225
|
+
if (!raw || typeof raw !== 'object') {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
const obj = raw;
|
|
229
|
+
return {
|
|
230
|
+
model: obj.model,
|
|
231
|
+
maxTurns: obj.max_turns ?? obj.maxTurns,
|
|
232
|
+
systemPrompt: obj.system_prompt ?? obj.systemPrompt,
|
|
233
|
+
tools: obj.tools,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Normalize a step object, converting snake_case to camelCase and detecting step type.
|
|
238
|
+
*/
|
|
239
|
+
function normalizeStep(raw, index) {
|
|
240
|
+
const base = {
|
|
241
|
+
id: raw.id || `step-${index + 1}`,
|
|
242
|
+
name: raw.name,
|
|
243
|
+
conditions: raw.conditions,
|
|
244
|
+
timeout: raw.timeout,
|
|
245
|
+
outputVariable: raw.output_variable || raw.outputVariable,
|
|
246
|
+
// Per-step model/agent configuration
|
|
247
|
+
model: raw.model,
|
|
248
|
+
agent: raw.agent,
|
|
249
|
+
// Permission restrictions
|
|
250
|
+
permissions: normalizePermissions(raw.permissions),
|
|
251
|
+
};
|
|
252
|
+
// Detect or use explicit type
|
|
253
|
+
let type = raw.type;
|
|
254
|
+
if (!type) {
|
|
255
|
+
// Type inference for backward compatibility
|
|
256
|
+
if (raw.action) {
|
|
257
|
+
type = 'action';
|
|
258
|
+
}
|
|
259
|
+
else if (raw.workflow) {
|
|
260
|
+
type = 'workflow';
|
|
261
|
+
}
|
|
262
|
+
else if (raw.condition && (raw.then || raw.else || raw.steps)) {
|
|
263
|
+
type = 'if';
|
|
264
|
+
}
|
|
265
|
+
else if (raw.expression && raw.cases) {
|
|
266
|
+
type = 'switch';
|
|
267
|
+
}
|
|
268
|
+
else if (raw.items && raw.steps) {
|
|
269
|
+
type = raw.condition ? 'while' : 'for_each';
|
|
270
|
+
}
|
|
271
|
+
else if (raw.items && raw.expression && !raw.steps) {
|
|
272
|
+
type = 'map';
|
|
273
|
+
}
|
|
274
|
+
else if (raw.items && raw.condition && !raw.steps) {
|
|
275
|
+
type = 'filter';
|
|
276
|
+
}
|
|
277
|
+
else if (raw.items && (raw.accumulator_variable || raw.accumulatorVariable)) {
|
|
278
|
+
type = 'reduce';
|
|
279
|
+
}
|
|
280
|
+
else if (raw.branches) {
|
|
281
|
+
type = 'parallel';
|
|
282
|
+
}
|
|
283
|
+
else if (raw.try || raw.catch) {
|
|
284
|
+
type = 'try';
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// Build step based on type
|
|
288
|
+
switch (type) {
|
|
289
|
+
case 'action':
|
|
290
|
+
return {
|
|
291
|
+
...base,
|
|
292
|
+
type: 'action',
|
|
293
|
+
action: raw.action,
|
|
294
|
+
inputs: raw.inputs || {},
|
|
295
|
+
errorHandling: normalizeErrorHandling(raw.error_handling || raw.errorHandling || raw.on_error),
|
|
296
|
+
// External prompt file support
|
|
297
|
+
prompt: raw.prompt,
|
|
298
|
+
promptInputs: raw.prompt_inputs || raw.promptInputs,
|
|
299
|
+
};
|
|
300
|
+
case 'workflow':
|
|
301
|
+
return {
|
|
302
|
+
...base,
|
|
303
|
+
type: 'workflow',
|
|
304
|
+
workflow: raw.workflow,
|
|
305
|
+
inputs: raw.inputs || {},
|
|
306
|
+
errorHandling: normalizeErrorHandling(raw.error_handling || raw.errorHandling || raw.on_error),
|
|
307
|
+
// Sub-agent execution support
|
|
308
|
+
useSubagent: raw.use_subagent ?? raw.useSubagent ?? false,
|
|
309
|
+
subagentConfig: normalizeSubagentConfig(raw.subagent_config || raw.subagentConfig),
|
|
310
|
+
};
|
|
311
|
+
case 'if':
|
|
312
|
+
return {
|
|
313
|
+
...base,
|
|
314
|
+
type: 'if',
|
|
315
|
+
condition: raw.condition,
|
|
316
|
+
then: raw.then ? normalizeSteps(raw.then) : undefined,
|
|
317
|
+
else: raw.else ? normalizeSteps(raw.else) : undefined,
|
|
318
|
+
steps: raw.steps ? normalizeSteps(raw.steps) : undefined,
|
|
319
|
+
};
|
|
320
|
+
case 'switch':
|
|
321
|
+
return {
|
|
322
|
+
...base,
|
|
323
|
+
type: 'switch',
|
|
324
|
+
expression: raw.expression,
|
|
325
|
+
cases: normalizeCases(raw.cases),
|
|
326
|
+
default: raw.default
|
|
327
|
+
? normalizeSteps(raw.default)
|
|
328
|
+
: undefined,
|
|
329
|
+
};
|
|
330
|
+
case 'for_each':
|
|
331
|
+
return {
|
|
332
|
+
...base,
|
|
333
|
+
type: 'for_each',
|
|
334
|
+
items: raw.items,
|
|
335
|
+
itemVariable: raw.item_variable || raw.itemVariable || 'item',
|
|
336
|
+
indexVariable: raw.index_variable || raw.indexVariable,
|
|
337
|
+
steps: normalizeSteps(raw.steps),
|
|
338
|
+
errorHandling: normalizeErrorHandling(raw.error_handling || raw.errorHandling || raw.on_error),
|
|
339
|
+
};
|
|
340
|
+
case 'while':
|
|
341
|
+
return {
|
|
342
|
+
...base,
|
|
343
|
+
type: 'while',
|
|
344
|
+
condition: raw.condition,
|
|
345
|
+
maxIterations: raw.max_iterations || raw.maxIterations || 100,
|
|
346
|
+
steps: normalizeSteps(raw.steps),
|
|
347
|
+
errorHandling: normalizeErrorHandling(raw.error_handling || raw.errorHandling || raw.on_error),
|
|
348
|
+
};
|
|
349
|
+
case 'map':
|
|
350
|
+
return {
|
|
351
|
+
...base,
|
|
352
|
+
type: 'map',
|
|
353
|
+
items: raw.items,
|
|
354
|
+
itemVariable: raw.item_variable || raw.itemVariable || 'item',
|
|
355
|
+
expression: raw.expression,
|
|
356
|
+
};
|
|
357
|
+
case 'filter':
|
|
358
|
+
return {
|
|
359
|
+
...base,
|
|
360
|
+
type: 'filter',
|
|
361
|
+
items: raw.items,
|
|
362
|
+
itemVariable: raw.item_variable || raw.itemVariable || 'item',
|
|
363
|
+
condition: raw.condition,
|
|
364
|
+
};
|
|
365
|
+
case 'reduce':
|
|
366
|
+
return {
|
|
367
|
+
...base,
|
|
368
|
+
type: 'reduce',
|
|
369
|
+
items: raw.items,
|
|
370
|
+
itemVariable: raw.item_variable || raw.itemVariable || 'item',
|
|
371
|
+
accumulatorVariable: raw.accumulator_variable || raw.accumulatorVariable || 'accumulator',
|
|
372
|
+
initialValue: raw.initial_value || raw.initialValue,
|
|
373
|
+
expression: raw.expression,
|
|
374
|
+
};
|
|
375
|
+
case 'parallel':
|
|
376
|
+
return {
|
|
377
|
+
...base,
|
|
378
|
+
type: 'parallel',
|
|
379
|
+
branches: normalizeBranches(raw.branches),
|
|
380
|
+
maxConcurrent: raw.max_concurrent || raw.maxConcurrent,
|
|
381
|
+
onError: raw.on_error || raw.onError || 'stop',
|
|
382
|
+
};
|
|
383
|
+
case 'try':
|
|
384
|
+
return {
|
|
385
|
+
...base,
|
|
386
|
+
type: 'try',
|
|
387
|
+
try: normalizeSteps(raw.try),
|
|
388
|
+
catch: raw.catch
|
|
389
|
+
? normalizeSteps(raw.catch)
|
|
390
|
+
: undefined,
|
|
391
|
+
finally: raw.finally
|
|
392
|
+
? normalizeSteps(raw.finally)
|
|
393
|
+
: undefined,
|
|
394
|
+
};
|
|
395
|
+
default:
|
|
396
|
+
// Fallback for backward compatibility
|
|
397
|
+
return {
|
|
398
|
+
...base,
|
|
399
|
+
action: raw.action,
|
|
400
|
+
workflow: raw.workflow,
|
|
401
|
+
inputs: raw.inputs || {},
|
|
402
|
+
errorHandling: normalizeErrorHandling(raw.error_handling || raw.errorHandling || raw.on_error),
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Normalize an array of steps recursively.
|
|
408
|
+
*/
|
|
409
|
+
function normalizeSteps(steps) {
|
|
410
|
+
return steps.map((step, index) => normalizeStep(step, index));
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Normalize switch cases (Record<string, steps[]>).
|
|
414
|
+
*/
|
|
415
|
+
function normalizeCases(cases) {
|
|
416
|
+
const normalized = {};
|
|
417
|
+
for (const [key, value] of Object.entries(cases)) {
|
|
418
|
+
if (Array.isArray(value)) {
|
|
419
|
+
normalized[key] = normalizeSteps(value);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return normalized;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Normalize parallel branches.
|
|
426
|
+
*/
|
|
427
|
+
function normalizeBranches(branches) {
|
|
428
|
+
return branches.map((branch, index) => ({
|
|
429
|
+
id: branch.id || `branch-${index + 1}`,
|
|
430
|
+
name: branch.name,
|
|
431
|
+
steps: normalizeSteps(branch.steps),
|
|
432
|
+
}));
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Normalize error handling configuration.
|
|
436
|
+
*/
|
|
437
|
+
function normalizeErrorHandling(raw) {
|
|
438
|
+
if (!raw || typeof raw !== 'object') {
|
|
439
|
+
return undefined;
|
|
440
|
+
}
|
|
441
|
+
const obj = raw;
|
|
442
|
+
return {
|
|
443
|
+
action: obj.action,
|
|
444
|
+
maxRetries: obj.max_retries ?? obj.maxRetries,
|
|
445
|
+
retryDelaySeconds: obj.retry_delay_seconds ?? obj.retryDelaySeconds,
|
|
446
|
+
fallbackAction: obj.fallback_action ?? obj.fallbackAction,
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Resolve environment variable references in the workflow.
|
|
451
|
+
* Replaces ${VAR_NAME} with process.env.VAR_NAME.
|
|
452
|
+
*/
|
|
453
|
+
function resolveEnvironmentVariables(workflow) {
|
|
454
|
+
const resolve = (value) => {
|
|
455
|
+
if (typeof value === 'string') {
|
|
456
|
+
return value.replace(/\$\{([^}]+)\}/g, (_, varName) => {
|
|
457
|
+
return process.env[varName] || '';
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
if (Array.isArray(value)) {
|
|
461
|
+
return value.map(resolve);
|
|
462
|
+
}
|
|
463
|
+
if (value && typeof value === 'object') {
|
|
464
|
+
const result = {};
|
|
465
|
+
for (const [k, v] of Object.entries(value)) {
|
|
466
|
+
result[k] = resolve(v);
|
|
467
|
+
}
|
|
468
|
+
return result;
|
|
469
|
+
}
|
|
470
|
+
return value;
|
|
471
|
+
};
|
|
472
|
+
// Resolve in tools
|
|
473
|
+
for (const toolConfig of Object.values(workflow.tools)) {
|
|
474
|
+
if (toolConfig.auth) {
|
|
475
|
+
toolConfig.auth = resolve(toolConfig.auth);
|
|
476
|
+
}
|
|
477
|
+
if (toolConfig.options) {
|
|
478
|
+
toolConfig.options = resolve(toolConfig.options);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
// Resolve in inputs defaults
|
|
482
|
+
if (workflow.inputs) {
|
|
483
|
+
for (const input of Object.values(workflow.inputs)) {
|
|
484
|
+
if (input.default !== undefined) {
|
|
485
|
+
input.default = resolve(input.default);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Extract variable references from a template string.
|
|
492
|
+
* Returns list of variable names like ["var1", "var2"].
|
|
493
|
+
*/
|
|
494
|
+
export function extractVariableReferences(template) {
|
|
495
|
+
const varRegex = /\{\{([^}]+)\}\}/g;
|
|
496
|
+
const matches = [];
|
|
497
|
+
let match;
|
|
498
|
+
while ((match = varRegex.exec(template)) !== null) {
|
|
499
|
+
matches.push(match[1].trim());
|
|
500
|
+
}
|
|
501
|
+
return matches;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Validate that all variable references in steps are defined.
|
|
505
|
+
*/
|
|
506
|
+
export function validateVariableReferences(workflow) {
|
|
507
|
+
const errors = [];
|
|
508
|
+
const definedVars = new Set();
|
|
509
|
+
// Add input variables
|
|
510
|
+
if (workflow.inputs) {
|
|
511
|
+
for (const name of Object.keys(workflow.inputs)) {
|
|
512
|
+
definedVars.add(`inputs.${name}`);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
// Check each step
|
|
516
|
+
for (const step of workflow.steps) {
|
|
517
|
+
// Check input values for variable references
|
|
518
|
+
const inputJson = JSON.stringify(step.inputs);
|
|
519
|
+
const refs = extractVariableReferences(inputJson);
|
|
520
|
+
for (const ref of refs) {
|
|
521
|
+
if (!definedVars.has(ref) && !ref.startsWith('inputs.')) {
|
|
522
|
+
errors.push(`Step '${step.id}' references undefined variable: ${ref}`);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
// Add output variable to defined set
|
|
526
|
+
if (step.outputVariable) {
|
|
527
|
+
definedVars.add(step.outputVariable);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return errors;
|
|
531
|
+
}
|
|
532
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permissions module for marktoflow v2.0
|
|
3
|
+
*
|
|
4
|
+
* Provides permission merging and enforcement utilities for step-level
|
|
5
|
+
* and workflow-level permission restrictions.
|
|
6
|
+
*/
|
|
7
|
+
import { Permissions } from './models.js';
|
|
8
|
+
export interface EffectivePermissions {
|
|
9
|
+
read: string[] | boolean;
|
|
10
|
+
write: string[] | boolean;
|
|
11
|
+
execute: string[] | boolean;
|
|
12
|
+
allowedCommands: string[];
|
|
13
|
+
blockedCommands: string[];
|
|
14
|
+
allowedDirectories: string[];
|
|
15
|
+
blockedPaths: string[];
|
|
16
|
+
network: boolean;
|
|
17
|
+
allowedHosts: string[];
|
|
18
|
+
maxFileSize: number | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface PermissionCheckResult {
|
|
21
|
+
allowed: boolean;
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
export type OperationType = 'read' | 'write' | 'execute' | 'network';
|
|
25
|
+
/**
|
|
26
|
+
* Merge workflow-level and step-level permissions.
|
|
27
|
+
* Step permissions override workflow permissions, with most restrictive winning.
|
|
28
|
+
*/
|
|
29
|
+
export declare function mergePermissions(workflow?: Permissions, step?: Permissions): EffectivePermissions;
|
|
30
|
+
/**
|
|
31
|
+
* Check if an operation is permitted.
|
|
32
|
+
*/
|
|
33
|
+
export declare function checkPermission(perms: EffectivePermissions, operation: OperationType, target?: string): PermissionCheckResult;
|
|
34
|
+
export interface SecurityPolicy {
|
|
35
|
+
allowFileRead: (path: string) => PermissionCheckResult;
|
|
36
|
+
allowFileWrite: (path: string) => PermissionCheckResult;
|
|
37
|
+
allowCommand: (command: string) => PermissionCheckResult;
|
|
38
|
+
allowNetwork: (host: string) => PermissionCheckResult;
|
|
39
|
+
maxFileSize: number | undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Convert EffectivePermissions to a SecurityPolicy for use with hooks.
|
|
43
|
+
*/
|
|
44
|
+
export declare function toSecurityPolicy(perms: EffectivePermissions): SecurityPolicy;
|
|
45
|
+
/**
|
|
46
|
+
* Create default (permissive) permissions.
|
|
47
|
+
*/
|
|
48
|
+
export declare function createDefaultPermissions(): EffectivePermissions;
|
|
49
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO1C,MAAM,WAAW,oBAAoB;IAEnC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAG1B,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAG1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;IAGvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IAGvB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAMrE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,CAAC,EAAE,WAAW,EACtB,IAAI,CAAC,EAAE,WAAW,GACjB,oBAAoB,CA0BtB;AAqED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,oBAAoB,EAC3B,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,qBAAqB,CAiBvB;AAwLD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACvD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACzD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACtD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,cAAc,CAQ5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,oBAAoB,CAa/D"}
|