@orbytautomation/engine 0.7.1 → 0.8.0
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/dist/cache/AdapterMetadataCache.d.ts +22 -0
- package/dist/cache/AdapterMetadataCache.d.ts.map +1 -0
- package/dist/cache/AdapterMetadataCache.js +66 -0
- package/dist/cache/AdapterMetadataCache.js.map +1 -0
- package/dist/cache/WorkflowParseCache.d.ts +26 -0
- package/dist/cache/WorkflowParseCache.d.ts.map +1 -0
- package/dist/cache/WorkflowParseCache.js +91 -0
- package/dist/cache/WorkflowParseCache.js.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +3 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/core/EngineConfig.d.ts.map +1 -1
- package/dist/core/EngineConfig.js +2 -0
- package/dist/core/EngineConfig.js.map +1 -1
- package/dist/core/OrbytEngine.d.ts +104 -1
- package/dist/core/OrbytEngine.d.ts.map +1 -1
- package/dist/core/OrbytEngine.js +452 -94
- package/dist/core/OrbytEngine.js.map +1 -1
- package/dist/execution/StepExecutor.d.ts +8 -0
- package/dist/execution/StepExecutor.d.ts.map +1 -1
- package/dist/execution/StepExecutor.js +32 -3
- package/dist/execution/StepExecutor.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/logging/EngineLogger.js +4 -4
- package/dist/logging/EngineLogger.js.map +1 -1
- package/dist/parser/WorkflowParser.d.ts.map +1 -1
- package/dist/parser/WorkflowParser.js +2 -0
- package/dist/parser/WorkflowParser.js.map +1 -1
- package/dist/runtime/RuntimeArtifactStore.d.ts +27 -0
- package/dist/runtime/RuntimeArtifactStore.d.ts.map +1 -0
- package/dist/runtime/RuntimeArtifactStore.js +96 -0
- package/dist/runtime/RuntimeArtifactStore.js.map +1 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/scheduling/Scheduler.d.ts.map +1 -1
- package/dist/scheduling/Scheduler.js +6 -4
- package/dist/scheduling/Scheduler.js.map +1 -1
- package/dist/security/ResourceValidator.d.ts +20 -0
- package/dist/security/ResourceValidator.d.ts.map +1 -0
- package/dist/security/ResourceValidator.js +107 -0
- package/dist/security/ResourceValidator.js.map +1 -0
- package/dist/security/index.d.ts +1 -0
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -0
- package/dist/security/index.js.map +1 -1
- package/dist/storage/ExecutionStore.d.ts +2 -2
- package/dist/storage/ExecutionStore.d.ts.map +1 -1
- package/dist/storage/ExecutionStore.js +16 -25
- package/dist/storage/ExecutionStore.js.map +1 -1
- package/dist/storage/FileStorageAdapter.d.ts +23 -0
- package/dist/storage/FileStorageAdapter.d.ts.map +1 -0
- package/dist/storage/FileStorageAdapter.js +66 -0
- package/dist/storage/FileStorageAdapter.js.map +1 -0
- package/dist/storage/ScheduleStore.d.ts +2 -2
- package/dist/storage/ScheduleStore.d.ts.map +1 -1
- package/dist/storage/ScheduleStore.js +19 -27
- package/dist/storage/ScheduleStore.js.map +1 -1
- package/dist/storage/StorageAdapter.d.ts +22 -0
- package/dist/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/storage/StorageAdapter.js +2 -0
- package/dist/storage/StorageAdapter.js.map +1 -0
- package/dist/storage/WorkflowStore.d.ts +2 -1
- package/dist/storage/WorkflowStore.d.ts.map +1 -1
- package/dist/storage/WorkflowStore.js +24 -27
- package/dist/storage/WorkflowStore.js.map +1 -1
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/types/core-types.d.ts +89 -0
- package/dist/types/core-types.d.ts.map +1 -1
- package/dist/types/core-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -100,7 +100,7 @@ export interface PersistedSchedule {
|
|
|
100
100
|
* the file acts as the durable record for restarts.
|
|
101
101
|
*/
|
|
102
102
|
export declare class ScheduleStore {
|
|
103
|
-
private readonly
|
|
103
|
+
private readonly adapter;
|
|
104
104
|
/** In-memory cache: scheduleId → current state */
|
|
105
105
|
private readonly cache;
|
|
106
106
|
constructor(dir: string);
|
|
@@ -149,7 +149,7 @@ export declare class ScheduleStore {
|
|
|
149
149
|
listEnabled(): PersistedSchedule[];
|
|
150
150
|
private _setStatus;
|
|
151
151
|
private _getOrLoad;
|
|
152
|
-
private
|
|
152
|
+
private _fileName;
|
|
153
153
|
private _write;
|
|
154
154
|
}
|
|
155
155
|
//# sourceMappingURL=ScheduleStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleStore.d.ts","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"ScheduleStore.d.ts","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAKlF,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,WAAW,EAAE,mBAAmB,CAAC;IAGjC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IAGjD;;;;;;OAMG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAGlB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,UAAU,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChD,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAID;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;gBAElD,GAAG,EAAE,MAAM;IAMvB;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAcvC;;;;;;;OAOG;IACH,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,EAC1C,KAAK,EAAE,IAAI,EACX,SAAS,CAAC,EAAE,IAAI,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;IA0BP;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIhC;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjC;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAYhC;;;OAGG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAWlD;;OAEG;IACH,IAAI,IAAI,iBAAiB,EAAE;IAqB3B;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;IAMlC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @module storage
|
|
20
20
|
*/
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
21
|
+
import { basename } from 'node:path';
|
|
22
|
+
import { FileStorageAdapter } from './FileStorageAdapter.js';
|
|
23
23
|
// ─── ScheduleStore ────────────────────────────────────────────────────────────
|
|
24
24
|
/**
|
|
25
25
|
* File-based schedule state store.
|
|
@@ -29,11 +29,11 @@ import { join, basename } from 'node:path';
|
|
|
29
29
|
* the file acts as the durable record for restarts.
|
|
30
30
|
*/
|
|
31
31
|
export class ScheduleStore {
|
|
32
|
-
|
|
32
|
+
adapter;
|
|
33
33
|
/** In-memory cache: scheduleId → current state */
|
|
34
34
|
cache = new Map();
|
|
35
35
|
constructor(dir) {
|
|
36
|
-
this.
|
|
36
|
+
this.adapter = new FileStorageAdapter(dir);
|
|
37
37
|
}
|
|
38
38
|
// ─── Write API ─────────────────────────────────────────────────────────────
|
|
39
39
|
/**
|
|
@@ -43,7 +43,7 @@ export class ScheduleStore {
|
|
|
43
43
|
*/
|
|
44
44
|
save(schedule) {
|
|
45
45
|
try {
|
|
46
|
-
|
|
46
|
+
this.adapter.ensureDir();
|
|
47
47
|
const updated = {
|
|
48
48
|
...schedule,
|
|
49
49
|
updatedAt: new Date().toISOString(),
|
|
@@ -111,9 +111,9 @@ export class ScheduleStore {
|
|
|
111
111
|
delete(scheduleId) {
|
|
112
112
|
try {
|
|
113
113
|
this.cache.delete(scheduleId);
|
|
114
|
-
const filePath = this.
|
|
115
|
-
if (
|
|
116
|
-
|
|
114
|
+
const filePath = this._fileName(scheduleId);
|
|
115
|
+
if (this.adapter.exists(filePath))
|
|
116
|
+
this.adapter.delete(filePath);
|
|
117
117
|
}
|
|
118
118
|
catch {
|
|
119
119
|
// Non-fatal
|
|
@@ -129,10 +129,7 @@ export class ScheduleStore {
|
|
|
129
129
|
const cached = this.cache.get(scheduleId);
|
|
130
130
|
if (cached)
|
|
131
131
|
return { ...cached };
|
|
132
|
-
|
|
133
|
-
if (!existsSync(filePath))
|
|
134
|
-
return null;
|
|
135
|
-
return JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
132
|
+
return this.adapter.readJson(this._fileName(scheduleId));
|
|
136
133
|
}
|
|
137
134
|
catch {
|
|
138
135
|
return null;
|
|
@@ -143,8 +140,9 @@ export class ScheduleStore {
|
|
|
143
140
|
*/
|
|
144
141
|
list() {
|
|
145
142
|
try {
|
|
146
|
-
|
|
147
|
-
return
|
|
143
|
+
this.adapter.ensureDir();
|
|
144
|
+
return this.adapter
|
|
145
|
+
.list('', { suffix: '.json', filesOnly: true })
|
|
148
146
|
.filter(f => f.endsWith('.json'))
|
|
149
147
|
.flatMap(f => {
|
|
150
148
|
try {
|
|
@@ -187,23 +185,17 @@ export class ScheduleStore {
|
|
|
187
185
|
const cached = this.cache.get(scheduleId);
|
|
188
186
|
if (cached)
|
|
189
187
|
return cached;
|
|
190
|
-
const
|
|
191
|
-
if (!
|
|
188
|
+
const record = this.adapter.readJson(this._fileName(scheduleId));
|
|
189
|
+
if (!record)
|
|
192
190
|
return null;
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
this.cache.set(scheduleId, record);
|
|
196
|
-
return record;
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
191
|
+
this.cache.set(scheduleId, record);
|
|
192
|
+
return record;
|
|
201
193
|
}
|
|
202
|
-
|
|
203
|
-
return
|
|
194
|
+
_fileName(scheduleId) {
|
|
195
|
+
return `${scheduleId}.json`;
|
|
204
196
|
}
|
|
205
197
|
_write(scheduleId, record) {
|
|
206
|
-
|
|
198
|
+
this.adapter.saveJson(this._fileName(scheduleId), record);
|
|
207
199
|
}
|
|
208
200
|
}
|
|
209
201
|
//# sourceMappingURL=ScheduleStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleStore.js","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ScheduleStore.js","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic storage adapter contract used by engine persistence stores.
|
|
3
|
+
*
|
|
4
|
+
* The adapter is intentionally filesystem-oriented to keep v1 simple while
|
|
5
|
+
* allowing future implementations (sqlite, postgres, object storage) to
|
|
6
|
+
* implement the same methods.
|
|
7
|
+
*/
|
|
8
|
+
export interface StorageAdapter {
|
|
9
|
+
ensureDir(relativePath?: string): void;
|
|
10
|
+
exists(relativePath: string): boolean;
|
|
11
|
+
saveJson(relativePath: string, data: unknown): void;
|
|
12
|
+
readJson<T = unknown>(relativePath: string): T | null;
|
|
13
|
+
delete(relativePath: string, options?: {
|
|
14
|
+
recursive?: boolean;
|
|
15
|
+
}): void;
|
|
16
|
+
list(relativeDir?: string, options?: {
|
|
17
|
+
suffix?: string;
|
|
18
|
+
directoriesOnly?: boolean;
|
|
19
|
+
filesOnly?: boolean;
|
|
20
|
+
}): string[];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=StorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageAdapter.d.ts","sourceRoot":"","sources":["../../src/storage/StorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IACtD,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,IAAI,CACF,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GACA,MAAM,EAAE,CAAC;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageAdapter.js","sourceRoot":"","sources":["../../src/storage/StorageAdapter.ts"],"names":[],"mappings":""}
|
|
@@ -38,7 +38,7 @@ export interface PersistedWorkflow {
|
|
|
38
38
|
* re-reading the file on every `save()` call.
|
|
39
39
|
*/
|
|
40
40
|
export declare class WorkflowStore {
|
|
41
|
-
private readonly
|
|
41
|
+
private readonly adapter;
|
|
42
42
|
/** Cache: workflowId → latest saved version number */
|
|
43
43
|
private readonly latestVersionCache;
|
|
44
44
|
constructor(dir: string);
|
|
@@ -79,5 +79,6 @@ export declare class WorkflowStore {
|
|
|
79
79
|
*/
|
|
80
80
|
private _nextVersion;
|
|
81
81
|
private _readVersion;
|
|
82
|
+
private _versionPath;
|
|
82
83
|
}
|
|
83
84
|
//# sourceMappingURL=WorkflowStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowStore.d.ts","sourceRoot":"","sources":["../../src/storage/WorkflowStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"WorkflowStore.d.ts","sourceRoot":"","sources":["../../src/storage/WorkflowStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,cAAc,CAAC;CAC5B;AAID;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;gBAEpD,GAAG,EAAE,MAAM;IAMvB;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAsBpC;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAUxD;;;OAGG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IASpE;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAa1C;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAWhB;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAoBlD,yFAAyF;IACzF,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @module storage
|
|
19
19
|
*/
|
|
20
|
-
import {
|
|
21
|
-
import { join } from 'node:path';
|
|
20
|
+
import { FileStorageAdapter } from './FileStorageAdapter.js';
|
|
22
21
|
// ─── WorkflowStore ────────────────────────────────────────────────────────────
|
|
23
22
|
/**
|
|
24
23
|
* File-based workflow definition store.
|
|
@@ -30,11 +29,11 @@ import { join } from 'node:path';
|
|
|
30
29
|
* re-reading the file on every `save()` call.
|
|
31
30
|
*/
|
|
32
31
|
export class WorkflowStore {
|
|
33
|
-
|
|
32
|
+
adapter;
|
|
34
33
|
/** Cache: workflowId → latest saved version number */
|
|
35
34
|
latestVersionCache = new Map();
|
|
36
35
|
constructor(dir) {
|
|
37
|
-
this.
|
|
36
|
+
this.adapter = new FileStorageAdapter(dir);
|
|
38
37
|
}
|
|
39
38
|
// ─── Write API ─────────────────────────────────────────────────────────────
|
|
40
39
|
/**
|
|
@@ -45,16 +44,15 @@ export class WorkflowStore {
|
|
|
45
44
|
save(workflow) {
|
|
46
45
|
try {
|
|
47
46
|
const workflowId = this._resolveId(workflow);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const nextVersion = this._nextVersion(workflowId, workflowDir);
|
|
47
|
+
this.adapter.ensureDir(workflowId);
|
|
48
|
+
const nextVersion = this._nextVersion(workflowId);
|
|
51
49
|
const record = {
|
|
52
50
|
workflowId,
|
|
53
51
|
version: nextVersion,
|
|
54
52
|
savedAt: new Date().toISOString(),
|
|
55
53
|
definition: workflow,
|
|
56
54
|
};
|
|
57
|
-
|
|
55
|
+
this.adapter.saveJson(this._versionPath(workflowId, nextVersion), record);
|
|
58
56
|
this.latestVersionCache.set(workflowId, nextVersion);
|
|
59
57
|
}
|
|
60
58
|
catch {
|
|
@@ -96,10 +94,10 @@ export class WorkflowStore {
|
|
|
96
94
|
*/
|
|
97
95
|
listVersions(workflowId) {
|
|
98
96
|
try {
|
|
99
|
-
|
|
100
|
-
if (!existsSync(workflowDir))
|
|
97
|
+
if (!this.adapter.exists(workflowId))
|
|
101
98
|
return [];
|
|
102
|
-
return
|
|
99
|
+
return this.adapter
|
|
100
|
+
.list(workflowId, { suffix: '.json', filesOnly: true })
|
|
103
101
|
.filter(f => /^v\d+\.json$/.test(f))
|
|
104
102
|
.map(f => parseInt(f.slice(1, -5), 10))
|
|
105
103
|
.sort((a, b) => b - a); // newest first
|
|
@@ -113,10 +111,9 @@ export class WorkflowStore {
|
|
|
113
111
|
*/
|
|
114
112
|
list() {
|
|
115
113
|
try {
|
|
116
|
-
|
|
117
|
-
return
|
|
118
|
-
.
|
|
119
|
-
.map(e => e.name)
|
|
114
|
+
this.adapter.ensureDir();
|
|
115
|
+
return this.adapter
|
|
116
|
+
.list('', { directoriesOnly: true })
|
|
120
117
|
.sort();
|
|
121
118
|
}
|
|
122
119
|
catch {
|
|
@@ -130,18 +127,17 @@ export class WorkflowStore {
|
|
|
130
127
|
delete(workflowId, version) {
|
|
131
128
|
try {
|
|
132
129
|
if (version !== undefined) {
|
|
133
|
-
const filePath =
|
|
134
|
-
if (
|
|
135
|
-
|
|
130
|
+
const filePath = this._versionPath(workflowId, version);
|
|
131
|
+
if (this.adapter.exists(filePath))
|
|
132
|
+
this.adapter.delete(filePath);
|
|
136
133
|
// Invalidate cache if we deleted the latest version
|
|
137
134
|
if (this.latestVersionCache.get(workflowId) === version) {
|
|
138
135
|
this.latestVersionCache.delete(workflowId);
|
|
139
136
|
}
|
|
140
137
|
}
|
|
141
138
|
else {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
rmSync(workflowDir, { recursive: true });
|
|
139
|
+
if (this.adapter.exists(workflowId))
|
|
140
|
+
this.adapter.delete(workflowId, { recursive: true });
|
|
145
141
|
this.latestVersionCache.delete(workflowId);
|
|
146
142
|
}
|
|
147
143
|
}
|
|
@@ -160,12 +156,13 @@ export class WorkflowStore {
|
|
|
160
156
|
* Calculate the next version number.
|
|
161
157
|
* Reads the cache first; if not cached, scans the directory.
|
|
162
158
|
*/
|
|
163
|
-
_nextVersion(workflowId
|
|
159
|
+
_nextVersion(workflowId) {
|
|
164
160
|
const cached = this.latestVersionCache.get(workflowId);
|
|
165
161
|
if (cached !== undefined)
|
|
166
162
|
return cached + 1;
|
|
167
163
|
try {
|
|
168
|
-
const existing =
|
|
164
|
+
const existing = this.adapter
|
|
165
|
+
.list(workflowId, { suffix: '.json', filesOnly: true })
|
|
169
166
|
.filter(f => /^v\d+\.json$/.test(f))
|
|
170
167
|
.map(f => parseInt(f.slice(1, -5), 10));
|
|
171
168
|
return existing.length === 0 ? 1 : Math.max(...existing) + 1;
|
|
@@ -175,10 +172,10 @@ export class WorkflowStore {
|
|
|
175
172
|
}
|
|
176
173
|
}
|
|
177
174
|
_readVersion(workflowId, version) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return
|
|
175
|
+
return this.adapter.readJson(this._versionPath(workflowId, version));
|
|
176
|
+
}
|
|
177
|
+
_versionPath(workflowId, version) {
|
|
178
|
+
return `${workflowId}/v${version}.json`;
|
|
182
179
|
}
|
|
183
180
|
}
|
|
184
181
|
//# sourceMappingURL=WorkflowStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowStore.js","sourceRoot":"","sources":["../../src/storage/WorkflowStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"WorkflowStore.js","sourceRoot":"","sources":["../../src/storage/WorkflowStore.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
package/dist/storage/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
|
@@ -58,6 +58,68 @@ export interface WorkflowRunOptions {
|
|
|
58
58
|
*/
|
|
59
59
|
_permissionPolicy?: PermissionPolicy;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Multi-workflow execution mode.
|
|
63
|
+
*/
|
|
64
|
+
export type MultiWorkflowExecutionMode = 'sequential' | 'parallel' | 'mixed';
|
|
65
|
+
/**
|
|
66
|
+
* Options for multi-workflow runs.
|
|
67
|
+
*/
|
|
68
|
+
export interface WorkflowBatchRunOptions extends WorkflowRunOptions {
|
|
69
|
+
/**
|
|
70
|
+
* How workflows should be executed.
|
|
71
|
+
* - sequential: one by one in input order
|
|
72
|
+
* - parallel: all concurrently (bounded by maxParallelWorkflows)
|
|
73
|
+
* - mixed: sequential waves, each wave runs in parallel
|
|
74
|
+
* @default 'sequential'
|
|
75
|
+
*/
|
|
76
|
+
executionMode?: MultiWorkflowExecutionMode;
|
|
77
|
+
/**
|
|
78
|
+
* Maximum number of workflows to run concurrently in parallel mode.
|
|
79
|
+
* @default engine.maxConcurrentWorkflows
|
|
80
|
+
*/
|
|
81
|
+
maxParallelWorkflows?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Number of workflows per wave in mixed mode.
|
|
84
|
+
* @default 2
|
|
85
|
+
*/
|
|
86
|
+
mixedBatchSize?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Stop submitting more workflows after the first execution failure.
|
|
89
|
+
* @default false
|
|
90
|
+
*/
|
|
91
|
+
failFast?: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A workflow loaded during preload phase.
|
|
95
|
+
*/
|
|
96
|
+
export interface LoadedWorkflowItem {
|
|
97
|
+
source: string;
|
|
98
|
+
workflow: ParsedWorkflow;
|
|
99
|
+
declaredMode?: MultiWorkflowExecutionMode;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Per-workflow result for multi-workflow runs.
|
|
103
|
+
*/
|
|
104
|
+
export interface WorkflowBatchItemResult {
|
|
105
|
+
source: string;
|
|
106
|
+
workflowName?: string;
|
|
107
|
+
status: 'success' | 'failed';
|
|
108
|
+
result?: WorkflowResult;
|
|
109
|
+
error?: Error;
|
|
110
|
+
durationMs: number;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Aggregated multi-workflow execution result.
|
|
114
|
+
*/
|
|
115
|
+
export interface WorkflowBatchResult {
|
|
116
|
+
mode: MultiWorkflowExecutionMode;
|
|
117
|
+
totalWorkflows: number;
|
|
118
|
+
successfulWorkflows: number;
|
|
119
|
+
failedWorkflows: number;
|
|
120
|
+
durationMs: number;
|
|
121
|
+
results: WorkflowBatchItemResult[];
|
|
122
|
+
}
|
|
61
123
|
/**
|
|
62
124
|
* Workflow loading options
|
|
63
125
|
*/
|
|
@@ -704,6 +766,23 @@ export interface ParsedWorkflow {
|
|
|
704
766
|
resources?: any;
|
|
705
767
|
/** Outputs */
|
|
706
768
|
outputs?: Record<string, string>;
|
|
769
|
+
/**
|
|
770
|
+
* Workflow execution strategy hints from schema `strategy` block.
|
|
771
|
+
* This is used for multi-workflow orchestration mode inference.
|
|
772
|
+
*/
|
|
773
|
+
strategy?: {
|
|
774
|
+
type?: string;
|
|
775
|
+
maxParallel?: number;
|
|
776
|
+
matrix?: Record<string, any[]>;
|
|
777
|
+
};
|
|
778
|
+
/**
|
|
779
|
+
* Future execution/runtime metadata from schema `execution` block.
|
|
780
|
+
*/
|
|
781
|
+
execution?: {
|
|
782
|
+
mode?: string;
|
|
783
|
+
isolation?: string;
|
|
784
|
+
priority?: string;
|
|
785
|
+
};
|
|
707
786
|
}
|
|
708
787
|
/**
|
|
709
788
|
* Parsed internal step representation
|
|
@@ -1340,6 +1419,16 @@ export interface OrbytEngineConfig {
|
|
|
1340
1419
|
* @default '.orbyt/logs'
|
|
1341
1420
|
*/
|
|
1342
1421
|
logDir?: string;
|
|
1422
|
+
/**
|
|
1423
|
+
* Directory for storing cache artifacts (parsed workflows, adapter metadata)
|
|
1424
|
+
* @default '.orbyt/cache'
|
|
1425
|
+
*/
|
|
1426
|
+
cacheDir?: string;
|
|
1427
|
+
/**
|
|
1428
|
+
* Directory for runtime artifacts (dag snapshots, context, locks)
|
|
1429
|
+
* @default '.orbyt/runtime'
|
|
1430
|
+
*/
|
|
1431
|
+
runtimeDir?: string;
|
|
1343
1432
|
/**
|
|
1344
1433
|
* Sandbox mode for step execution
|
|
1345
1434
|
* - 'none': No sandboxing
|