@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,35 @@
|
|
|
1
|
+
import type { WorkflowInstanceRecord, WorkflowInstanceStatus } from './repository/WorkflowInstanceRecord';
|
|
2
|
+
import type { BaseEvent } from '@credo-ts/core';
|
|
3
|
+
export declare enum WorkflowEventTypes {
|
|
4
|
+
WorkflowInstanceStateChanged = "WorkflowInstanceStateChanged",
|
|
5
|
+
WorkflowInstanceStatusChanged = "WorkflowInstanceStatusChanged",
|
|
6
|
+
WorkflowInstanceCompleted = "WorkflowInstanceCompleted"
|
|
7
|
+
}
|
|
8
|
+
export interface WorkflowInstanceStateChangedEvent extends BaseEvent {
|
|
9
|
+
type: WorkflowEventTypes.WorkflowInstanceStateChanged;
|
|
10
|
+
payload: {
|
|
11
|
+
instanceRecord: WorkflowInstanceRecord;
|
|
12
|
+
previousState: string | null;
|
|
13
|
+
newState: string;
|
|
14
|
+
event: string;
|
|
15
|
+
actionKey?: string;
|
|
16
|
+
msgId?: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface WorkflowInstanceStatusChangedEvent extends BaseEvent {
|
|
20
|
+
type: WorkflowEventTypes.WorkflowInstanceStatusChanged;
|
|
21
|
+
payload: {
|
|
22
|
+
instanceRecord: WorkflowInstanceRecord;
|
|
23
|
+
previousStatus: WorkflowInstanceStatus | null;
|
|
24
|
+
newStatus: WorkflowInstanceStatus;
|
|
25
|
+
reason?: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface WorkflowInstanceCompletedEvent extends BaseEvent {
|
|
29
|
+
type: WorkflowEventTypes.WorkflowInstanceCompleted;
|
|
30
|
+
payload: {
|
|
31
|
+
instanceRecord: WorkflowInstanceRecord;
|
|
32
|
+
state: string;
|
|
33
|
+
section?: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowEventTypes = void 0;
|
|
4
|
+
var WorkflowEventTypes;
|
|
5
|
+
(function (WorkflowEventTypes) {
|
|
6
|
+
WorkflowEventTypes["WorkflowInstanceStateChanged"] = "WorkflowInstanceStateChanged";
|
|
7
|
+
WorkflowEventTypes["WorkflowInstanceStatusChanged"] = "WorkflowInstanceStatusChanged";
|
|
8
|
+
WorkflowEventTypes["WorkflowInstanceCompleted"] = "WorkflowInstanceCompleted";
|
|
9
|
+
})(WorkflowEventTypes || (exports.WorkflowEventTypes = WorkflowEventTypes = {}));
|
|
10
|
+
//# sourceMappingURL=WorkflowEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowEvents.js","sourceRoot":"","sources":["../src/WorkflowEvents.ts"],"names":[],"mappings":";;;AAGA,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,mFAA6D,CAAA;IAC7D,qFAA+D,CAAA;IAC/D,6EAAuD,CAAA;AACzD,CAAC,EAJW,kBAAkB,kCAAlB,kBAAkB,QAI7B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WorkflowModuleConfigOptions } from './WorkflowModuleConfig';
|
|
2
|
+
import type { AgentContext, DependencyManager, Module } from '@credo-ts/core';
|
|
3
|
+
import { WorkflowModuleConfig } from './WorkflowModuleConfig';
|
|
4
|
+
import { WorkflowApi } from './api/WorkflowApi';
|
|
5
|
+
export declare const WORKFLOW_PROTOCOL_URI = "https://didcomm.org/workflow/1.0";
|
|
6
|
+
export declare const WORKFLOW_ROLES: readonly ["processor", "coordinator"];
|
|
7
|
+
export declare class WorkflowModule implements Module {
|
|
8
|
+
readonly api: typeof WorkflowApi;
|
|
9
|
+
readonly config: WorkflowModuleConfig;
|
|
10
|
+
constructor(options?: WorkflowModuleConfigOptions);
|
|
11
|
+
register(dependencyManager: DependencyManager): void;
|
|
12
|
+
initialize(agentContext: AgentContext): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowModule = exports.WORKFLOW_ROLES = exports.WORKFLOW_PROTOCOL_URI = void 0;
|
|
4
|
+
const core_1 = require("@credo-ts/core");
|
|
5
|
+
const WorkflowModuleConfig_1 = require("./WorkflowModuleConfig");
|
|
6
|
+
const CommandQueue_1 = require("./queue/CommandQueue");
|
|
7
|
+
const PersistentCommandQueue_1 = require("./queue/PersistentCommandQueue");
|
|
8
|
+
const WorkflowApi_1 = require("./api/WorkflowApi");
|
|
9
|
+
const WorkflowCommandRepository_1 = require("./repository/WorkflowCommandRepository");
|
|
10
|
+
const AdvanceHandler_1 = require("./protocol/handlers/AdvanceHandler");
|
|
11
|
+
const CancelHandler_1 = require("./protocol/handlers/CancelHandler");
|
|
12
|
+
const CompleteHandler_1 = require("./protocol/handlers/CompleteHandler");
|
|
13
|
+
const DiscoverHandler_1 = require("./protocol/handlers/DiscoverHandler");
|
|
14
|
+
const FetchTemplateHandler_1 = require("./protocol/handlers/FetchTemplateHandler");
|
|
15
|
+
const TemplateHandler_1 = require("./protocol/handlers/TemplateHandler");
|
|
16
|
+
const PauseHandler_1 = require("./protocol/handlers/PauseHandler");
|
|
17
|
+
const ProblemReportHandler_1 = require("./protocol/handlers/ProblemReportHandler");
|
|
18
|
+
const PublishTemplateHandler_1 = require("./protocol/handlers/PublishTemplateHandler");
|
|
19
|
+
const ResumeHandler_1 = require("./protocol/handlers/ResumeHandler");
|
|
20
|
+
const StartHandler_1 = require("./protocol/handlers/StartHandler");
|
|
21
|
+
const StatusHandler_1 = require("./protocol/handlers/StatusHandler");
|
|
22
|
+
const WorkflowInstanceRepository_1 = require("./repository/WorkflowInstanceRepository");
|
|
23
|
+
const WorkflowTemplateRepository_1 = require("./repository/WorkflowTemplateRepository");
|
|
24
|
+
const WorkflowService_1 = require("./services/WorkflowService");
|
|
25
|
+
const StatusMessage_1 = require("./protocol/messages/StatusMessage");
|
|
26
|
+
const core_2 = require("@credo-ts/core");
|
|
27
|
+
exports.WORKFLOW_PROTOCOL_URI = 'https://didcomm.org/workflow/1.0';
|
|
28
|
+
exports.WORKFLOW_ROLES = ['processor', 'coordinator'];
|
|
29
|
+
class WorkflowModule {
|
|
30
|
+
constructor(options) {
|
|
31
|
+
this.api = WorkflowApi_1.WorkflowApi;
|
|
32
|
+
this.config = new WorkflowModuleConfig_1.WorkflowModuleConfig(options);
|
|
33
|
+
}
|
|
34
|
+
register(dependencyManager) {
|
|
35
|
+
dependencyManager.resolve(core_1.AgentConfig).logger.info('Registering WorkflowModule');
|
|
36
|
+
dependencyManager.registerInstance(WorkflowModuleConfig_1.WorkflowModuleConfig, this.config);
|
|
37
|
+
dependencyManager.registerSingleton(WorkflowTemplateRepository_1.WorkflowTemplateRepository);
|
|
38
|
+
dependencyManager.registerSingleton(WorkflowInstanceRepository_1.WorkflowInstanceRepository);
|
|
39
|
+
dependencyManager.registerSingleton(WorkflowCommandRepository_1.WorkflowCommandRepository);
|
|
40
|
+
dependencyManager.registerSingleton(WorkflowService_1.WorkflowService);
|
|
41
|
+
dependencyManager.registerSingleton(WorkflowApi_1.WorkflowApi);
|
|
42
|
+
dependencyManager.registerSingleton(PublishTemplateHandler_1.PublishTemplateHandler);
|
|
43
|
+
dependencyManager.registerSingleton(StartHandler_1.StartHandler);
|
|
44
|
+
dependencyManager.registerSingleton(AdvanceHandler_1.AdvanceHandler);
|
|
45
|
+
dependencyManager.registerSingleton(StatusHandler_1.StatusHandler);
|
|
46
|
+
dependencyManager.registerSingleton(ProblemReportHandler_1.ProblemReportHandler);
|
|
47
|
+
dependencyManager.registerSingleton(PauseHandler_1.PauseHandler);
|
|
48
|
+
dependencyManager.registerSingleton(ResumeHandler_1.ResumeHandler);
|
|
49
|
+
dependencyManager.registerSingleton(CancelHandler_1.CancelHandler);
|
|
50
|
+
dependencyManager.registerSingleton(CompleteHandler_1.CompleteHandler);
|
|
51
|
+
dependencyManager.registerSingleton(DiscoverHandler_1.DiscoverHandler);
|
|
52
|
+
dependencyManager.registerSingleton(FetchTemplateHandler_1.FetchTemplateHandler);
|
|
53
|
+
dependencyManager.registerSingleton(TemplateHandler_1.TemplateHandler);
|
|
54
|
+
}
|
|
55
|
+
async initialize(agentContext) {
|
|
56
|
+
const dm = agentContext.dependencyManager;
|
|
57
|
+
const logger = dm.resolve(core_1.AgentConfig).logger;
|
|
58
|
+
const features = dm.resolve(core_1.FeatureRegistry);
|
|
59
|
+
const handlers = dm.resolve(core_1.MessageHandlerRegistry);
|
|
60
|
+
logger.info('Initializing WorkflowModule - registering workflow/1.0 protocol');
|
|
61
|
+
try {
|
|
62
|
+
features.register(new core_1.Protocol({ id: exports.WORKFLOW_PROTOCOL_URI, roles: [...exports.WORKFLOW_ROLES] }));
|
|
63
|
+
}
|
|
64
|
+
catch (_e) {
|
|
65
|
+
void 0;
|
|
66
|
+
}
|
|
67
|
+
handlers.registerMessageHandler(dm.resolve(PublishTemplateHandler_1.PublishTemplateHandler));
|
|
68
|
+
handlers.registerMessageHandler(dm.resolve(StartHandler_1.StartHandler));
|
|
69
|
+
handlers.registerMessageHandler(dm.resolve(AdvanceHandler_1.AdvanceHandler));
|
|
70
|
+
handlers.registerMessageHandler(dm.resolve(StatusHandler_1.StatusHandler));
|
|
71
|
+
handlers.registerMessageHandler(dm.resolve(ProblemReportHandler_1.ProblemReportHandler));
|
|
72
|
+
handlers.registerMessageHandler(dm.resolve(PauseHandler_1.PauseHandler));
|
|
73
|
+
handlers.registerMessageHandler(dm.resolve(ResumeHandler_1.ResumeHandler));
|
|
74
|
+
handlers.registerMessageHandler(dm.resolve(CancelHandler_1.CancelHandler));
|
|
75
|
+
handlers.registerMessageHandler(dm.resolve(CompleteHandler_1.CompleteHandler));
|
|
76
|
+
// discovery/fetch extension
|
|
77
|
+
handlers.registerMessageHandler(dm.resolve(DiscoverHandler_1.DiscoverHandler));
|
|
78
|
+
handlers.registerMessageHandler(dm.resolve(FetchTemplateHandler_1.FetchTemplateHandler));
|
|
79
|
+
handlers.registerMessageHandler(dm.resolve(TemplateHandler_1.TemplateHandler));
|
|
80
|
+
// Inbound mapping: credentials/proofs → workflow events
|
|
81
|
+
const events = dm.resolve(core_1.EventEmitter);
|
|
82
|
+
const service = dm.resolve(WorkflowService_1.WorkflowService);
|
|
83
|
+
const contextProvider = dm.resolve(core_1.InjectionSymbols.AgentContextProvider);
|
|
84
|
+
const rootContextId = agentContext.contextCorrelationId;
|
|
85
|
+
const resolveEventContext = async (metadata) => {
|
|
86
|
+
const correlationId = metadata?.contextCorrelationId;
|
|
87
|
+
if (!correlationId || correlationId === rootContextId) {
|
|
88
|
+
return { context: agentContext, release: async () => { } };
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const scopedContext = await contextProvider.getAgentContextForContextCorrelationId(correlationId);
|
|
92
|
+
return {
|
|
93
|
+
context: scopedContext,
|
|
94
|
+
release: async () => {
|
|
95
|
+
try {
|
|
96
|
+
await contextProvider.endSessionForAgentContext(scopedContext);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
logger.debug('WorkflowModule - failed to end tenant session after event', {
|
|
100
|
+
contextCorrelationId: correlationId,
|
|
101
|
+
error: error.message,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
logger.debug('WorkflowModule - unable to resolve context for event', {
|
|
109
|
+
contextCorrelationId: correlationId,
|
|
110
|
+
error: error.message,
|
|
111
|
+
});
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
events.on(core_1.CredentialEventTypes.CredentialStateChanged, async (e) => {
|
|
116
|
+
const rec = e.payload.credentialRecord;
|
|
117
|
+
const connId = rec.connectionId;
|
|
118
|
+
if (!connId)
|
|
119
|
+
return;
|
|
120
|
+
const scoped = await resolveEventContext(e.metadata);
|
|
121
|
+
if (!scoped)
|
|
122
|
+
return;
|
|
123
|
+
try {
|
|
124
|
+
if (rec.state === core_1.CredentialState.RequestReceived) {
|
|
125
|
+
await service.autoAdvanceByConnection(scoped.context, connId, 'request_received');
|
|
126
|
+
}
|
|
127
|
+
else if (rec.state === core_1.CredentialState.Done) {
|
|
128
|
+
await service.autoAdvanceByConnection(scoped.context, connId, 'issued_ack');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
await scoped.release();
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
events.on(core_1.ProofEventTypes.ProofStateChanged, async (e) => {
|
|
136
|
+
const rec = e.payload.proofRecord;
|
|
137
|
+
const connId = rec.connectionId;
|
|
138
|
+
if (!connId)
|
|
139
|
+
return;
|
|
140
|
+
const scoped = await resolveEventContext(e.metadata);
|
|
141
|
+
if (!scoped)
|
|
142
|
+
return;
|
|
143
|
+
try {
|
|
144
|
+
if (rec.state === core_1.ProofState.PresentationReceived) {
|
|
145
|
+
await service.autoAdvanceByConnection(scoped.context, connId, 'presentation_received');
|
|
146
|
+
}
|
|
147
|
+
else if (rec.state === core_1.ProofState.Done) {
|
|
148
|
+
await service.autoAdvanceByConnection(scoped.context, connId, 'verified_ack');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
await scoped.release();
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// Optional: register payments v1 actions when payments module is available
|
|
156
|
+
try {
|
|
157
|
+
let createPaymentsV1Actions;
|
|
158
|
+
try {
|
|
159
|
+
;
|
|
160
|
+
({ createPaymentsV1Actions } = require('@credo-ts/payments'));
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
/* optional dependency */
|
|
164
|
+
}
|
|
165
|
+
if (!createPaymentsV1Actions) {
|
|
166
|
+
try {
|
|
167
|
+
;
|
|
168
|
+
({ createPaymentsV1Actions } = require('@credo-ts/payments/workflow/PaymentsV1Actions'));
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
/* optional dependency */
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (!createPaymentsV1Actions) {
|
|
175
|
+
try {
|
|
176
|
+
;
|
|
177
|
+
({ createPaymentsV1Actions } = require('@credo-ts/payments/workflow/PaymentsV1Actions'));
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
/* optional dependency */
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Additionally attempt any payments package declared in dependencies that ends with '/payments'
|
|
184
|
+
if (!createPaymentsV1Actions) {
|
|
185
|
+
try {
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
187
|
+
const pkg = require('../package.json');
|
|
188
|
+
const depNames = Object.keys(pkg?.dependencies || {});
|
|
189
|
+
const candidates = depNames.filter((n) => /\/payments$/.test(n));
|
|
190
|
+
for (const name of candidates) {
|
|
191
|
+
try {
|
|
192
|
+
// first try root export
|
|
193
|
+
;
|
|
194
|
+
({ createPaymentsV1Actions } = require(name));
|
|
195
|
+
if (createPaymentsV1Actions)
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
/* noop */
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
// then subpath export
|
|
203
|
+
;
|
|
204
|
+
({ createPaymentsV1Actions } = require(`${name}/workflow/PaymentsV1Actions`));
|
|
205
|
+
if (createPaymentsV1Actions)
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
/* noop */
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
/* optional dependency */
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (createPaymentsV1Actions) {
|
|
218
|
+
const actions = createPaymentsV1Actions();
|
|
219
|
+
try {
|
|
220
|
+
// Prefer explicit API if available
|
|
221
|
+
const svcAny = service;
|
|
222
|
+
if (typeof svcAny.registerActions === 'function') {
|
|
223
|
+
svcAny.registerActions(actions);
|
|
224
|
+
}
|
|
225
|
+
else if (svcAny.actions && typeof svcAny.actions.register === 'function') {
|
|
226
|
+
for (const a of actions)
|
|
227
|
+
svcAny.actions.register(a);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
throw new Error('no action registry available');
|
|
231
|
+
}
|
|
232
|
+
logger.info('WorkflowModule - registered PaymentsV1 actions');
|
|
233
|
+
}
|
|
234
|
+
catch (_e) {
|
|
235
|
+
// swallow
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
/* optional dependency */
|
|
241
|
+
}
|
|
242
|
+
// Optional: map payments events → workflow events (guarded if payments not installed)
|
|
243
|
+
if (this.config.enablePaymentsEventMapping)
|
|
244
|
+
try {
|
|
245
|
+
let PaymentsEventTypes;
|
|
246
|
+
try {
|
|
247
|
+
;
|
|
248
|
+
({ PaymentsEventTypes } = require('@credo-ts/payments'));
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
/* optional dependency */
|
|
252
|
+
}
|
|
253
|
+
if (!PaymentsEventTypes) {
|
|
254
|
+
try {
|
|
255
|
+
;
|
|
256
|
+
({ PaymentsEventTypes } = require('@credo-ts/payments/events/PaymentEvents'));
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
/* optional dependency */
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (!PaymentsEventTypes) {
|
|
263
|
+
try {
|
|
264
|
+
;
|
|
265
|
+
({ PaymentsEventTypes } = require('@credo-ts/payments/events/PaymentEvents'));
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
/* optional dependency */
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (!PaymentsEventTypes)
|
|
272
|
+
return;
|
|
273
|
+
const adv = async (threadId, event, metadata) => {
|
|
274
|
+
const scoped = await resolveEventContext(metadata);
|
|
275
|
+
if (!scoped)
|
|
276
|
+
return;
|
|
277
|
+
try {
|
|
278
|
+
await service.advance(scoped.context, {
|
|
279
|
+
instance_id: threadId,
|
|
280
|
+
event,
|
|
281
|
+
idempotency_key: `auto:payments:${event}:${threadId}`,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
catch (e) {
|
|
285
|
+
logger.debug(`[Workflow] payments event advance error: ${e.message}`);
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
await scoped.release();
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
const on = (evt, cb) => events.on?.(evt, cb);
|
|
292
|
+
if (PaymentsEventTypes.IntroResponded)
|
|
293
|
+
on(PaymentsEventTypes.IntroResponded, async (e) => {
|
|
294
|
+
const th = e?.payload?.threadId;
|
|
295
|
+
if (th)
|
|
296
|
+
await adv(th, 'payments.methods_received', e?.metadata);
|
|
297
|
+
});
|
|
298
|
+
if (PaymentsEventTypes.HandshakeAccepted)
|
|
299
|
+
on(PaymentsEventTypes.HandshakeAccepted, async (e) => {
|
|
300
|
+
const th = e?.payload?.threadId;
|
|
301
|
+
if (th)
|
|
302
|
+
await adv(th, 'payments.handshake_accepted', e?.metadata);
|
|
303
|
+
});
|
|
304
|
+
if (PaymentsEventTypes.ComplianceRequired)
|
|
305
|
+
on(PaymentsEventTypes.ComplianceRequired, async (e) => {
|
|
306
|
+
const th = e?.payload?.threadId;
|
|
307
|
+
if (th)
|
|
308
|
+
await adv(th, 'payments.compliance_required', e?.metadata);
|
|
309
|
+
});
|
|
310
|
+
if (PaymentsEventTypes.ComplianceSatisfied)
|
|
311
|
+
on(PaymentsEventTypes.ComplianceSatisfied, async (e) => {
|
|
312
|
+
const th = e?.payload?.threadId;
|
|
313
|
+
if (th)
|
|
314
|
+
await adv(th, 'payments.compliance_satisfied', e?.metadata);
|
|
315
|
+
});
|
|
316
|
+
if (PaymentsEventTypes.ComplianceRejected)
|
|
317
|
+
on(PaymentsEventTypes.ComplianceRejected, async (e) => {
|
|
318
|
+
const th = e?.payload?.threadId;
|
|
319
|
+
if (th)
|
|
320
|
+
await adv(th, 'payments.compliance_rejected', e?.metadata);
|
|
321
|
+
});
|
|
322
|
+
if (PaymentsEventTypes.SettlementUpdated)
|
|
323
|
+
on(PaymentsEventTypes.SettlementUpdated, async (e) => {
|
|
324
|
+
const p = e?.payload;
|
|
325
|
+
const th = p?.threadId;
|
|
326
|
+
const status = p?.status;
|
|
327
|
+
if (!status)
|
|
328
|
+
return;
|
|
329
|
+
const map = {
|
|
330
|
+
received: 'payments.receipt_received',
|
|
331
|
+
pending: 'payments.settlement_pending',
|
|
332
|
+
settled: 'payments.settled',
|
|
333
|
+
failed: 'payments.failed',
|
|
334
|
+
};
|
|
335
|
+
const ev = map[status];
|
|
336
|
+
if (ev && th)
|
|
337
|
+
await adv(th, ev, e?.metadata);
|
|
338
|
+
});
|
|
339
|
+
logger.info('WorkflowModule - registered Payments event listeners');
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
/* optional dependency */
|
|
343
|
+
}
|
|
344
|
+
// Initialize persistent command queue (always enabled, no Redis needed)
|
|
345
|
+
logger.info('WorkflowModule - initializing persistent command queue');
|
|
346
|
+
const commandRepo = dm.resolve(WorkflowCommandRepository_1.WorkflowCommandRepository);
|
|
347
|
+
const queue = new PersistentCommandQueue_1.PersistentCommandQueue(commandRepo, contextProvider, agentContext, {
|
|
348
|
+
pollIntervalMs: this.config.asyncQueue?.pollIntervalMs,
|
|
349
|
+
concurrency: this.config.asyncQueue?.concurrency,
|
|
350
|
+
processingTimeoutMs: this.config.asyncQueue?.processingTimeoutMs,
|
|
351
|
+
staleCheckIntervalMs: this.config.asyncQueue?.staleCheckIntervalMs,
|
|
352
|
+
cleanupIntervalMs: this.config.asyncQueue?.cleanupIntervalMs,
|
|
353
|
+
commandRetentionMs: this.config.asyncQueue?.commandRetentionMs,
|
|
354
|
+
failedRetentionMs: this.config.asyncQueue?.failedRetentionMs,
|
|
355
|
+
maxAttempts: this.config.asyncQueue?.maxAttempts,
|
|
356
|
+
});
|
|
357
|
+
// In tests or minimal environments, dependencyManager may not expose registerInstance
|
|
358
|
+
try {
|
|
359
|
+
const anyDm = dm;
|
|
360
|
+
anyDm.registerInstance?.(CommandQueue_1.CommandQueueService, queue);
|
|
361
|
+
}
|
|
362
|
+
catch {
|
|
363
|
+
// no-op if DI container doesn't support instance registration in this context
|
|
364
|
+
}
|
|
365
|
+
// Start worker: processes commands and sends follow-up status messages
|
|
366
|
+
await queue.startWorker(async (job) => {
|
|
367
|
+
// Context resolution handled inside PersistentCommandQueue
|
|
368
|
+
// Worker receives job with already-resolved context
|
|
369
|
+
// This worker callback is called from PersistentCommandQueue.processCommand
|
|
370
|
+
// which already resolves the context, so we need to get it here
|
|
371
|
+
const metadata = { contextCorrelationId: job.contextCorrelationId };
|
|
372
|
+
const scoped = await (async () => {
|
|
373
|
+
const correlationId = metadata.contextCorrelationId;
|
|
374
|
+
if (!correlationId || correlationId === rootContextId) {
|
|
375
|
+
return { context: agentContext, release: async () => { } };
|
|
376
|
+
}
|
|
377
|
+
try {
|
|
378
|
+
const scopedContext = await contextProvider.getAgentContextForContextCorrelationId(correlationId);
|
|
379
|
+
return {
|
|
380
|
+
context: scopedContext,
|
|
381
|
+
release: async () => {
|
|
382
|
+
try {
|
|
383
|
+
await contextProvider.endSessionForAgentContext(scopedContext);
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
logger.debug('WorkflowModule - failed to end tenant session after queue job', {
|
|
387
|
+
contextCorrelationId: correlationId,
|
|
388
|
+
error: error.message,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
logger.debug('WorkflowModule - unable to resolve context for queue job', {
|
|
396
|
+
error: error.message,
|
|
397
|
+
});
|
|
398
|
+
return null;
|
|
399
|
+
}
|
|
400
|
+
})();
|
|
401
|
+
if (!scoped)
|
|
402
|
+
return;
|
|
403
|
+
try {
|
|
404
|
+
const ctx = scoped.context;
|
|
405
|
+
switch (job.cmd) {
|
|
406
|
+
case 'start':
|
|
407
|
+
await service.start(ctx, job.payload);
|
|
408
|
+
break;
|
|
409
|
+
case 'advance':
|
|
410
|
+
await service.advance(ctx, job.payload);
|
|
411
|
+
break;
|
|
412
|
+
case 'pause':
|
|
413
|
+
await service.pause(ctx, job.payload);
|
|
414
|
+
break;
|
|
415
|
+
case 'resume':
|
|
416
|
+
await service.resume(ctx, job.payload);
|
|
417
|
+
break;
|
|
418
|
+
case 'cancel':
|
|
419
|
+
await service.cancel(ctx, job.payload);
|
|
420
|
+
break;
|
|
421
|
+
case 'complete':
|
|
422
|
+
await service.complete(ctx, job.payload);
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
// After processing, send follow-up Status message to counterparty
|
|
426
|
+
try {
|
|
427
|
+
const repo = dm.resolve(WorkflowInstanceRepository_1.WorkflowInstanceRepository);
|
|
428
|
+
const inst = await repo.getByInstanceId(ctx, job.thid);
|
|
429
|
+
const connectionId = job.connectionId || inst?.connectionId;
|
|
430
|
+
if (connectionId) {
|
|
431
|
+
const statusBody = await service.status(ctx, { instance_id: job.thid });
|
|
432
|
+
const connectionSvc = dm.resolve(core_2.ConnectionService);
|
|
433
|
+
const messageSender = dm.resolve(core_1.MessageSender);
|
|
434
|
+
const connection = await connectionSvc.getById(ctx, connectionId);
|
|
435
|
+
const statusMsg = new StatusMessage_1.StatusMessage({ thid: job.thid, body: statusBody });
|
|
436
|
+
try {
|
|
437
|
+
statusMsg.setReturnRouting(core_1.ReturnRouteTypes.thread, job.thid);
|
|
438
|
+
}
|
|
439
|
+
catch {
|
|
440
|
+
/* noop */
|
|
441
|
+
}
|
|
442
|
+
const outbound = new core_1.OutboundMessageContext(statusMsg, { agentContext: ctx, connection });
|
|
443
|
+
await messageSender.sendMessage(outbound);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
catch (err) {
|
|
447
|
+
logger.debug('WorkflowModule - follow-up status send failed', {
|
|
448
|
+
error: err.message,
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
finally {
|
|
453
|
+
await scoped.release();
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
exports.WorkflowModule = WorkflowModule;
|
|
459
|
+
//# sourceMappingURL=WorkflowModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowModule.js","sourceRoot":"","sources":["../src/WorkflowModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type GuardEngine = 'jmespath' | 'cel' | 'js';
|
|
2
|
+
export interface WorkflowModuleConfigOptions {
|
|
3
|
+
guardEngine?: GuardEngine;
|
|
4
|
+
autoReturnExistingOnSingleton?: boolean;
|
|
5
|
+
actionTimeoutMs?: number;
|
|
6
|
+
enableProblemReport?: boolean;
|
|
7
|
+
enablePaymentsEventMapping?: boolean;
|
|
8
|
+
enableAutoDiscoverOnStart?: boolean;
|
|
9
|
+
discoveryTimeoutMs?: number;
|
|
10
|
+
idempotencyHistoryLimit?: number;
|
|
11
|
+
asyncQueue?: {
|
|
12
|
+
pollIntervalMs?: number;
|
|
13
|
+
concurrency?: number;
|
|
14
|
+
processingTimeoutMs?: number;
|
|
15
|
+
staleCheckIntervalMs?: number;
|
|
16
|
+
cleanupIntervalMs?: number;
|
|
17
|
+
commandRetentionMs?: number;
|
|
18
|
+
failedRetentionMs?: number;
|
|
19
|
+
maxAttempts?: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare class WorkflowModuleConfig {
|
|
23
|
+
readonly guardEngine: GuardEngine;
|
|
24
|
+
readonly autoReturnExistingOnSingleton: boolean;
|
|
25
|
+
readonly actionTimeoutMs: number;
|
|
26
|
+
readonly enableProblemReport: boolean;
|
|
27
|
+
readonly enablePaymentsEventMapping: boolean;
|
|
28
|
+
readonly enableAutoDiscoverOnStart: boolean;
|
|
29
|
+
readonly discoveryTimeoutMs: number;
|
|
30
|
+
readonly idempotencyHistoryLimit: number;
|
|
31
|
+
readonly asyncQueue?: NonNullable<WorkflowModuleConfigOptions['asyncQueue']>;
|
|
32
|
+
constructor(options?: WorkflowModuleConfigOptions);
|
|
33
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowModuleConfig = void 0;
|
|
4
|
+
class WorkflowModuleConfig {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.guardEngine = options?.guardEngine ?? 'jmespath';
|
|
7
|
+
this.autoReturnExistingOnSingleton = options?.autoReturnExistingOnSingleton ?? true;
|
|
8
|
+
this.actionTimeoutMs = options?.actionTimeoutMs ?? 15000;
|
|
9
|
+
this.enableProblemReport = options?.enableProblemReport ?? true;
|
|
10
|
+
this.enablePaymentsEventMapping = options?.enablePaymentsEventMapping ?? true;
|
|
11
|
+
this.enableAutoDiscoverOnStart = options?.enableAutoDiscoverOnStart ?? true;
|
|
12
|
+
this.discoveryTimeoutMs = options?.discoveryTimeoutMs ?? 5000;
|
|
13
|
+
this.idempotencyHistoryLimit = options?.idempotencyHistoryLimit ?? 100;
|
|
14
|
+
this.asyncQueue = options?.asyncQueue;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.WorkflowModuleConfig = WorkflowModuleConfig;
|
|
18
|
+
//# sourceMappingURL=WorkflowModuleConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowModuleConfig.js","sourceRoot":"","sources":["../src/WorkflowModuleConfig.ts"],"names":[],"mappings":";;;AAwBA,MAAa,oBAAoB;IAW/B,YAAmB,OAAqC;QACtD,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAA;QACrD,IAAI,CAAC,6BAA6B,GAAG,OAAO,EAAE,6BAA6B,IAAI,IAAI,CAAA;QACnF,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,KAAK,CAAA;QACxD,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,IAAI,IAAI,CAAA;QAC/D,IAAI,CAAC,0BAA0B,GAAG,OAAO,EAAE,0BAA0B,IAAI,IAAI,CAAA;QAC7E,IAAI,CAAC,yBAAyB,GAAG,OAAO,EAAE,yBAAyB,IAAI,IAAI,CAAA;QAC3E,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,IAAI,CAAA;QAC7D,IAAI,CAAC,uBAAuB,GAAG,OAAO,EAAE,uBAAuB,IAAI,GAAG,CAAA;QACtE,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAA;IACvC,CAAC;CACF;AAtBD,oDAsBC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ActionDef, WorkflowInstanceData, WorkflowTemplate } from '../model/types';
|
|
2
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
3
|
+
export type ActionCtx = {
|
|
4
|
+
agentContext: AgentContext;
|
|
5
|
+
template: WorkflowTemplate;
|
|
6
|
+
instance: WorkflowInstanceData;
|
|
7
|
+
action: ActionDef;
|
|
8
|
+
input?: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
export type ActionResult = {
|
|
11
|
+
artifacts?: Record<string, unknown>;
|
|
12
|
+
contextMerge?: Record<string, unknown>;
|
|
13
|
+
messageId?: string;
|
|
14
|
+
};
|
|
15
|
+
export interface WorkflowActionHandler {
|
|
16
|
+
readonly typeUri: string;
|
|
17
|
+
execute(ctx: ActionCtx): Promise<ActionResult>;
|
|
18
|
+
}
|
|
19
|
+
export declare class ActionRegistry {
|
|
20
|
+
private handlers;
|
|
21
|
+
register(handler: WorkflowActionHandler): void;
|
|
22
|
+
get(typeUri: string): WorkflowActionHandler | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare class LocalStateSetAction implements WorkflowActionHandler {
|
|
25
|
+
readonly typeUri = "https://didcomm.org/workflow/actions/state:set@1";
|
|
26
|
+
execute(ctx: ActionCtx): Promise<ActionResult>;
|
|
27
|
+
}
|
|
28
|
+
export declare class IssueCredentialV2Action implements WorkflowActionHandler {
|
|
29
|
+
readonly typeUri = "https://didcomm.org/issue-credential/2.0/offer-credential";
|
|
30
|
+
execute(ctx: ActionCtx): Promise<ActionResult>;
|
|
31
|
+
}
|
|
32
|
+
export declare class PresentProofV2Action implements WorkflowActionHandler {
|
|
33
|
+
readonly typeUri = "https://didcomm.org/present-proof/2.0/request-presentation";
|
|
34
|
+
execute(ctx: ActionCtx): Promise<ActionResult>;
|
|
35
|
+
}
|