praisonai 1.2.2 → 1.2.3

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 (160) hide show
  1. package/dist/agent/simple.js +1 -1
  2. package/dist/cli/commands/auto.d.ts +12 -0
  3. package/dist/cli/commands/auto.js +109 -0
  4. package/dist/cli/commands/autonomy.d.ts +5 -0
  5. package/dist/cli/commands/autonomy.js +152 -0
  6. package/dist/cli/commands/cache.d.ts +9 -0
  7. package/dist/cli/commands/cache.js +143 -0
  8. package/dist/cli/commands/chat.d.ts +14 -0
  9. package/dist/cli/commands/chat.js +127 -0
  10. package/dist/cli/commands/checkpoints.d.ts +5 -0
  11. package/dist/cli/commands/checkpoints.js +236 -0
  12. package/dist/cli/commands/context.d.ts +11 -0
  13. package/dist/cli/commands/context.js +182 -0
  14. package/dist/cli/commands/cost.d.ts +5 -0
  15. package/dist/cli/commands/cost.js +146 -0
  16. package/dist/cli/commands/db.d.ts +9 -0
  17. package/dist/cli/commands/db.js +149 -0
  18. package/dist/cli/commands/eval.d.ts +17 -0
  19. package/dist/cli/commands/eval.js +247 -0
  20. package/dist/cli/commands/external-agents.d.ts +5 -0
  21. package/dist/cli/commands/external-agents.js +169 -0
  22. package/dist/cli/commands/fast-context.d.ts +5 -0
  23. package/dist/cli/commands/fast-context.js +126 -0
  24. package/dist/cli/commands/flow.d.ts +5 -0
  25. package/dist/cli/commands/flow.js +141 -0
  26. package/dist/cli/commands/git.d.ts +5 -0
  27. package/dist/cli/commands/git.js +178 -0
  28. package/dist/cli/commands/graph-rag.d.ts +9 -0
  29. package/dist/cli/commands/graph-rag.js +131 -0
  30. package/dist/cli/commands/guardrail.d.ts +11 -0
  31. package/dist/cli/commands/guardrail.js +156 -0
  32. package/dist/cli/commands/handoff.d.ts +9 -0
  33. package/dist/cli/commands/handoff.js +133 -0
  34. package/dist/cli/commands/help.d.ts +8 -0
  35. package/dist/cli/commands/help.js +167 -0
  36. package/dist/cli/commands/image.d.ts +13 -0
  37. package/dist/cli/commands/image.js +192 -0
  38. package/dist/cli/commands/interactive.d.ts +6 -0
  39. package/dist/cli/commands/interactive.js +79 -0
  40. package/dist/cli/commands/jobs.d.ts +5 -0
  41. package/dist/cli/commands/jobs.js +282 -0
  42. package/dist/cli/commands/knowledge.d.ts +9 -0
  43. package/dist/cli/commands/knowledge.js +226 -0
  44. package/dist/cli/commands/mcp.d.ts +9 -0
  45. package/dist/cli/commands/mcp.js +243 -0
  46. package/dist/cli/commands/memory.d.ts +10 -0
  47. package/dist/cli/commands/memory.js +198 -0
  48. package/dist/cli/commands/n8n.d.ts +5 -0
  49. package/dist/cli/commands/n8n.js +137 -0
  50. package/dist/cli/commands/observability.d.ts +9 -0
  51. package/dist/cli/commands/observability.js +145 -0
  52. package/dist/cli/commands/planning.d.ts +9 -0
  53. package/dist/cli/commands/planning.js +167 -0
  54. package/dist/cli/commands/prompt-expand.d.ts +11 -0
  55. package/dist/cli/commands/prompt-expand.js +100 -0
  56. package/dist/cli/commands/providers.d.ts +9 -0
  57. package/dist/cli/commands/providers.js +98 -0
  58. package/dist/cli/commands/query-rewrite.d.ts +12 -0
  59. package/dist/cli/commands/query-rewrite.js +102 -0
  60. package/dist/cli/commands/repo-map.d.ts +5 -0
  61. package/dist/cli/commands/repo-map.js +151 -0
  62. package/dist/cli/commands/reranker.d.ts +10 -0
  63. package/dist/cli/commands/reranker.js +144 -0
  64. package/dist/cli/commands/research.d.ts +12 -0
  65. package/dist/cli/commands/research.js +108 -0
  66. package/dist/cli/commands/router.d.ts +11 -0
  67. package/dist/cli/commands/router.js +142 -0
  68. package/dist/cli/commands/run.d.ts +14 -0
  69. package/dist/cli/commands/run.js +111 -0
  70. package/dist/cli/commands/sandbox.d.ts +5 -0
  71. package/dist/cli/commands/sandbox.js +135 -0
  72. package/dist/cli/commands/scheduler.d.ts +5 -0
  73. package/dist/cli/commands/scheduler.js +260 -0
  74. package/dist/cli/commands/session.d.ts +9 -0
  75. package/dist/cli/commands/session.js +238 -0
  76. package/dist/cli/commands/skills.d.ts +9 -0
  77. package/dist/cli/commands/skills.js +256 -0
  78. package/dist/cli/commands/telemetry.d.ts +9 -0
  79. package/dist/cli/commands/telemetry.js +146 -0
  80. package/dist/cli/commands/tools.d.ts +9 -0
  81. package/dist/cli/commands/tools.js +172 -0
  82. package/dist/cli/commands/vector.d.ts +10 -0
  83. package/dist/cli/commands/vector.js +171 -0
  84. package/dist/cli/commands/version.d.ts +8 -0
  85. package/dist/cli/commands/version.js +68 -0
  86. package/dist/cli/commands/voice.d.ts +10 -0
  87. package/dist/cli/commands/voice.js +162 -0
  88. package/dist/cli/commands/workflow.d.ts +13 -0
  89. package/dist/cli/commands/workflow.js +184 -0
  90. package/dist/cli/config/index.d.ts +6 -0
  91. package/dist/cli/config/index.js +22 -0
  92. package/dist/cli/config/load.d.ts +20 -0
  93. package/dist/cli/config/load.js +229 -0
  94. package/dist/cli/config/resolve.d.ts +28 -0
  95. package/dist/cli/config/resolve.js +70 -0
  96. package/dist/cli/config/schema.d.ts +15 -0
  97. package/dist/cli/config/schema.js +65 -0
  98. package/dist/cli/features/autonomy-mode.d.ts +98 -0
  99. package/dist/cli/features/autonomy-mode.js +266 -0
  100. package/dist/cli/features/background-jobs.d.ts +155 -0
  101. package/dist/cli/features/background-jobs.js +416 -0
  102. package/dist/cli/features/checkpoints.d.ts +126 -0
  103. package/dist/cli/features/checkpoints.js +288 -0
  104. package/dist/cli/features/cost-tracker.d.ts +101 -0
  105. package/dist/cli/features/cost-tracker.js +212 -0
  106. package/dist/cli/features/external-agents.d.ts +115 -0
  107. package/dist/cli/features/external-agents.js +294 -0
  108. package/dist/cli/features/fast-context.d.ts +126 -0
  109. package/dist/cli/features/fast-context.js +310 -0
  110. package/dist/cli/features/flow-display.d.ts +100 -0
  111. package/dist/cli/features/flow-display.js +254 -0
  112. package/dist/cli/features/git-integration.d.ts +138 -0
  113. package/dist/cli/features/git-integration.js +374 -0
  114. package/dist/cli/features/index.d.ts +17 -0
  115. package/dist/cli/features/index.js +102 -0
  116. package/dist/cli/features/interactive-tui.d.ts +114 -0
  117. package/dist/cli/features/interactive-tui.js +326 -0
  118. package/dist/cli/features/n8n-integration.d.ts +108 -0
  119. package/dist/cli/features/n8n-integration.js +296 -0
  120. package/dist/cli/features/repo-map.d.ts +101 -0
  121. package/dist/cli/features/repo-map.js +350 -0
  122. package/dist/cli/features/sandbox-executor.d.ts +89 -0
  123. package/dist/cli/features/sandbox-executor.js +314 -0
  124. package/dist/cli/features/scheduler.d.ts +111 -0
  125. package/dist/cli/features/scheduler.js +298 -0
  126. package/dist/cli/features/slash-commands.d.ts +77 -0
  127. package/dist/cli/features/slash-commands.js +316 -0
  128. package/dist/cli/index.d.ts +19 -15
  129. package/dist/cli/index.js +163 -123
  130. package/dist/cli/output/errors.d.ts +32 -0
  131. package/dist/cli/output/errors.js +72 -0
  132. package/dist/cli/output/index.d.ts +6 -0
  133. package/dist/cli/output/index.js +22 -0
  134. package/dist/cli/output/json.d.ts +17 -0
  135. package/dist/cli/output/json.js +54 -0
  136. package/dist/cli/output/pretty.d.ts +21 -0
  137. package/dist/cli/output/pretty.js +106 -0
  138. package/dist/cli/runtime/env.d.ts +12 -0
  139. package/dist/cli/runtime/env.js +49 -0
  140. package/dist/cli/runtime/exit.d.ts +11 -0
  141. package/dist/cli/runtime/exit.js +49 -0
  142. package/dist/cli/runtime/index.d.ts +6 -0
  143. package/dist/cli/runtime/index.js +22 -0
  144. package/dist/cli/runtime/lazy.d.ts +18 -0
  145. package/dist/cli/runtime/lazy.js +85 -0
  146. package/dist/cli/spec/cli-spec.d.ts +87 -0
  147. package/dist/cli/spec/cli-spec.js +478 -0
  148. package/dist/cli/spec/index.d.ts +4 -0
  149. package/dist/cli/spec/index.js +20 -0
  150. package/dist/index.d.ts +4 -1
  151. package/dist/index.js +100 -7
  152. package/dist/memory/auto-memory.d.ts +136 -0
  153. package/dist/memory/auto-memory.js +301 -0
  154. package/dist/memory/file-memory.d.ts +88 -0
  155. package/dist/memory/file-memory.js +287 -0
  156. package/dist/memory/index.d.ts +2 -0
  157. package/dist/memory/index.js +11 -1
  158. package/dist/workflows/loop.d.ts +0 -0
  159. package/dist/workflows/loop.js +1 -0
  160. package/package.json +1 -1
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Autonomy Modes - Control automatic execution behavior
3
+ */
4
+ export type AutonomyMode = 'suggest' | 'auto_edit' | 'full_auto';
5
+ export type ActionType = 'file_read' | 'file_write' | 'file_delete' | 'shell_command' | 'network_request' | 'git_operation' | 'install_package';
6
+ export interface ApprovalPolicy {
7
+ action: ActionType;
8
+ requiresApproval: boolean;
9
+ autoApprovePatterns?: string[];
10
+ autoDenyPatterns?: string[];
11
+ }
12
+ export interface AutonomyConfig {
13
+ mode: AutonomyMode;
14
+ policies?: ApprovalPolicy[];
15
+ rememberDecisions?: boolean;
16
+ maxAutoActions?: number;
17
+ }
18
+ export interface ActionRequest {
19
+ type: ActionType;
20
+ description: string;
21
+ target?: string;
22
+ details?: Record<string, any>;
23
+ }
24
+ export interface ActionDecision {
25
+ approved: boolean;
26
+ reason?: string;
27
+ remembered?: boolean;
28
+ }
29
+ /**
30
+ * Default policies for each mode
31
+ */
32
+ export declare const MODE_POLICIES: Record<AutonomyMode, ApprovalPolicy[]>;
33
+ /**
34
+ * Autonomy Manager class
35
+ */
36
+ export declare class AutonomyManager {
37
+ private config;
38
+ private rememberedDecisions;
39
+ private actionCount;
40
+ private promptCallback?;
41
+ constructor(config?: Partial<AutonomyConfig>);
42
+ /**
43
+ * Set the prompt callback for user approval
44
+ */
45
+ setPromptCallback(callback: (request: ActionRequest) => Promise<boolean>): void;
46
+ /**
47
+ * Request approval for an action
48
+ */
49
+ requestApproval(request: ActionRequest): Promise<ActionDecision>;
50
+ /**
51
+ * Get policy for an action type
52
+ */
53
+ private getPolicy;
54
+ /**
55
+ * Generate decision key for remembering
56
+ */
57
+ private getDecisionKey;
58
+ /**
59
+ * Match a target against a pattern
60
+ */
61
+ private matchPattern;
62
+ /**
63
+ * Get current mode
64
+ */
65
+ getMode(): AutonomyMode;
66
+ /**
67
+ * Set mode
68
+ */
69
+ setMode(mode: AutonomyMode): void;
70
+ /**
71
+ * Add custom policy
72
+ */
73
+ addPolicy(policy: ApprovalPolicy): void;
74
+ /**
75
+ * Clear remembered decisions
76
+ */
77
+ clearRemembered(): void;
78
+ /**
79
+ * Reset action count
80
+ */
81
+ resetActionCount(): void;
82
+ /**
83
+ * Get action count
84
+ */
85
+ getActionCount(): number;
86
+ /**
87
+ * Get summary of current settings
88
+ */
89
+ getSummary(): string;
90
+ }
91
+ /**
92
+ * Create an autonomy manager
93
+ */
94
+ export declare function createAutonomyManager(config?: Partial<AutonomyConfig>): AutonomyManager;
95
+ /**
96
+ * Simple approval prompt for CLI
97
+ */
98
+ export declare function cliApprovalPrompt(request: ActionRequest): Promise<boolean>;
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * Autonomy Modes - Control automatic execution behavior
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AutonomyManager = exports.MODE_POLICIES = void 0;
40
+ exports.createAutonomyManager = createAutonomyManager;
41
+ exports.cliApprovalPrompt = cliApprovalPrompt;
42
+ /**
43
+ * Default policies for each mode
44
+ */
45
+ exports.MODE_POLICIES = {
46
+ suggest: [
47
+ { action: 'file_read', requiresApproval: false },
48
+ { action: 'file_write', requiresApproval: true },
49
+ { action: 'file_delete', requiresApproval: true },
50
+ { action: 'shell_command', requiresApproval: true },
51
+ { action: 'network_request', requiresApproval: true },
52
+ { action: 'git_operation', requiresApproval: true },
53
+ { action: 'install_package', requiresApproval: true }
54
+ ],
55
+ auto_edit: [
56
+ { action: 'file_read', requiresApproval: false },
57
+ { action: 'file_write', requiresApproval: false },
58
+ { action: 'file_delete', requiresApproval: true },
59
+ { action: 'shell_command', requiresApproval: true },
60
+ { action: 'network_request', requiresApproval: false },
61
+ { action: 'git_operation', requiresApproval: true },
62
+ { action: 'install_package', requiresApproval: true }
63
+ ],
64
+ full_auto: [
65
+ { action: 'file_read', requiresApproval: false },
66
+ { action: 'file_write', requiresApproval: false },
67
+ { action: 'file_delete', requiresApproval: false },
68
+ { action: 'shell_command', requiresApproval: false },
69
+ { action: 'network_request', requiresApproval: false },
70
+ { action: 'git_operation', requiresApproval: false },
71
+ { action: 'install_package', requiresApproval: true }
72
+ ]
73
+ };
74
+ /**
75
+ * Autonomy Manager class
76
+ */
77
+ class AutonomyManager {
78
+ constructor(config = {}) {
79
+ this.rememberedDecisions = new Map();
80
+ this.actionCount = 0;
81
+ this.config = {
82
+ mode: 'suggest',
83
+ rememberDecisions: true,
84
+ maxAutoActions: 100,
85
+ ...config
86
+ };
87
+ }
88
+ /**
89
+ * Set the prompt callback for user approval
90
+ */
91
+ setPromptCallback(callback) {
92
+ this.promptCallback = callback;
93
+ }
94
+ /**
95
+ * Request approval for an action
96
+ */
97
+ async requestApproval(request) {
98
+ // Check if we've exceeded max auto actions
99
+ if (this.config.maxAutoActions && this.actionCount >= this.config.maxAutoActions) {
100
+ return {
101
+ approved: false,
102
+ reason: 'Maximum auto actions exceeded'
103
+ };
104
+ }
105
+ // Check remembered decisions
106
+ const decisionKey = this.getDecisionKey(request);
107
+ if (this.config.rememberDecisions && this.rememberedDecisions.has(decisionKey)) {
108
+ const remembered = this.rememberedDecisions.get(decisionKey);
109
+ if (remembered)
110
+ this.actionCount++;
111
+ return {
112
+ approved: remembered,
113
+ reason: 'Remembered decision',
114
+ remembered: true
115
+ };
116
+ }
117
+ // Get policy for this action type
118
+ const policy = this.getPolicy(request.type);
119
+ // Check auto-approve patterns
120
+ if (policy.autoApprovePatterns && request.target) {
121
+ for (const pattern of policy.autoApprovePatterns) {
122
+ if (this.matchPattern(request.target, pattern)) {
123
+ this.actionCount++;
124
+ return { approved: true, reason: `Matched auto-approve pattern: ${pattern}` };
125
+ }
126
+ }
127
+ }
128
+ // Check auto-deny patterns
129
+ if (policy.autoDenyPatterns && request.target) {
130
+ for (const pattern of policy.autoDenyPatterns) {
131
+ if (this.matchPattern(request.target, pattern)) {
132
+ return { approved: false, reason: `Matched auto-deny pattern: ${pattern}` };
133
+ }
134
+ }
135
+ }
136
+ // If no approval required, auto-approve
137
+ if (!policy.requiresApproval) {
138
+ this.actionCount++;
139
+ return { approved: true, reason: 'No approval required' };
140
+ }
141
+ // Prompt user for approval
142
+ if (this.promptCallback) {
143
+ const approved = await this.promptCallback(request);
144
+ // Remember decision if enabled
145
+ if (this.config.rememberDecisions) {
146
+ this.rememberedDecisions.set(decisionKey, approved);
147
+ }
148
+ if (approved)
149
+ this.actionCount++;
150
+ return { approved, reason: 'User decision' };
151
+ }
152
+ // No prompt callback, deny by default
153
+ return { approved: false, reason: 'No approval mechanism available' };
154
+ }
155
+ /**
156
+ * Get policy for an action type
157
+ */
158
+ getPolicy(actionType) {
159
+ // Check custom policies first
160
+ if (this.config.policies) {
161
+ const custom = this.config.policies.find(p => p.action === actionType);
162
+ if (custom)
163
+ return custom;
164
+ }
165
+ // Fall back to mode defaults
166
+ const modePolicy = exports.MODE_POLICIES[this.config.mode].find(p => p.action === actionType);
167
+ return modePolicy || { action: actionType, requiresApproval: true };
168
+ }
169
+ /**
170
+ * Generate decision key for remembering
171
+ */
172
+ getDecisionKey(request) {
173
+ return `${request.type}:${request.target || 'default'}`;
174
+ }
175
+ /**
176
+ * Match a target against a pattern
177
+ */
178
+ matchPattern(target, pattern) {
179
+ // Simple glob-like matching
180
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
181
+ return regex.test(target);
182
+ }
183
+ /**
184
+ * Get current mode
185
+ */
186
+ getMode() {
187
+ return this.config.mode;
188
+ }
189
+ /**
190
+ * Set mode
191
+ */
192
+ setMode(mode) {
193
+ this.config.mode = mode;
194
+ }
195
+ /**
196
+ * Add custom policy
197
+ */
198
+ addPolicy(policy) {
199
+ if (!this.config.policies) {
200
+ this.config.policies = [];
201
+ }
202
+ // Remove existing policy for this action
203
+ this.config.policies = this.config.policies.filter(p => p.action !== policy.action);
204
+ this.config.policies.push(policy);
205
+ }
206
+ /**
207
+ * Clear remembered decisions
208
+ */
209
+ clearRemembered() {
210
+ this.rememberedDecisions.clear();
211
+ }
212
+ /**
213
+ * Reset action count
214
+ */
215
+ resetActionCount() {
216
+ this.actionCount = 0;
217
+ }
218
+ /**
219
+ * Get action count
220
+ */
221
+ getActionCount() {
222
+ return this.actionCount;
223
+ }
224
+ /**
225
+ * Get summary of current settings
226
+ */
227
+ getSummary() {
228
+ const lines = [
229
+ `Autonomy Mode: ${this.config.mode}`,
230
+ `Actions taken: ${this.actionCount}/${this.config.maxAutoActions || 'unlimited'}`,
231
+ `Remembered decisions: ${this.rememberedDecisions.size}`,
232
+ '',
233
+ 'Current policies:'
234
+ ];
235
+ const policies = exports.MODE_POLICIES[this.config.mode];
236
+ for (const policy of policies) {
237
+ const status = policy.requiresApproval ? '⚠️ requires approval' : '✓ auto-approved';
238
+ lines.push(` ${policy.action}: ${status}`);
239
+ }
240
+ return lines.join('\n');
241
+ }
242
+ }
243
+ exports.AutonomyManager = AutonomyManager;
244
+ /**
245
+ * Create an autonomy manager
246
+ */
247
+ function createAutonomyManager(config) {
248
+ return new AutonomyManager(config);
249
+ }
250
+ /**
251
+ * Simple approval prompt for CLI
252
+ */
253
+ async function cliApprovalPrompt(request) {
254
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
255
+ const rl = readline.createInterface({
256
+ input: process.stdin,
257
+ output: process.stdout
258
+ });
259
+ return new Promise((resolve) => {
260
+ const message = `\n⚠️ Action requires approval:\n Type: ${request.type}\n ${request.description}\n Target: ${request.target || 'N/A'}\n\nApprove? (y/n): `;
261
+ rl.question(message, (answer) => {
262
+ rl.close();
263
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
264
+ });
265
+ });
266
+ }
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Background Jobs - Persisted job queue with adapter support
3
+ */
4
+ export type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
5
+ export type JobPriority = 'low' | 'normal' | 'high' | 'critical';
6
+ export interface Job<T = any> {
7
+ id: string;
8
+ name: string;
9
+ data: T;
10
+ status: JobStatus;
11
+ priority: JobPriority;
12
+ attempts: number;
13
+ maxAttempts: number;
14
+ createdAt: Date;
15
+ startedAt?: Date;
16
+ completedAt?: Date;
17
+ result?: any;
18
+ error?: string;
19
+ progress?: number;
20
+ metadata?: Record<string, any>;
21
+ }
22
+ export interface JobQueueConfig {
23
+ name?: string;
24
+ concurrency?: number;
25
+ maxAttempts?: number;
26
+ retryDelay?: number;
27
+ storage?: JobStorageAdapter;
28
+ }
29
+ export interface JobStorageAdapter {
30
+ save(job: Job): Promise<void>;
31
+ get(id: string): Promise<Job | null>;
32
+ getAll(): Promise<Job[]>;
33
+ getByStatus(status: JobStatus): Promise<Job[]>;
34
+ update(id: string, updates: Partial<Job>): Promise<void>;
35
+ delete(id: string): Promise<void>;
36
+ clear(): Promise<void>;
37
+ }
38
+ export type JobHandler<T = any, R = any> = (job: Job<T>, context: JobContext) => Promise<R>;
39
+ export interface JobContext {
40
+ updateProgress: (progress: number) => Promise<void>;
41
+ log: (message: string) => void;
42
+ }
43
+ /**
44
+ * In-memory job storage adapter
45
+ */
46
+ export declare class MemoryJobStorage implements JobStorageAdapter {
47
+ private jobs;
48
+ save(job: Job): Promise<void>;
49
+ get(id: string): Promise<Job | null>;
50
+ getAll(): Promise<Job[]>;
51
+ getByStatus(status: JobStatus): Promise<Job[]>;
52
+ update(id: string, updates: Partial<Job>): Promise<void>;
53
+ delete(id: string): Promise<void>;
54
+ clear(): Promise<void>;
55
+ }
56
+ /**
57
+ * File-based job storage adapter
58
+ */
59
+ export declare class FileJobStorage implements JobStorageAdapter {
60
+ private filePath;
61
+ private jobs;
62
+ private initialized;
63
+ constructor(filePath: string);
64
+ private init;
65
+ private persist;
66
+ save(job: Job): Promise<void>;
67
+ get(id: string): Promise<Job | null>;
68
+ getAll(): Promise<Job[]>;
69
+ getByStatus(status: JobStatus): Promise<Job[]>;
70
+ update(id: string, updates: Partial<Job>): Promise<void>;
71
+ delete(id: string): Promise<void>;
72
+ clear(): Promise<void>;
73
+ }
74
+ /**
75
+ * Job Queue class
76
+ */
77
+ export declare class JobQueue {
78
+ private config;
79
+ private storage;
80
+ private handlers;
81
+ private running;
82
+ private activeJobs;
83
+ private processInterval?;
84
+ constructor(config?: JobQueueConfig);
85
+ /**
86
+ * Register a job handler
87
+ */
88
+ register<T = any, R = any>(name: string, handler: JobHandler<T, R>): void;
89
+ /**
90
+ * Add a job to the queue
91
+ */
92
+ add<T = any>(name: string, data: T, options?: Partial<Job<T>>): Promise<Job<T>>;
93
+ /**
94
+ * Get a job by ID
95
+ */
96
+ get(id: string): Promise<Job | null>;
97
+ /**
98
+ * Get all jobs
99
+ */
100
+ getAll(): Promise<Job[]>;
101
+ /**
102
+ * Get jobs by status
103
+ */
104
+ getByStatus(status: JobStatus): Promise<Job[]>;
105
+ /**
106
+ * Cancel a job
107
+ */
108
+ cancel(id: string): Promise<boolean>;
109
+ /**
110
+ * Retry a failed job
111
+ */
112
+ retry(id: string): Promise<boolean>;
113
+ /**
114
+ * Start processing jobs
115
+ */
116
+ start(): void;
117
+ /**
118
+ * Stop processing jobs
119
+ */
120
+ stop(): void;
121
+ /**
122
+ * Process pending jobs
123
+ */
124
+ private process;
125
+ /**
126
+ * Run a single job
127
+ */
128
+ private runJob;
129
+ /**
130
+ * Process a job immediately (bypass queue)
131
+ */
132
+ processNow(id: string): Promise<any>;
133
+ /**
134
+ * Get queue stats
135
+ */
136
+ getStats(): Promise<{
137
+ pending: number;
138
+ running: number;
139
+ completed: number;
140
+ failed: number;
141
+ cancelled: number;
142
+ }>;
143
+ /**
144
+ * Clear completed/failed jobs
145
+ */
146
+ cleanup(olderThan?: Date): Promise<number>;
147
+ }
148
+ /**
149
+ * Create a job queue
150
+ */
151
+ export declare function createJobQueue(config?: JobQueueConfig): JobQueue;
152
+ /**
153
+ * Create a file-based job storage
154
+ */
155
+ export declare function createFileJobStorage(filePath: string): FileJobStorage;