@marktoflow/core 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +69 -6
  2. package/dist/built-in-operations.d.ts +2 -136
  3. package/dist/built-in-operations.d.ts.map +1 -1
  4. package/dist/built-in-operations.js +7 -743
  5. package/dist/built-in-operations.js.map +1 -1
  6. package/dist/engine/conditions.d.ts +29 -0
  7. package/dist/engine/conditions.d.ts.map +1 -0
  8. package/dist/engine/conditions.js +109 -0
  9. package/dist/engine/conditions.js.map +1 -0
  10. package/dist/engine/control-flow.d.ts +35 -0
  11. package/dist/engine/control-flow.d.ts.map +1 -0
  12. package/dist/engine/control-flow.js +653 -0
  13. package/dist/engine/control-flow.js.map +1 -0
  14. package/dist/engine/index.d.ts +12 -0
  15. package/dist/engine/index.d.ts.map +1 -0
  16. package/dist/engine/index.js +11 -0
  17. package/dist/engine/index.js.map +1 -0
  18. package/dist/engine/retry.d.ts +35 -0
  19. package/dist/engine/retry.d.ts.map +1 -0
  20. package/dist/engine/retry.js +86 -0
  21. package/dist/engine/retry.js.map +1 -0
  22. package/dist/engine/subworkflow.d.ts +31 -0
  23. package/dist/engine/subworkflow.d.ts.map +1 -0
  24. package/dist/engine/subworkflow.js +240 -0
  25. package/dist/engine/subworkflow.js.map +1 -0
  26. package/dist/engine/types.d.ts +55 -0
  27. package/dist/engine/types.d.ts.map +1 -0
  28. package/dist/engine/types.js +5 -0
  29. package/dist/{secrets → engine}/types.js.map +1 -1
  30. package/dist/engine/variable-resolution.d.ts +29 -0
  31. package/dist/engine/variable-resolution.d.ts.map +1 -0
  32. package/dist/engine/variable-resolution.js +130 -0
  33. package/dist/engine/variable-resolution.js.map +1 -0
  34. package/dist/engine.d.ts +17 -211
  35. package/dist/engine.d.ts.map +1 -1
  36. package/dist/engine.js +84 -1351
  37. package/dist/engine.js.map +1 -1
  38. package/dist/file-operations.js +1 -1
  39. package/dist/file-operations.js.map +1 -1
  40. package/dist/filters/array.d.ts +9 -0
  41. package/dist/filters/array.d.ts.map +1 -0
  42. package/dist/filters/array.js +41 -0
  43. package/dist/filters/array.js.map +1 -0
  44. package/dist/filters/date.d.ts +9 -0
  45. package/dist/filters/date.d.ts.map +1 -0
  46. package/dist/filters/date.js +51 -0
  47. package/dist/filters/date.js.map +1 -0
  48. package/dist/filters/index.d.ts +13 -0
  49. package/dist/filters/index.d.ts.map +1 -0
  50. package/dist/filters/index.js +13 -0
  51. package/dist/filters/index.js.map +1 -0
  52. package/dist/filters/json.d.ts +6 -0
  53. package/dist/filters/json.d.ts.map +1 -0
  54. package/dist/filters/json.js +15 -0
  55. package/dist/filters/json.js.map +1 -0
  56. package/dist/filters/logic.d.ts +8 -0
  57. package/dist/filters/logic.d.ts.map +1 -0
  58. package/dist/filters/logic.js +28 -0
  59. package/dist/filters/logic.js.map +1 -0
  60. package/dist/filters/math.d.ts +13 -0
  61. package/dist/filters/math.d.ts.map +1 -0
  62. package/dist/filters/math.js +39 -0
  63. package/dist/filters/math.js.map +1 -0
  64. package/dist/filters/object.d.ts +11 -0
  65. package/dist/filters/object.d.ts.map +1 -0
  66. package/dist/filters/object.js +64 -0
  67. package/dist/filters/object.js.map +1 -0
  68. package/dist/filters/regex.d.ts +7 -0
  69. package/dist/filters/regex.d.ts.map +1 -0
  70. package/dist/filters/regex.js +38 -0
  71. package/dist/filters/regex.js.map +1 -0
  72. package/dist/filters/string.d.ts +11 -0
  73. package/dist/filters/string.d.ts.map +1 -0
  74. package/dist/filters/string.js +35 -0
  75. package/dist/filters/string.js.map +1 -0
  76. package/dist/filters/type-checks.d.ts +10 -0
  77. package/dist/filters/type-checks.d.ts.map +1 -0
  78. package/dist/filters/type-checks.js +30 -0
  79. package/dist/filters/type-checks.js.map +1 -0
  80. package/dist/index.d.ts +5 -1
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +7 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/nunjucks-filters.d.ts +2 -261
  85. package/dist/nunjucks-filters.d.ts.map +1 -1
  86. package/dist/nunjucks-filters.js +24 -582
  87. package/dist/nunjucks-filters.js.map +1 -1
  88. package/dist/operations/compress.d.ts +6 -0
  89. package/dist/operations/compress.d.ts.map +1 -0
  90. package/dist/operations/compress.js +36 -0
  91. package/dist/operations/compress.js.map +1 -0
  92. package/dist/operations/crypto.d.ts +5 -0
  93. package/dist/operations/crypto.d.ts.map +1 -0
  94. package/dist/operations/crypto.js +61 -0
  95. package/dist/operations/crypto.js.map +1 -0
  96. package/dist/operations/data-ops.d.ts +10 -0
  97. package/dist/operations/data-ops.d.ts.map +1 -0
  98. package/dist/operations/data-ops.js +124 -0
  99. package/dist/operations/data-ops.js.map +1 -0
  100. package/dist/operations/datetime.d.ts +5 -0
  101. package/dist/operations/datetime.d.ts.map +1 -0
  102. package/dist/operations/datetime.js +86 -0
  103. package/dist/operations/datetime.js.map +1 -0
  104. package/dist/operations/extract.d.ts +23 -0
  105. package/dist/operations/extract.d.ts.map +1 -0
  106. package/dist/operations/extract.js +31 -0
  107. package/dist/operations/extract.js.map +1 -0
  108. package/dist/operations/format.d.ts +14 -0
  109. package/dist/operations/format.d.ts.map +1 -0
  110. package/dist/operations/format.js +84 -0
  111. package/dist/operations/format.js.map +1 -0
  112. package/dist/operations/index.d.ts +13 -0
  113. package/dist/operations/index.d.ts.map +1 -0
  114. package/dist/operations/index.js +13 -0
  115. package/dist/operations/index.js.map +1 -0
  116. package/dist/operations/parse.d.ts +5 -0
  117. package/dist/operations/parse.d.ts.map +1 -0
  118. package/dist/operations/parse.js +59 -0
  119. package/dist/operations/parse.js.map +1 -0
  120. package/dist/operations/set.d.ts +21 -0
  121. package/dist/operations/set.d.ts.map +1 -0
  122. package/dist/operations/set.js +25 -0
  123. package/dist/operations/set.js.map +1 -0
  124. package/dist/operations/transform.d.ts +15 -0
  125. package/dist/operations/transform.d.ts.map +1 -0
  126. package/dist/operations/transform.js +110 -0
  127. package/dist/operations/transform.js.map +1 -0
  128. package/dist/parallel.d.ts +114 -0
  129. package/dist/parallel.d.ts.map +1 -0
  130. package/dist/parallel.js +325 -0
  131. package/dist/parallel.js.map +1 -0
  132. package/dist/parser.d.ts.map +1 -1
  133. package/dist/parser.js +2 -0
  134. package/dist/parser.js.map +1 -1
  135. package/dist/routing.js +2 -2
  136. package/dist/routing.js.map +1 -1
  137. package/dist/sdk-registry.d.ts.map +1 -1
  138. package/dist/sdk-registry.js +9 -3
  139. package/dist/sdk-registry.js.map +1 -1
  140. package/dist/utils/duration.d.ts +23 -0
  141. package/dist/utils/duration.d.ts.map +1 -0
  142. package/dist/utils/duration.js +41 -0
  143. package/dist/utils/duration.js.map +1 -0
  144. package/dist/utils/errors.d.ts +20 -0
  145. package/dist/utils/errors.d.ts.map +1 -0
  146. package/dist/utils/errors.js +37 -0
  147. package/dist/utils/errors.js.map +1 -0
  148. package/dist/utils/index.d.ts +3 -0
  149. package/dist/utils/index.d.ts.map +1 -0
  150. package/dist/utils/index.js +3 -0
  151. package/dist/utils/index.js.map +1 -0
  152. package/dist/workflow-templates.d.ts +80 -0
  153. package/dist/workflow-templates.d.ts.map +1 -0
  154. package/dist/workflow-templates.js +248 -0
  155. package/dist/workflow-templates.js.map +1 -0
  156. package/package.json +30 -5
  157. package/dist/secrets/index.d.ts +0 -12
  158. package/dist/secrets/index.d.ts.map +0 -1
  159. package/dist/secrets/index.js +0 -11
  160. package/dist/secrets/index.js.map +0 -1
  161. package/dist/secrets/providers/aws.d.ts +0 -32
  162. package/dist/secrets/providers/aws.d.ts.map +0 -1
  163. package/dist/secrets/providers/aws.js +0 -118
  164. package/dist/secrets/providers/aws.js.map +0 -1
  165. package/dist/secrets/providers/azure.d.ts +0 -40
  166. package/dist/secrets/providers/azure.d.ts.map +0 -1
  167. package/dist/secrets/providers/azure.js +0 -170
  168. package/dist/secrets/providers/azure.js.map +0 -1
  169. package/dist/secrets/providers/env.d.ts +0 -26
  170. package/dist/secrets/providers/env.d.ts.map +0 -1
  171. package/dist/secrets/providers/env.js +0 -59
  172. package/dist/secrets/providers/env.js.map +0 -1
  173. package/dist/secrets/providers/vault.d.ts +0 -39
  174. package/dist/secrets/providers/vault.d.ts.map +0 -1
  175. package/dist/secrets/providers/vault.js +0 -180
  176. package/dist/secrets/providers/vault.js.map +0 -1
  177. package/dist/secrets/secret-manager.d.ts +0 -72
  178. package/dist/secrets/secret-manager.d.ts.map +0 -1
  179. package/dist/secrets/secret-manager.js +0 -226
  180. package/dist/secrets/secret-manager.js.map +0 -1
  181. package/dist/secrets/types.d.ts +0 -105
  182. package/dist/secrets/types.d.ts.map +0 -1
  183. package/dist/secrets/types.js +0 -8
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Duration parsing utility for marktoflow.
3
+ *
4
+ * Parses human-readable duration strings like "2h", "30m", "5s", "100ms"
5
+ * into milliseconds.
6
+ */
7
+ /**
8
+ * Parse a duration string into milliseconds.
9
+ *
10
+ * Supported formats:
11
+ * - "100ms" → 100
12
+ * - "5s" → 5000
13
+ * - "30m" → 1800000
14
+ * - "2h" → 7200000
15
+ * - "1d" → 86400000
16
+ * - "5000" → 5000 (bare number treated as milliseconds)
17
+ *
18
+ * @param duration - Duration string to parse
19
+ * @returns Duration in milliseconds
20
+ * @throws Error if format is invalid
21
+ */
22
+ export declare function parseDuration(duration: string): number;
23
+ //# sourceMappingURL=duration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/utils/duration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBtD"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Duration parsing utility for marktoflow.
3
+ *
4
+ * Parses human-readable duration strings like "2h", "30m", "5s", "100ms"
5
+ * into milliseconds.
6
+ */
7
+ /**
8
+ * Parse a duration string into milliseconds.
9
+ *
10
+ * Supported formats:
11
+ * - "100ms" → 100
12
+ * - "5s" → 5000
13
+ * - "30m" → 1800000
14
+ * - "2h" → 7200000
15
+ * - "1d" → 86400000
16
+ * - "5000" → 5000 (bare number treated as milliseconds)
17
+ *
18
+ * @param duration - Duration string to parse
19
+ * @returns Duration in milliseconds
20
+ * @throws Error if format is invalid
21
+ */
22
+ export function parseDuration(duration) {
23
+ const match = duration.match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);
24
+ if (!match) {
25
+ const asNum = Number(duration);
26
+ if (!isNaN(asNum))
27
+ return asNum; // Treat bare numbers as milliseconds
28
+ throw new Error(`Invalid duration format: "${duration}". Use format like "2h", "30m", "5s", "100ms"`);
29
+ }
30
+ const value = parseFloat(match[1]);
31
+ const unit = match[2].toLowerCase();
32
+ const multipliers = {
33
+ ms: 1,
34
+ s: 1000,
35
+ m: 60000,
36
+ h: 3600000,
37
+ d: 86400000,
38
+ };
39
+ return value * (multipliers[unit] ?? 1);
40
+ }
41
+ //# sourceMappingURL=duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../src/utils/duration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,qCAAqC;QACtE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,+CAA+C,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,WAAW,GAA2B;QAC1C,EAAE,EAAE,CAAC;QACL,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,QAAQ;KACZ,CAAC;IACF,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Error handling utilities for marktoflow.
3
+ *
4
+ * Provides consistent error conversion patterns used across the engine.
5
+ */
6
+ /**
7
+ * Convert an unknown error value to a human-readable string.
8
+ *
9
+ * @param error - Any thrown value
10
+ * @returns A string representation of the error
11
+ */
12
+ export declare function errorToString(error: unknown): string;
13
+ /**
14
+ * Convert an unknown thrown value to an Error object.
15
+ *
16
+ * @param error - Any thrown value
17
+ * @returns An Error instance
18
+ */
19
+ export declare function toError(error: unknown): Error;
20
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASpD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAG7C"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Error handling utilities for marktoflow.
3
+ *
4
+ * Provides consistent error conversion patterns used across the engine.
5
+ */
6
+ /**
7
+ * Convert an unknown error value to a human-readable string.
8
+ *
9
+ * @param error - Any thrown value
10
+ * @returns A string representation of the error
11
+ */
12
+ export function errorToString(error) {
13
+ if (!error)
14
+ return 'Unknown error';
15
+ if (typeof error === 'string')
16
+ return error;
17
+ if (error instanceof Error)
18
+ return error.message;
19
+ try {
20
+ return JSON.stringify(error);
21
+ }
22
+ catch {
23
+ return String(error);
24
+ }
25
+ }
26
+ /**
27
+ * Convert an unknown thrown value to an Error object.
28
+ *
29
+ * @param error - Any thrown value
30
+ * @returns An Error instance
31
+ */
32
+ export function toError(error) {
33
+ if (error instanceof Error)
34
+ return error;
35
+ return new Error(errorToString(error));
36
+ }
37
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,eAAe,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { parseDuration } from './duration.js';
2
+ export { errorToString, toError } from './errors.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { parseDuration } from './duration.js';
2
+ export { errorToString, toError } from './errors.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Workflow template library for marktoflow.
3
+ * Uses Nunjucks for template rendering with full filter/conditional support.
4
+ */
5
+ export declare enum TemplateCategory {
6
+ CODE_QUALITY = "code_quality",
7
+ DEPLOYMENT = "deployment",
8
+ TESTING = "testing",
9
+ DOCUMENTATION = "documentation",
10
+ SECURITY = "security",
11
+ MONITORING = "monitoring",
12
+ DATA = "data",
13
+ INTEGRATION = "integration",
14
+ GENERAL = "general"
15
+ }
16
+ export interface TemplateVariable {
17
+ name: string;
18
+ description: string;
19
+ type?: 'string' | 'integer' | 'boolean' | 'array' | 'object';
20
+ required?: boolean;
21
+ default?: unknown;
22
+ example?: unknown;
23
+ pattern?: string | undefined;
24
+ }
25
+ export interface TemplateMetadata {
26
+ id: string;
27
+ name: string;
28
+ description?: string;
29
+ category: TemplateCategory;
30
+ version?: string;
31
+ author?: string;
32
+ tags?: string[];
33
+ license?: string;
34
+ homepage?: string;
35
+ variables?: TemplateVariable[];
36
+ requirements?: Record<string, unknown>;
37
+ examples?: Array<Record<string, unknown>>;
38
+ }
39
+ export declare class WorkflowTemplate {
40
+ metadata: TemplateMetadata;
41
+ content: string;
42
+ source: 'builtin' | 'file' | 'registry';
43
+ path?: string | undefined;
44
+ readonly createdAt: Date;
45
+ constructor(metadata: TemplateMetadata, content: string, source?: 'builtin' | 'file' | 'registry', path?: string | undefined);
46
+ get id(): string;
47
+ get name(): string;
48
+ get category(): TemplateCategory;
49
+ get variables(): TemplateVariable[];
50
+ validateVariables(values: Record<string, unknown>): {
51
+ valid: boolean;
52
+ errors: string[];
53
+ };
54
+ /**
55
+ * Render the template with the given variables using Nunjucks.
56
+ *
57
+ * Features enabled by using Nunjucks:
58
+ * - Filters: {{ template.name | upper }}, {{ value | split('/') | first }}
59
+ * - Conditionals: {% if template.enabled %}...{% endif %}
60
+ * - Loops: {% for item in items %}...{% endfor %}
61
+ * - All custom filters from nunjucks-filters.ts
62
+ */
63
+ render(variables?: Record<string, unknown>): string;
64
+ instantiate(outputPath: string, variables?: Record<string, unknown>, workflowId?: string): string;
65
+ static fromFile(path: string): WorkflowTemplate;
66
+ }
67
+ export declare class TemplateRegistry {
68
+ private templateDirs;
69
+ private templates;
70
+ constructor(templateDirs?: string[], loadBuiltins?: boolean);
71
+ register(template: WorkflowTemplate): void;
72
+ unregister(id: string): boolean;
73
+ get(id: string): WorkflowTemplate | undefined;
74
+ list(category?: TemplateCategory, tags?: string[]): WorkflowTemplate[];
75
+ search(query: string): WorkflowTemplate[];
76
+ discover(): string[];
77
+ }
78
+ export declare const HELLO_TEMPLATE: WorkflowTemplate;
79
+ export declare const BUILTIN_TEMPLATES: WorkflowTemplate[];
80
+ //# sourceMappingURL=workflow-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-templates.d.ts","sourceRoot":"","sources":["../src/workflow-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Workflow template library for marktoflow.
3
+ * Uses Nunjucks for template rendering with full filter/conditional support.
4
+ */
5
+ import { readFileSync, existsSync, mkdirSync } from 'node:fs';
6
+ import { dirname } from 'node:path';
7
+ import { parse } from 'yaml';
8
+ import { renderTemplate } from './template-engine.js';
9
+ export var TemplateCategory;
10
+ (function (TemplateCategory) {
11
+ TemplateCategory["CODE_QUALITY"] = "code_quality";
12
+ TemplateCategory["DEPLOYMENT"] = "deployment";
13
+ TemplateCategory["TESTING"] = "testing";
14
+ TemplateCategory["DOCUMENTATION"] = "documentation";
15
+ TemplateCategory["SECURITY"] = "security";
16
+ TemplateCategory["MONITORING"] = "monitoring";
17
+ TemplateCategory["DATA"] = "data";
18
+ TemplateCategory["INTEGRATION"] = "integration";
19
+ TemplateCategory["GENERAL"] = "general";
20
+ })(TemplateCategory || (TemplateCategory = {}));
21
+ export class WorkflowTemplate {
22
+ metadata;
23
+ content;
24
+ source;
25
+ path;
26
+ createdAt;
27
+ constructor(metadata, content, source = 'builtin', path) {
28
+ this.metadata = metadata;
29
+ this.content = content;
30
+ this.source = source;
31
+ this.path = path;
32
+ this.createdAt = new Date();
33
+ }
34
+ get id() {
35
+ return this.metadata.id;
36
+ }
37
+ get name() {
38
+ return this.metadata.name;
39
+ }
40
+ get category() {
41
+ return this.metadata.category;
42
+ }
43
+ get variables() {
44
+ return this.metadata.variables ?? [];
45
+ }
46
+ validateVariables(values) {
47
+ const errors = [];
48
+ for (const variable of this.variables) {
49
+ const value = values[variable.name];
50
+ if (value === undefined || value === null) {
51
+ if (variable.required && variable.default === undefined) {
52
+ errors.push(`Variable '${variable.name}' is required`);
53
+ }
54
+ continue;
55
+ }
56
+ if (variable.type) {
57
+ const typeMap = {
58
+ string: 'string',
59
+ integer: 'number',
60
+ boolean: 'boolean',
61
+ array: 'object',
62
+ object: 'object',
63
+ };
64
+ const expected = typeMap[variable.type];
65
+ if (expected === 'number' && typeof value !== 'number') {
66
+ errors.push(`Variable '${variable.name}' must be a number`);
67
+ }
68
+ else if (expected === 'string' && typeof value !== 'string') {
69
+ errors.push(`Variable '${variable.name}' must be a string`);
70
+ }
71
+ else if (expected === 'boolean' && typeof value !== 'boolean') {
72
+ errors.push(`Variable '${variable.name}' must be a boolean`);
73
+ }
74
+ else if (variable.type === 'array' && !Array.isArray(value)) {
75
+ errors.push(`Variable '${variable.name}' must be an array`);
76
+ }
77
+ else if (variable.type === 'object' && typeof value !== 'object') {
78
+ errors.push(`Variable '${variable.name}' must be an object`);
79
+ }
80
+ }
81
+ if (variable.pattern && typeof value === 'string') {
82
+ const regex = new RegExp(variable.pattern);
83
+ if (!regex.test(value)) {
84
+ errors.push(`Variable '${variable.name}' must match pattern ${variable.pattern}`);
85
+ }
86
+ }
87
+ }
88
+ return { valid: errors.length === 0, errors };
89
+ }
90
+ /**
91
+ * Render the template with the given variables using Nunjucks.
92
+ *
93
+ * Features enabled by using Nunjucks:
94
+ * - Filters: {{ template.name | upper }}, {{ value | split('/') | first }}
95
+ * - Conditionals: {% if template.enabled %}...{% endif %}
96
+ * - Loops: {% for item in items %}...{% endfor %}
97
+ * - All custom filters from nunjucks-filters.ts
98
+ */
99
+ render(variables = {}) {
100
+ const values = { ...variables };
101
+ for (const variable of this.variables) {
102
+ if (values[variable.name] === undefined && variable.default !== undefined) {
103
+ values[variable.name] = variable.default;
104
+ }
105
+ }
106
+ // Build the template context with 'template' namespace
107
+ const templateContext = {
108
+ template: values,
109
+ ...values, // Also expose at top level for convenience
110
+ };
111
+ // Render using Nunjucks
112
+ const rendered = renderTemplate(this.content, templateContext);
113
+ return typeof rendered === 'string' ? rendered : String(rendered);
114
+ }
115
+ instantiate(outputPath, variables = {}, workflowId) {
116
+ const { valid, errors } = this.validateVariables(variables);
117
+ if (!valid) {
118
+ throw new Error(`Invalid variables: ${errors.join('; ')}`);
119
+ }
120
+ let content = this.render(variables);
121
+ if (workflowId) {
122
+ content = content.replace(/(id:\\s*\")[^\"]*(\")/g, `$1${workflowId}$2`);
123
+ content = content.replace(/(id:\\s*)'[^']*(')/g, `$1'${workflowId}'$2`);
124
+ content = content.replace(/(id:\\s*)(\\S+)/g, `$1${workflowId}`);
125
+ }
126
+ const dir = dirname(outputPath);
127
+ if (!existsSync(dir)) {
128
+ mkdirSync(dir, { recursive: true });
129
+ }
130
+ const fs = require('node:fs');
131
+ fs.writeFileSync(outputPath, content);
132
+ return outputPath;
133
+ }
134
+ static fromFile(path) {
135
+ const content = readFileSync(path, 'utf8');
136
+ if (content.startsWith('---')) {
137
+ const parts = content.split('---', 3);
138
+ if (parts.length >= 3) {
139
+ const frontmatter = parse(parts[1]);
140
+ const templateMeta = frontmatter?.template ?? {};
141
+ const metadata = {
142
+ id: templateMeta.id ?? path.split('/').pop()?.replace(/\\.md$/, '') ?? 'template',
143
+ name: templateMeta.name ?? path.split('/').pop()?.replace(/\\.md$/, '') ?? 'Template',
144
+ description: templateMeta.description ?? '',
145
+ category: templateMeta.category ?? TemplateCategory.GENERAL,
146
+ version: templateMeta.version ?? '1.0.0',
147
+ author: templateMeta.author ?? '',
148
+ tags: templateMeta.tags ?? [],
149
+ variables: templateMeta.variables ?? [],
150
+ requirements: templateMeta.requirements ?? {},
151
+ };
152
+ return new WorkflowTemplate(metadata, content, 'file', path);
153
+ }
154
+ }
155
+ const fallback = {
156
+ id: path.split('/').pop()?.replace(/\\.md$/, '') ?? 'template',
157
+ name: path.split('/').pop()?.replace(/\\.md$/, '') ?? 'Template',
158
+ category: TemplateCategory.GENERAL,
159
+ };
160
+ return new WorkflowTemplate(fallback, content, 'file', path);
161
+ }
162
+ }
163
+ export class TemplateRegistry {
164
+ templateDirs;
165
+ templates = new Map();
166
+ constructor(templateDirs = [], loadBuiltins = true) {
167
+ this.templateDirs = templateDirs;
168
+ if (loadBuiltins) {
169
+ for (const template of BUILTIN_TEMPLATES) {
170
+ this.templates.set(template.id, template);
171
+ }
172
+ }
173
+ }
174
+ register(template) {
175
+ this.templates.set(template.id, template);
176
+ }
177
+ unregister(id) {
178
+ return this.templates.delete(id);
179
+ }
180
+ get(id) {
181
+ return this.templates.get(id);
182
+ }
183
+ list(category, tags) {
184
+ let items = Array.from(this.templates.values());
185
+ if (category) {
186
+ items = items.filter((t) => t.category === category);
187
+ }
188
+ if (tags && tags.length > 0) {
189
+ items = items.filter((t) => (t.metadata.tags ?? []).some((tag) => tags.includes(tag)));
190
+ }
191
+ return items.sort((a, b) => a.name.localeCompare(b.name));
192
+ }
193
+ search(query) {
194
+ const q = query.toLowerCase();
195
+ return Array.from(this.templates.values()).filter((t) => {
196
+ if (t.name.toLowerCase().includes(q))
197
+ return true;
198
+ if ((t.metadata.description ?? '').toLowerCase().includes(q))
199
+ return true;
200
+ return (t.metadata.tags ?? []).some((tag) => tag.toLowerCase().includes(q));
201
+ });
202
+ }
203
+ discover() {
204
+ const discovered = [];
205
+ for (const dir of this.templateDirs) {
206
+ if (!existsSync(dir))
207
+ continue;
208
+ const fs = require('node:fs');
209
+ const entries = fs.readdirSync(dir);
210
+ for (const entry of entries) {
211
+ if (!entry.endsWith('.md'))
212
+ continue;
213
+ const path = `${dir}/${entry}`;
214
+ try {
215
+ const tmpl = WorkflowTemplate.fromFile(path);
216
+ if (!this.templates.has(tmpl.id)) {
217
+ this.templates.set(tmpl.id, tmpl);
218
+ discovered.push(tmpl.id);
219
+ }
220
+ }
221
+ catch {
222
+ // ignore invalid templates
223
+ }
224
+ }
225
+ }
226
+ return discovered;
227
+ }
228
+ }
229
+ export const HELLO_TEMPLATE = new WorkflowTemplate({
230
+ id: 'hello-world',
231
+ name: 'Hello World',
232
+ description: 'A minimal example workflow template',
233
+ category: TemplateCategory.GENERAL,
234
+ version: '1.0.0',
235
+ author: 'marktoflow',
236
+ tags: ['example', 'starter'],
237
+ variables: [
238
+ {
239
+ name: 'message',
240
+ description: 'Message to print',
241
+ type: 'string',
242
+ required: true,
243
+ default: 'Hello from marktoflow!',
244
+ },
245
+ ],
246
+ }, `---\nworkflow:\n id: hello-world\n name: \"Hello World\"\n version: \"1.0.0\"\n description: \"A simple example workflow\"\n\nsteps:\n - id: greet\n action: core.log\n inputs:\n message: \"{{ template.message }}\"\n---\n\n# Hello World\n\nThis is a simple example workflow.\n`);
247
+ export const BUILTIN_TEMPLATES = [HELLO_TEMPLATE];
248
+ //# sourceMappingURL=workflow-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-templates.js","sourceRoot":"","sources":["../src/workflow-templates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@marktoflow/core",
3
- "version": "2.0.2",
4
- "description": "Core engine for marktoflow - parser, executor, state management",
3
+ "version": "2.0.4",
4
+ "description": "AI workflow engine with tool calling, parallel execution, structured output, and agent routing",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -66,13 +66,38 @@
66
66
  ],
67
67
  "keywords": [
68
68
  "marktoflow",
69
+ "workflow-engine",
69
70
  "workflow",
70
- "parser",
71
71
  "automation",
72
- "mcp"
72
+ "parser",
73
+ "ai-workflow",
74
+ "ai-agents",
75
+ "tool-calling",
76
+ "agentic",
77
+ "llm",
78
+ "mcp",
79
+ "model-context-protocol",
80
+ "parallel-execution",
81
+ "control-flow",
82
+ "state-management",
83
+ "plugin-system",
84
+ "agent-routing",
85
+ "cost-tracking",
86
+ "typescript",
87
+ "markdown",
88
+ "yaml",
89
+ "structured-output",
90
+ "self-hosted",
91
+ "private",
92
+ "secure",
93
+ "air-gapped",
94
+ "local-first",
95
+ "no-telemetry",
96
+ "data-privacy",
97
+ "on-premise"
73
98
  ],
74
99
  "author": "Scott Glover",
75
- "license": "Apache-2.0",
100
+ "license": "AGPL-3.0-only",
76
101
  "publishConfig": {
77
102
  "registry": "https://registry.npmjs.org/"
78
103
  }
@@ -1,12 +0,0 @@
1
- /**
2
- * External Secrets Management
3
- *
4
- * Provides integration with external secret managers.
5
- */
6
- export { SecretManager, SecretNotFoundError, SecretProviderError } from './secret-manager.js';
7
- export { VaultProvider } from './providers/vault.js';
8
- export { AWSSecretsManagerProvider } from './providers/aws.js';
9
- export { AzureKeyVaultProvider } from './providers/azure.js';
10
- export { EnvProvider } from './providers/env.js';
11
- export type { Secret, SecretMetadata, SecretProvider, SecretProviderConfig, SecretManagerOptions, SecretReference, CachedSecret, VaultConfig, AWSSecretsManagerConfig, AzureKeyVaultConfig, GCPSecretManagerConfig, } from './types.js';
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,YAAY,EACV,MAAM,EACN,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * External Secrets Management
3
- *
4
- * Provides integration with external secret managers.
5
- */
6
- export { SecretManager, SecretNotFoundError, SecretProviderError } from './secret-manager.js';
7
- export { VaultProvider } from './providers/vault.js';
8
- export { AWSSecretsManagerProvider } from './providers/aws.js';
9
- export { AzureKeyVaultProvider } from './providers/azure.js';
10
- export { EnvProvider } from './providers/env.js';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,32 +0,0 @@
1
- /**
2
- * AWS Secrets Manager Provider
3
- *
4
- * Supports IAM authentication and explicit credentials.
5
- */
6
- import type { SecretProvider, Secret, AWSSecretsManagerConfig } from '../types.js';
7
- export declare class AWSSecretsManagerProvider implements SecretProvider {
8
- private config;
9
- private initialized;
10
- constructor(config: AWSSecretsManagerConfig);
11
- initialize(): Promise<void>;
12
- /**
13
- * Get a secret from AWS Secrets Manager
14
- */
15
- getSecret(secretName: string): Promise<Secret>;
16
- /**
17
- * Check if a secret exists
18
- */
19
- exists(secretName: string): Promise<boolean>;
20
- /**
21
- * List secrets (returns secret ARNs)
22
- */
23
- listSecrets(): Promise<string[]>;
24
- /**
25
- * Call AWS Secrets Manager API
26
- *
27
- * This is a simplified implementation. In production, use @aws-sdk/client-secrets-manager
28
- */
29
- private callAWSAPI;
30
- destroy(): Promise<void>;
31
- }
32
- //# sourceMappingURL=aws.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../../src/secrets/providers/aws.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,yBAA0B,YAAW,cAAc;IAC9D,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,uBAAuB;IAUrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCpD;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IActC;;;;OAIG;YACW,UAAU;IAelB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}