@ajna-inc/workflow 0.5.17
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/build/WorkflowEvents.d.ts +35 -0
- package/build/WorkflowEvents.js +10 -0
- package/build/WorkflowEvents.js.map +1 -0
- package/build/WorkflowModule.d.ts +13 -0
- package/build/WorkflowModule.js +459 -0
- package/build/WorkflowModule.js.map +1 -0
- package/build/WorkflowModuleConfig.d.ts +33 -0
- package/build/WorkflowModuleConfig.js +18 -0
- package/build/WorkflowModuleConfig.js.map +1 -0
- package/build/actions/ActionRegistry.d.ts +35 -0
- package/build/actions/ActionRegistry.js +193 -0
- package/build/actions/ActionRegistry.js.map +1 -0
- package/build/api/WorkflowApi.d.ts +57 -0
- package/build/api/WorkflowApi.js +50 -0
- package/build/api/WorkflowApi.js.map +1 -0
- package/build/engine/AttributePlanner.d.ts +7 -0
- package/build/engine/AttributePlanner.js +81 -0
- package/build/engine/AttributePlanner.js.map +1 -0
- package/build/engine/GuardEvaluator.d.ts +11 -0
- package/build/engine/GuardEvaluator.js +40 -0
- package/build/engine/GuardEvaluator.js.map +1 -0
- package/build/index.d.ts +45 -0
- package/build/index.js +69 -0
- package/build/index.js.map +1 -0
- package/build/model/TemplateValidation.d.ts +3 -0
- package/build/model/TemplateValidation.js +231 -0
- package/build/model/TemplateValidation.js.map +1 -0
- package/build/model/types.d.ts +116 -0
- package/build/model/types.js +15 -0
- package/build/model/types.js.map +1 -0
- package/build/protocol/WorkflowMessageTypes.d.ts +15 -0
- package/build/protocol/WorkflowMessageTypes.js +22 -0
- package/build/protocol/WorkflowMessageTypes.js.map +1 -0
- package/build/protocol/handlers/AdvanceHandler.d.ts +12 -0
- package/build/protocol/handlers/AdvanceHandler.js +113 -0
- package/build/protocol/handlers/AdvanceHandler.js.map +1 -0
- package/build/protocol/handlers/CancelHandler.d.ts +12 -0
- package/build/protocol/handlers/CancelHandler.js +116 -0
- package/build/protocol/handlers/CancelHandler.js.map +1 -0
- package/build/protocol/handlers/CompleteHandler.d.ts +12 -0
- package/build/protocol/handlers/CompleteHandler.js +117 -0
- package/build/protocol/handlers/CompleteHandler.js.map +1 -0
- package/build/protocol/handlers/DiscoverHandler.d.ts +11 -0
- package/build/protocol/handlers/DiscoverHandler.js +71 -0
- package/build/protocol/handlers/DiscoverHandler.js.map +1 -0
- package/build/protocol/handlers/FetchTemplateHandler.d.ts +12 -0
- package/build/protocol/handlers/FetchTemplateHandler.js +71 -0
- package/build/protocol/handlers/FetchTemplateHandler.js.map +1 -0
- package/build/protocol/handlers/PauseHandler.d.ts +12 -0
- package/build/protocol/handlers/PauseHandler.js +116 -0
- package/build/protocol/handlers/PauseHandler.js.map +1 -0
- package/build/protocol/handlers/ProblemReportHandler.d.ts +6 -0
- package/build/protocol/handlers/ProblemReportHandler.js +28 -0
- package/build/protocol/handlers/ProblemReportHandler.js.map +1 -0
- package/build/protocol/handlers/PublishTemplateHandler.d.ts +11 -0
- package/build/protocol/handlers/PublishTemplateHandler.js +53 -0
- package/build/protocol/handlers/PublishTemplateHandler.js.map +1 -0
- package/build/protocol/handlers/ResumeHandler.d.ts +12 -0
- package/build/protocol/handlers/ResumeHandler.js +116 -0
- package/build/protocol/handlers/ResumeHandler.js.map +1 -0
- package/build/protocol/handlers/StartHandler.d.ts +12 -0
- package/build/protocol/handlers/StartHandler.js +211 -0
- package/build/protocol/handlers/StartHandler.js.map +1 -0
- package/build/protocol/handlers/StatusHandler.d.ts +12 -0
- package/build/protocol/handlers/StatusHandler.js +100 -0
- package/build/protocol/handlers/StatusHandler.js.map +1 -0
- package/build/protocol/handlers/TemplateHandler.d.ts +9 -0
- package/build/protocol/handlers/TemplateHandler.js +43 -0
- package/build/protocol/handlers/TemplateHandler.js.map +1 -0
- package/build/protocol/messages/AdvanceMessage.d.ts +15 -0
- package/build/protocol/messages/AdvanceMessage.js +33 -0
- package/build/protocol/messages/AdvanceMessage.js.map +1 -0
- package/build/protocol/messages/CancelMessage.d.ts +14 -0
- package/build/protocol/messages/CancelMessage.js +33 -0
- package/build/protocol/messages/CancelMessage.js.map +1 -0
- package/build/protocol/messages/CompleteMessage.d.ts +14 -0
- package/build/protocol/messages/CompleteMessage.js +33 -0
- package/build/protocol/messages/CompleteMessage.js.map +1 -0
- package/build/protocol/messages/DiscoverMessage.d.ts +23 -0
- package/build/protocol/messages/DiscoverMessage.js +33 -0
- package/build/protocol/messages/DiscoverMessage.js.map +1 -0
- package/build/protocol/messages/FetchTemplateMessage.d.ts +15 -0
- package/build/protocol/messages/FetchTemplateMessage.js +33 -0
- package/build/protocol/messages/FetchTemplateMessage.js.map +1 -0
- package/build/protocol/messages/PauseMessage.d.ts +14 -0
- package/build/protocol/messages/PauseMessage.js +33 -0
- package/build/protocol/messages/PauseMessage.js.map +1 -0
- package/build/protocol/messages/ProblemReportMessage.d.ts +15 -0
- package/build/protocol/messages/ProblemReportMessage.js +33 -0
- package/build/protocol/messages/ProblemReportMessage.js.map +1 -0
- package/build/protocol/messages/PublishTemplateMessage.d.ts +17 -0
- package/build/protocol/messages/PublishTemplateMessage.js +31 -0
- package/build/protocol/messages/PublishTemplateMessage.js.map +1 -0
- package/build/protocol/messages/ResumeMessage.d.ts +14 -0
- package/build/protocol/messages/ResumeMessage.js +33 -0
- package/build/protocol/messages/ResumeMessage.js.map +1 -0
- package/build/protocol/messages/StartMessage.d.ts +21 -0
- package/build/protocol/messages/StartMessage.js +33 -0
- package/build/protocol/messages/StartMessage.js.map +1 -0
- package/build/protocol/messages/StatusMessage.d.ts +23 -0
- package/build/protocol/messages/StatusMessage.js +33 -0
- package/build/protocol/messages/StatusMessage.js.map +1 -0
- package/build/protocol/messages/StatusRequestMessage.d.ts +15 -0
- package/build/protocol/messages/StatusRequestMessage.js +33 -0
- package/build/protocol/messages/StatusRequestMessage.js.map +1 -0
- package/build/protocol/messages/TemplateMessage.d.ts +14 -0
- package/build/protocol/messages/TemplateMessage.js +33 -0
- package/build/protocol/messages/TemplateMessage.js.map +1 -0
- package/build/protocol/messages/WorkflowsMessage.d.ts +22 -0
- package/build/protocol/messages/WorkflowsMessage.js +33 -0
- package/build/protocol/messages/WorkflowsMessage.js.map +1 -0
- package/build/queue/CommandQueue.d.ts +17 -0
- package/build/queue/CommandQueue.js +8 -0
- package/build/queue/CommandQueue.js.map +1 -0
- package/build/queue/PersistentCommandQueue.d.ts +50 -0
- package/build/queue/PersistentCommandQueue.js +265 -0
- package/build/queue/PersistentCommandQueue.js.map +1 -0
- package/build/repository/WorkflowCommandRecord.d.ts +44 -0
- package/build/repository/WorkflowCommandRecord.js +38 -0
- package/build/repository/WorkflowCommandRecord.js.map +1 -0
- package/build/repository/WorkflowCommandRepository.d.ts +51 -0
- package/build/repository/WorkflowCommandRepository.js +135 -0
- package/build/repository/WorkflowCommandRepository.js.map +1 -0
- package/build/repository/WorkflowInstanceRecord.d.ts +61 -0
- package/build/repository/WorkflowInstanceRecord.js +43 -0
- package/build/repository/WorkflowInstanceRecord.js.map +1 -0
- package/build/repository/WorkflowInstanceRepository.d.ts +10 -0
- package/build/repository/WorkflowInstanceRepository.js +52 -0
- package/build/repository/WorkflowInstanceRepository.js.map +1 -0
- package/build/repository/WorkflowTemplateRecord.d.ts +23 -0
- package/build/repository/WorkflowTemplateRecord.js +28 -0
- package/build/repository/WorkflowTemplateRecord.js.map +1 -0
- package/build/repository/WorkflowTemplateRepository.d.ts +6 -0
- package/build/repository/WorkflowTemplateRepository.js +56 -0
- package/build/repository/WorkflowTemplateRepository.js.map +1 -0
- package/build/services/WorkflowService.d.ts +75 -0
- package/build/services/WorkflowService.js +566 -0
- package/build/services/WorkflowService.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
2
|
+
import { Repository, StorageService, EventEmitter } from '@credo-ts/core';
|
|
3
|
+
import { WorkflowCommandRecord } from './WorkflowCommandRecord';
|
|
4
|
+
export declare class WorkflowCommandRepository extends Repository<WorkflowCommandRecord> {
|
|
5
|
+
constructor(storageService: StorageService<WorkflowCommandRecord>, eventEmitter: EventEmitter);
|
|
6
|
+
/**
|
|
7
|
+
* Find pending commands (status='pending'), ordered by creation time
|
|
8
|
+
*/
|
|
9
|
+
findPending(agentContext: AgentContext, limit?: number): Promise<WorkflowCommandRecord[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Find commands stuck in 'processing' state longer than timeoutMs
|
|
12
|
+
*/
|
|
13
|
+
findStale(agentContext: AgentContext, timeoutMs: number): Promise<WorkflowCommandRecord[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Find command by thid (thread ID / instance ID)
|
|
16
|
+
*/
|
|
17
|
+
findByThid(agentContext: AgentContext, thid: string): Promise<WorkflowCommandRecord[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Mark command as processing
|
|
20
|
+
*/
|
|
21
|
+
markProcessing(agentContext: AgentContext, record: WorkflowCommandRecord): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Mark command as completed
|
|
24
|
+
*/
|
|
25
|
+
markCompleted(agentContext: AgentContext, record: WorkflowCommandRecord): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Mark command as failed
|
|
28
|
+
*/
|
|
29
|
+
markFailed(agentContext: AgentContext, record: WorkflowCommandRecord, error: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Delete completed commands older than given date
|
|
32
|
+
*/
|
|
33
|
+
deleteCompleted(agentContext: AgentContext, olderThan: Date): Promise<number>;
|
|
34
|
+
/**
|
|
35
|
+
* Delete failed commands older than given date
|
|
36
|
+
*/
|
|
37
|
+
deleteFailed(agentContext: AgentContext, olderThan: Date): Promise<number>;
|
|
38
|
+
/**
|
|
39
|
+
* Reset stale command to pending for retry
|
|
40
|
+
*/
|
|
41
|
+
resetToPending(agentContext: AgentContext, record: WorkflowCommandRecord): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Get queue metrics
|
|
44
|
+
*/
|
|
45
|
+
getMetrics(agentContext: AgentContext): Promise<{
|
|
46
|
+
pending: number;
|
|
47
|
+
processing: number;
|
|
48
|
+
completed: number;
|
|
49
|
+
failed: number;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.WorkflowCommandRepository = void 0;
|
|
16
|
+
const core_1 = require("@credo-ts/core");
|
|
17
|
+
const WorkflowCommandRecord_1 = require("./WorkflowCommandRecord");
|
|
18
|
+
let WorkflowCommandRepository = class WorkflowCommandRepository extends core_1.Repository {
|
|
19
|
+
constructor(storageService, eventEmitter) {
|
|
20
|
+
super(WorkflowCommandRecord_1.WorkflowCommandRecord, storageService, eventEmitter);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Find pending commands (status='pending'), ordered by creation time
|
|
24
|
+
*/
|
|
25
|
+
async findPending(agentContext, limit = 10) {
|
|
26
|
+
const records = await this.findByQuery(agentContext, { status: 'pending' });
|
|
27
|
+
// Sort by createdAt ascending (oldest first)
|
|
28
|
+
records.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
|
|
29
|
+
return records.slice(0, limit);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Find commands stuck in 'processing' state longer than timeoutMs
|
|
33
|
+
*/
|
|
34
|
+
async findStale(agentContext, timeoutMs) {
|
|
35
|
+
const records = await this.findByQuery(agentContext, { status: 'processing' });
|
|
36
|
+
const cutoff = new Date(Date.now() - timeoutMs);
|
|
37
|
+
return records.filter((r) => {
|
|
38
|
+
if (!r.lastAttemptAt)
|
|
39
|
+
return true; // No attempt time = stale
|
|
40
|
+
return r.lastAttemptAt < cutoff;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Find command by thid (thread ID / instance ID)
|
|
45
|
+
*/
|
|
46
|
+
async findByThid(agentContext, thid) {
|
|
47
|
+
return this.findByQuery(agentContext, { thid });
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Mark command as processing
|
|
51
|
+
*/
|
|
52
|
+
async markProcessing(agentContext, record) {
|
|
53
|
+
record.status = 'processing';
|
|
54
|
+
record.attempts++;
|
|
55
|
+
record.lastAttemptAt = new Date();
|
|
56
|
+
await this.update(agentContext, record);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Mark command as completed
|
|
60
|
+
*/
|
|
61
|
+
async markCompleted(agentContext, record) {
|
|
62
|
+
record.status = 'completed';
|
|
63
|
+
record.completedAt = new Date();
|
|
64
|
+
await this.update(agentContext, record);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Mark command as failed
|
|
68
|
+
*/
|
|
69
|
+
async markFailed(agentContext, record, error) {
|
|
70
|
+
record.status = 'failed';
|
|
71
|
+
record.error = error;
|
|
72
|
+
record.completedAt = new Date();
|
|
73
|
+
await this.update(agentContext, record);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Delete completed commands older than given date
|
|
77
|
+
*/
|
|
78
|
+
async deleteCompleted(agentContext, olderThan) {
|
|
79
|
+
const completed = await this.findByQuery(agentContext, { status: 'completed' });
|
|
80
|
+
let deleted = 0;
|
|
81
|
+
for (const record of completed) {
|
|
82
|
+
if (record.completedAt && record.completedAt < olderThan) {
|
|
83
|
+
await this.delete(agentContext, record);
|
|
84
|
+
deleted++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return deleted;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Delete failed commands older than given date
|
|
91
|
+
*/
|
|
92
|
+
async deleteFailed(agentContext, olderThan) {
|
|
93
|
+
const failed = await this.findByQuery(agentContext, { status: 'failed' });
|
|
94
|
+
let deleted = 0;
|
|
95
|
+
for (const record of failed) {
|
|
96
|
+
if (record.completedAt && record.completedAt < olderThan) {
|
|
97
|
+
await this.delete(agentContext, record);
|
|
98
|
+
deleted++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return deleted;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Reset stale command to pending for retry
|
|
105
|
+
*/
|
|
106
|
+
async resetToPending(agentContext, record) {
|
|
107
|
+
record.status = 'pending';
|
|
108
|
+
record.lastAttemptAt = undefined;
|
|
109
|
+
await this.update(agentContext, record);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get queue metrics
|
|
113
|
+
*/
|
|
114
|
+
async getMetrics(agentContext) {
|
|
115
|
+
const [pending, processing, completed, failed] = await Promise.all([
|
|
116
|
+
this.findByQuery(agentContext, { status: 'pending' }),
|
|
117
|
+
this.findByQuery(agentContext, { status: 'processing' }),
|
|
118
|
+
this.findByQuery(agentContext, { status: 'completed' }),
|
|
119
|
+
this.findByQuery(agentContext, { status: 'failed' }),
|
|
120
|
+
]);
|
|
121
|
+
return {
|
|
122
|
+
pending: pending.length,
|
|
123
|
+
processing: processing.length,
|
|
124
|
+
completed: completed.length,
|
|
125
|
+
failed: failed.length,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
exports.WorkflowCommandRepository = WorkflowCommandRepository;
|
|
130
|
+
exports.WorkflowCommandRepository = WorkflowCommandRepository = __decorate([
|
|
131
|
+
(0, core_1.injectable)(),
|
|
132
|
+
__param(0, (0, core_1.inject)(core_1.InjectionSymbols.StorageService)),
|
|
133
|
+
__metadata("design:paramtypes", [Object, core_1.EventEmitter])
|
|
134
|
+
], WorkflowCommandRepository);
|
|
135
|
+
//# sourceMappingURL=WorkflowCommandRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowCommandRepository.js","sourceRoot":"","sources":["../../src/repository/WorkflowCommandRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,yCAA+G;AAE/G,mEAA+D;AAGxD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,iBAAiC;IAC9E,YAC2C,cAAqD,EAC9F,YAA0B;QAE1B,KAAK,CAAC,6CAAqB,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;IAC5D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,YAA0B,EAAE,KAAK,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3E,6CAA6C;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;QACrE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,YAA0B,EAAE,SAAiB;QAClE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;QAC9E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;QAE/C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,CAAC,CAAC,aAAa;gBAAE,OAAO,IAAI,CAAA,CAAC,0BAA0B;YAC5D,OAAO,CAAC,CAAC,aAAa,GAAG,MAAM,CAAA;QACjC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,YAA0B,EAAE,IAAY;QAC9D,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,YAA0B,EAAE,MAA6B;QACnF,MAAM,CAAC,MAAM,GAAG,YAAY,CAAA;QAC5B,MAAM,CAAC,QAAQ,EAAE,CAAA;QACjB,MAAM,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAA;QACjC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,YAA0B,EAAE,MAA6B;QAClF,MAAM,CAAC,MAAM,GAAG,WAAW,CAAA;QAC3B,MAAM,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,YAA0B,EAC1B,MAA6B,EAC7B,KAAa;QAEb,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAA;QACxB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,MAAM,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,YAA0B,EAAE,SAAe;QACtE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QAC/E,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,CAAC;gBACzD,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;gBACvC,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,YAA0B,EAAE,SAAe;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACzE,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,CAAC;gBACzD,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;gBACvC,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,YAA0B,EAAE,MAA6B;QACnF,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,MAAM,CAAC,aAAa,GAAG,SAAS,CAAA;QAChC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,YAA0B;QAMhD,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;SACrD,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAA;IACH,CAAC;CACF,CAAA;AAzIY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,iBAAU,GAAE;IAGR,WAAA,IAAA,aAAM,EAAC,uBAAgB,CAAC,cAAc,CAAC,CAAA;6CAC1B,mBAAY;GAHjB,yBAAyB,CAyIrC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { InstanceHistoryItem, Participants } from '../model/types';
|
|
2
|
+
import type { TagsBase } from '@credo-ts/core';
|
|
3
|
+
import { BaseRecord } from '@credo-ts/core';
|
|
4
|
+
export type WorkflowInstanceStatus = 'active' | 'paused' | 'canceled' | 'completed' | 'error';
|
|
5
|
+
export interface WorkflowInstanceRecordProps {
|
|
6
|
+
id?: string;
|
|
7
|
+
createdAt?: Date;
|
|
8
|
+
instanceId: string;
|
|
9
|
+
templateId: string;
|
|
10
|
+
templateVersion: string;
|
|
11
|
+
connectionId?: string;
|
|
12
|
+
participants: Participants;
|
|
13
|
+
state: string;
|
|
14
|
+
section?: string;
|
|
15
|
+
context: Record<string, unknown>;
|
|
16
|
+
artifacts: Record<string, unknown>;
|
|
17
|
+
status: WorkflowInstanceStatus;
|
|
18
|
+
history: InstanceHistoryItem[];
|
|
19
|
+
multiplicityKeyValue?: string;
|
|
20
|
+
idempotencyKeys?: string[];
|
|
21
|
+
idempotency?: Array<{
|
|
22
|
+
key: string;
|
|
23
|
+
event: string;
|
|
24
|
+
to: string;
|
|
25
|
+
actionKey?: string;
|
|
26
|
+
}>;
|
|
27
|
+
tags?: TagsBase;
|
|
28
|
+
}
|
|
29
|
+
export type DefaultWorkflowInstanceTags = {
|
|
30
|
+
instanceId: string;
|
|
31
|
+
templateId: string;
|
|
32
|
+
templateVersion: string;
|
|
33
|
+
connectionId?: string;
|
|
34
|
+
state: string;
|
|
35
|
+
multiplicityKeyValue?: string;
|
|
36
|
+
};
|
|
37
|
+
export declare class WorkflowInstanceRecord extends BaseRecord<DefaultWorkflowInstanceTags, TagsBase> implements WorkflowInstanceRecordProps {
|
|
38
|
+
instanceId: string;
|
|
39
|
+
templateId: string;
|
|
40
|
+
templateVersion: string;
|
|
41
|
+
connectionId?: string;
|
|
42
|
+
participants: Participants;
|
|
43
|
+
state: string;
|
|
44
|
+
section?: string;
|
|
45
|
+
context: Record<string, unknown>;
|
|
46
|
+
artifacts: Record<string, unknown>;
|
|
47
|
+
status: WorkflowInstanceStatus;
|
|
48
|
+
history: InstanceHistoryItem[];
|
|
49
|
+
multiplicityKeyValue?: string;
|
|
50
|
+
idempotencyKeys?: string[];
|
|
51
|
+
idempotency?: Array<{
|
|
52
|
+
key: string;
|
|
53
|
+
event: string;
|
|
54
|
+
to: string;
|
|
55
|
+
actionKey?: string;
|
|
56
|
+
}>;
|
|
57
|
+
static readonly type = "WorkflowInstanceRecord";
|
|
58
|
+
readonly type = "WorkflowInstanceRecord";
|
|
59
|
+
constructor(props: WorkflowInstanceRecordProps);
|
|
60
|
+
getTags(): DefaultWorkflowInstanceTags;
|
|
61
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowInstanceRecord = void 0;
|
|
4
|
+
const core_1 = require("@credo-ts/core");
|
|
5
|
+
class WorkflowInstanceRecord extends core_1.BaseRecord {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super();
|
|
8
|
+
this.type = WorkflowInstanceRecord.type;
|
|
9
|
+
if (props) {
|
|
10
|
+
this.id = props.id ?? props.instanceId ?? core_1.utils.uuid();
|
|
11
|
+
this.createdAt = props.createdAt ?? new Date();
|
|
12
|
+
this.instanceId = props.instanceId;
|
|
13
|
+
this.templateId = props.templateId;
|
|
14
|
+
this.templateVersion = props.templateVersion;
|
|
15
|
+
this.connectionId = props.connectionId;
|
|
16
|
+
this.participants = props.participants;
|
|
17
|
+
this.state = props.state;
|
|
18
|
+
this.section = props.section;
|
|
19
|
+
this.context = props.context ?? {};
|
|
20
|
+
this.artifacts = props.artifacts ?? {};
|
|
21
|
+
this.status = props.status;
|
|
22
|
+
this.history = props.history ?? [];
|
|
23
|
+
this.multiplicityKeyValue = props.multiplicityKeyValue;
|
|
24
|
+
this.idempotencyKeys = props.idempotencyKeys ?? [];
|
|
25
|
+
this.idempotency = props.idempotency ?? [];
|
|
26
|
+
this._tags = props.tags ?? {};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
getTags() {
|
|
30
|
+
return {
|
|
31
|
+
...this._tags,
|
|
32
|
+
instanceId: this.instanceId,
|
|
33
|
+
templateId: this.templateId,
|
|
34
|
+
templateVersion: this.templateVersion,
|
|
35
|
+
connectionId: this.connectionId,
|
|
36
|
+
state: this.state,
|
|
37
|
+
multiplicityKeyValue: this.multiplicityKeyValue,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.WorkflowInstanceRecord = WorkflowInstanceRecord;
|
|
42
|
+
WorkflowInstanceRecord.type = 'WorkflowInstanceRecord';
|
|
43
|
+
//# sourceMappingURL=WorkflowInstanceRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowInstanceRecord.js","sourceRoot":"","sources":["../../src/repository/WorkflowInstanceRecord.ts"],"names":[],"mappings":";;;AAGA,yCAAkD;AAiClD,MAAa,sBACX,SAAQ,iBAAiD;IAqBzD,YAAmB,KAAkC;QACnD,KAAK,EAAE,CAAA;QAHO,SAAI,GAAG,sBAAsB,CAAC,IAAI,CAAA;QAIhD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU,IAAI,YAAK,CAAC,IAAI,EAAE,CAAA;YACtD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAA;YAC9C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;YAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;YAClC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;YAC5C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;YACtC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;YACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;YAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;YAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;YACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;YAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAA;YACtD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,EAAE,CAAA;YAClD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;YAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/B,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO;YACL,GAAG,IAAI,CAAC,KAAK;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAChD,CAAA;IACH,CAAC;;AAvDH,wDAwDC;AArCwB,2BAAI,GAAG,wBAAwB,AAA3B,CAA2B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AgentContext, EventEmitter, Repository, StorageService } from '@credo-ts/core';
|
|
2
|
+
import { WorkflowInstanceRecord } from './WorkflowInstanceRecord';
|
|
3
|
+
export declare class WorkflowInstanceRepository extends Repository<WorkflowInstanceRecord> {
|
|
4
|
+
constructor(storageService: StorageService<WorkflowInstanceRecord>, eventEmitter: EventEmitter);
|
|
5
|
+
findByTemplateAndConnection(agentContext: AgentContext, templateId: string, connectionId?: string): Promise<WorkflowInstanceRecord[]>;
|
|
6
|
+
findByTemplateConnAndMultiplicity(agentContext: AgentContext, templateId: string, connectionId: string | undefined, multiplicityKeyValue: string): Promise<WorkflowInstanceRecord[]>;
|
|
7
|
+
findByConnection(agentContext: AgentContext, connectionId: string): Promise<WorkflowInstanceRecord[]>;
|
|
8
|
+
findLatestByConnection(agentContext: AgentContext, connectionId: string): Promise<WorkflowInstanceRecord | null>;
|
|
9
|
+
getByInstanceId(agentContext: AgentContext, instanceId: string): Promise<WorkflowInstanceRecord | null>;
|
|
10
|
+
}
|
|
@@ -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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.WorkflowInstanceRepository = void 0;
|
|
16
|
+
const core_1 = require("@credo-ts/core");
|
|
17
|
+
const WorkflowInstanceRecord_1 = require("./WorkflowInstanceRecord");
|
|
18
|
+
let WorkflowInstanceRepository = class WorkflowInstanceRepository extends core_1.Repository {
|
|
19
|
+
constructor(storageService, eventEmitter) {
|
|
20
|
+
super(WorkflowInstanceRecord_1.WorkflowInstanceRecord, storageService, eventEmitter);
|
|
21
|
+
}
|
|
22
|
+
async findByTemplateAndConnection(agentContext, templateId, connectionId) {
|
|
23
|
+
return this.findByQuery(agentContext, { templateId, ...(connectionId ? { connectionId } : {}) });
|
|
24
|
+
}
|
|
25
|
+
async findByTemplateConnAndMultiplicity(agentContext, templateId, connectionId, multiplicityKeyValue) {
|
|
26
|
+
return this.findByQuery(agentContext, {
|
|
27
|
+
templateId,
|
|
28
|
+
...(connectionId ? { connectionId } : {}),
|
|
29
|
+
multiplicityKeyValue,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByConnection(agentContext, connectionId) {
|
|
33
|
+
return this.findByQuery(agentContext, { connectionId });
|
|
34
|
+
}
|
|
35
|
+
async findLatestByConnection(agentContext, connectionId) {
|
|
36
|
+
const list = await this.findByConnection(agentContext, connectionId);
|
|
37
|
+
if (!list?.length)
|
|
38
|
+
return null;
|
|
39
|
+
return list.sort((a, b) => (b.updatedAt?.getTime?.() || b.createdAt?.getTime?.() || 0) -
|
|
40
|
+
(a.updatedAt?.getTime?.() || a.createdAt?.getTime?.() || 0))[0];
|
|
41
|
+
}
|
|
42
|
+
async getByInstanceId(agentContext, instanceId) {
|
|
43
|
+
return this.findSingleByQuery(agentContext, { instanceId });
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.WorkflowInstanceRepository = WorkflowInstanceRepository;
|
|
47
|
+
exports.WorkflowInstanceRepository = WorkflowInstanceRepository = __decorate([
|
|
48
|
+
(0, core_1.injectable)(),
|
|
49
|
+
__param(0, (0, core_1.inject)(core_1.InjectionSymbols.StorageService)),
|
|
50
|
+
__metadata("design:paramtypes", [Object, core_1.EventEmitter])
|
|
51
|
+
], WorkflowInstanceRepository);
|
|
52
|
+
//# sourceMappingURL=WorkflowInstanceRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowInstanceRepository.js","sourceRoot":"","sources":["../../src/repository/WorkflowInstanceRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAQuB;AAEvB,qEAAiE;AAG1D,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,iBAAkC;IAChF,YAC2C,cAAsD,EAC/F,YAA0B;QAE1B,KAAK,CAAC,+CAAsB,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;IAC7D,CAAC;IAEM,KAAK,CAAC,2BAA2B,CAAC,YAA0B,EAAE,UAAkB,EAAE,YAAqB;QAC5G,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAClG,CAAC;IAEM,KAAK,CAAC,iCAAiC,CAC5C,YAA0B,EAC1B,UAAkB,EAClB,YAAgC,EAChC,oBAA4B;QAE5B,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;YACpC,UAAU;YACV,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,oBAAoB;SACrB,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,YAA0B,EAAE,YAAoB;QAC5E,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;IACzD,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,YAA0B,EAAE,YAAoB;QAClF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACpE,IAAI,CAAC,IAAI,EAAE,MAAM;YAAE,OAAO,IAAI,CAAA;QAC9B,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAC9D,CAAC,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,YAA0B,EAAE,UAAkB;QACzE,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IAC7D,CAAC;CACF,CAAA;AA1CY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,iBAAU,GAAE;IAGR,WAAA,IAAA,aAAM,EAAC,uBAAgB,CAAC,cAAc,CAAC,CAAA;6CAC1B,mBAAY;GAHjB,0BAA0B,CA0CtC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WorkflowTemplate } from '../model/types';
|
|
2
|
+
import type { TagsBase } from '@credo-ts/core';
|
|
3
|
+
import { BaseRecord } from '@credo-ts/core';
|
|
4
|
+
export interface WorkflowTemplateRecordProps {
|
|
5
|
+
id?: string;
|
|
6
|
+
createdAt?: Date;
|
|
7
|
+
template: WorkflowTemplate;
|
|
8
|
+
hash?: string;
|
|
9
|
+
tags?: TagsBase;
|
|
10
|
+
}
|
|
11
|
+
export type DefaultWorkflowTemplateTags = {
|
|
12
|
+
templateId: string;
|
|
13
|
+
version: string;
|
|
14
|
+
hash?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare class WorkflowTemplateRecord extends BaseRecord<DefaultWorkflowTemplateTags, TagsBase> implements WorkflowTemplateRecordProps {
|
|
17
|
+
template: WorkflowTemplate;
|
|
18
|
+
hash?: string;
|
|
19
|
+
static readonly type = "WorkflowTemplateRecord";
|
|
20
|
+
readonly type = "WorkflowTemplateRecord";
|
|
21
|
+
constructor(props: WorkflowTemplateRecordProps);
|
|
22
|
+
getTags(): DefaultWorkflowTemplateTags;
|
|
23
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowTemplateRecord = void 0;
|
|
4
|
+
const core_1 = require("@credo-ts/core");
|
|
5
|
+
class WorkflowTemplateRecord extends core_1.BaseRecord {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super();
|
|
8
|
+
this.type = WorkflowTemplateRecord.type;
|
|
9
|
+
if (props) {
|
|
10
|
+
this.id = props.id ?? core_1.utils.uuid();
|
|
11
|
+
this.createdAt = props.createdAt ?? new Date();
|
|
12
|
+
this.template = props.template;
|
|
13
|
+
this.hash = props.hash;
|
|
14
|
+
this._tags = props.tags ?? {};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
getTags() {
|
|
18
|
+
return {
|
|
19
|
+
...this._tags,
|
|
20
|
+
templateId: this.template?.template_id,
|
|
21
|
+
version: this.template?.version,
|
|
22
|
+
hash: this.hash,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.WorkflowTemplateRecord = WorkflowTemplateRecord;
|
|
27
|
+
WorkflowTemplateRecord.type = 'WorkflowTemplateRecord';
|
|
28
|
+
//# sourceMappingURL=WorkflowTemplateRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowTemplateRecord.js","sourceRoot":"","sources":["../../src/repository/WorkflowTemplateRecord.ts"],"names":[],"mappings":";;;AAGA,yCAAkD;AAgBlD,MAAa,sBACX,SAAQ,iBAAiD;IASzD,YAAmB,KAAkC;QACnD,KAAK,EAAE,CAAA;QAHO,SAAI,GAAG,sBAAsB,CAAC,IAAI,CAAA;QAIhD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,YAAK,CAAC,IAAI,EAAE,CAAA;YAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAA;YAC9C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC9B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/B,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO;YACL,GAAG,IAAI,CAAC,KAAK;YACb,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW;YACtC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;IACH,CAAC;;AA5BH,wDA6BC;AAtBwB,2BAAI,GAAG,wBAAwB,AAA3B,CAA2B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AgentContext, EventEmitter, Repository, StorageService } from '@credo-ts/core';
|
|
2
|
+
import { WorkflowTemplateRecord } from './WorkflowTemplateRecord';
|
|
3
|
+
export declare class WorkflowTemplateRepository extends Repository<WorkflowTemplateRecord> {
|
|
4
|
+
constructor(storageService: StorageService<WorkflowTemplateRecord>, eventEmitter: EventEmitter);
|
|
5
|
+
findByTemplateIdAndVersion(agentContext: AgentContext, templateId: string, version?: string): Promise<WorkflowTemplateRecord | null>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.WorkflowTemplateRepository = void 0;
|
|
19
|
+
const core_1 = require("@credo-ts/core");
|
|
20
|
+
const WorkflowTemplateRecord_1 = require("./WorkflowTemplateRecord");
|
|
21
|
+
const semver_1 = __importDefault(require("semver"));
|
|
22
|
+
let WorkflowTemplateRepository = class WorkflowTemplateRepository extends core_1.Repository {
|
|
23
|
+
constructor(storageService, eventEmitter) {
|
|
24
|
+
super(WorkflowTemplateRecord_1.WorkflowTemplateRecord, storageService, eventEmitter);
|
|
25
|
+
}
|
|
26
|
+
async findByTemplateIdAndVersion(agentContext, templateId, version) {
|
|
27
|
+
const list = await this.findByQuery(agentContext, { templateId, ...(version ? { version } : {}) });
|
|
28
|
+
if (!list?.length)
|
|
29
|
+
return null;
|
|
30
|
+
if (version)
|
|
31
|
+
return list[0];
|
|
32
|
+
// choose highest by semver when possible, fall back to lexicographic
|
|
33
|
+
return list
|
|
34
|
+
.slice()
|
|
35
|
+
.sort((a, b) => {
|
|
36
|
+
const va = a.template.version || '';
|
|
37
|
+
const vb = b.template.version || '';
|
|
38
|
+
const sva = semver_1.default.valid(va);
|
|
39
|
+
const svb = semver_1.default.valid(vb);
|
|
40
|
+
if (sva && svb)
|
|
41
|
+
return semver_1.default.rcompare(va, vb);
|
|
42
|
+
if (sva && !svb)
|
|
43
|
+
return -1;
|
|
44
|
+
if (!sva && svb)
|
|
45
|
+
return 1;
|
|
46
|
+
return vb.localeCompare(va);
|
|
47
|
+
})[0];
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.WorkflowTemplateRepository = WorkflowTemplateRepository;
|
|
51
|
+
exports.WorkflowTemplateRepository = WorkflowTemplateRepository = __decorate([
|
|
52
|
+
(0, core_1.injectable)(),
|
|
53
|
+
__param(0, (0, core_1.inject)(core_1.InjectionSymbols.StorageService)),
|
|
54
|
+
__metadata("design:paramtypes", [Object, core_1.EventEmitter])
|
|
55
|
+
], WorkflowTemplateRepository);
|
|
56
|
+
//# sourceMappingURL=WorkflowTemplateRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowTemplateRepository.js","sourceRoot":"","sources":["../../src/repository/WorkflowTemplateRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAQuB;AAEvB,qEAAiE;AACjE,oDAA2B;AAGpB,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,iBAAkC;IAChF,YAC2C,cAAsD,EAC/F,YAA0B;QAE1B,KAAK,CAAC,+CAAsB,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;IAC7D,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,YAA0B,EAAE,UAAkB,EAAE,OAAgB;QACtG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAClG,IAAI,CAAC,IAAI,EAAE,MAAM;YAAE,OAAO,IAAI,CAAA;QAC9B,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,qEAAqE;QACrE,OAAO,IAAI;aACR,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;YACnC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;YACnC,MAAM,GAAG,GAAG,gBAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC5B,MAAM,GAAG,GAAG,gBAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC5B,IAAI,GAAG,IAAI,GAAG;gBAAE,OAAO,gBAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAC9C,IAAI,GAAG,IAAI,CAAC,GAAG;gBAAE,OAAO,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,GAAG,IAAI,GAAG;gBAAE,OAAO,CAAC,CAAA;YACzB,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACT,CAAC;CACF,CAAA;AA1BY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,iBAAU,GAAE;IAGR,WAAA,IAAA,aAAM,EAAC,uBAAgB,CAAC,cAAc,CAAC,CAAA;6CAC1B,mBAAY;GAHjB,0BAA0B,CA0BtC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Participants, WorkflowTemplate, UiItem } from '../model/types';
|
|
2
|
+
import { AgentConfig, AgentContext, EventEmitter } from '@credo-ts/core';
|
|
3
|
+
import { WorkflowModuleConfig } from '../WorkflowModuleConfig';
|
|
4
|
+
import { WorkflowInstanceRecord } from '../repository/WorkflowInstanceRecord';
|
|
5
|
+
import { WorkflowInstanceRepository } from '../repository/WorkflowInstanceRepository';
|
|
6
|
+
import { WorkflowTemplateRecord } from '../repository/WorkflowTemplateRecord';
|
|
7
|
+
import { WorkflowTemplateRepository } from '../repository/WorkflowTemplateRepository';
|
|
8
|
+
export declare class WorkflowService {
|
|
9
|
+
private readonly templateRepo;
|
|
10
|
+
private readonly instanceRepo;
|
|
11
|
+
private readonly config;
|
|
12
|
+
private readonly agentConfig;
|
|
13
|
+
private readonly eventEmitter?;
|
|
14
|
+
private readonly actions;
|
|
15
|
+
constructor(templateRepo: WorkflowTemplateRepository, instanceRepo: WorkflowInstanceRepository, config: WorkflowModuleConfig, agentConfig: AgentConfig, eventEmitter?: EventEmitter | undefined);
|
|
16
|
+
registerActions(actions: Array<{
|
|
17
|
+
typeUri: string;
|
|
18
|
+
execute: (...args: unknown[]) => Promise<unknown>;
|
|
19
|
+
}>): void;
|
|
20
|
+
publishTemplate(agentContext: AgentContext, template: WorkflowTemplate): Promise<WorkflowTemplateRecord>;
|
|
21
|
+
start(agentContext: AgentContext, opts: {
|
|
22
|
+
template_id: string;
|
|
23
|
+
template_version?: string;
|
|
24
|
+
instance_id?: string;
|
|
25
|
+
connection_id?: string;
|
|
26
|
+
participants?: Participants;
|
|
27
|
+
context?: Record<string, unknown>;
|
|
28
|
+
}): Promise<WorkflowInstanceRecord>;
|
|
29
|
+
advance(agentContext: AgentContext, opts: {
|
|
30
|
+
instance_id: string;
|
|
31
|
+
event: string;
|
|
32
|
+
idempotency_key?: string;
|
|
33
|
+
input?: Record<string, unknown>;
|
|
34
|
+
}, instanceRecord?: WorkflowInstanceRecord): Promise<WorkflowInstanceRecord>;
|
|
35
|
+
status(agentContext: AgentContext, opts: {
|
|
36
|
+
instance_id: string;
|
|
37
|
+
include_actions?: boolean;
|
|
38
|
+
include_ui?: boolean;
|
|
39
|
+
}, instanceRecord?: WorkflowInstanceRecord): Promise<{
|
|
40
|
+
instance_id: string;
|
|
41
|
+
state: string;
|
|
42
|
+
section?: string;
|
|
43
|
+
allowed_events: string[];
|
|
44
|
+
action_menu: Array<{
|
|
45
|
+
label?: string;
|
|
46
|
+
event: string;
|
|
47
|
+
}>;
|
|
48
|
+
artifacts: Record<string, unknown>;
|
|
49
|
+
ui?: UiItem[];
|
|
50
|
+
}>;
|
|
51
|
+
pause(agentContext: AgentContext, opts: {
|
|
52
|
+
instance_id: string;
|
|
53
|
+
reason?: string;
|
|
54
|
+
}, instanceRecord?: WorkflowInstanceRecord): Promise<WorkflowInstanceRecord>;
|
|
55
|
+
resume(agentContext: AgentContext, opts: {
|
|
56
|
+
instance_id: string;
|
|
57
|
+
reason?: string;
|
|
58
|
+
}, instanceRecord?: WorkflowInstanceRecord): Promise<WorkflowInstanceRecord>;
|
|
59
|
+
cancel(agentContext: AgentContext, opts: {
|
|
60
|
+
instance_id: string;
|
|
61
|
+
reason?: string;
|
|
62
|
+
}, instanceRecord?: WorkflowInstanceRecord): Promise<WorkflowInstanceRecord>;
|
|
63
|
+
complete(agentContext: AgentContext, opts: {
|
|
64
|
+
instance_id: string;
|
|
65
|
+
reason?: string;
|
|
66
|
+
}, instanceRecord?: WorkflowInstanceRecord): Promise<WorkflowInstanceRecord>;
|
|
67
|
+
autoAdvanceByConnection(agentContext: AgentContext, connectionId: string, event: string): Promise<void>;
|
|
68
|
+
private evalMultiplicity;
|
|
69
|
+
private toInstanceData;
|
|
70
|
+
private problem;
|
|
71
|
+
private getInstanceByIdOrTag;
|
|
72
|
+
private uuid;
|
|
73
|
+
private validateTemplate;
|
|
74
|
+
private sendCompleteMessage;
|
|
75
|
+
}
|