@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,566 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowService = void 0;
13
+ const core_1 = require("@credo-ts/core");
14
+ const crypto_1 = require("crypto");
15
+ const WorkflowEvents_1 = require("../WorkflowEvents");
16
+ const WorkflowModuleConfig_1 = require("../WorkflowModuleConfig");
17
+ const ActionRegistry_1 = require("../actions/ActionRegistry");
18
+ const GuardEvaluator_1 = require("../engine/GuardEvaluator");
19
+ const TemplateValidation_1 = require("../model/TemplateValidation");
20
+ const types_1 = require("../model/types");
21
+ const CompleteMessage_1 = require("../protocol/messages/CompleteMessage");
22
+ const WorkflowInstanceRecord_1 = require("../repository/WorkflowInstanceRecord");
23
+ const WorkflowInstanceRepository_1 = require("../repository/WorkflowInstanceRepository");
24
+ const WorkflowTemplateRecord_1 = require("../repository/WorkflowTemplateRecord");
25
+ const WorkflowTemplateRepository_1 = require("../repository/WorkflowTemplateRepository");
26
+ const stableStringify = (obj) => {
27
+ const allKeys = [];
28
+ JSON.stringify(obj, (k, v) => {
29
+ allKeys.push(k);
30
+ return v;
31
+ });
32
+ allKeys.sort();
33
+ return JSON.stringify(obj, allKeys);
34
+ };
35
+ const sha256 = (input) => (0, crypto_1.createHash)('sha256').update(input).digest('hex');
36
+ let WorkflowService = class WorkflowService {
37
+ constructor(templateRepo, instanceRepo, config, agentConfig, eventEmitter) {
38
+ this.templateRepo = templateRepo;
39
+ this.instanceRepo = instanceRepo;
40
+ this.config = config;
41
+ this.agentConfig = agentConfig;
42
+ this.eventEmitter = eventEmitter;
43
+ this.actions = new ActionRegistry_1.ActionRegistry();
44
+ this.actions.register(new ActionRegistry_1.LocalStateSetAction());
45
+ // Register DIDComm action handlers used by workflows
46
+ this.actions.register(new ActionRegistry_1.IssueCredentialV2Action());
47
+ this.actions.register(new ActionRegistry_1.PresentProofV2Action());
48
+ }
49
+ // Allow external modules (e.g., payments) to register additional action handlers
50
+ registerActions(actions) {
51
+ for (const a of actions) {
52
+ // ActionRegistry expects objects with shape { typeUri, execute }
53
+ // We don't import the exact type here to avoid cross-package coupling
54
+ this.actions.register(a);
55
+ }
56
+ }
57
+ async publishTemplate(agentContext, template) {
58
+ // JSON schema validation + structural checks
59
+ (0, TemplateValidation_1.validateTemplateJson)(template);
60
+ (0, TemplateValidation_1.validateTemplateRefs)(template);
61
+ const hash = sha256(stableStringify(template));
62
+ const existing = await this.templateRepo.findByTemplateIdAndVersion(agentContext, template.template_id, template.version);
63
+ if (existing) {
64
+ existing.template = template;
65
+ existing.hash = hash;
66
+ await this.templateRepo.update(agentContext, existing);
67
+ return existing;
68
+ }
69
+ const record = new WorkflowTemplateRecord_1.WorkflowTemplateRecord({ template, hash });
70
+ await this.templateRepo.save(agentContext, record);
71
+ return record;
72
+ }
73
+ async start(agentContext, opts) {
74
+ const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, opts.template_id, opts.template_version);
75
+ if (!tplRec)
76
+ throw this.problem('invalid_template', `template not found: ${opts.template_id}@${opts.template_version || 'latest'}`);
77
+ const tpl = tplRec.template;
78
+ const startState = tpl.states.find((s) => s.type === 'start')?.name || tpl.states[0]?.name;
79
+ if (!startState)
80
+ throw this.problem('invalid_template', 'no start state');
81
+ const policy = tpl.instance_policy;
82
+ const connectionId = opts.connection_id;
83
+ if (policy.mode === 'singleton_per_connection') {
84
+ const existing = (0, types_1.ensureArray)(await this.instanceRepo.findByTemplateAndConnection(agentContext, tpl.template_id, connectionId)).shift();
85
+ if (existing) {
86
+ if (this.config.autoReturnExistingOnSingleton)
87
+ return existing;
88
+ throw this.problem('already_exists', 'instance already exists for template/connection');
89
+ }
90
+ }
91
+ let multiplicityKeyValue;
92
+ if (policy.mode === 'multi_per_connection' && policy.multiplicity_key) {
93
+ multiplicityKeyValue = this.evalMultiplicity(policy.multiplicity_key, opts.context || {});
94
+ const dup = (0, types_1.ensureArray)(await this.instanceRepo.findByTemplateConnAndMultiplicity(agentContext, tpl.template_id, connectionId, multiplicityKeyValue)).shift();
95
+ if (dup)
96
+ return dup;
97
+ }
98
+ const instanceId = opts.instance_id || this.uuid();
99
+ const section = (0, types_1.findSectionForState)(tpl, startState);
100
+ const rec = new WorkflowInstanceRecord_1.WorkflowInstanceRecord({
101
+ instanceId,
102
+ templateId: tpl.template_id,
103
+ templateVersion: tpl.version,
104
+ connectionId,
105
+ participants: opts.participants || {},
106
+ state: startState,
107
+ section,
108
+ context: { ...(opts.context || {}) },
109
+ artifacts: {},
110
+ status: 'active',
111
+ history: [],
112
+ multiplicityKeyValue,
113
+ idempotencyKeys: [],
114
+ });
115
+ await this.instanceRepo.save(agentContext, rec);
116
+ // Emit state changed event for initial creation
117
+ try {
118
+ this.eventEmitter?.emit(agentContext, {
119
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStateChanged,
120
+ payload: {
121
+ instanceRecord: rec,
122
+ previousState: null,
123
+ newState: rec.state,
124
+ event: 'start',
125
+ actionKey: undefined,
126
+ msgId: undefined,
127
+ },
128
+ });
129
+ }
130
+ catch (_e) {
131
+ void 0;
132
+ }
133
+ return rec;
134
+ }
135
+ async advance(agentContext, opts, instanceRecord) {
136
+ let inst;
137
+ if (instanceRecord) {
138
+ inst = instanceRecord;
139
+ }
140
+ else {
141
+ try {
142
+ inst = await this.instanceRepo.getById(agentContext, opts.instance_id);
143
+ }
144
+ catch {
145
+ const found = await this.instanceRepo.getByInstanceId(agentContext, opts.instance_id);
146
+ if (!found)
147
+ throw this.problem('invalid_event', 'instance not found');
148
+ inst = found;
149
+ }
150
+ }
151
+ const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, inst.templateId, inst.templateVersion);
152
+ if (!tplRec)
153
+ throw this.problem('invalid_template', 'template not found for instance');
154
+ const tpl = tplRec.template;
155
+ // lifecycle status gating
156
+ if (inst.status === 'paused')
157
+ throw this.problem('forbidden', 'instance is paused');
158
+ if (inst.status === 'canceled')
159
+ throw this.problem('forbidden', 'instance is canceled');
160
+ if (inst.status === 'completed')
161
+ throw this.problem('invalid_event', 'instance already completed');
162
+ // idempotency
163
+ if (opts.idempotency_key && inst.idempotencyKeys?.includes(opts.idempotency_key)) {
164
+ const prior = inst.idempotency?.find?.((i) => i.key === opts.idempotency_key);
165
+ if (prior && prior.event !== opts.event)
166
+ throw this.problem('idempotency_conflict', 'same key, different event');
167
+ return inst;
168
+ }
169
+ const candidates = (0, types_1.transitionsFromState)(tpl, inst.state).filter((t) => t.on === opts.event);
170
+ if (!candidates.length)
171
+ throw this.problem('invalid_event', `no transition for event ${opts.event} from ${inst.state}`);
172
+ const env = GuardEvaluator_1.GuardEvaluator.envFromInstance(this.toInstanceData(inst));
173
+ const enabled = candidates.filter((t) => GuardEvaluator_1.GuardEvaluator.evalGuard(t.guard, env));
174
+ if (!enabled.length)
175
+ throw this.problem('guard_failed', 'guard evaluated false');
176
+ const t = enabled[0];
177
+ let artifactsDelta = {};
178
+ let messageId;
179
+ if (t.action) {
180
+ const def = tpl.actions.find((a) => a.key === t.action);
181
+ if (!def)
182
+ throw this.problem('invalid_template', `action not defined: ${t.action}`);
183
+ const handler = this.actions.get(def.typeURI);
184
+ if (!handler)
185
+ throw this.problem('action_error', `no handler for type ${def.typeURI}`);
186
+ const exec = async () => handler.execute({
187
+ agentContext,
188
+ template: tpl,
189
+ instance: this.toInstanceData(inst),
190
+ action: def,
191
+ input: opts.input,
192
+ });
193
+ const timeoutMs = this.config.actionTimeoutMs ?? 15000;
194
+ const race = Promise.race([
195
+ exec(),
196
+ new Promise((_, rej) => setTimeout(() => rej(new Error('action timeout')), timeoutMs)),
197
+ ]);
198
+ let result;
199
+ try {
200
+ result = (await race);
201
+ }
202
+ catch (e) {
203
+ throw Object.assign(new Error(e.message || 'action timeout'), { code: 'action_error' });
204
+ }
205
+ artifactsDelta = result?.artifacts || {};
206
+ // local state:set may be applied directly by handler, but ensure we persist
207
+ if (result?.contextMerge)
208
+ inst.context = result.contextMerge;
209
+ if (result?.messageId)
210
+ messageId = result.messageId;
211
+ }
212
+ // Concurrency check: re-read and ensure state didn't change
213
+ const fromState = inst.state;
214
+ try {
215
+ const fresh = await this.instanceRepo.getById(agentContext, inst.id);
216
+ if (fresh.state !== fromState)
217
+ throw this.problem('state_conflict', 'state changed concurrently');
218
+ }
219
+ catch (_e) {
220
+ // ignore if repository throws
221
+ void 0;
222
+ }
223
+ // persist atomically (optimistic)
224
+ const prevState = inst.state;
225
+ inst.history.push({
226
+ ts: new Date().toISOString(),
227
+ event: opts.event,
228
+ from: inst.state,
229
+ to: t.to,
230
+ actionKey: t.action,
231
+ msg_id: messageId,
232
+ });
233
+ inst.state = t.to;
234
+ inst.section = (0, types_1.findSectionForState)(tpl, t.to);
235
+ inst.artifacts = { ...inst.artifacts, ...artifactsDelta };
236
+ if (opts.idempotency_key) {
237
+ inst.idempotencyKeys = [...(inst.idempotencyKeys || []), opts.idempotency_key];
238
+ inst.idempotency = [
239
+ ...(inst.idempotency || []),
240
+ { key: opts.idempotency_key, event: opts.event, to: t.to, actionKey: t.action },
241
+ ];
242
+ // Trim idempotency history to configured limit
243
+ const limit = Math.max(1, this.config.idempotencyHistoryLimit ?? 100);
244
+ if ((inst.idempotencyKeys?.length || 0) > limit) {
245
+ inst.idempotencyKeys = inst.idempotencyKeys.slice(-limit);
246
+ }
247
+ if ((inst.idempotency?.length || 0) > limit) {
248
+ inst.idempotency = inst.idempotency.slice(-limit);
249
+ }
250
+ }
251
+ let reachedFinal = false;
252
+ try {
253
+ const toDef = tpl.states.find((s) => s.name === t.to);
254
+ if (toDef?.type === 'final') {
255
+ inst.status = 'completed';
256
+ reachedFinal = true;
257
+ }
258
+ }
259
+ catch (_e) {
260
+ void 0;
261
+ }
262
+ await this.instanceRepo.update(agentContext, inst);
263
+ // Emit state-changed event
264
+ try {
265
+ this.eventEmitter?.emit(agentContext, {
266
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStateChanged,
267
+ payload: {
268
+ instanceRecord: inst,
269
+ previousState: prevState,
270
+ newState: inst.state,
271
+ event: opts.event,
272
+ actionKey: t.action,
273
+ msgId: messageId,
274
+ },
275
+ });
276
+ }
277
+ catch (_e) {
278
+ void 0;
279
+ }
280
+ // Emit status-changed & completed, and send Complete message if final
281
+ if (reachedFinal) {
282
+ try {
283
+ this.eventEmitter?.emit(agentContext, {
284
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
285
+ payload: { instanceRecord: inst, previousStatus: 'active', newStatus: 'completed' },
286
+ });
287
+ }
288
+ catch (_e) {
289
+ void 0;
290
+ }
291
+ try {
292
+ this.eventEmitter?.emit(agentContext, {
293
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceCompleted,
294
+ payload: { instanceRecord: inst, state: inst.state, section: inst.section },
295
+ });
296
+ }
297
+ catch (_e) {
298
+ void 0;
299
+ }
300
+ await this.sendCompleteMessage(agentContext, inst);
301
+ }
302
+ return inst;
303
+ }
304
+ async status(agentContext, opts, instanceRecord) {
305
+ let inst;
306
+ if (instanceRecord) {
307
+ inst = instanceRecord;
308
+ }
309
+ else {
310
+ try {
311
+ inst = await this.instanceRepo.getById(agentContext, opts.instance_id);
312
+ }
313
+ catch {
314
+ const found = await this.instanceRepo.getByInstanceId(agentContext, opts.instance_id);
315
+ if (!found)
316
+ throw this.problem('invalid_event', 'instance not found');
317
+ inst = found;
318
+ }
319
+ }
320
+ const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, inst.templateId, inst.templateVersion);
321
+ if (!tplRec)
322
+ throw this.problem('invalid_template', 'template not found for instance');
323
+ const tpl = tplRec.template;
324
+ const env = GuardEvaluator_1.GuardEvaluator.envFromInstance(this.toInstanceData(inst));
325
+ const allowed = (0, types_1.transitionsFromState)(tpl, inst.state)
326
+ .filter((t) => GuardEvaluator_1.GuardEvaluator.evalGuard(t.guard, env))
327
+ .map((t) => t.on);
328
+ const includeActions = opts.include_actions ?? true;
329
+ const includeUi = opts.include_ui ?? true;
330
+ const uiItems = (0, types_1.ensureArray)(tpl.display_hints?.states?.[inst.state]);
331
+ const menu = includeActions
332
+ ? uiItems
333
+ .filter((i) => i?.type === 'button' || i?.type === 'submit-button')
334
+ .map((i) => ({ label: i?.label, event: i?.event }))
335
+ : [];
336
+ const ui = includeUi ? uiItems : undefined;
337
+ return {
338
+ instance_id: inst.instanceId,
339
+ state: inst.state,
340
+ section: inst.section,
341
+ allowed_events: allowed,
342
+ action_menu: menu,
343
+ artifacts: inst.artifacts,
344
+ ...(includeUi ? { ui } : {}),
345
+ };
346
+ }
347
+ async pause(agentContext, opts, instanceRecord) {
348
+ const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
349
+ const prev = inst.status;
350
+ inst.status = 'paused';
351
+ await this.instanceRepo.update(agentContext, inst);
352
+ try {
353
+ this.eventEmitter?.emit(agentContext, {
354
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
355
+ payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
356
+ });
357
+ }
358
+ catch (_e) {
359
+ void 0;
360
+ }
361
+ return inst;
362
+ }
363
+ async resume(agentContext, opts, instanceRecord) {
364
+ const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
365
+ const prev = inst.status;
366
+ inst.status = 'active';
367
+ await this.instanceRepo.update(agentContext, inst);
368
+ try {
369
+ this.eventEmitter?.emit(agentContext, {
370
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
371
+ payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
372
+ });
373
+ }
374
+ catch (_e) {
375
+ void 0;
376
+ }
377
+ return inst;
378
+ }
379
+ async cancel(agentContext, opts, instanceRecord) {
380
+ const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
381
+ const prev = inst.status;
382
+ inst.status = 'canceled';
383
+ await this.instanceRepo.update(agentContext, inst);
384
+ try {
385
+ this.eventEmitter?.emit(agentContext, {
386
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
387
+ payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
388
+ });
389
+ }
390
+ catch (_e) {
391
+ void 0;
392
+ }
393
+ return inst;
394
+ }
395
+ async complete(agentContext, opts, instanceRecord) {
396
+ const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
397
+ // Only allow completion when FSM is in a final state
398
+ const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, inst.templateId, inst.templateVersion);
399
+ if (!tplRec)
400
+ throw this.problem('invalid_template', 'template not found for instance');
401
+ const toDef = tplRec.template.states.find((s) => s.name === inst.state);
402
+ if (toDef?.type !== 'final')
403
+ throw this.problem('forbidden', 'cannot complete: state is not final');
404
+ const prev = inst.status;
405
+ inst.status = 'completed';
406
+ await this.instanceRepo.update(agentContext, inst);
407
+ try {
408
+ this.eventEmitter?.emit(agentContext, {
409
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
410
+ payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
411
+ });
412
+ this.eventEmitter?.emit(agentContext, {
413
+ type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceCompleted,
414
+ payload: { instanceRecord: inst, state: inst.state, section: inst.section },
415
+ });
416
+ }
417
+ catch (_e) {
418
+ void 0;
419
+ }
420
+ return inst;
421
+ }
422
+ async autoAdvanceByConnection(agentContext, connectionId, event) {
423
+ const inst = await this.instanceRepo.findLatestByConnection(agentContext, connectionId);
424
+ if (!inst)
425
+ return;
426
+ try {
427
+ await this.advance(agentContext, {
428
+ instance_id: inst.instanceId,
429
+ event,
430
+ idempotency_key: `auto:${event}:${inst.instanceId}`,
431
+ });
432
+ }
433
+ catch (e) {
434
+ // swallow, log at debug
435
+ this.agentConfig.logger.debug(`Workflow autoAdvance error: ${e.message}`);
436
+ }
437
+ }
438
+ evalMultiplicity(expr, context) {
439
+ try {
440
+ const env = { context, participants: {}, artifacts: {} };
441
+ const val = GuardEvaluator_1.GuardEvaluator.evalValue(expr, env);
442
+ return val != null ? String(val) : '';
443
+ }
444
+ catch {
445
+ return '';
446
+ }
447
+ }
448
+ toInstanceData(rec) {
449
+ return {
450
+ instance_id: rec.instanceId,
451
+ template_id: rec.templateId,
452
+ template_version: rec.templateVersion,
453
+ connection_id: rec.connectionId,
454
+ participants: rec.participants,
455
+ state: rec.state,
456
+ section: rec.section,
457
+ context: rec.context,
458
+ artifacts: rec.artifacts,
459
+ status: rec.status,
460
+ history: rec.history,
461
+ multiplicityKeyValue: rec.multiplicityKeyValue,
462
+ idempotencyKeys: rec.idempotencyKeys,
463
+ };
464
+ }
465
+ problem(code, comment) {
466
+ const err = new Error(comment);
467
+ err.code = code;
468
+ return err;
469
+ }
470
+ async getInstanceByIdOrTag(agentContext, instanceId) {
471
+ try {
472
+ return await this.instanceRepo.getById(agentContext, instanceId);
473
+ }
474
+ catch {
475
+ const found = await this.instanceRepo.getByInstanceId(agentContext, instanceId);
476
+ if (!found)
477
+ throw this.problem('invalid_event', 'instance not found');
478
+ return found;
479
+ }
480
+ }
481
+ uuid() {
482
+ // light uuid
483
+ return `wf_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;
484
+ }
485
+ validateTemplate(t) {
486
+ const fail = (msg) => {
487
+ throw this.problem('invalid_template', msg);
488
+ };
489
+ if (!t.template_id || !t.version || !t.title)
490
+ fail('missing required fields');
491
+ if (!Array.isArray(t.states) || !t.states.length)
492
+ fail('states required');
493
+ if (!Array.isArray(t.transitions))
494
+ fail('transitions required');
495
+ if (!Array.isArray(t.actions))
496
+ fail('actions required');
497
+ const stateNames = new Set(t.states.map((s) => s.name));
498
+ if (![...t.states].some((s) => s.type === 'start'))
499
+ fail('start state required');
500
+ for (const s of t.states) {
501
+ if (s.section && !t.sections?.some((sec) => sec.name === s.section))
502
+ fail(`state.section not found: ${s.section}`);
503
+ }
504
+ for (const tr of t.transitions) {
505
+ if (!stateNames.has(tr.from))
506
+ fail(`transition.from unknown: ${tr.from}`);
507
+ if (!stateNames.has(tr.to))
508
+ fail(`transition.to unknown: ${tr.to}`);
509
+ if (tr.action && !t.actions.some((a) => a.key === tr.action))
510
+ fail(`transition.action unknown: ${tr.action}`);
511
+ }
512
+ // profile_ref resolution
513
+ for (const a of t.actions) {
514
+ if ('profile_ref' in a && a.profile_ref) {
515
+ const pr = a.profile_ref;
516
+ if (pr.startsWith('cp.')) {
517
+ const key = pr.slice(3);
518
+ if (!t.catalog?.credential_profiles || !t.catalog.credential_profiles[key])
519
+ fail(`catalog.cp missing: ${key}`);
520
+ }
521
+ else if (pr.startsWith('pp.')) {
522
+ const key = pr.slice(3);
523
+ if (!t.catalog?.proof_profiles || !t.catalog.proof_profiles[key])
524
+ fail(`catalog.pp missing: ${key}`);
525
+ }
526
+ else
527
+ fail(`invalid profile_ref: ${pr}`);
528
+ }
529
+ }
530
+ }
531
+ async sendCompleteMessage(agentContext, inst) {
532
+ try {
533
+ if (!inst.connectionId)
534
+ return;
535
+ const connectionSvc = agentContext.dependencyManager.resolve(core_1.ConnectionService);
536
+ const messageSender = agentContext.dependencyManager.resolve(core_1.MessageSender);
537
+ const connection = await connectionSvc.getById(agentContext, inst.connectionId);
538
+ const msg = new CompleteMessage_1.CompleteMessage({
539
+ thid: inst.instanceId,
540
+ body: { instance_id: inst.instanceId, reason: 'state_final' },
541
+ });
542
+ try {
543
+ // Request return-route so HTTP outbound doesn't throw on 15s timeout
544
+ msg.setReturnRouting(core_1.ReturnRouteTypes.thread, inst.instanceId);
545
+ }
546
+ catch (_e) {
547
+ void 0;
548
+ }
549
+ const outbound = new core_1.OutboundMessageContext(msg, { agentContext, connection });
550
+ await messageSender.sendMessage(outbound);
551
+ }
552
+ catch (e) {
553
+ this.agentConfig.logger.debug(`Workflow complete notify error: ${e.message}`);
554
+ }
555
+ }
556
+ };
557
+ exports.WorkflowService = WorkflowService;
558
+ exports.WorkflowService = WorkflowService = __decorate([
559
+ (0, core_1.injectable)(),
560
+ __metadata("design:paramtypes", [WorkflowTemplateRepository_1.WorkflowTemplateRepository,
561
+ WorkflowInstanceRepository_1.WorkflowInstanceRepository,
562
+ WorkflowModuleConfig_1.WorkflowModuleConfig,
563
+ core_1.AgentConfig,
564
+ core_1.EventEmitter])
565
+ ], WorkflowService);
566
+ //# sourceMappingURL=WorkflowService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowService.js","sourceRoot":"","sources":["../../src/services/WorkflowService.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@ajna-inc/workflow",
3
+ "main": "src/index",
4
+ "types": "src/index",
5
+ "version": "0.5.17",
6
+ "files": [
7
+ "build"
8
+ ],
9
+ "license": "Apache-2.0",
10
+ "publishConfig": {
11
+ "main": "build/index",
12
+ "types": "build/index",
13
+ "access": "public"
14
+ },
15
+ "homepage": "https://github.com/openwallet-foundation/credo-ts/tree/main/packages/workflow",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/openwallet-foundation/credo-ts",
19
+ "directory": "packages/workflow"
20
+ },
21
+ "scripts": {
22
+ "build": "pnpm run clean && pnpm run compile",
23
+ "clean": "rimraf ./build",
24
+ "compile": "tsc -p tsconfig.build.json",
25
+ "prepublishOnly": "pnpm run build",
26
+ "test": "jest",
27
+ "test:cov": "jest --coverage --runInBand"
28
+ },
29
+ "dependencies": {
30
+ "@credo-ts/core": "^0.5.17",
31
+ "@ajna-inc/payments": "^0.5.17",
32
+ "ajv": "^8.17.1",
33
+ "ajv-formats": "^3.0.1",
34
+ "jmespath": "^0.16.0",
35
+ "semver": "^7.6.3"
36
+ },
37
+ "devDependencies": {
38
+ "@credo-ts/askar": "workspace:*",
39
+ "@credo-ts/node": "workspace:*",
40
+ "@openwallet-foundation/askar-nodejs": "^0.4.1",
41
+ "@types/jmespath": "^0.15.2",
42
+ "@types/semver": "^7.7.1",
43
+ "reflect-metadata": "^0.1.13",
44
+ "rimraf": "^4.4.0",
45
+ "typescript": "~5.5.2"
46
+ }
47
+ }