@loopstack/core 0.4.1 → 0.5.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 (104) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/config-provider.service.d.ts +2 -0
  3. package/dist/config-provider.service.js +16 -6
  4. package/dist/config-provider.service.js.map +1 -1
  5. package/dist/loop-core.module.js +16 -1
  6. package/dist/loop-core.module.js.map +1 -1
  7. package/dist/modules/common/services/context.service.js +1 -1
  8. package/dist/modules/common/services/context.service.js.map +1 -1
  9. package/dist/modules/configuration/services/configuration.service.d.ts +7 -5
  10. package/dist/modules/configuration/services/configuration.service.js +14 -8
  11. package/dist/modules/configuration/services/configuration.service.js.map +1 -1
  12. package/dist/modules/configuration/services/dynamic-schema-generator.service.js +1 -4
  13. package/dist/modules/configuration/services/dynamic-schema-generator.service.js.map +1 -1
  14. package/dist/modules/persistence/handlers/sql-query.handler.js +1 -4
  15. package/dist/modules/persistence/handlers/sql-query.handler.js.map +1 -1
  16. package/dist/modules/persistence/services/namespace.service.d.ts +0 -2
  17. package/dist/modules/persistence/services/namespace.service.js +1 -29
  18. package/dist/modules/persistence/services/namespace.service.js.map +1 -1
  19. package/dist/modules/persistence/services/pipeline.service.d.ts +3 -1
  20. package/dist/modules/persistence/services/pipeline.service.js +12 -0
  21. package/dist/modules/persistence/services/pipeline.service.js.map +1 -1
  22. package/dist/modules/persistence/services/workspace.service.d.ts +4 -2
  23. package/dist/modules/persistence/services/workspace.service.js +17 -5
  24. package/dist/modules/persistence/services/workspace.service.js.map +1 -1
  25. package/dist/modules/scheduler/index.d.ts +2 -0
  26. package/dist/modules/scheduler/index.js +19 -0
  27. package/dist/modules/scheduler/index.js.map +1 -0
  28. package/dist/modules/scheduler/scheduler.module.js +38 -14
  29. package/dist/modules/scheduler/scheduler.module.js.map +1 -1
  30. package/dist/modules/scheduler/services/index.d.ts +1 -0
  31. package/dist/modules/scheduler/services/index.js +18 -0
  32. package/dist/modules/scheduler/services/index.js.map +1 -0
  33. package/dist/modules/scheduler/services/task-initialization.service.d.ts +15 -0
  34. package/dist/modules/scheduler/services/task-initialization.service.js +94 -0
  35. package/dist/modules/scheduler/services/task-initialization.service.js.map +1 -0
  36. package/dist/modules/scheduler/services/task-processor/cleanup-pipeline-task-processor.service.d.ts +12 -0
  37. package/dist/modules/scheduler/services/task-processor/cleanup-pipeline-task-processor.service.js +83 -0
  38. package/dist/modules/scheduler/services/task-processor/cleanup-pipeline-task-processor.service.js.map +1 -0
  39. package/dist/modules/scheduler/services/task-processor/create-run-pipeline-task-processor.service.d.ts +12 -0
  40. package/dist/modules/scheduler/services/task-processor/create-run-pipeline-task-processor.service.js +49 -0
  41. package/dist/modules/scheduler/services/task-processor/create-run-pipeline-task-processor.service.js.map +1 -0
  42. package/dist/modules/scheduler/services/task-processor/create-workspace-task-processor.service.d.ts +11 -0
  43. package/dist/modules/scheduler/services/task-processor/create-workspace-task-processor.service.js +52 -0
  44. package/dist/modules/scheduler/services/task-processor/create-workspace-task-processor.service.js.map +1 -0
  45. package/dist/modules/scheduler/services/task-processor/run-pipeline-task-processor.service.d.ts +10 -0
  46. package/dist/modules/scheduler/services/task-processor/run-pipeline-task-processor.service.js +40 -0
  47. package/dist/modules/scheduler/services/task-processor/run-pipeline-task-processor.service.js.map +1 -0
  48. package/dist/modules/scheduler/services/task-processor.service.d.ts +25 -0
  49. package/dist/modules/scheduler/services/task-processor.service.js +127 -0
  50. package/dist/modules/scheduler/services/task-processor.service.js.map +1 -0
  51. package/dist/modules/scheduler/services/task-scheduler.service.d.ts +7 -19
  52. package/dist/modules/scheduler/services/task-scheduler.service.js +26 -166
  53. package/dist/modules/scheduler/services/task-scheduler.service.js.map +1 -1
  54. package/dist/modules/workflow-processor/handlers/create-document.handler.d.ts +6 -6
  55. package/dist/modules/workflow-processor/handlers/load-document.handler.d.ts +42 -7
  56. package/dist/modules/workflow-processor/handlers/update-document.handler.d.ts +6 -6
  57. package/dist/modules/workflow-processor/services/create-pipeline.service.d.ts +9 -0
  58. package/dist/modules/workflow-processor/services/create-pipeline.service.js +36 -0
  59. package/dist/modules/workflow-processor/services/create-pipeline.service.js.map +1 -0
  60. package/dist/modules/workflow-processor/services/index.d.ts +1 -0
  61. package/dist/modules/workflow-processor/services/index.js +1 -0
  62. package/dist/modules/workflow-processor/services/index.js.map +1 -1
  63. package/dist/modules/workflow-processor/services/namespace-processor.service.d.ts +0 -1
  64. package/dist/modules/workflow-processor/services/namespace-processor.service.js +0 -1
  65. package/dist/modules/workflow-processor/services/namespace-processor.service.js.map +1 -1
  66. package/dist/modules/workflow-processor/services/pipeline-processor.service.js +1 -1
  67. package/dist/modules/workflow-processor/services/pipeline-processor.service.js.map +1 -1
  68. package/dist/modules/workflow-processor/services/root-processor.service.d.ts +5 -3
  69. package/dist/modules/workflow-processor/services/root-processor.service.js +16 -1
  70. package/dist/modules/workflow-processor/services/root-processor.service.js.map +1 -1
  71. package/dist/modules/workflow-processor/services/state-machine-config.service.js +6 -6
  72. package/dist/modules/workflow-processor/services/state-machine-config.service.js.map +1 -1
  73. package/dist/modules/workflow-processor/services/state-machine-processor.service.d.ts +1 -5
  74. package/dist/modules/workflow-processor/services/state-machine-processor.service.js +5 -15
  75. package/dist/modules/workflow-processor/services/state-machine-processor.service.js.map +1 -1
  76. package/dist/modules/workflow-processor/services/tool-execution.service.js +1 -1
  77. package/dist/modules/workflow-processor/services/tool-execution.service.js.map +1 -1
  78. package/dist/modules/workflow-processor/services/workflow-processor.service.d.ts +7 -3
  79. package/dist/modules/workflow-processor/services/workflow-processor.service.js +16 -6
  80. package/dist/modules/workflow-processor/services/workflow-processor.service.js.map +1 -1
  81. package/dist/modules/workflow-processor/workflow-processor.module.js +3 -0
  82. package/dist/modules/workflow-processor/workflow-processor.module.js.map +1 -1
  83. package/package.json +4 -2
  84. package/dist/modules/scheduler/entities/scheduled-task.entity.d.ts +0 -30
  85. package/dist/modules/scheduler/entities/scheduled-task.entity.js +0 -128
  86. package/dist/modules/scheduler/entities/scheduled-task.entity.js.map +0 -1
  87. package/dist/modules/scheduler/events/task-execution.event.d.ts +0 -8
  88. package/dist/modules/scheduler/events/task-execution.event.js +0 -19
  89. package/dist/modules/scheduler/events/task-execution.event.js.map +0 -1
  90. package/dist/modules/scheduler/handler/create-task-schedule.handler.d.ts +0 -55
  91. package/dist/modules/scheduler/handler/create-task-schedule.handler.js +0 -121
  92. package/dist/modules/scheduler/handler/create-task-schedule.handler.js.map +0 -1
  93. package/dist/modules/scheduler/handler/remove-task-schedule.handler.d.ts +0 -17
  94. package/dist/modules/scheduler/handler/remove-task-schedule.handler.js +0 -48
  95. package/dist/modules/scheduler/handler/remove-task-schedule.handler.js.map +0 -1
  96. package/dist/modules/scheduler/interfaces/create-task-schedule.interface.d.ts +0 -11
  97. package/dist/modules/scheduler/interfaces/create-task-schedule.interface.js +0 -3
  98. package/dist/modules/scheduler/interfaces/create-task-schedule.interface.js.map +0 -1
  99. package/dist/modules/scheduler/schemas/task.schema.d.ts +0 -3
  100. package/dist/modules/scheduler/schemas/task.schema.js +0 -30
  101. package/dist/modules/scheduler/schemas/task.schema.js.map +0 -1
  102. package/dist/modules/scheduler/services/task-execution.listener.d.ts +0 -5
  103. package/dist/modules/scheduler/services/task-execution.listener.js +0 -40
  104. package/dist/modules/scheduler/services/task-execution.listener.js.map +0 -1
@@ -8,31 +8,55 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.SchedulerModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
+ const bullmq_1 = require("@nestjs/bullmq");
12
+ const task_scheduler_service_1 = require("./services/task-scheduler.service");
13
+ const task_processor_service_1 = require("./services/task-processor.service");
14
+ const workflow_processor_1 = require("../workflow-processor");
15
+ const task_initialization_service_1 = require("./services/task-initialization.service");
11
16
  const configuration_1 = require("../configuration");
17
+ const run_pipeline_task_processor_service_1 = require("./services/task-processor/run-pipeline-task-processor.service");
18
+ const cleanup_pipeline_task_processor_service_1 = require("./services/task-processor/cleanup-pipeline-task-processor.service");
12
19
  const persistence_1 = require("../persistence");
13
- const core_1 = require("@nestjs/core");
14
- const common_2 = require("../common");
15
- const typeorm_1 = require("@nestjs/typeorm");
16
- const event_emitter_1 = require("@nestjs/event-emitter");
17
- const scheduled_task_entity_1 = require("./entities/scheduled-task.entity");
18
- const schedule_1 = require("@nestjs/schedule");
19
- const task_scheduler_service_1 = require("./services/task-scheduler.service");
20
- const task_execution_listener_1 = require("./services/task-execution.listener");
20
+ const create_workspace_task_processor_service_1 = require("./services/task-processor/create-workspace-task-processor.service");
21
+ const create_run_pipeline_task_processor_service_1 = require("./services/task-processor/create-run-pipeline-task-processor.service");
21
22
  let SchedulerModule = class SchedulerModule {
22
23
  };
23
24
  exports.SchedulerModule = SchedulerModule;
24
25
  exports.SchedulerModule = SchedulerModule = __decorate([
25
26
  (0, common_1.Module)({
26
27
  imports: [
27
- typeorm_1.TypeOrmModule.forFeature([scheduled_task_entity_1.ScheduledTask]),
28
- schedule_1.ScheduleModule.forRoot(),
29
- event_emitter_1.EventEmitterModule.forRoot(),
30
- core_1.DiscoveryModule,
31
- common_2.CommonModule,
28
+ bullmq_1.BullModule.forRoot({
29
+ connection: {
30
+ host: process.env.REDIS_HOST || 'localhost',
31
+ port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : 6379,
32
+ password: process.env.REDIS_PASSWORD,
33
+ },
34
+ }),
35
+ bullmq_1.BullModule.registerQueue({
36
+ name: 'task-queue',
37
+ defaultJobOptions: {
38
+ removeOnComplete: 100,
39
+ removeOnFail: 50,
40
+ attempts: 3,
41
+ backoff: {
42
+ type: 'exponential',
43
+ delay: 2000,
44
+ },
45
+ },
46
+ }),
32
47
  configuration_1.ConfigurationModule,
33
48
  persistence_1.PersistenceModule,
49
+ workflow_processor_1.WorkflowProcessorModule,
50
+ ],
51
+ providers: [
52
+ task_scheduler_service_1.TaskSchedulerService,
53
+ task_processor_service_1.TaskProcessorService,
54
+ task_initialization_service_1.TaskInitializationService,
55
+ run_pipeline_task_processor_service_1.RunPipelineTaskProcessorService,
56
+ create_run_pipeline_task_processor_service_1.CreateRunPipelineTaskProcessorService,
57
+ cleanup_pipeline_task_processor_service_1.CleanupPipelineTaskProcessorService,
58
+ create_workspace_task_processor_service_1.CreateWorkspaceTaskProcessorService,
34
59
  ],
35
- providers: [task_scheduler_service_1.TaskSchedulerService, task_execution_listener_1.TaskExecutionListener],
36
60
  exports: [task_scheduler_service_1.TaskSchedulerService],
37
61
  })
38
62
  ], SchedulerModule);
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.module.js","sourceRoot":"","sources":["../../../src/modules/scheduler/scheduler.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,oDAAuD;AACvD,gDAAmD;AACnD,uCAA+C;AAC/C,sCAAyC;AACzC,6CAAgD;AAChD,yDAA2D;AAC3D,4EAAiE;AACjE,+CAAkD;AAClD,8EAAyE;AACzE,gFAA2E;AAgBpE,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAd3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,qCAAa,CAAC,CAAC;YACzC,yBAAc,CAAC,OAAO,EAAE;YACxB,kCAAkB,CAAC,OAAO,EAAE;YAE5B,sBAAe;YACf,qBAAY;YACZ,mCAAmB;YACnB,+BAAiB;SAClB;QACD,SAAS,EAAE,CAAC,6CAAoB,EAAE,+CAAqB,CAAC;QACxD,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,eAAe,CAAG"}
1
+ {"version":3,"file":"scheduler.module.js","sourceRoot":"","sources":["../../../src/modules/scheduler/scheduler.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA4C;AAC5C,8EAAyE;AACzE,8EAAyE;AACzE,8DAAgE;AAChE,wFAAmF;AACnF,oDAAuD;AACvD,uHAAgH;AAChH,+HAAwH;AACxH,gDAAmD;AACnD,+HAAwH;AACxH,qIAE8E;AAsCvE,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IApC3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,mBAAU,CAAC,OAAO,CAAC;gBACjB,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;oBAC3C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;oBACtE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;iBACrC;aACF,CAAC;YACF,mBAAU,CAAC,aAAa,CAAC;gBACvB,IAAI,EAAE,YAAY;gBAClB,iBAAiB,EAAE;oBACjB,gBAAgB,EAAE,GAAG;oBACrB,YAAY,EAAE,EAAE;oBAChB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE;wBACP,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF,CAAC;YACF,mCAAmB;YACnB,+BAAiB;YACjB,4CAAuB;SACxB;QACD,SAAS,EAAE;YACT,6CAAoB;YACpB,6CAAoB;YACpB,uDAAyB;YACzB,qEAA+B;YAC/B,kFAAqC;YACrC,6EAAmC;YACnC,6EAAmC;SACpC;QACD,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,eAAe,CAAG"}
@@ -0,0 +1 @@
1
+ export * from './task-scheduler.service';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./task-scheduler.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/scheduler/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAwC"}
@@ -0,0 +1,15 @@
1
+ import { EventEmitter2 } from '@nestjs/event-emitter';
2
+ import { TaskSchedulerService } from './task-scheduler.service';
3
+ import { ConfigurationService } from '../../configuration';
4
+ export declare class TaskInitializationService {
5
+ private readonly eventEmitter;
6
+ private readonly taskSchedulerService;
7
+ private readonly configurationService;
8
+ private readonly logger;
9
+ constructor(eventEmitter: EventEmitter2, taskSchedulerService: TaskSchedulerService, configurationService: ConfigurationService);
10
+ private getStartupTasks;
11
+ private createTask;
12
+ private clearPendingTasks;
13
+ private installTasks;
14
+ handleTaskInitialization(): Promise<void>;
15
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var TaskInitializationService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.TaskInitializationService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const event_emitter_1 = require("@nestjs/event-emitter");
16
+ const zod_1 = require("zod");
17
+ const task_scheduler_service_1 = require("./task-scheduler.service");
18
+ const shared_1 = require("@loopstack/shared");
19
+ const configuration_1 = require("../../configuration");
20
+ let TaskInitializationService = TaskInitializationService_1 = class TaskInitializationService {
21
+ eventEmitter;
22
+ taskSchedulerService;
23
+ configurationService;
24
+ logger = new common_1.Logger(TaskInitializationService_1.name);
25
+ constructor(eventEmitter, taskSchedulerService, configurationService) {
26
+ this.eventEmitter = eventEmitter;
27
+ this.taskSchedulerService = taskSchedulerService;
28
+ this.configurationService = configurationService;
29
+ }
30
+ getStartupTasks() {
31
+ return this.configurationService.getAll('startup');
32
+ }
33
+ createTask(task) {
34
+ try {
35
+ return shared_1.ScheduledTaskSchema.parse({
36
+ id: `${task.path}:${task.name}`,
37
+ task: task.config,
38
+ metadata: task,
39
+ });
40
+ }
41
+ catch (error) {
42
+ if (error instanceof zod_1.ZodError) {
43
+ const errorMessages = error.errors.map((err) => {
44
+ const path = err.path.length > 0 ? `${err.path.join('.')}: ` : '';
45
+ return `${path}${err.message}`;
46
+ });
47
+ throw new Error(`Task validation failed: ${errorMessages.join(', ')}`);
48
+ }
49
+ throw error;
50
+ }
51
+ }
52
+ async clearPendingTasks() {
53
+ await this.taskSchedulerService.clearAllTasks();
54
+ }
55
+ async installTasks(tasks) {
56
+ for (const taskConfig of tasks) {
57
+ const task = this.createTask(taskConfig);
58
+ const job = await this.taskSchedulerService.addTask(task);
59
+ if (job) {
60
+ this.logger.debug(`Successfully installed task: ${task.id}`);
61
+ }
62
+ else {
63
+ this.logger.debug(`Failed installing task: ${task.id}`);
64
+ }
65
+ }
66
+ }
67
+ async handleTaskInitialization() {
68
+ const startupTasks = this.getStartupTasks();
69
+ this.logger.log(`Initializing task schedule for ${startupTasks.length} startup tasks`);
70
+ try {
71
+ await this.clearPendingTasks();
72
+ await this.installTasks(startupTasks);
73
+ this.logger.debug(`Task initialization completed.`);
74
+ this.eventEmitter.emit('tasks.initialized');
75
+ }
76
+ catch (error) {
77
+ this.logger.error('Task initialization failed:', error);
78
+ }
79
+ }
80
+ };
81
+ exports.TaskInitializationService = TaskInitializationService;
82
+ __decorate([
83
+ (0, event_emitter_1.OnEvent)('configuration.initialized'),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", []),
86
+ __metadata("design:returntype", Promise)
87
+ ], TaskInitializationService.prototype, "handleTaskInitialization", null);
88
+ exports.TaskInitializationService = TaskInitializationService = TaskInitializationService_1 = __decorate([
89
+ (0, common_1.Injectable)(),
90
+ __metadata("design:paramtypes", [event_emitter_1.EventEmitter2,
91
+ task_scheduler_service_1.TaskSchedulerService,
92
+ configuration_1.ConfigurationService])
93
+ ], TaskInitializationService);
94
+ //# sourceMappingURL=task-initialization.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-initialization.service.js","sourceRoot":"","sources":["../../../../src/modules/scheduler/services/task-initialization.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CleanupPipelineTask } from '@loopstack/shared';
2
+ import { PipelineService } from '../../../persistence';
3
+ import { ConfigElementMetadata } from '@loopstack/shared/dist/schemas/config-element.schema';
4
+ import { ConfigurationService } from '../../../configuration';
5
+ export declare class CleanupPipelineTaskProcessorService {
6
+ private readonly configurationService;
7
+ private readonly pipelineService;
8
+ private readonly logger;
9
+ constructor(configurationService: ConfigurationService, pipelineService: PipelineService);
10
+ process(task: CleanupPipelineTask, metadata?: ConfigElementMetadata): Promise<void>;
11
+ private createBaseQuery;
12
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var CleanupPipelineTaskProcessorService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CleanupPipelineTaskProcessorService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const persistence_1 = require("../../../persistence");
16
+ const configuration_1 = require("../../../configuration");
17
+ let CleanupPipelineTaskProcessorService = CleanupPipelineTaskProcessorService_1 = class CleanupPipelineTaskProcessorService {
18
+ configurationService;
19
+ pipelineService;
20
+ logger = new common_1.Logger(CleanupPipelineTaskProcessorService_1.name);
21
+ constructor(configurationService, pipelineService) {
22
+ this.configurationService = configurationService;
23
+ this.pipelineService = pipelineService;
24
+ }
25
+ async process(task, metadata) {
26
+ const { payload } = task;
27
+ const pipelineConfig = this.configurationService.resolveConfig('pipelines', task.payload.pipeline, metadata?.includes ?? []);
28
+ const pipelineName = `${pipelineConfig.path}:${pipelineConfig.name}`;
29
+ this.logger.debug(`Starting pipeline cleanup for pipeline: ${pipelineName}`);
30
+ let queryBuilder = this.createBaseQuery(pipelineName, payload, task.user);
31
+ const totalFound = await queryBuilder.getCount();
32
+ if (totalFound === 0) {
33
+ this.logger.debug('No pipelines found matching cleanup criteria');
34
+ return;
35
+ }
36
+ if (payload.skip && payload.skip > 0) {
37
+ queryBuilder.skip(payload.skip);
38
+ }
39
+ if (payload.limit && payload.limit > 0) {
40
+ queryBuilder.limit(payload.limit);
41
+ }
42
+ const pipelinesToDelete = await queryBuilder.getMany();
43
+ if (pipelinesToDelete.length === 0) {
44
+ this.logger.debug('No pipelines to delete after applying keep/limit filters');
45
+ return;
46
+ }
47
+ const pipelineIds = pipelinesToDelete.map((p) => p.id);
48
+ const deleteResult = await this.pipelineService
49
+ .getRepository()
50
+ .delete(pipelineIds);
51
+ const deletedCount = deleteResult.affected || 0;
52
+ this.logger.log(`Pipeline cleanup completed. Deleted: ${deletedCount}, Total found: ${totalFound}`);
53
+ }
54
+ createBaseQuery(name, payload, user) {
55
+ let queryBuilder = this.pipelineService
56
+ .getRepository()
57
+ .createQueryBuilder('pipeline')
58
+ .where('pipeline.model = :pipeline', { pipeline: name });
59
+ if (null === user) {
60
+ queryBuilder.andWhere('pipeline.created_by IS NULL');
61
+ }
62
+ else {
63
+ queryBuilder.andWhere('pipeline.created_by = :user', { user });
64
+ }
65
+ if (payload.status) {
66
+ queryBuilder.andWhere('pipeline.status = :status', {
67
+ status: payload.status,
68
+ });
69
+ }
70
+ if (payload.olderThan) {
71
+ queryBuilder.andWhere(`pipeline.created_at < NOW() - INTERVAL '${payload.olderThan}'`);
72
+ }
73
+ queryBuilder.orderBy('pipeline.updated_at', 'DESC');
74
+ return queryBuilder;
75
+ }
76
+ };
77
+ exports.CleanupPipelineTaskProcessorService = CleanupPipelineTaskProcessorService;
78
+ exports.CleanupPipelineTaskProcessorService = CleanupPipelineTaskProcessorService = CleanupPipelineTaskProcessorService_1 = __decorate([
79
+ (0, common_1.Injectable)(),
80
+ __metadata("design:paramtypes", [configuration_1.ConfigurationService,
81
+ persistence_1.PipelineService])
82
+ ], CleanupPipelineTaskProcessorService);
83
+ //# sourceMappingURL=cleanup-pipeline-task-processor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-pipeline-task-processor.service.js","sourceRoot":"","sources":["../../../../../src/modules/scheduler/services/task-processor/cleanup-pipeline-task-processor.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CreatePipelineService, RootProcessorService } from '../../../workflow-processor';
2
+ import { CreateRunPipelineTask } from '@loopstack/shared';
3
+ import { ConfigurationService } from '../../../configuration';
4
+ import { ConfigElementMetadata } from '@loopstack/shared/dist/schemas/config-element.schema';
5
+ export declare class CreateRunPipelineTaskProcessorService {
6
+ private readonly configurationService;
7
+ private readonly createPipelineService;
8
+ private readonly rootProcessorService;
9
+ private readonly logger;
10
+ constructor(configurationService: ConfigurationService, createPipelineService: CreatePipelineService, rootProcessorService: RootProcessorService);
11
+ process(task: CreateRunPipelineTask, metadata?: ConfigElementMetadata): Promise<void>;
12
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var CreateRunPipelineTaskProcessorService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CreateRunPipelineTaskProcessorService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const workflow_processor_1 = require("../../../workflow-processor");
16
+ const configuration_1 = require("../../../configuration");
17
+ let CreateRunPipelineTaskProcessorService = CreateRunPipelineTaskProcessorService_1 = class CreateRunPipelineTaskProcessorService {
18
+ configurationService;
19
+ createPipelineService;
20
+ rootProcessorService;
21
+ logger = new common_1.Logger(CreateRunPipelineTaskProcessorService_1.name);
22
+ constructor(configurationService, createPipelineService, rootProcessorService) {
23
+ this.configurationService = configurationService;
24
+ this.createPipelineService = createPipelineService;
25
+ this.rootProcessorService = rootProcessorService;
26
+ }
27
+ async process(task, metadata) {
28
+ const pipelineConfig = this.configurationService.resolveConfig('pipelines', task.payload.pipeline, metadata?.includes ?? []);
29
+ if (pipelineConfig?.config?.type !== 'root') {
30
+ throw new Error(`Can't execute a non root pipeline`);
31
+ }
32
+ const pipeline = await this.createPipelineService.create({
33
+ type: pipelineConfig.config.workspace,
34
+ }, {
35
+ model: `${pipelineConfig.path}:${pipelineConfig.name}`,
36
+ title: `Scheduled Task (${pipelineConfig.name})`,
37
+ }, null);
38
+ this.logger.debug(`Pipeline for schedule task created with id ${pipeline.id}`);
39
+ await this.rootProcessorService.runPipeline(pipeline, task.payload);
40
+ }
41
+ };
42
+ exports.CreateRunPipelineTaskProcessorService = CreateRunPipelineTaskProcessorService;
43
+ exports.CreateRunPipelineTaskProcessorService = CreateRunPipelineTaskProcessorService = CreateRunPipelineTaskProcessorService_1 = __decorate([
44
+ (0, common_1.Injectable)(),
45
+ __metadata("design:paramtypes", [configuration_1.ConfigurationService,
46
+ workflow_processor_1.CreatePipelineService,
47
+ workflow_processor_1.RootProcessorService])
48
+ ], CreateRunPipelineTaskProcessorService);
49
+ //# sourceMappingURL=create-run-pipeline-task-processor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-run-pipeline-task-processor.service.js","sourceRoot":"","sources":["../../../../../src/modules/scheduler/services/task-processor/create-run-pipeline-task-processor.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,oEAGqC;AAKrC,0DAA8D;AAIvD,IAAM,qCAAqC,6CAA3C,MAAM,qCAAqC;IAI7B;IACA;IACA;IALF,MAAM,GAAG,IAAI,eAAM,CAAC,uCAAqC,CAAC,IAAI,CAAC,CAAC;IAEjF,YACmB,oBAA0C,EAC1C,qBAA4C,EAC5C,oBAA0C;QAF1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,yBAAoB,GAApB,oBAAoB,CAAsB;IAC1D,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,IAA2B,EAAE,QAAgC;QAChF,MAAM,cAAc,GAClB,IAAI,CAAC,oBAAoB,CAAC,aAAa,CACrC,WAAW,EACX,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,QAAQ,EAAE,QAAQ,IAAI,EAAE,CACzB,CAAC;QACJ,IAAI,cAAc,EAAE,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CACtD;YACE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS;SACtC,EACD;YACE,KAAK,EAAE,GAAG,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE;YACtD,KAAK,EAAE,mBAAmB,cAAc,CAAC,IAAI,GAAG;SACjD,EACD,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8CAA8C,QAAQ,CAAC,EAAE,EAAE,CAC5D,CAAC;QAEF,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CACzC,QAAQ,EACR,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;CACF,CAAA;AAxCY,sFAAqC;gDAArC,qCAAqC;IADjD,IAAA,mBAAU,GAAE;qCAK8B,oCAAoB;QACnB,0CAAqB;QACtB,yCAAoB;GANlD,qCAAqC,CAwCjD"}
@@ -0,0 +1,11 @@
1
+ import { CreateWorkspaceTask } from '@loopstack/shared';
2
+ import { ConfigurationService } from '../../../configuration';
3
+ import { WorkspaceService } from '../../../persistence';
4
+ import { ConfigElementMetadata } from '@loopstack/shared/dist/schemas/config-element.schema';
5
+ export declare class CreateWorkspaceTaskProcessorService {
6
+ private readonly configurationService;
7
+ private readonly workspaceService;
8
+ private readonly logger;
9
+ constructor(configurationService: ConfigurationService, workspaceService: WorkspaceService);
10
+ process(task: CreateWorkspaceTask, metadata?: ConfigElementMetadata): Promise<void>;
11
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var CreateWorkspaceTaskProcessorService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CreateWorkspaceTaskProcessorService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const configuration_1 = require("../../../configuration");
16
+ const persistence_1 = require("../../../persistence");
17
+ const typeorm_1 = require("typeorm");
18
+ let CreateWorkspaceTaskProcessorService = CreateWorkspaceTaskProcessorService_1 = class CreateWorkspaceTaskProcessorService {
19
+ configurationService;
20
+ workspaceService;
21
+ logger = new common_1.Logger(CreateWorkspaceTaskProcessorService_1.name);
22
+ constructor(configurationService, workspaceService) {
23
+ this.configurationService = configurationService;
24
+ this.workspaceService = workspaceService;
25
+ }
26
+ async process(task, metadata) {
27
+ const workspaceConfig = this.configurationService.resolveConfig('workspaces', task.payload.workspace, metadata?.includes ?? []);
28
+ if (!workspaceConfig) {
29
+ throw new Error(`Workspace not found.`);
30
+ }
31
+ const user = null;
32
+ const existing = await this.workspaceService.getWorkspace({
33
+ type: workspaceConfig.config.name,
34
+ createdBy: null === user ? (0, typeorm_1.IsNull)() : user,
35
+ });
36
+ if (existing) {
37
+ this.logger.debug(`Workspace already exists. Skipping.`);
38
+ return;
39
+ }
40
+ const workspace = await this.workspaceService.create({
41
+ type: workspaceConfig.config.name,
42
+ }, user);
43
+ this.logger.debug(`Workspace created with id ${workspace.id}`);
44
+ }
45
+ };
46
+ exports.CreateWorkspaceTaskProcessorService = CreateWorkspaceTaskProcessorService;
47
+ exports.CreateWorkspaceTaskProcessorService = CreateWorkspaceTaskProcessorService = CreateWorkspaceTaskProcessorService_1 = __decorate([
48
+ (0, common_1.Injectable)(),
49
+ __metadata("design:paramtypes", [configuration_1.ConfigurationService,
50
+ persistence_1.WorkspaceService])
51
+ ], CreateWorkspaceTaskProcessorService);
52
+ //# sourceMappingURL=create-workspace-task-processor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-workspace-task-processor.service.js","sourceRoot":"","sources":["../../../../../src/modules/scheduler/services/task-processor/create-workspace-task-processor.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,0DAA8D;AAC9D,sDAAwD;AACxD,qCAAiC;AAI1B,IAAM,mCAAmC,2CAAzC,MAAM,mCAAmC;IAM3B;IACA;IANF,MAAM,GAAG,IAAI,eAAM,CAClC,qCAAmC,CAAC,IAAI,CACzC,CAAC;IAEF,YACmB,oBAA0C,EAC1C,gBAAkC;QADlC,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,qBAAgB,GAAhB,gBAAgB,CAAkB;IAClD,CAAC;IAEG,KAAK,CAAC,OAAO,CAClB,IAAyB,EACzB,QAAgC;QAEhC,MAAM,eAAe,GACnB,IAAI,CAAC,oBAAoB,CAAC,aAAa,CACrC,YAAY,EACZ,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,QAAQ,EAAE,QAAQ,IAAI,EAAE,CACzB,CAAC;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAkB,IAAI,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACxD,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI;YACjC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAA,gBAAM,GAAE,CAAC,CAAC,CAAC,IAAI;SAC3C,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAClD;YACE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI;SAClC,EACD,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;CACF,CAAA;AA7CY,kFAAmC;8CAAnC,mCAAmC;IAD/C,IAAA,mBAAU,GAAE;qCAO8B,oCAAoB;QACxB,8BAAgB;GAP1C,mCAAmC,CA6C/C"}
@@ -0,0 +1,10 @@
1
+ import { RootProcessorService } from '../../../workflow-processor';
2
+ import { RunPipelineTask } from '@loopstack/shared/dist/schemas/startup.schema';
3
+ import { PipelineService } from '../../../persistence';
4
+ export declare class RunPipelineTaskProcessorService {
5
+ private readonly pipelineService;
6
+ private readonly rootProcessorService;
7
+ private readonly logger;
8
+ constructor(pipelineService: PipelineService, rootProcessorService: RootProcessorService);
9
+ process(task: RunPipelineTask): Promise<void>;
10
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var RunPipelineTaskProcessorService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.RunPipelineTaskProcessorService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const workflow_processor_1 = require("../../../workflow-processor");
16
+ const persistence_1 = require("../../../persistence");
17
+ let RunPipelineTaskProcessorService = RunPipelineTaskProcessorService_1 = class RunPipelineTaskProcessorService {
18
+ pipelineService;
19
+ rootProcessorService;
20
+ logger = new common_1.Logger(RunPipelineTaskProcessorService_1.name);
21
+ constructor(pipelineService, rootProcessorService) {
22
+ this.pipelineService = pipelineService;
23
+ this.rootProcessorService = rootProcessorService;
24
+ }
25
+ async process(task) {
26
+ const pipeline = await this.pipelineService.getPipeline(task.payload.id, task.user, ['workspace']);
27
+ if (!pipeline) {
28
+ throw new Error(`Pipeline with id ${task.payload.id} not found.`);
29
+ }
30
+ this.logger.debug(`Pipeline for schedule task created with id ${pipeline.id}`);
31
+ await this.rootProcessorService.runPipeline(pipeline, task.payload);
32
+ }
33
+ };
34
+ exports.RunPipelineTaskProcessorService = RunPipelineTaskProcessorService;
35
+ exports.RunPipelineTaskProcessorService = RunPipelineTaskProcessorService = RunPipelineTaskProcessorService_1 = __decorate([
36
+ (0, common_1.Injectable)(),
37
+ __metadata("design:paramtypes", [persistence_1.PipelineService,
38
+ workflow_processor_1.RootProcessorService])
39
+ ], RunPipelineTaskProcessorService);
40
+ //# sourceMappingURL=run-pipeline-task-processor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-pipeline-task-processor.service.js","sourceRoot":"","sources":["../../../../../src/modules/scheduler/services/task-processor/run-pipeline-task-processor.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,oEAEqC;AAErC,sDAAuD;AAGhD,IAAM,+BAA+B,uCAArC,MAAM,+BAA+B;IAIvB;IACA;IAJF,MAAM,GAAG,IAAI,eAAM,CAAC,iCAA+B,CAAC,IAAI,CAAC,CAAC;IAE3E,YACmB,eAAgC,EAChC,oBAA0C;QAD1C,oBAAe,GAAf,eAAe,CAAiB;QAChC,yBAAoB,GAApB,oBAAoB,CAAsB;IAC1D,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,IAAqB;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CACrD,IAAI,CAAC,OAAO,CAAC,EAAE,EACf,IAAI,CAAC,IAAI,EACT,CAAC,WAAW,CAAC,CACd,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8CAA8C,QAAQ,CAAC,EAAE,EAAE,CAC5D,CAAC;QAEF,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CACzC,QAAQ,EACR,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;CACF,CAAA;AA5BY,0EAA+B;0CAA/B,+BAA+B;IAD3C,IAAA,mBAAU,GAAE;qCAKyB,6BAAe;QACV,yCAAoB;GALlD,+BAA+B,CA4B3C"}
@@ -0,0 +1,25 @@
1
+ import { WorkerHost } from '@nestjs/bullmq';
2
+ import { Job } from 'bullmq';
3
+ import { ScheduledTask } from '@loopstack/shared';
4
+ import { RunPipelineTaskProcessorService } from './task-processor/run-pipeline-task-processor.service';
5
+ import { CleanupPipelineTaskProcessorService } from './task-processor/cleanup-pipeline-task-processor.service';
6
+ import { CreateWorkspaceTaskProcessorService } from './task-processor/create-workspace-task-processor.service';
7
+ import { CreateRunPipelineTaskProcessorService } from './task-processor/create-run-pipeline-task-processor.service';
8
+ export declare class TaskProcessorService extends WorkerHost {
9
+ private readonly runPipelineTaskProcessorService;
10
+ private readonly createRunPipelineTaskProcessorService;
11
+ private readonly cleanupPipelineTaskProcessorService;
12
+ private readonly createWorkspaceTaskProcessorService;
13
+ private readonly logger;
14
+ constructor(runPipelineTaskProcessorService: RunPipelineTaskProcessorService, createRunPipelineTaskProcessorService: CreateRunPipelineTaskProcessorService, cleanupPipelineTaskProcessorService: CleanupPipelineTaskProcessorService, createWorkspaceTaskProcessorService: CreateWorkspaceTaskProcessorService);
15
+ handleStartWorker(): Promise<void>;
16
+ process(job: Job<ScheduledTask>): Promise<{
17
+ success: boolean;
18
+ taskId: string;
19
+ completedAt: Date;
20
+ }>;
21
+ onCompleted(job: Job): void;
22
+ onFailed(job: Job | undefined, err: Error): void;
23
+ onActive(job: Job): void;
24
+ onStalled(jobId: string): void;
25
+ }