@digipair/skill-temporal 0.113.1 → 0.114.2
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/README.md +11 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{src → dist/src}/index.js +1 -1
- package/dist/src/index.js.map +1 -0
- package/{src → dist/src}/lib/activities.d.ts +1 -1
- package/dist/src/lib/activities.d.ts.map +1 -0
- package/dist/src/lib/activities.js +8 -0
- package/dist/src/lib/activities.js.map +1 -0
- package/{src → dist/src}/lib/shared.d.ts +1 -1
- package/dist/src/lib/shared.d.ts.map +1 -0
- package/dist/src/lib/shared.js.map +1 -0
- package/{src → dist/src}/lib/skill-temporal.d.ts +1 -1
- package/dist/src/lib/skill-temporal.d.ts.map +1 -0
- package/dist/src/lib/skill-temporal.js +102 -0
- package/dist/src/lib/skill-temporal.js.map +1 -0
- package/{src → dist/src}/lib/workflows.d.ts +2 -1
- package/dist/src/lib/workflows.d.ts.map +1 -0
- package/dist/src/lib/workflows.js +123 -0
- package/dist/src/lib/workflows.js.map +1 -0
- package/package.json +58 -10
- package/src/digipair-engine.d.ts +23 -0
- package/src/handlebars.d.ts +1 -0
- package/src/index.ts +1 -0
- package/src/lib/activities.ts +11 -0
- package/src/lib/shared.ts +11 -0
- package/src/lib/skill-temporal.spec.ts +7 -0
- package/src/lib/skill-temporal.ts +126 -0
- package/src/lib/workflows.ts +153 -0
- package/src/schema.fr.json +443 -0
- package/src/schema.json +443 -0
- package/src/index.d.ts +0 -1
- package/src/index.js.map +0 -1
- package/src/lib/activities.js +0 -12
- package/src/lib/activities.js.map +0 -1
- package/src/lib/shared.js.map +0 -1
- package/src/lib/skill-temporal.js +0 -115
- package/src/lib/skill-temporal.js.map +0 -1
- package/src/lib/workflows.js +0 -121
- package/src/lib/workflows.js.map +0 -1
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{schema.fr.json → dist/schema.fr.json} +0 -0
- /package/{schema.json → dist/schema.json} +0 -0
- /package/{src → dist/src}/lib/shared.js +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# skill-temporal
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
## Building
|
|
6
|
+
|
|
7
|
+
Run `nx build skill-temporal` to build the library.
|
|
8
|
+
|
|
9
|
+
## Running unit tests
|
|
10
|
+
|
|
11
|
+
Run `nx test skill-temporal` to execute the unit tests via [Jest](https://jestjs.io).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./lib/skill-temporal"), exports);
|
|
4
|
+
tslib_1.__exportStar(require("./lib/skill-temporal.js"), exports);
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kEAAwC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="libs/skill-temporal/src/digipair-engine" />
|
|
2
1
|
import { PinsSettings } from '@digipair/engine';
|
|
3
2
|
export declare function executePinsList({ pinsSettingsList, context, }: {
|
|
4
3
|
pinsSettingsList: PinsSettings[];
|
|
5
4
|
context: any;
|
|
6
5
|
}): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=activities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activities.d.ts","sourceRoot":"","sources":["../../../src/lib/activities.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1F,wBAAsB,eAAe,CAAC,EACpC,gBAAgB,EAChB,OAAO,GACR,EAAE;IACD,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,OAAO,EAAE,GAAG,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAElB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executePinsList = executePinsList;
|
|
4
|
+
const engine_1 = require("@digipair/engine");
|
|
5
|
+
async function executePinsList({ pinsSettingsList, context, }) {
|
|
6
|
+
return await (0, engine_1.executePinsList)(pinsSettingsList, context);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=activities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../../src/lib/activities.ts"],"names":[],"mappings":";;AAEA,0CAQC;AAVD,6CAA0F;AAEnF,KAAK,UAAU,eAAe,CAAC,EACpC,gBAAgB,EAChB,OAAO,GAIR;IACC,OAAO,MAAM,IAAA,wBAAqB,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="libs/skill-temporal/src/digipair-engine" />
|
|
2
1
|
import { PinsSettings } from '@digipair/engine';
|
|
3
2
|
export type WorkflowArgs = {
|
|
4
3
|
steps: PinsSettings[];
|
|
@@ -8,3 +7,4 @@ export type WorkflowArgs = {
|
|
|
8
7
|
};
|
|
9
8
|
export declare const taskQueue = "DIGIPAIR_WORKFLOW_TASK_QUEUE";
|
|
10
9
|
export declare const namespace = "default";
|
|
10
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,SAAS,iCAAiC,CAAC;AACxD,eAAO,MAAM,SAAS,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/lib/shared.ts"],"names":[],"mappings":";;;AASa,QAAA,SAAS,GAAG,8BAA8B,CAAC;AAC3C,QAAA,SAAS,GAAG,SAAS,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/// <reference types="libs/skill-temporal/src/digipair-engine" />
|
|
2
1
|
import { PinsSettings } from '@digipair/engine';
|
|
3
2
|
export declare const initialize: (adresse: string) => Promise<void>;
|
|
4
3
|
export declare const workflow: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<any>;
|
|
5
4
|
export declare const push: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<any>;
|
|
6
5
|
export declare const terminate: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<any>;
|
|
7
6
|
export declare const list: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<any>;
|
|
7
|
+
//# sourceMappingURL=skill-temporal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-temporal.d.ts","sourceRoot":"","sources":["../../../src/lib/skill-temporal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA8GhD,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,kBACc,CAAC;AAEzD,eAAO,MAAM,QAAQ,GAAI,QAAQ,GAAG,EAAE,kBAAkB,YAAY,EAAE,EAAE,SAAS,GAAG,iBAC9B,CAAC;AAEvD,eAAO,MAAM,IAAI,GAAI,QAAQ,GAAG,EAAE,kBAAkB,YAAY,EAAE,EAAE,SAAS,GAAG,iBAC9B,CAAC;AAEnD,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,EAAE,kBAAkB,YAAY,EAAE,EAAE,SAAS,GAAG,iBAC9B,CAAC;AAExD,eAAO,MAAM,IAAI,GAAI,QAAQ,GAAG,EAAE,kBAAkB,YAAY,EAAE,EAAE,SAAS,GAAG,iBAC9B,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.list = exports.terminate = exports.push = exports.workflow = exports.initialize = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const client_1 = require("@temporalio/client");
|
|
6
|
+
const worker_1 = require("@temporalio/worker");
|
|
7
|
+
const workflows_js_1 = require("./workflows.js");
|
|
8
|
+
const shared_js_1 = require("./shared.js");
|
|
9
|
+
const activities = tslib_1.__importStar(require("./activities.js"));
|
|
10
|
+
class TemporalService {
|
|
11
|
+
async initialize(address = 'localhost:7233') {
|
|
12
|
+
await this.startClient(address);
|
|
13
|
+
await this.startWorker(address);
|
|
14
|
+
}
|
|
15
|
+
async startClient(address) {
|
|
16
|
+
const connection = await client_1.Connection.connect({
|
|
17
|
+
address,
|
|
18
|
+
});
|
|
19
|
+
this.client = new client_1.WorkflowClient({
|
|
20
|
+
connection,
|
|
21
|
+
namespace: shared_js_1.namespace,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async startWorker(address) {
|
|
25
|
+
const connection = await worker_1.NativeConnection.connect({
|
|
26
|
+
address,
|
|
27
|
+
});
|
|
28
|
+
const worker = await worker_1.Worker.create({
|
|
29
|
+
connection,
|
|
30
|
+
namespace: shared_js_1.namespace,
|
|
31
|
+
workflowsPath: require.resolve('./workflows'),
|
|
32
|
+
activities,
|
|
33
|
+
taskQueue: shared_js_1.taskQueue,
|
|
34
|
+
});
|
|
35
|
+
// Start accepting tasks from the Task Queue.
|
|
36
|
+
worker.run();
|
|
37
|
+
}
|
|
38
|
+
async workflow(params, _pinsSettingsList, context) {
|
|
39
|
+
const { id, steps, data = {}, options = context.privates.TEMPORAL_OPTIONS ?? {} } = params;
|
|
40
|
+
const prefix = context.privates.TEMPORAL_PREFIX ??
|
|
41
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
42
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
43
|
+
const workflowOptions = {
|
|
44
|
+
// RetryPolicy specifies how to automatically handle retries if an Activity fails.
|
|
45
|
+
retry: {
|
|
46
|
+
initialInterval: '1 second',
|
|
47
|
+
maximumInterval: '1 minute',
|
|
48
|
+
backoffCoefficient: 2,
|
|
49
|
+
maximumAttempts: 50,
|
|
50
|
+
nonRetryableErrorTypes: [],
|
|
51
|
+
...(options.retry || {}),
|
|
52
|
+
},
|
|
53
|
+
startToCloseTimeout: '1 minute',
|
|
54
|
+
...options,
|
|
55
|
+
};
|
|
56
|
+
this.client.start(workflows_js_1.workflow, {
|
|
57
|
+
args: [{ steps, context: { ...context, protected: undefined, requester: { ...context.requester, protected: undefined } }, data, options: workflowOptions }],
|
|
58
|
+
taskQueue: shared_js_1.taskQueue,
|
|
59
|
+
workflowId: `${prefix}${id}`,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async push(params, _pinsSettingsList, context) {
|
|
63
|
+
const { id, data } = params;
|
|
64
|
+
const prefix = context.privates.TEMPORAL_PREFIX ??
|
|
65
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
66
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
67
|
+
const handle = this.client.getHandle(`${prefix}${id}`);
|
|
68
|
+
await handle.signal(workflows_js_1.dataSignal, data);
|
|
69
|
+
}
|
|
70
|
+
async terminate(params, _pinsSettingsList, context) {
|
|
71
|
+
const { id } = params;
|
|
72
|
+
const prefix = context.privates.TEMPORAL_PREFIX ??
|
|
73
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
74
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
75
|
+
const handle = this.client.getHandle(`${prefix}${id}`);
|
|
76
|
+
await handle.terminate();
|
|
77
|
+
}
|
|
78
|
+
async list(params, _pinsSettingsList, context) {
|
|
79
|
+
const { query = `ExecutionStatus = "Running"` } = params;
|
|
80
|
+
const prefix = context.privates.TEMPORAL_PREFIX ??
|
|
81
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
82
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
83
|
+
const workflowIterator = this.client.list({ query: `(WorkflowId > '${prefix}' and WorkflowId < '${prefix}~') and (${query})` });
|
|
84
|
+
const workflows = [];
|
|
85
|
+
for await (const workflow of workflowIterator) {
|
|
86
|
+
workflows.push(workflow);
|
|
87
|
+
}
|
|
88
|
+
return workflows;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
let instance;
|
|
92
|
+
const initialize = (adresse) => (instance = new TemporalService()).initialize(adresse);
|
|
93
|
+
exports.initialize = initialize;
|
|
94
|
+
const workflow = (params, pinsSettingsList, context) => instance.workflow(params, pinsSettingsList, context);
|
|
95
|
+
exports.workflow = workflow;
|
|
96
|
+
const push = (params, pinsSettingsList, context) => instance.push(params, pinsSettingsList, context);
|
|
97
|
+
exports.push = push;
|
|
98
|
+
const terminate = (params, pinsSettingsList, context) => instance.terminate(params, pinsSettingsList, context);
|
|
99
|
+
exports.terminate = terminate;
|
|
100
|
+
const list = (params, pinsSettingsList, context) => instance.list(params, pinsSettingsList, context);
|
|
101
|
+
exports.list = list;
|
|
102
|
+
//# sourceMappingURL=skill-temporal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-temporal.js","sourceRoot":"","sources":["../../../src/lib/skill-temporal.ts"],"names":[],"mappings":";;;;AAGA,+CAAuF;AACvF,+CAA8D;AAE9D,iDAAqE;AACrE,2CAAmD;AACnD,oEAA8C;AAE9C,MAAM,eAAe;IAGnB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,gBAAgB;QACzC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,UAAU,GAAG,MAAM,mBAAU,CAAC,OAAO,CAAC;YAC1C,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC;YAC/B,UAAU;YACV,SAAS,EAAT,qBAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,UAAU,GAAG,MAAM,yBAAgB,CAAC,OAAO,CAAC;YAChD,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,MAAM,CAAC;YACjC,UAAU;YACV,SAAS,EAAT,qBAAS;YACT,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7C,UAAU;YACV,SAAS,EAAT,qBAAS;SACV,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAW,EAAE,iBAAiC,EAAE,OAAY;QACzE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC;QAC3F,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,eAAe;YAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9B,qBAAqB,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;QAChF,MAAM,eAAe,GAAG;YACtB,kFAAkF;YAClF,KAAK,EAAE;gBACL,eAAe,EAAE,UAAU;gBAC3B,eAAe,EAAE,UAAU;gBAC3B,kBAAkB,EAAE,CAAC;gBACrB,eAAe,EAAE,EAAE;gBACnB,sBAAsB,EAAE,EAAE;gBAC1B,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;aACzB;YACD,mBAAmB,EAAE,UAAU;YAC/B,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAW,EAAE;YAC7B,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YAC3J,SAAS,EAAT,qBAAS;YACT,UAAU,EAAE,GAAG,MAAM,GAAG,EAAE,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAW,EAAE,iBAAiC,EAAE,OAAY;QACrE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAC5B,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,eAAe;YAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9B,qBAAqB,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,MAAM,CAAC,yBAAU,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAW,EAAE,iBAAiC,EAAE,OAAY;QAC1E,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QACtB,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,eAAe;YAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9B,qBAAqB,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAW,EAAE,iBAAiC,EAAE,OAAY;QACrE,MAAM,EAAE,KAAK,GAAG,6BAA6B,EAAE,GAAG,MAAM,CAAC;QACzD,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,eAAe;YAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9B,qBAAqB,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;QAEhF,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,MAAM,uBAAuB,MAAM,YAAY,KAAK,GAAG,EAAE,CAAC,CAAC;QAChI,MAAM,SAAS,GAAG,EAA6B,CAAC;QAChD,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,IAAI,QAAyB,CAAC;AAEvB,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE,CAC5C,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAD5C,QAAA,UAAU,cACkC;AAElD,MAAM,QAAQ,GAAG,CAAC,MAAW,EAAE,gBAAgC,EAAE,OAAY,EAAE,EAAE,CACtF,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAD1C,QAAA,QAAQ,YACkC;AAEhD,MAAM,IAAI,GAAG,CAAC,MAAW,EAAE,gBAAgC,EAAE,OAAY,EAAE,EAAE,CAClF,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AADtC,QAAA,IAAI,QACkC;AAE5C,MAAM,SAAS,GAAG,CAAC,MAAW,EAAE,gBAAgC,EAAE,OAAY,EAAE,EAAE,CACvF,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAD3C,QAAA,SAAS,aACkC;AAEjD,MAAM,IAAI,GAAG,CAAC,MAAW,EAAE,gBAAgC,EAAE,OAAY,EAAE,EAAE,CAClF,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AADtC,QAAA,IAAI,QACkC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { WorkflowArgs } from './shared';
|
|
1
|
+
import { WorkflowArgs } from './shared.js';
|
|
2
2
|
export declare const dataSignal: import("@temporalio/workflow").SignalDefinition<[any], string>;
|
|
3
3
|
export declare function workflow({ steps, context, data, options }: WorkflowArgs): Promise<any>;
|
|
4
|
+
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../src/lib/workflows.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,UAAU,gEAA8B,CAAC;AAoGtD,wBAAsB,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CA2C5F"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dataSignal = void 0;
|
|
4
|
+
exports.workflow = workflow;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const workflow_1 = require("@temporalio/workflow");
|
|
7
|
+
const common_1 = require("@temporalio/common");
|
|
8
|
+
const engine_1 = require("@digipair/engine");
|
|
9
|
+
const feelin = tslib_1.__importStar(require("feelin"));
|
|
10
|
+
const { evaluate } = feelin;
|
|
11
|
+
exports.dataSignal = (0, workflow_1.defineSignal)('data');
|
|
12
|
+
async function executePins(executePinsList, steps, state, settingsOrigin, context) {
|
|
13
|
+
const settings = await (0, engine_1.preparePinsSettings)(settingsOrigin, context);
|
|
14
|
+
let result = null;
|
|
15
|
+
if (settings.conditions?.each) {
|
|
16
|
+
const results = [];
|
|
17
|
+
for (let index = 0; index < settings.conditions.each.length; index++) {
|
|
18
|
+
const item = settings.conditions.each[index];
|
|
19
|
+
const itemSettingsOrigin = {
|
|
20
|
+
...settingsOrigin,
|
|
21
|
+
conditions: { ...settingsOrigin.conditions, each: undefined },
|
|
22
|
+
};
|
|
23
|
+
const itemContext = {
|
|
24
|
+
...context,
|
|
25
|
+
item,
|
|
26
|
+
index,
|
|
27
|
+
parent: { item: context.item, index: item.index, parent: context.parent },
|
|
28
|
+
};
|
|
29
|
+
const itemSettings = await (0, engine_1.preparePinsSettings)(itemSettingsOrigin, itemContext);
|
|
30
|
+
if (typeof itemSettings.conditions?.if !== 'undefined' && !itemSettings.conditions.if) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
let itemResult = null;
|
|
34
|
+
try {
|
|
35
|
+
itemResult = await executePins(executePinsList, steps, state, itemSettingsOrigin, itemContext);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error === 'DIGIPAIR_CONDITIONS_IF_FALSE') {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
results.push(itemResult);
|
|
44
|
+
}
|
|
45
|
+
return results;
|
|
46
|
+
}
|
|
47
|
+
if (typeof settings.conditions?.if !== 'undefined' && !settings.conditions.if) {
|
|
48
|
+
throw 'DIGIPAIR_CONDITIONS_IF_FALSE';
|
|
49
|
+
}
|
|
50
|
+
if (settings.element === 'sleep') {
|
|
51
|
+
result = await (0, workflow_1.sleep)(settings.properties['duration']);
|
|
52
|
+
}
|
|
53
|
+
else if (settings.element === 'condition') {
|
|
54
|
+
result = await (0, workflow_1.condition)(() => evaluate(settings.properties.condition, context), settings.properties.timeout);
|
|
55
|
+
}
|
|
56
|
+
else if (settings.element === 'stop') {
|
|
57
|
+
throw 'DIGIPAIR_WORKFLOW_STOP';
|
|
58
|
+
}
|
|
59
|
+
else if (settings.element === 'goto') {
|
|
60
|
+
const step = steps
|
|
61
|
+
.filter(current => !!current.properties?.['name'])
|
|
62
|
+
.findIndex(current => current.properties['name'] === settings.properties['name']);
|
|
63
|
+
if (step <= -1) {
|
|
64
|
+
throw new common_1.ApplicationFailure('[SKILL-TEMPORAL] GOTO FAILED - STEP NOT FOUND', null, null, [
|
|
65
|
+
settings.properties['name'],
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
result = state.step = step;
|
|
69
|
+
}
|
|
70
|
+
else if (settings.element === 'activity') {
|
|
71
|
+
try {
|
|
72
|
+
result = await executePinsList({
|
|
73
|
+
pinsSettingsList: settings.properties['execute'],
|
|
74
|
+
context,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new common_1.ApplicationFailure('[SKILL-TEMPORAL] EXECUTEPINS FAILED', null, null, [
|
|
79
|
+
error,
|
|
80
|
+
settings,
|
|
81
|
+
context,
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
async function workflow({ steps, context, data, options }) {
|
|
88
|
+
let result;
|
|
89
|
+
context.workflow = { steps: {}, data };
|
|
90
|
+
context.protected = {};
|
|
91
|
+
const { executePinsList } = (0, workflow_1.proxyActivities)(options);
|
|
92
|
+
(0, workflow_1.setHandler)(exports.dataSignal, (data) => {
|
|
93
|
+
context.workflow.data = { ...context.workflow.data, ...data };
|
|
94
|
+
});
|
|
95
|
+
// vérifie si tous les pinsSettings sont bien de la librairie @digipair/skill-temporal
|
|
96
|
+
const indexSkillNoWorkflow = steps.findIndex(pinsSettings => pinsSettings.library !== '@digipair/skill-temporal');
|
|
97
|
+
if (indexSkillNoWorkflow >= 0) {
|
|
98
|
+
throw new common_1.ApplicationFailure('[SKILL-TEMPORAL] UNKNOWN STEP', null, null, [
|
|
99
|
+
steps[indexSkillNoWorkflow],
|
|
100
|
+
]);
|
|
101
|
+
}
|
|
102
|
+
// parcourir tous les pins
|
|
103
|
+
for (let state = { step: 0 }; state.step < steps.length; state.step++) {
|
|
104
|
+
const pinsSettings = steps[state.step];
|
|
105
|
+
try {
|
|
106
|
+
result = await executePins(executePinsList, steps, state, pinsSettings, context);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (error === 'DIGIPAIR_CONDITIONS_IF_FALSE') {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
else if (error === 'DIGIPAIR_WORKFLOW_STOP') {
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
if (pinsSettings.properties?.['name']) {
|
|
118
|
+
context.workflow.steps[pinsSettings.properties['name']] = result;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../src/lib/workflows.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,67 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digipair/skill-temporal",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.114.2",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"digipair",
|
|
6
6
|
"service",
|
|
7
7
|
"tool"
|
|
8
8
|
],
|
|
9
|
+
"type": "commonjs",
|
|
10
|
+
"main": "./dist/src/index.js",
|
|
11
|
+
"module": "./dist/src/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"development": "./src/index.ts",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/src/index.js",
|
|
18
|
+
"default": "./dist/src/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json",
|
|
21
|
+
"./index.js": "./dist/src/index.js",
|
|
22
|
+
"./schema.json": "./dist/schema.json",
|
|
23
|
+
"./schema.fr.json": "./dist/schema.fr.json"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"package.json",
|
|
29
|
+
"src"
|
|
30
|
+
],
|
|
31
|
+
"nx": {
|
|
32
|
+
"name": "skill-temporal",
|
|
33
|
+
"targets": {
|
|
34
|
+
"build": {
|
|
35
|
+
"executor": "@nx/js:tsc",
|
|
36
|
+
"outputs": [
|
|
37
|
+
"{options.outputPath}"
|
|
38
|
+
],
|
|
39
|
+
"options": {
|
|
40
|
+
"outputPath": "libs/skill-temporal/dist",
|
|
41
|
+
"main": "libs/skill-temporal/src/index.ts",
|
|
42
|
+
"tsConfig": "libs/skill-temporal/tsconfig.lib.json",
|
|
43
|
+
"generatePackageJson": false,
|
|
44
|
+
"assets": [
|
|
45
|
+
{
|
|
46
|
+
"input": "libs/skill-temporal/src",
|
|
47
|
+
"glob": "schema*.json",
|
|
48
|
+
"output": "."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"input": "libs/skill-temporal",
|
|
52
|
+
"glob": "index.d.ts",
|
|
53
|
+
"output": "."
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
9
60
|
"dependencies": {
|
|
10
|
-
"@temporalio/client": "^1.
|
|
11
|
-
"@temporalio/common": "^1.
|
|
12
|
-
"@temporalio/worker": "^1.
|
|
13
|
-
"@temporalio/workflow": "^1.
|
|
61
|
+
"@temporalio/client": "^1.11.8",
|
|
62
|
+
"@temporalio/common": "^1.11.8",
|
|
63
|
+
"@temporalio/worker": "^1.11.8",
|
|
64
|
+
"@temporalio/workflow": "^1.11.8",
|
|
14
65
|
"feelin": "^4.3.0"
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
"module": "./index.esm.js",
|
|
18
|
-
"type": "commonjs"
|
|
19
|
-
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare module '@digipair/engine' {
|
|
2
|
+
export type PinsSettings = any;
|
|
3
|
+
|
|
4
|
+
type CONFIG_KEY = 'BASE_URL' | 'LIBRARIES';
|
|
5
|
+
export declare const config: {
|
|
6
|
+
set: (key: CONFIG_KEY, value: any) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const applyTemplate: (value: any, context: any) => any;
|
|
9
|
+
export declare const executePinsList: (
|
|
10
|
+
pinsSettingsList: PinsSettings[],
|
|
11
|
+
context: any,
|
|
12
|
+
) => Promise<any>;
|
|
13
|
+
export declare const generateElementFromPins: (
|
|
14
|
+
pinsSettings: PinsSettings,
|
|
15
|
+
parent: Element,
|
|
16
|
+
context: any,
|
|
17
|
+
) => Promise<Element | void>;
|
|
18
|
+
export declare const preparePinsSettings: (
|
|
19
|
+
settings: PinsSettings,
|
|
20
|
+
context: any,
|
|
21
|
+
) => Promise<PinsSettings>;
|
|
22
|
+
export {};
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare module 'handlebars/dist/handlebars.min.js';
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/skill-temporal.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { executePinsList as executePinsListEngine, PinsSettings } from '@digipair/engine';
|
|
2
|
+
|
|
3
|
+
export async function executePinsList({
|
|
4
|
+
pinsSettingsList,
|
|
5
|
+
context,
|
|
6
|
+
}: {
|
|
7
|
+
pinsSettingsList: PinsSettings[];
|
|
8
|
+
context: any;
|
|
9
|
+
}): Promise<string> {
|
|
10
|
+
return await executePinsListEngine(pinsSettingsList, context);
|
|
11
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
import { PinsSettings } from '@digipair/engine';
|
|
4
|
+
import { Connection, WorkflowClient, WorkflowExecutionInfo } from '@temporalio/client';
|
|
5
|
+
import { NativeConnection, Worker } from '@temporalio/worker';
|
|
6
|
+
|
|
7
|
+
import { dataSignal, workflow as workflowJob } from './workflows.js';
|
|
8
|
+
import { namespace, taskQueue } from './shared.js';
|
|
9
|
+
import * as activities from './activities.js';
|
|
10
|
+
|
|
11
|
+
class TemporalService {
|
|
12
|
+
private client!: WorkflowClient;
|
|
13
|
+
|
|
14
|
+
async initialize(address = 'localhost:7233') {
|
|
15
|
+
await this.startClient(address);
|
|
16
|
+
await this.startWorker(address);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private async startClient(address: string) {
|
|
20
|
+
const connection = await Connection.connect({
|
|
21
|
+
address,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
this.client = new WorkflowClient({
|
|
25
|
+
connection,
|
|
26
|
+
namespace,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private async startWorker(address: string) {
|
|
31
|
+
const connection = await NativeConnection.connect({
|
|
32
|
+
address,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const worker = await Worker.create({
|
|
36
|
+
connection,
|
|
37
|
+
namespace,
|
|
38
|
+
workflowsPath: require.resolve('./workflows'),
|
|
39
|
+
activities,
|
|
40
|
+
taskQueue,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Start accepting tasks from the Task Queue.
|
|
44
|
+
worker.run();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async workflow(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
|
|
48
|
+
const { id, steps, data = {}, options = context.privates.TEMPORAL_OPTIONS ?? {} } = params;
|
|
49
|
+
const prefix =
|
|
50
|
+
context.privates.TEMPORAL_PREFIX ??
|
|
51
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
52
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
53
|
+
const workflowOptions = {
|
|
54
|
+
// RetryPolicy specifies how to automatically handle retries if an Activity fails.
|
|
55
|
+
retry: {
|
|
56
|
+
initialInterval: '1 second',
|
|
57
|
+
maximumInterval: '1 minute',
|
|
58
|
+
backoffCoefficient: 2,
|
|
59
|
+
maximumAttempts: 50,
|
|
60
|
+
nonRetryableErrorTypes: [],
|
|
61
|
+
...(options.retry || {}),
|
|
62
|
+
},
|
|
63
|
+
startToCloseTimeout: '1 minute',
|
|
64
|
+
...options,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
this.client.start(workflowJob, {
|
|
68
|
+
args: [{ steps, context: { ...context, protected: undefined, requester: { ...context.requester, protected: undefined } }, data, options: workflowOptions }],
|
|
69
|
+
taskQueue,
|
|
70
|
+
workflowId: `${prefix}${id}`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async push(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
|
|
75
|
+
const { id, data } = params;
|
|
76
|
+
const prefix =
|
|
77
|
+
context.privates.TEMPORAL_PREFIX ??
|
|
78
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
79
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
80
|
+
const handle = this.client.getHandle(`${prefix}${id}`);
|
|
81
|
+
await handle.signal(dataSignal, data);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async terminate(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
|
|
85
|
+
const { id } = params;
|
|
86
|
+
const prefix =
|
|
87
|
+
context.privates.TEMPORAL_PREFIX ??
|
|
88
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
89
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
90
|
+
const handle = this.client.getHandle(`${prefix}${id}`);
|
|
91
|
+
await handle.terminate();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async list(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
|
|
95
|
+
const { query = `ExecutionStatus = "Running"` } = params;
|
|
96
|
+
const prefix =
|
|
97
|
+
context.privates.TEMPORAL_PREFIX ??
|
|
98
|
+
process.env['TEMPORAL_PREFIX'] ??
|
|
99
|
+
`digipair-workflow-${context.request.digipair}-${context.request.reasoning}-`;
|
|
100
|
+
|
|
101
|
+
const workflowIterator = this.client.list({ query: `(WorkflowId > '${prefix}' and WorkflowId < '${prefix}~') and (${query})` });
|
|
102
|
+
const workflows = [] as WorkflowExecutionInfo[];
|
|
103
|
+
for await (const workflow of workflowIterator) {
|
|
104
|
+
workflows.push(workflow);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return workflows;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let instance: TemporalService;
|
|
112
|
+
|
|
113
|
+
export const initialize = (adresse: string) =>
|
|
114
|
+
(instance = new TemporalService()).initialize(adresse);
|
|
115
|
+
|
|
116
|
+
export const workflow = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
|
|
117
|
+
instance.workflow(params, pinsSettingsList, context);
|
|
118
|
+
|
|
119
|
+
export const push = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
|
|
120
|
+
instance.push(params, pinsSettingsList, context);
|
|
121
|
+
|
|
122
|
+
export const terminate = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
|
|
123
|
+
instance.terminate(params, pinsSettingsList, context);
|
|
124
|
+
|
|
125
|
+
export const list = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
|
|
126
|
+
instance.list(params, pinsSettingsList, context);
|