@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.
Files changed (139) hide show
  1. package/build/WorkflowEvents.d.ts +35 -0
  2. package/build/WorkflowEvents.js +10 -0
  3. package/build/WorkflowEvents.js.map +1 -0
  4. package/build/WorkflowModule.d.ts +13 -0
  5. package/build/WorkflowModule.js +459 -0
  6. package/build/WorkflowModule.js.map +1 -0
  7. package/build/WorkflowModuleConfig.d.ts +33 -0
  8. package/build/WorkflowModuleConfig.js +18 -0
  9. package/build/WorkflowModuleConfig.js.map +1 -0
  10. package/build/actions/ActionRegistry.d.ts +35 -0
  11. package/build/actions/ActionRegistry.js +193 -0
  12. package/build/actions/ActionRegistry.js.map +1 -0
  13. package/build/api/WorkflowApi.d.ts +57 -0
  14. package/build/api/WorkflowApi.js +50 -0
  15. package/build/api/WorkflowApi.js.map +1 -0
  16. package/build/engine/AttributePlanner.d.ts +7 -0
  17. package/build/engine/AttributePlanner.js +81 -0
  18. package/build/engine/AttributePlanner.js.map +1 -0
  19. package/build/engine/GuardEvaluator.d.ts +11 -0
  20. package/build/engine/GuardEvaluator.js +40 -0
  21. package/build/engine/GuardEvaluator.js.map +1 -0
  22. package/build/index.d.ts +45 -0
  23. package/build/index.js +69 -0
  24. package/build/index.js.map +1 -0
  25. package/build/model/TemplateValidation.d.ts +3 -0
  26. package/build/model/TemplateValidation.js +231 -0
  27. package/build/model/TemplateValidation.js.map +1 -0
  28. package/build/model/types.d.ts +116 -0
  29. package/build/model/types.js +15 -0
  30. package/build/model/types.js.map +1 -0
  31. package/build/protocol/WorkflowMessageTypes.d.ts +15 -0
  32. package/build/protocol/WorkflowMessageTypes.js +22 -0
  33. package/build/protocol/WorkflowMessageTypes.js.map +1 -0
  34. package/build/protocol/handlers/AdvanceHandler.d.ts +12 -0
  35. package/build/protocol/handlers/AdvanceHandler.js +113 -0
  36. package/build/protocol/handlers/AdvanceHandler.js.map +1 -0
  37. package/build/protocol/handlers/CancelHandler.d.ts +12 -0
  38. package/build/protocol/handlers/CancelHandler.js +116 -0
  39. package/build/protocol/handlers/CancelHandler.js.map +1 -0
  40. package/build/protocol/handlers/CompleteHandler.d.ts +12 -0
  41. package/build/protocol/handlers/CompleteHandler.js +117 -0
  42. package/build/protocol/handlers/CompleteHandler.js.map +1 -0
  43. package/build/protocol/handlers/DiscoverHandler.d.ts +11 -0
  44. package/build/protocol/handlers/DiscoverHandler.js +71 -0
  45. package/build/protocol/handlers/DiscoverHandler.js.map +1 -0
  46. package/build/protocol/handlers/FetchTemplateHandler.d.ts +12 -0
  47. package/build/protocol/handlers/FetchTemplateHandler.js +71 -0
  48. package/build/protocol/handlers/FetchTemplateHandler.js.map +1 -0
  49. package/build/protocol/handlers/PauseHandler.d.ts +12 -0
  50. package/build/protocol/handlers/PauseHandler.js +116 -0
  51. package/build/protocol/handlers/PauseHandler.js.map +1 -0
  52. package/build/protocol/handlers/ProblemReportHandler.d.ts +6 -0
  53. package/build/protocol/handlers/ProblemReportHandler.js +28 -0
  54. package/build/protocol/handlers/ProblemReportHandler.js.map +1 -0
  55. package/build/protocol/handlers/PublishTemplateHandler.d.ts +11 -0
  56. package/build/protocol/handlers/PublishTemplateHandler.js +53 -0
  57. package/build/protocol/handlers/PublishTemplateHandler.js.map +1 -0
  58. package/build/protocol/handlers/ResumeHandler.d.ts +12 -0
  59. package/build/protocol/handlers/ResumeHandler.js +116 -0
  60. package/build/protocol/handlers/ResumeHandler.js.map +1 -0
  61. package/build/protocol/handlers/StartHandler.d.ts +12 -0
  62. package/build/protocol/handlers/StartHandler.js +211 -0
  63. package/build/protocol/handlers/StartHandler.js.map +1 -0
  64. package/build/protocol/handlers/StatusHandler.d.ts +12 -0
  65. package/build/protocol/handlers/StatusHandler.js +100 -0
  66. package/build/protocol/handlers/StatusHandler.js.map +1 -0
  67. package/build/protocol/handlers/TemplateHandler.d.ts +9 -0
  68. package/build/protocol/handlers/TemplateHandler.js +43 -0
  69. package/build/protocol/handlers/TemplateHandler.js.map +1 -0
  70. package/build/protocol/messages/AdvanceMessage.d.ts +15 -0
  71. package/build/protocol/messages/AdvanceMessage.js +33 -0
  72. package/build/protocol/messages/AdvanceMessage.js.map +1 -0
  73. package/build/protocol/messages/CancelMessage.d.ts +14 -0
  74. package/build/protocol/messages/CancelMessage.js +33 -0
  75. package/build/protocol/messages/CancelMessage.js.map +1 -0
  76. package/build/protocol/messages/CompleteMessage.d.ts +14 -0
  77. package/build/protocol/messages/CompleteMessage.js +33 -0
  78. package/build/protocol/messages/CompleteMessage.js.map +1 -0
  79. package/build/protocol/messages/DiscoverMessage.d.ts +23 -0
  80. package/build/protocol/messages/DiscoverMessage.js +33 -0
  81. package/build/protocol/messages/DiscoverMessage.js.map +1 -0
  82. package/build/protocol/messages/FetchTemplateMessage.d.ts +15 -0
  83. package/build/protocol/messages/FetchTemplateMessage.js +33 -0
  84. package/build/protocol/messages/FetchTemplateMessage.js.map +1 -0
  85. package/build/protocol/messages/PauseMessage.d.ts +14 -0
  86. package/build/protocol/messages/PauseMessage.js +33 -0
  87. package/build/protocol/messages/PauseMessage.js.map +1 -0
  88. package/build/protocol/messages/ProblemReportMessage.d.ts +15 -0
  89. package/build/protocol/messages/ProblemReportMessage.js +33 -0
  90. package/build/protocol/messages/ProblemReportMessage.js.map +1 -0
  91. package/build/protocol/messages/PublishTemplateMessage.d.ts +17 -0
  92. package/build/protocol/messages/PublishTemplateMessage.js +31 -0
  93. package/build/protocol/messages/PublishTemplateMessage.js.map +1 -0
  94. package/build/protocol/messages/ResumeMessage.d.ts +14 -0
  95. package/build/protocol/messages/ResumeMessage.js +33 -0
  96. package/build/protocol/messages/ResumeMessage.js.map +1 -0
  97. package/build/protocol/messages/StartMessage.d.ts +21 -0
  98. package/build/protocol/messages/StartMessage.js +33 -0
  99. package/build/protocol/messages/StartMessage.js.map +1 -0
  100. package/build/protocol/messages/StatusMessage.d.ts +23 -0
  101. package/build/protocol/messages/StatusMessage.js +33 -0
  102. package/build/protocol/messages/StatusMessage.js.map +1 -0
  103. package/build/protocol/messages/StatusRequestMessage.d.ts +15 -0
  104. package/build/protocol/messages/StatusRequestMessage.js +33 -0
  105. package/build/protocol/messages/StatusRequestMessage.js.map +1 -0
  106. package/build/protocol/messages/TemplateMessage.d.ts +14 -0
  107. package/build/protocol/messages/TemplateMessage.js +33 -0
  108. package/build/protocol/messages/TemplateMessage.js.map +1 -0
  109. package/build/protocol/messages/WorkflowsMessage.d.ts +22 -0
  110. package/build/protocol/messages/WorkflowsMessage.js +33 -0
  111. package/build/protocol/messages/WorkflowsMessage.js.map +1 -0
  112. package/build/queue/CommandQueue.d.ts +17 -0
  113. package/build/queue/CommandQueue.js +8 -0
  114. package/build/queue/CommandQueue.js.map +1 -0
  115. package/build/queue/PersistentCommandQueue.d.ts +50 -0
  116. package/build/queue/PersistentCommandQueue.js +265 -0
  117. package/build/queue/PersistentCommandQueue.js.map +1 -0
  118. package/build/repository/WorkflowCommandRecord.d.ts +44 -0
  119. package/build/repository/WorkflowCommandRecord.js +38 -0
  120. package/build/repository/WorkflowCommandRecord.js.map +1 -0
  121. package/build/repository/WorkflowCommandRepository.d.ts +51 -0
  122. package/build/repository/WorkflowCommandRepository.js +135 -0
  123. package/build/repository/WorkflowCommandRepository.js.map +1 -0
  124. package/build/repository/WorkflowInstanceRecord.d.ts +61 -0
  125. package/build/repository/WorkflowInstanceRecord.js +43 -0
  126. package/build/repository/WorkflowInstanceRecord.js.map +1 -0
  127. package/build/repository/WorkflowInstanceRepository.d.ts +10 -0
  128. package/build/repository/WorkflowInstanceRepository.js +52 -0
  129. package/build/repository/WorkflowInstanceRepository.js.map +1 -0
  130. package/build/repository/WorkflowTemplateRecord.d.ts +23 -0
  131. package/build/repository/WorkflowTemplateRecord.js +28 -0
  132. package/build/repository/WorkflowTemplateRecord.js.map +1 -0
  133. package/build/repository/WorkflowTemplateRepository.d.ts +6 -0
  134. package/build/repository/WorkflowTemplateRepository.js +56 -0
  135. package/build/repository/WorkflowTemplateRepository.js.map +1 -0
  136. package/build/services/WorkflowService.d.ts +75 -0
  137. package/build/services/WorkflowService.js +566 -0
  138. package/build/services/WorkflowService.js.map +1 -0
  139. 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":"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"}
@@ -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
+ }