@exaudeus/workrail 0.0.2-beta.0

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 (147) hide show
  1. package/README.md +223 -0
  2. package/dist/application/app.d.ts +32 -0
  3. package/dist/application/app.d.ts.map +1 -0
  4. package/dist/application/app.js +133 -0
  5. package/dist/application/app.js.map +1 -0
  6. package/dist/application/services/validation-engine.d.ts +102 -0
  7. package/dist/application/services/validation-engine.d.ts.map +1 -0
  8. package/dist/application/services/validation-engine.js +293 -0
  9. package/dist/application/services/validation-engine.js.map +1 -0
  10. package/dist/application/services/workflow-service.d.ts +47 -0
  11. package/dist/application/services/workflow-service.d.ts.map +1 -0
  12. package/dist/application/services/workflow-service.js +80 -0
  13. package/dist/application/services/workflow-service.js.map +1 -0
  14. package/dist/application/use-cases/get-next-step.d.ts +22 -0
  15. package/dist/application/use-cases/get-next-step.d.ts.map +1 -0
  16. package/dist/application/use-cases/get-next-step.js +21 -0
  17. package/dist/application/use-cases/get-next-step.js.map +1 -0
  18. package/dist/application/use-cases/get-workflow.d.ts +13 -0
  19. package/dist/application/use-cases/get-workflow.d.ts.map +1 -0
  20. package/dist/application/use-cases/get-workflow.js +26 -0
  21. package/dist/application/use-cases/get-workflow.js.map +1 -0
  22. package/dist/application/use-cases/list-workflows.d.ts +13 -0
  23. package/dist/application/use-cases/list-workflows.d.ts.map +1 -0
  24. package/dist/application/use-cases/list-workflows.js +21 -0
  25. package/dist/application/use-cases/list-workflows.js.map +1 -0
  26. package/dist/application/use-cases/validate-step-output.d.ts +20 -0
  27. package/dist/application/use-cases/validate-step-output.d.ts.map +1 -0
  28. package/dist/application/use-cases/validate-step-output.js +21 -0
  29. package/dist/application/use-cases/validate-step-output.js.map +1 -0
  30. package/dist/application/validation.d.ts +6 -0
  31. package/dist/application/validation.d.ts.map +1 -0
  32. package/dist/application/validation.js +19 -0
  33. package/dist/application/validation.js.map +1 -0
  34. package/dist/cli.d.ts +3 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +106 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/container.d.ts +22 -0
  39. package/dist/container.d.ts.map +1 -0
  40. package/dist/container.js +25 -0
  41. package/dist/container.js.map +1 -0
  42. package/dist/core/error-handler.d.ts +93 -0
  43. package/dist/core/error-handler.d.ts.map +1 -0
  44. package/dist/core/error-handler.js +336 -0
  45. package/dist/core/error-handler.js.map +1 -0
  46. package/dist/domain/index.d.ts +3 -0
  47. package/dist/domain/index.d.ts.map +1 -0
  48. package/dist/domain/index.js +6 -0
  49. package/dist/domain/index.js.map +1 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +30 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/infrastructure/index.d.ts +3 -0
  55. package/dist/infrastructure/index.d.ts.map +1 -0
  56. package/dist/infrastructure/index.js +6 -0
  57. package/dist/infrastructure/index.js.map +1 -0
  58. package/dist/infrastructure/rpc/handler.d.ts +26 -0
  59. package/dist/infrastructure/rpc/handler.d.ts.map +1 -0
  60. package/dist/infrastructure/rpc/handler.js +91 -0
  61. package/dist/infrastructure/rpc/handler.js.map +1 -0
  62. package/dist/infrastructure/rpc/index.d.ts +2 -0
  63. package/dist/infrastructure/rpc/index.d.ts.map +1 -0
  64. package/dist/infrastructure/rpc/index.js +5 -0
  65. package/dist/infrastructure/rpc/index.js.map +1 -0
  66. package/dist/infrastructure/rpc/server.d.ts +4 -0
  67. package/dist/infrastructure/rpc/server.d.ts.map +1 -0
  68. package/dist/infrastructure/rpc/server.js +40 -0
  69. package/dist/infrastructure/rpc/server.js.map +1 -0
  70. package/dist/infrastructure/storage/caching-workflow-storage.d.ts +22 -0
  71. package/dist/infrastructure/storage/caching-workflow-storage.d.ts.map +1 -0
  72. package/dist/infrastructure/storage/caching-workflow-storage.js +61 -0
  73. package/dist/infrastructure/storage/caching-workflow-storage.js.map +1 -0
  74. package/dist/infrastructure/storage/file-workflow-storage.d.ts +56 -0
  75. package/dist/infrastructure/storage/file-workflow-storage.d.ts.map +1 -0
  76. package/dist/infrastructure/storage/file-workflow-storage.js +206 -0
  77. package/dist/infrastructure/storage/file-workflow-storage.js.map +1 -0
  78. package/dist/infrastructure/storage/in-memory-storage.d.ts +17 -0
  79. package/dist/infrastructure/storage/in-memory-storage.d.ts.map +1 -0
  80. package/dist/infrastructure/storage/in-memory-storage.js +43 -0
  81. package/dist/infrastructure/storage/in-memory-storage.js.map +1 -0
  82. package/dist/infrastructure/storage/index.d.ts +6 -0
  83. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  84. package/dist/infrastructure/storage/index.js +9 -0
  85. package/dist/infrastructure/storage/index.js.map +1 -0
  86. package/dist/infrastructure/storage/schema-validating-workflow-storage.d.ts +23 -0
  87. package/dist/infrastructure/storage/schema-validating-workflow-storage.d.ts.map +1 -0
  88. package/dist/infrastructure/storage/schema-validating-workflow-storage.js +70 -0
  89. package/dist/infrastructure/storage/schema-validating-workflow-storage.js.map +1 -0
  90. package/dist/infrastructure/storage/storage.d.ts +16 -0
  91. package/dist/infrastructure/storage/storage.d.ts.map +1 -0
  92. package/dist/infrastructure/storage/storage.js +32 -0
  93. package/dist/infrastructure/storage/storage.js.map +1 -0
  94. package/dist/mcp-server-simple.js +391 -0
  95. package/dist/mcp-server.d.ts +3 -0
  96. package/dist/mcp-server.d.ts.map +1 -0
  97. package/dist/mcp-server.js +223 -0
  98. package/dist/mcp-server.js.map +1 -0
  99. package/dist/tools/mcp_initialize.d.ts +3 -0
  100. package/dist/tools/mcp_initialize.d.ts.map +1 -0
  101. package/dist/tools/mcp_initialize.js +52 -0
  102. package/dist/tools/mcp_initialize.js.map +1 -0
  103. package/dist/tools/mcp_shutdown.d.ts +3 -0
  104. package/dist/tools/mcp_shutdown.d.ts.map +1 -0
  105. package/dist/tools/mcp_shutdown.js +11 -0
  106. package/dist/tools/mcp_shutdown.js.map +1 -0
  107. package/dist/tools/mcp_tools_list.d.ts +3 -0
  108. package/dist/tools/mcp_tools_list.d.ts.map +1 -0
  109. package/dist/tools/mcp_tools_list.js +61 -0
  110. package/dist/tools/mcp_tools_list.js.map +1 -0
  111. package/dist/types/mcp-types.d.ts +251 -0
  112. package/dist/types/mcp-types.d.ts.map +1 -0
  113. package/dist/types/mcp-types.js +27 -0
  114. package/dist/types/mcp-types.js.map +1 -0
  115. package/dist/types/server.d.ts +5 -0
  116. package/dist/types/server.d.ts.map +1 -0
  117. package/dist/types/server.js +3 -0
  118. package/dist/types/server.js.map +1 -0
  119. package/dist/types/storage.d.ts +27 -0
  120. package/dist/types/storage.d.ts.map +1 -0
  121. package/dist/types/storage.js +6 -0
  122. package/dist/types/storage.js.map +1 -0
  123. package/dist/types/workflow-types.d.ts +251 -0
  124. package/dist/types/workflow-types.d.ts.map +1 -0
  125. package/dist/types/workflow-types.js +5 -0
  126. package/dist/types/workflow-types.js.map +1 -0
  127. package/dist/utils/condition-evaluator.d.ts +32 -0
  128. package/dist/utils/condition-evaluator.d.ts.map +1 -0
  129. package/dist/utils/condition-evaluator.js +105 -0
  130. package/dist/utils/condition-evaluator.js.map +1 -0
  131. package/dist/utils/config.d.ts +195 -0
  132. package/dist/utils/config.d.ts.map +1 -0
  133. package/dist/utils/config.js +332 -0
  134. package/dist/utils/config.js.map +1 -0
  135. package/dist/validation/request-validator.d.ts +9 -0
  136. package/dist/validation/request-validator.d.ts.map +1 -0
  137. package/dist/validation/request-validator.js +32 -0
  138. package/dist/validation/request-validator.js.map +1 -0
  139. package/dist/validation/response-validator.d.ts +9 -0
  140. package/dist/validation/response-validator.d.ts.map +1 -0
  141. package/dist/validation/response-validator.js +83 -0
  142. package/dist/validation/response-validator.js.map +1 -0
  143. package/dist/validation/schemas.d.ts +6 -0
  144. package/dist/validation/schemas.d.ts.map +1 -0
  145. package/dist/validation/schemas.js +52 -0
  146. package/dist/validation/schemas.js.map +1 -0
  147. package/package.json +48 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // MCP Protocol Type Definitions
3
+ // Model Context Protocol (MCP) specification types
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.MCPErrorCodes = void 0;
6
+ // =============================================================================
7
+ // MCP ERROR CODES
8
+ // =============================================================================
9
+ var MCPErrorCodes;
10
+ (function (MCPErrorCodes) {
11
+ // Standard JSON-RPC 2.0 error codes
12
+ MCPErrorCodes[MCPErrorCodes["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
13
+ MCPErrorCodes[MCPErrorCodes["INVALID_REQUEST"] = -32600] = "INVALID_REQUEST";
14
+ MCPErrorCodes[MCPErrorCodes["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
15
+ MCPErrorCodes[MCPErrorCodes["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
16
+ MCPErrorCodes[MCPErrorCodes["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
17
+ // MCP-specific error codes (-32000 to -32099)
18
+ MCPErrorCodes[MCPErrorCodes["SERVER_ERROR"] = -32000] = "SERVER_ERROR";
19
+ MCPErrorCodes[MCPErrorCodes["WORKFLOW_NOT_FOUND"] = -32001] = "WORKFLOW_NOT_FOUND";
20
+ MCPErrorCodes[MCPErrorCodes["INVALID_WORKFLOW"] = -32002] = "INVALID_WORKFLOW";
21
+ MCPErrorCodes[MCPErrorCodes["STEP_NOT_FOUND"] = -32003] = "STEP_NOT_FOUND";
22
+ MCPErrorCodes[MCPErrorCodes["VALIDATION_ERROR"] = -32004] = "VALIDATION_ERROR";
23
+ MCPErrorCodes[MCPErrorCodes["STATE_ERROR"] = -32005] = "STATE_ERROR";
24
+ MCPErrorCodes[MCPErrorCodes["STORAGE_ERROR"] = -32006] = "STORAGE_ERROR";
25
+ MCPErrorCodes[MCPErrorCodes["SECURITY_ERROR"] = -32007] = "SECURITY_ERROR";
26
+ })(MCPErrorCodes || (exports.MCPErrorCodes = MCPErrorCodes = {}));
27
+ //# sourceMappingURL=mcp-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-types.js","sourceRoot":"","sources":["../../src/types/mcp-types.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,mDAAmD;;;AAyGnD,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,IAAY,aAiBX;AAjBD,WAAY,aAAa;IACvB,oCAAoC;IACpC,oEAAoB,CAAA;IACpB,4EAAwB,CAAA;IACxB,8EAAyB,CAAA;IACzB,0EAAuB,CAAA;IACvB,0EAAuB,CAAA;IAEvB,8CAA8C;IAC9C,sEAAqB,CAAA;IACrB,kFAA2B,CAAA;IAC3B,8EAAyB,CAAA;IACzB,0EAAuB,CAAA;IACvB,8EAAyB,CAAA;IACzB,oEAAoB,CAAA;IACpB,wEAAsB,CAAA;IACtB,0EAAuB,CAAA;AACzB,CAAC,EAjBW,aAAa,6BAAb,aAAa,QAiBxB"}
@@ -0,0 +1,5 @@
1
+ export interface WorkflowLookupServer {
2
+ start(): Promise<void>;
3
+ stop(): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/types/server.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/types/server.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { Workflow, WorkflowSummary } from './mcp-types';
2
+ /**
3
+ * Generic interface for any workflow storage backend.
4
+ * The default implementation uses the local filesystem, but additional
5
+ * backends (e.g., in-memory, database, remote) can implement this contract.
6
+ */
7
+ export interface IWorkflowStorage {
8
+ /**
9
+ * Load and return all workflows available in this storage backend.
10
+ */
11
+ loadAllWorkflows(): Promise<Workflow[]>;
12
+ /**
13
+ * Retrieve a single workflow by its unique identifier.
14
+ * @param id The workflow `id` field.
15
+ */
16
+ getWorkflowById(id: string): Promise<Workflow | null>;
17
+ /**
18
+ * Return lightweight summaries for all workflows (used by `workflow_list`).
19
+ */
20
+ listWorkflowSummaries(): Promise<WorkflowSummary[]>;
21
+ /**
22
+ * (Optional) Persist or update a workflow definition.
23
+ * Not used by the current read-only MVP but included for future parity.
24
+ */
25
+ save?(workflow: Workflow): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/types/storage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAExC;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAEtD;;OAEG;IACH,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEpD;;;OAGG;IACH,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // WORKFLOW STORAGE INTERFACES
4
+ // =============================================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/types/storage.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF"}
@@ -0,0 +1,251 @@
1
+ export interface Workflow {
2
+ id: string;
3
+ name: string;
4
+ description: string;
5
+ version: string;
6
+ preconditions?: string[];
7
+ clarificationPrompts?: string[];
8
+ steps: WorkflowStep[];
9
+ metaGuidance?: string[];
10
+ }
11
+ export interface WorkflowStep {
12
+ id: string;
13
+ title: string;
14
+ prompt: string;
15
+ guidance?: string[];
16
+ askForFiles?: boolean;
17
+ requireConfirmation?: boolean;
18
+ runCondition?: object;
19
+ }
20
+ export interface WorkflowValidationResult {
21
+ valid: boolean;
22
+ errors: WorkflowValidationError[];
23
+ warnings?: WorkflowValidationWarning[];
24
+ }
25
+ export interface WorkflowValidationError {
26
+ path: string;
27
+ message: string;
28
+ code: string;
29
+ field?: string;
30
+ }
31
+ export interface WorkflowValidationWarning {
32
+ path: string;
33
+ message: string;
34
+ code: string;
35
+ field?: string;
36
+ }
37
+ export interface WorkflowValidationRule {
38
+ type: 'required' | 'pattern' | 'length' | 'custom' | 'schema';
39
+ field: string;
40
+ message: string;
41
+ validator?: (value: any, context?: any) => boolean;
42
+ schema?: Record<string, any>;
43
+ }
44
+ export interface WorkflowExecution {
45
+ id: string;
46
+ workflowId: string;
47
+ status: WorkflowExecutionStatus;
48
+ state: WorkflowExecutionState;
49
+ startedAt: Date;
50
+ updatedAt: Date;
51
+ completedAt?: Date;
52
+ error?: WorkflowExecutionError;
53
+ }
54
+ export type WorkflowExecutionStatus = 'initialized' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
55
+ export interface WorkflowExecutionState {
56
+ currentStep?: string;
57
+ completedSteps: string[];
58
+ context: Record<string, any>;
59
+ stepResults: Record<string, WorkflowStepResult>;
60
+ metadata: WorkflowExecutionMetadata;
61
+ }
62
+ export interface WorkflowStepResult {
63
+ stepId: string;
64
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
65
+ startedAt?: Date;
66
+ completedAt?: Date;
67
+ output?: string;
68
+ error?: string;
69
+ validationResult?: WorkflowValidationResult;
70
+ }
71
+ export interface WorkflowExecutionMetadata {
72
+ totalSteps: number;
73
+ completedSteps: number;
74
+ progress: number;
75
+ estimatedTimeRemaining?: number;
76
+ lastActivity: Date;
77
+ }
78
+ export interface WorkflowExecutionError {
79
+ code: string;
80
+ message: string;
81
+ stepId?: string;
82
+ details?: Record<string, any>;
83
+ }
84
+ export interface WorkflowGuidance {
85
+ prompt: string;
86
+ modelHint?: string;
87
+ requiresConfirmation?: boolean;
88
+ validationCriteria?: string[];
89
+ context?: Record<string, any>;
90
+ suggestions?: string[];
91
+ }
92
+ export interface WorkflowStepGuidance {
93
+ step: WorkflowStep;
94
+ guidance: WorkflowGuidance;
95
+ isComplete: boolean;
96
+ nextStep?: string;
97
+ progress: number;
98
+ }
99
+ export interface WorkflowStorage {
100
+ type: 'file' | 'database' | 'memory';
101
+ path?: string;
102
+ connectionString?: string;
103
+ }
104
+ export interface WorkflowMetadata {
105
+ id: string;
106
+ name: string;
107
+ description: string;
108
+ category: string;
109
+ version: string;
110
+ author?: string;
111
+ tags?: string[];
112
+ createdAt: Date;
113
+ updatedAt: Date;
114
+ usageCount: number;
115
+ rating?: number;
116
+ complexity: 'simple' | 'medium' | 'complex';
117
+ estimatedDuration: number;
118
+ }
119
+ export interface WorkflowSearchCriteria {
120
+ category?: string;
121
+ tags?: string[];
122
+ complexity?: 'simple' | 'medium' | 'complex';
123
+ maxDuration?: number;
124
+ author?: string;
125
+ rating?: number;
126
+ searchTerm?: string;
127
+ }
128
+ export type WorkflowCategory = 'development' | 'review' | 'documentation' | 'testing' | 'deployment' | 'maintenance' | 'debugging' | 'optimization' | 'security' | 'migration' | 'custom';
129
+ export interface WorkflowTag {
130
+ name: string;
131
+ description: string;
132
+ color?: string;
133
+ }
134
+ export interface WorkflowVersion {
135
+ version: string;
136
+ changelog: string;
137
+ breakingChanges: boolean;
138
+ deprecated: boolean;
139
+ minServerVersion?: string;
140
+ maxServerVersion?: string;
141
+ }
142
+ export interface WorkflowVersionInfo {
143
+ currentVersion: string;
144
+ availableVersions: WorkflowVersion[];
145
+ updateAvailable: boolean;
146
+ latestVersion?: string;
147
+ }
148
+ export interface WorkflowTemplate {
149
+ id: string;
150
+ name: string;
151
+ description: string;
152
+ category: WorkflowCategory;
153
+ template: Workflow;
154
+ variables: WorkflowTemplateVariable[];
155
+ examples: WorkflowTemplateExample[];
156
+ }
157
+ export interface WorkflowTemplateVariable {
158
+ name: string;
159
+ description: string;
160
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
161
+ required: boolean;
162
+ defaultValue?: any;
163
+ validation?: Record<string, any>;
164
+ }
165
+ export interface WorkflowTemplateExample {
166
+ name: string;
167
+ description: string;
168
+ variables: Record<string, any>;
169
+ result: Workflow;
170
+ }
171
+ export interface WorkflowAnalytics {
172
+ workflowId: string;
173
+ totalExecutions: number;
174
+ successfulExecutions: number;
175
+ failedExecutions: number;
176
+ averageExecutionTime: number;
177
+ averageStepsCompleted: number;
178
+ popularSteps: string[];
179
+ commonErrors: string[];
180
+ userSatisfaction: number;
181
+ lastExecuted: Date;
182
+ }
183
+ export interface WorkflowExecutionAnalytics {
184
+ executionId: string;
185
+ workflowId: string;
186
+ duration: number;
187
+ stepsCompleted: number;
188
+ totalSteps: number;
189
+ success: boolean;
190
+ error?: string;
191
+ userFeedback?: number;
192
+ performanceMetrics: WorkflowPerformanceMetrics;
193
+ }
194
+ export interface WorkflowPerformanceMetrics {
195
+ stepExecutionTimes: Record<string, number>;
196
+ memoryUsage: number;
197
+ cpuUsage: number;
198
+ networkRequests: number;
199
+ cacheHits: number;
200
+ cacheMisses: number;
201
+ }
202
+ export interface WorkflowPlugin {
203
+ id: string;
204
+ name: string;
205
+ version: string;
206
+ description: string;
207
+ author: string;
208
+ hooks: WorkflowPluginHook[];
209
+ commands: WorkflowPluginCommand[];
210
+ dependencies?: string[];
211
+ }
212
+ export interface WorkflowPluginHook {
213
+ name: string;
214
+ event: 'beforeStep' | 'afterStep' | 'beforeWorkflow' | 'afterWorkflow' | 'onError';
215
+ handler: (context: WorkflowPluginContext) => Promise<void>;
216
+ }
217
+ export interface WorkflowPluginCommand {
218
+ name: string;
219
+ description: string;
220
+ parameters: Record<string, any>;
221
+ handler: (params: Record<string, any>) => Promise<any>;
222
+ }
223
+ export interface WorkflowPluginContext {
224
+ workflowId: string;
225
+ executionId: string;
226
+ stepId?: string;
227
+ data: Record<string, any>;
228
+ state: WorkflowExecutionState;
229
+ }
230
+ export type WorkflowStepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'cancelled';
231
+ export type WorkflowComplexity = 'simple' | 'medium' | 'complex';
232
+ export interface WorkflowSummary {
233
+ id: string;
234
+ name: string;
235
+ description: string;
236
+ category: WorkflowCategory;
237
+ version: string;
238
+ complexity: WorkflowComplexity;
239
+ estimatedDuration: number;
240
+ tags: string[];
241
+ rating?: number;
242
+ usageCount: number;
243
+ }
244
+ export interface WorkflowSearchResult {
245
+ workflows: WorkflowSummary[];
246
+ total: number;
247
+ page: number;
248
+ pageSize: number;
249
+ filters: WorkflowSearchCriteria;
250
+ }
251
+ //# sourceMappingURL=workflow-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../../src/types/workflow-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Workflow Schema Type Definitions
3
+ // Based on JSON Schema Draft 7 specification
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=workflow-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-types.js","sourceRoot":"","sources":["../../src/types/workflow-types.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,6CAA6C"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Safe condition evaluator for workflow step runCondition expressions.
3
+ * Supports a limited set of operators to prevent code injection.
4
+ */
5
+ export interface ConditionContext {
6
+ [key: string]: any;
7
+ }
8
+ export interface Condition {
9
+ var?: string;
10
+ equals?: any;
11
+ not_equals?: any;
12
+ gt?: number;
13
+ gte?: number;
14
+ lt?: number;
15
+ lte?: number;
16
+ and?: Condition[];
17
+ or?: Condition[];
18
+ not?: Condition;
19
+ }
20
+ /**
21
+ * Evaluates a condition expression against a context.
22
+ * Returns true if the condition passes, false otherwise.
23
+ * If condition is null/undefined, returns true (step is eligible).
24
+ * If evaluation fails, returns false (step is skipped for safety).
25
+ */
26
+ export declare function evaluateCondition(condition: Condition | null | undefined, context?: ConditionContext): boolean;
27
+ /**
28
+ * Validates that a condition uses only supported operators.
29
+ * Throws an error if unsupported operators are found.
30
+ */
31
+ export declare function validateCondition(condition: any): void;
32
+ //# sourceMappingURL=condition-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-evaluator.d.ts","sourceRoot":"","sources":["../../src/utils/condition-evaluator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACvC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAkBT;AAsDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CA0BtD"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * Safe condition evaluator for workflow step runCondition expressions.
4
+ * Supports a limited set of operators to prevent code injection.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.evaluateCondition = evaluateCondition;
8
+ exports.validateCondition = validateCondition;
9
+ /**
10
+ * Evaluates a condition expression against a context.
11
+ * Returns true if the condition passes, false otherwise.
12
+ * If condition is null/undefined, returns true (step is eligible).
13
+ * If evaluation fails, returns false (step is skipped for safety).
14
+ */
15
+ function evaluateCondition(condition, context = {}) {
16
+ // No condition means step is always eligible
17
+ if (!condition || typeof condition !== 'object') {
18
+ return true;
19
+ }
20
+ // Empty object means no condition, so step is eligible
21
+ if (Object.keys(condition).length === 0) {
22
+ return true;
23
+ }
24
+ try {
25
+ return evaluateConditionUnsafe(condition, context);
26
+ }
27
+ catch (error) {
28
+ // Log error in production, but return false for safety
29
+ console.warn('Condition evaluation failed:', error);
30
+ return false;
31
+ }
32
+ }
33
+ function evaluateConditionUnsafe(condition, context) {
34
+ // Variable reference
35
+ if (condition.var !== undefined) {
36
+ const value = context[condition.var];
37
+ // Comparison operators
38
+ if (condition.equals !== undefined) {
39
+ return value === condition.equals;
40
+ }
41
+ if (condition.not_equals !== undefined) {
42
+ return value !== condition.not_equals;
43
+ }
44
+ if (condition.gt !== undefined) {
45
+ return typeof value === 'number' && value > condition.gt;
46
+ }
47
+ if (condition.gte !== undefined) {
48
+ return typeof value === 'number' && value >= condition.gte;
49
+ }
50
+ if (condition.lt !== undefined) {
51
+ return typeof value === 'number' && value < condition.lt;
52
+ }
53
+ if (condition.lte !== undefined) {
54
+ return typeof value === 'number' && value <= condition.lte;
55
+ }
56
+ // If only var is specified, check for truthiness
57
+ return !!value;
58
+ }
59
+ // Logical operators
60
+ if (condition.and !== undefined) {
61
+ if (!Array.isArray(condition.and)) {
62
+ throw new Error('and operator requires an array');
63
+ }
64
+ return condition.and.every(subCondition => evaluateConditionUnsafe(subCondition, context));
65
+ }
66
+ if (condition.or !== undefined) {
67
+ if (!Array.isArray(condition.or)) {
68
+ throw new Error('or operator requires an array');
69
+ }
70
+ return condition.or.some(subCondition => evaluateConditionUnsafe(subCondition, context));
71
+ }
72
+ if (condition.not !== undefined) {
73
+ return !evaluateConditionUnsafe(condition.not, context);
74
+ }
75
+ // Unknown condition format
76
+ throw new Error('Invalid condition format');
77
+ }
78
+ /**
79
+ * Validates that a condition uses only supported operators.
80
+ * Throws an error if unsupported operators are found.
81
+ */
82
+ function validateCondition(condition) {
83
+ if (!condition || typeof condition !== 'object') {
84
+ return;
85
+ }
86
+ const supportedKeys = [
87
+ 'var', 'equals', 'not_equals', 'gt', 'gte', 'lt', 'lte', 'and', 'or', 'not'
88
+ ];
89
+ const conditionKeys = Object.keys(condition);
90
+ const unsupportedKeys = conditionKeys.filter(key => !supportedKeys.includes(key));
91
+ if (unsupportedKeys.length > 0) {
92
+ throw new Error(`Unsupported condition operators: ${unsupportedKeys.join(', ')}`);
93
+ }
94
+ // Recursively validate nested conditions
95
+ if (condition.and && Array.isArray(condition.and)) {
96
+ condition.and.forEach(validateCondition);
97
+ }
98
+ if (condition.or && Array.isArray(condition.or)) {
99
+ condition.or.forEach(validateCondition);
100
+ }
101
+ if (condition.not) {
102
+ validateCondition(condition.not);
103
+ }
104
+ }
105
+ //# sourceMappingURL=condition-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-evaluator.js","sourceRoot":"","sources":["../../src/utils/condition-evaluator.ts"],"names":[],"mappings":"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"}