@orbytautomation/engine 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +123 -571
  2. package/dist/cache/AdapterMetadataCache.d.ts +22 -0
  3. package/dist/cache/AdapterMetadataCache.d.ts.map +1 -0
  4. package/dist/cache/AdapterMetadataCache.js +66 -0
  5. package/dist/cache/AdapterMetadataCache.js.map +1 -0
  6. package/dist/cache/WorkflowParseCache.d.ts +26 -0
  7. package/dist/cache/WorkflowParseCache.d.ts.map +1 -0
  8. package/dist/cache/WorkflowParseCache.js +91 -0
  9. package/dist/cache/WorkflowParseCache.js.map +1 -0
  10. package/dist/cache/index.d.ts +3 -0
  11. package/dist/cache/index.d.ts.map +1 -0
  12. package/dist/cache/index.js +3 -0
  13. package/dist/cache/index.js.map +1 -0
  14. package/dist/core/EngineConfig.d.ts.map +1 -1
  15. package/dist/core/EngineConfig.js +2 -0
  16. package/dist/core/EngineConfig.js.map +1 -1
  17. package/dist/core/OrbytEngine.d.ts +104 -1
  18. package/dist/core/OrbytEngine.d.ts.map +1 -1
  19. package/dist/core/OrbytEngine.js +452 -94
  20. package/dist/core/OrbytEngine.js.map +1 -1
  21. package/dist/execution/StepExecutor.d.ts +8 -0
  22. package/dist/execution/StepExecutor.d.ts.map +1 -1
  23. package/dist/execution/StepExecutor.js +35 -3
  24. package/dist/execution/StepExecutor.js.map +1 -1
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/logging/EngineLogger.js +4 -4
  30. package/dist/logging/EngineLogger.js.map +1 -1
  31. package/dist/parser/WorkflowParser.d.ts.map +1 -1
  32. package/dist/parser/WorkflowParser.js +2 -0
  33. package/dist/parser/WorkflowParser.js.map +1 -1
  34. package/dist/runtime/RuntimeArtifactStore.d.ts +27 -0
  35. package/dist/runtime/RuntimeArtifactStore.d.ts.map +1 -0
  36. package/dist/runtime/RuntimeArtifactStore.js +96 -0
  37. package/dist/runtime/RuntimeArtifactStore.js.map +1 -0
  38. package/dist/runtime/index.d.ts +2 -0
  39. package/dist/runtime/index.d.ts.map +1 -0
  40. package/dist/runtime/index.js +2 -0
  41. package/dist/runtime/index.js.map +1 -0
  42. package/dist/scheduling/Scheduler.d.ts.map +1 -1
  43. package/dist/scheduling/Scheduler.js +6 -4
  44. package/dist/scheduling/Scheduler.js.map +1 -1
  45. package/dist/security/ResourceValidator.d.ts +21 -0
  46. package/dist/security/ResourceValidator.d.ts.map +1 -0
  47. package/dist/security/ResourceValidator.js +114 -0
  48. package/dist/security/ResourceValidator.js.map +1 -0
  49. package/dist/security/index.d.ts +1 -0
  50. package/dist/security/index.d.ts.map +1 -1
  51. package/dist/security/index.js +1 -0
  52. package/dist/security/index.js.map +1 -1
  53. package/dist/storage/ExecutionStore.d.ts +2 -2
  54. package/dist/storage/ExecutionStore.d.ts.map +1 -1
  55. package/dist/storage/ExecutionStore.js +16 -25
  56. package/dist/storage/ExecutionStore.js.map +1 -1
  57. package/dist/storage/FileStorageAdapter.d.ts +23 -0
  58. package/dist/storage/FileStorageAdapter.d.ts.map +1 -0
  59. package/dist/storage/FileStorageAdapter.js +66 -0
  60. package/dist/storage/FileStorageAdapter.js.map +1 -0
  61. package/dist/storage/ScheduleStore.d.ts +2 -2
  62. package/dist/storage/ScheduleStore.d.ts.map +1 -1
  63. package/dist/storage/ScheduleStore.js +19 -27
  64. package/dist/storage/ScheduleStore.js.map +1 -1
  65. package/dist/storage/StorageAdapter.d.ts +22 -0
  66. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  67. package/dist/storage/StorageAdapter.js +2 -0
  68. package/dist/storage/StorageAdapter.js.map +1 -0
  69. package/dist/storage/WorkflowStore.d.ts +2 -1
  70. package/dist/storage/WorkflowStore.d.ts.map +1 -1
  71. package/dist/storage/WorkflowStore.js +24 -27
  72. package/dist/storage/WorkflowStore.js.map +1 -1
  73. package/dist/storage/index.d.ts +2 -0
  74. package/dist/storage/index.d.ts.map +1 -1
  75. package/dist/storage/index.js +2 -0
  76. package/dist/storage/index.js.map +1 -1
  77. package/dist/types/core-types.d.ts +89 -0
  78. package/dist/types/core-types.d.ts.map +1 -1
  79. package/dist/types/core-types.js.map +1 -1
  80. 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 dir;
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 _filePath;
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;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlF,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,GAAG,CAAS;IAC7B,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;IAalD;;OAEG;IACH,IAAI,IAAI,iBAAiB,EAAE;IAoB3B;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;IAMlC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;CAGf"}
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 { mkdirSync, writeFileSync, readFileSync, existsSync, readdirSync, rmSync, } from 'node:fs';
22
- import { join, basename } from 'node:path';
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
- dir;
32
+ adapter;
33
33
  /** In-memory cache: scheduleId → current state */
34
34
  cache = new Map();
35
35
  constructor(dir) {
36
- this.dir = dir;
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
- mkdirSync(this.dir, { recursive: true });
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._filePath(scheduleId);
115
- if (existsSync(filePath))
116
- rmSync(filePath);
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
- const filePath = this._filePath(scheduleId);
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
- mkdirSync(this.dir, { recursive: true });
147
- return readdirSync(this.dir)
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 filePath = this._filePath(scheduleId);
191
- if (!existsSync(filePath))
188
+ const record = this.adapter.readJson(this._fileName(scheduleId));
189
+ if (!record)
192
190
  return null;
193
- try {
194
- const record = JSON.parse(readFileSync(filePath, 'utf-8'));
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
- _filePath(scheduleId) {
203
- return join(this.dir, `${scheduleId}.json`);
194
+ _fileName(scheduleId) {
195
+ return `${scheduleId}.json`;
204
196
  }
205
197
  _write(scheduleId, record) {
206
- writeFileSync(this._filePath(scheduleId), JSON.stringify(record, null, 2), 'utf-8');
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":"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"}
1
+ {"version":3,"file":"ScheduleStore.js","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA4F7D,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IACP,OAAO,CAAqB;IAC7C,kDAAkD;IACjC,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE9D,YAAY,GAAW;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,8EAA8E;IAE9E;;;;OAIG;IACH,IAAI,CAAC,QAA2B;QAC9B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAsB;gBACjC,GAAG,QAAQ;gBACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CACX,UAAkB,EAClB,MAA0C,EAC1C,KAAW,EACX,SAAgB,EAChB,KAAc;QAEd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;YAC3B,MAAM,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAE1D,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;gBACtB,OAAO,MAAM,CAAC,SAAS,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjD,IAAI,KAAK;oBAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YACtC,CAAC;YAED,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAkB;QACvB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,UAAkB;QACxB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAkB;QACvB,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E;;;OAGG;IACH,IAAI,CAAC,UAAkB;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,MAAM;gBAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAoB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO;iBAChB,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAChC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACX,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBACnC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,8EAA8E;IAEtE,UAAU,CAAC,UAAkB,EAAE,MAAsB;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,UAAkB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAoB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,UAAkB;QAClC,OAAO,GAAG,UAAU,OAAO,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,UAAkB,EAAE,MAAyB;QAC1D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StorageAdapter.js.map
@@ -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 dir;
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;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,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,GAAG,CAAS;IAC7B,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;gBAEpD,GAAG,EAAE,MAAM;IAMvB;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IA2BpC;;;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;IAYhB;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBlD,yFAAyF;IACzF,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,YAAY;CAKrB"}
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 { mkdirSync, writeFileSync, readFileSync, existsSync, readdirSync, rmSync, } from 'node:fs';
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
- dir;
32
+ adapter;
34
33
  /** Cache: workflowId → latest saved version number */
35
34
  latestVersionCache = new Map();
36
35
  constructor(dir) {
37
- this.dir = dir;
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
- const workflowDir = join(this.dir, workflowId);
49
- mkdirSync(workflowDir, { recursive: true });
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
- writeFileSync(join(workflowDir, `v${nextVersion}.json`), JSON.stringify(record, null, 2), 'utf-8');
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
- const workflowDir = join(this.dir, workflowId);
100
- if (!existsSync(workflowDir))
97
+ if (!this.adapter.exists(workflowId))
101
98
  return [];
102
- return readdirSync(workflowDir)
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
- mkdirSync(this.dir, { recursive: true });
117
- return readdirSync(this.dir, { withFileTypes: true })
118
- .filter(e => e.isDirectory())
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 = join(this.dir, workflowId, `v${version}.json`);
134
- if (existsSync(filePath))
135
- rmSync(filePath);
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
- const workflowDir = join(this.dir, workflowId);
143
- if (existsSync(workflowDir))
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, workflowDir) {
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 = readdirSync(workflowDir)
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
- const filePath = join(this.dir, workflowId, `v${version}.json`);
179
- if (!existsSync(filePath))
180
- return null;
181
- return JSON.parse(readFileSync(filePath, 'utf-8'));
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":"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"}
1
+ {"version":3,"file":"WorkflowStore.js","sourceRoot":"","sources":["../../src/storage/WorkflowStore.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export * from './ExecutionStore.js';
2
2
  export * from './ScheduleStore.js';
3
3
  export * from './WorkflowStore.js';
4
+ export * from './StorageAdapter.js';
5
+ export * from './FileStorageAdapter.js';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,4 +1,6 @@
1
1
  export * from './ExecutionStore.js';
2
2
  export * from './ScheduleStore.js';
3
3
  export * from './WorkflowStore.js';
4
+ export * from './StorageAdapter.js';
5
+ export * from './FileStorageAdapter.js';
4
6
  //# sourceMappingURL=index.js.map
@@ -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