@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
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Loader for marktoflow v2.0
|
|
3
|
+
*
|
|
4
|
+
* Loads external prompt files with optional YAML frontmatter for variable definitions.
|
|
5
|
+
* Supports template variable resolution using {{ prompt.variable }} syntax.
|
|
6
|
+
*/
|
|
7
|
+
import { readFile } from 'node:fs/promises';
|
|
8
|
+
import { resolve, dirname } from 'node:path';
|
|
9
|
+
import { parse as parseYaml } from 'yaml';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Prompt Loading
|
|
12
|
+
// ============================================================================
|
|
13
|
+
const FRONTMATTER_REGEX = /^---\n([\s\S]*?)\n---\n?/;
|
|
14
|
+
/**
|
|
15
|
+
* Load a prompt file with optional YAML frontmatter.
|
|
16
|
+
*/
|
|
17
|
+
export async function loadPromptFile(promptPath, basePath) {
|
|
18
|
+
// Resolve path relative to base path if provided
|
|
19
|
+
const resolvedPath = basePath ? resolve(dirname(basePath), promptPath) : resolve(promptPath);
|
|
20
|
+
let content;
|
|
21
|
+
try {
|
|
22
|
+
content = await readFile(resolvedPath, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
throw new Error(`Failed to load prompt file: ${resolvedPath}. ${error}`);
|
|
26
|
+
}
|
|
27
|
+
// Parse frontmatter if present
|
|
28
|
+
const frontmatterMatch = content.match(FRONTMATTER_REGEX);
|
|
29
|
+
let frontmatter = {};
|
|
30
|
+
let promptContent = content;
|
|
31
|
+
if (frontmatterMatch) {
|
|
32
|
+
try {
|
|
33
|
+
frontmatter = parseYaml(frontmatterMatch[1]);
|
|
34
|
+
promptContent = content.slice(frontmatterMatch[0].length).trim();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Invalid YAML frontmatter in prompt file: ${resolvedPath}. ${error}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Extract variables
|
|
41
|
+
const variables = {};
|
|
42
|
+
const variablesRaw = frontmatter.variables;
|
|
43
|
+
if (variablesRaw) {
|
|
44
|
+
for (const [name, config] of Object.entries(variablesRaw)) {
|
|
45
|
+
if (typeof config === 'object' && config !== null) {
|
|
46
|
+
const varConfig = config;
|
|
47
|
+
variables[name] = {
|
|
48
|
+
type: varConfig.type || 'string',
|
|
49
|
+
required: varConfig.required,
|
|
50
|
+
default: varConfig.default,
|
|
51
|
+
description: varConfig.description,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Simple type definition
|
|
56
|
+
variables[name] = {
|
|
57
|
+
type: config || 'string',
|
|
58
|
+
required: undefined,
|
|
59
|
+
default: undefined,
|
|
60
|
+
description: undefined,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
name: frontmatter.name,
|
|
67
|
+
description: frontmatter.description,
|
|
68
|
+
variables,
|
|
69
|
+
content: promptContent,
|
|
70
|
+
rawContent: content,
|
|
71
|
+
filePath: resolvedPath,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Template Resolution
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Resolve {{ prompt.variable }} templates in a prompt.
|
|
79
|
+
*/
|
|
80
|
+
export function resolvePromptTemplate(prompt, inputs, context) {
|
|
81
|
+
// Build resolved variables with defaults
|
|
82
|
+
const resolvedVars = {};
|
|
83
|
+
// Apply defaults first
|
|
84
|
+
for (const [name, config] of Object.entries(prompt.variables)) {
|
|
85
|
+
if (config.default !== undefined) {
|
|
86
|
+
resolvedVars[name] = config.default;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Override with provided inputs
|
|
90
|
+
for (const [name, value] of Object.entries(inputs)) {
|
|
91
|
+
resolvedVars[name] = value;
|
|
92
|
+
}
|
|
93
|
+
// Resolve templates in prompt content
|
|
94
|
+
let content = prompt.content;
|
|
95
|
+
// Replace {{ prompt.variable }} patterns
|
|
96
|
+
content = content.replace(/\{\{\s*prompt\.([^}]+)\s*\}\}/g, (_, varPath) => {
|
|
97
|
+
const trimmedPath = varPath.trim();
|
|
98
|
+
const value = getNestedValue(resolvedVars, trimmedPath);
|
|
99
|
+
return serializeValue(value);
|
|
100
|
+
});
|
|
101
|
+
// Also resolve {{ variable }} patterns (for backward compatibility)
|
|
102
|
+
content = content.replace(/\{\{\s*([^}]+)\s*\}\}/g, (match, varPath) => {
|
|
103
|
+
const trimmedPath = varPath.trim();
|
|
104
|
+
// Skip if it doesn't look like a variable reference
|
|
105
|
+
if (trimmedPath.includes('.') && !trimmedPath.startsWith('prompt.')) {
|
|
106
|
+
// Try to resolve from context if available
|
|
107
|
+
if (context) {
|
|
108
|
+
const value = resolveFromContext(trimmedPath, context);
|
|
109
|
+
if (value !== undefined) {
|
|
110
|
+
return serializeValue(value);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Try to resolve from prompt inputs
|
|
115
|
+
const value = getNestedValue(resolvedVars, trimmedPath);
|
|
116
|
+
if (value !== undefined) {
|
|
117
|
+
return serializeValue(value);
|
|
118
|
+
}
|
|
119
|
+
// Leave unresolved templates as-is (they may be resolved later)
|
|
120
|
+
return match;
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
content,
|
|
124
|
+
variables: resolvedVars,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Resolve a variable path from execution context.
|
|
129
|
+
*/
|
|
130
|
+
function resolveFromContext(path, context) {
|
|
131
|
+
// Handle inputs.* prefix
|
|
132
|
+
if (path.startsWith('inputs.')) {
|
|
133
|
+
const inputPath = path.slice(7);
|
|
134
|
+
return getNestedValue(context.inputs, inputPath);
|
|
135
|
+
}
|
|
136
|
+
// Check variables
|
|
137
|
+
const fromVars = getNestedValue(context.variables, path);
|
|
138
|
+
if (fromVars !== undefined) {
|
|
139
|
+
return fromVars;
|
|
140
|
+
}
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
// ============================================================================
|
|
144
|
+
// Validation
|
|
145
|
+
// ============================================================================
|
|
146
|
+
/**
|
|
147
|
+
* Validate that all required prompt inputs are provided.
|
|
148
|
+
*/
|
|
149
|
+
export function validatePromptInputs(prompt, inputs) {
|
|
150
|
+
const errors = [];
|
|
151
|
+
const warnings = [];
|
|
152
|
+
for (const [name, config] of Object.entries(prompt.variables)) {
|
|
153
|
+
const value = inputs[name];
|
|
154
|
+
const hasValue = value !== undefined && value !== null;
|
|
155
|
+
// Check required
|
|
156
|
+
if (config.required && !hasValue && config.default === undefined) {
|
|
157
|
+
errors.push(`Missing required prompt variable: ${name}`);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// Type validation (if value is provided)
|
|
161
|
+
if (hasValue) {
|
|
162
|
+
const typeError = validateType(value, config.type, name);
|
|
163
|
+
if (typeError) {
|
|
164
|
+
errors.push(typeError);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Warn about unused inputs
|
|
169
|
+
for (const name of Object.keys(inputs)) {
|
|
170
|
+
if (!prompt.variables[name]) {
|
|
171
|
+
warnings.push(`Unused prompt input: ${name}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
valid: errors.length === 0,
|
|
176
|
+
errors,
|
|
177
|
+
warnings,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Validate a value against an expected type.
|
|
182
|
+
*/
|
|
183
|
+
function validateType(value, type, name) {
|
|
184
|
+
switch (type) {
|
|
185
|
+
case 'string':
|
|
186
|
+
if (typeof value !== 'string') {
|
|
187
|
+
return `Expected string for ${name}, got ${typeof value}`;
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
case 'number':
|
|
191
|
+
if (typeof value !== 'number') {
|
|
192
|
+
return `Expected number for ${name}, got ${typeof value}`;
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
case 'boolean':
|
|
196
|
+
if (typeof value !== 'boolean') {
|
|
197
|
+
return `Expected boolean for ${name}, got ${typeof value}`;
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
case 'array':
|
|
201
|
+
if (!Array.isArray(value)) {
|
|
202
|
+
return `Expected array for ${name}, got ${typeof value}`;
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
case 'object':
|
|
206
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
207
|
+
return `Expected object for ${name}, got ${Array.isArray(value) ? 'array' : typeof value}`;
|
|
208
|
+
}
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// Helpers
|
|
215
|
+
// ============================================================================
|
|
216
|
+
/**
|
|
217
|
+
* Get a nested value from an object using dot notation.
|
|
218
|
+
*/
|
|
219
|
+
function getNestedValue(obj, path) {
|
|
220
|
+
if (obj === null || obj === undefined) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
const parts = path.split('.');
|
|
224
|
+
let current = obj;
|
|
225
|
+
for (const part of parts) {
|
|
226
|
+
if (current === null || current === undefined) {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
if (typeof current === 'object') {
|
|
230
|
+
current = current[part];
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return current;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Serialize a value for template interpolation.
|
|
240
|
+
*/
|
|
241
|
+
function serializeValue(value) {
|
|
242
|
+
if (value === undefined || value === null) {
|
|
243
|
+
return '';
|
|
244
|
+
}
|
|
245
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
246
|
+
return String(value);
|
|
247
|
+
}
|
|
248
|
+
try {
|
|
249
|
+
return JSON.stringify(value, null, 2);
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return String(value);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Extract all variable references from a prompt template.
|
|
257
|
+
*/
|
|
258
|
+
export function extractPromptVariables(content) {
|
|
259
|
+
const variables = new Set();
|
|
260
|
+
// Extract {{ prompt.variable }} patterns
|
|
261
|
+
const promptVarRegex = /\{\{\s*prompt\.([^}]+)\s*\}\}/g;
|
|
262
|
+
let match;
|
|
263
|
+
while ((match = promptVarRegex.exec(content)) !== null) {
|
|
264
|
+
variables.add(match[1].trim());
|
|
265
|
+
}
|
|
266
|
+
return Array.from(variables);
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=prompt-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-loader.js","sourceRoot":"","sources":["../src/prompt-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/queue.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Queue Integration for marktoflow v2.0
|
|
3
|
+
*
|
|
4
|
+
* Supports Redis and RabbitMQ for distributed workflow execution.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'node:events';
|
|
7
|
+
export declare enum MessagePriority {
|
|
8
|
+
LOW = 0,
|
|
9
|
+
NORMAL = 1,
|
|
10
|
+
HIGH = 2,
|
|
11
|
+
CRITICAL = 3
|
|
12
|
+
}
|
|
13
|
+
export declare enum MessageStatus {
|
|
14
|
+
PENDING = "pending",
|
|
15
|
+
PROCESSING = "processing",
|
|
16
|
+
COMPLETED = "completed",
|
|
17
|
+
FAILED = "failed",
|
|
18
|
+
DEAD_LETTER = "dead_letter"
|
|
19
|
+
}
|
|
20
|
+
export interface QueueMessage {
|
|
21
|
+
id: string;
|
|
22
|
+
workflowId: string;
|
|
23
|
+
payload: Record<string, unknown>;
|
|
24
|
+
priority: MessagePriority;
|
|
25
|
+
status: MessageStatus;
|
|
26
|
+
createdAt: Date;
|
|
27
|
+
processedAt?: Date;
|
|
28
|
+
attempts: number;
|
|
29
|
+
maxAttempts: number;
|
|
30
|
+
error?: string;
|
|
31
|
+
metadata: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
export interface QueueConfig {
|
|
34
|
+
name: string;
|
|
35
|
+
maxSize?: number;
|
|
36
|
+
messageTtl?: number;
|
|
37
|
+
deadLetterQueue?: string;
|
|
38
|
+
retryDelay?: number;
|
|
39
|
+
visibilityTimeout?: number;
|
|
40
|
+
}
|
|
41
|
+
export type MessageHandler = (message: QueueMessage) => Promise<void>;
|
|
42
|
+
export declare abstract class MessageQueue extends EventEmitter {
|
|
43
|
+
abstract connect(): Promise<void>;
|
|
44
|
+
abstract disconnect(): Promise<void>;
|
|
45
|
+
abstract publish(message: QueueMessage, queueName?: string): Promise<string>;
|
|
46
|
+
abstract consume(handler: MessageHandler, queueName?: string, batchSize?: number): Promise<void>;
|
|
47
|
+
abstract acknowledge(messageId: string): Promise<void>;
|
|
48
|
+
abstract reject(messageId: string, requeue?: boolean): Promise<void>;
|
|
49
|
+
abstract getQueueLength(queueName?: string): Promise<number>;
|
|
50
|
+
abstract purge(queueName?: string): Promise<number>;
|
|
51
|
+
abstract stop(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
export declare class InMemoryQueue extends MessageQueue {
|
|
54
|
+
private queues;
|
|
55
|
+
private processing;
|
|
56
|
+
private deadLetter;
|
|
57
|
+
private running;
|
|
58
|
+
private config;
|
|
59
|
+
constructor(config?: QueueConfig);
|
|
60
|
+
connect(): Promise<void>;
|
|
61
|
+
disconnect(): Promise<void>;
|
|
62
|
+
private getQueue;
|
|
63
|
+
publish(message: QueueMessage, queueName?: string): Promise<string>;
|
|
64
|
+
consume(handler: MessageHandler, queueName?: string, batchSize?: number): Promise<void>;
|
|
65
|
+
acknowledge(messageId: string): Promise<void>;
|
|
66
|
+
reject(messageId: string, requeue?: boolean): Promise<void>;
|
|
67
|
+
getQueueLength(queueName?: string): Promise<number>;
|
|
68
|
+
purge(queueName?: string): Promise<number>;
|
|
69
|
+
stop(): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
export declare class RedisQueue extends MessageQueue {
|
|
72
|
+
private client;
|
|
73
|
+
private config;
|
|
74
|
+
private running;
|
|
75
|
+
private redisUrl;
|
|
76
|
+
constructor(redisUrl: string, config?: QueueConfig);
|
|
77
|
+
connect(): Promise<void>;
|
|
78
|
+
disconnect(): Promise<void>;
|
|
79
|
+
private queueKey;
|
|
80
|
+
private processingKey;
|
|
81
|
+
publish(message: QueueMessage, queueName?: string): Promise<string>;
|
|
82
|
+
consume(handler: MessageHandler, queueName?: string, batchSize?: number): Promise<void>;
|
|
83
|
+
acknowledge(messageId: string): Promise<void>;
|
|
84
|
+
reject(messageId: string, requeue?: boolean): Promise<void>;
|
|
85
|
+
getQueueLength(queueName?: string): Promise<number>;
|
|
86
|
+
purge(queueName?: string): Promise<number>;
|
|
87
|
+
stop(): Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
export declare class RabbitMQQueue extends MessageQueue {
|
|
90
|
+
private connection;
|
|
91
|
+
private channel;
|
|
92
|
+
private config;
|
|
93
|
+
private amqpUrl;
|
|
94
|
+
private consumerTag;
|
|
95
|
+
constructor(amqpUrl: string, config?: QueueConfig);
|
|
96
|
+
connect(): Promise<void>;
|
|
97
|
+
disconnect(): Promise<void>;
|
|
98
|
+
publish(message: QueueMessage, queueName?: string): Promise<string>;
|
|
99
|
+
consume(handler: MessageHandler, queueName?: string, batchSize?: number): Promise<void>;
|
|
100
|
+
acknowledge(_messageId: string): Promise<void>;
|
|
101
|
+
reject(_messageId: string, _requeue?: boolean): Promise<void>;
|
|
102
|
+
getQueueLength(queueName?: string): Promise<number>;
|
|
103
|
+
purge(queueName?: string): Promise<number>;
|
|
104
|
+
stop(): Promise<void>;
|
|
105
|
+
}
|
|
106
|
+
export declare class WorkflowQueueManager {
|
|
107
|
+
private queue;
|
|
108
|
+
private workflowCallback?;
|
|
109
|
+
constructor(queue: MessageQueue, workflowCallback?: ((workflowId: string, inputs: Record<string, unknown>) => Promise<any>) | undefined);
|
|
110
|
+
enqueueWorkflow(workflowId: string, inputs?: Record<string, unknown>, priority?: MessagePriority, metadata?: Record<string, unknown>): Promise<string>;
|
|
111
|
+
startWorker(numWorkers?: number): Promise<void>;
|
|
112
|
+
stopWorker(): Promise<void>;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|