@loopstack/core 0.36.0 → 0.38.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.
Files changed (102) hide show
  1. package/dist/common/errors/index.d.ts +1 -0
  2. package/dist/common/errors/index.d.ts.map +1 -1
  3. package/dist/common/errors/index.js +1 -0
  4. package/dist/common/errors/index.js.map +1 -1
  5. package/dist/common/errors/transition-aborted.error.d.ts +4 -0
  6. package/dist/common/errors/transition-aborted.error.d.ts.map +1 -0
  7. package/dist/common/errors/transition-aborted.error.js +7 -0
  8. package/dist/common/errors/transition-aborted.error.js.map +1 -0
  9. package/dist/common/interfaces/app-config.interface.d.ts +1 -0
  10. package/dist/common/interfaces/app-config.interface.d.ts.map +1 -1
  11. package/dist/common/services/client-message.service.d.ts +6 -5
  12. package/dist/common/services/client-message.service.d.ts.map +1 -1
  13. package/dist/common/services/client-message.service.js +32 -17
  14. package/dist/common/services/client-message.service.js.map +1 -1
  15. package/dist/common/services/index.d.ts +1 -0
  16. package/dist/common/services/index.d.ts.map +1 -1
  17. package/dist/common/services/index.js +1 -0
  18. package/dist/common/services/index.js.map +1 -1
  19. package/dist/common/services/system-clock.d.ts +6 -0
  20. package/dist/common/services/system-clock.d.ts.map +1 -0
  21. package/dist/common/services/system-clock.js +21 -0
  22. package/dist/common/services/system-clock.js.map +1 -0
  23. package/dist/loop-core.module.d.ts +0 -1
  24. package/dist/loop-core.module.d.ts.map +1 -1
  25. package/dist/loop-core.module.js +10 -5
  26. package/dist/loop-core.module.js.map +1 -1
  27. package/dist/persistence/services/workflow.service.d.ts.map +1 -1
  28. package/dist/persistence/services/workflow.service.js +7 -4
  29. package/dist/persistence/services/workflow.service.js.map +1 -1
  30. package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.d.ts +1 -0
  31. package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.d.ts.map +1 -1
  32. package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.js +8 -0
  33. package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.js.map +1 -1
  34. package/dist/scheduler/services/task-processor.service.d.ts.map +1 -1
  35. package/dist/scheduler/services/task-processor.service.js +1 -0
  36. package/dist/scheduler/services/task-processor.service.js.map +1 -1
  37. package/dist/scheduler/services/workflow-runner.service.d.ts +1 -1
  38. package/dist/scheduler/services/workflow-runner.service.d.ts.map +1 -1
  39. package/dist/scheduler/services/workflow-runner.service.js +7 -1
  40. package/dist/scheduler/services/workflow-runner.service.js.map +1 -1
  41. package/dist/workflow-processor/services/document-persistence.service.d.ts.map +1 -1
  42. package/dist/workflow-processor/services/document-persistence.service.js +12 -1
  43. package/dist/workflow-processor/services/document-persistence.service.js.map +1 -1
  44. package/dist/workflow-processor/services/document-store.service.d.ts +1 -0
  45. package/dist/workflow-processor/services/document-store.service.d.ts.map +1 -1
  46. package/dist/workflow-processor/services/document-store.service.js +14 -1
  47. package/dist/workflow-processor/services/document-store.service.js.map +1 -1
  48. package/dist/workflow-processor/services/index.d.ts +2 -1
  49. package/dist/workflow-processor/services/index.d.ts.map +1 -1
  50. package/dist/workflow-processor/services/index.js +2 -1
  51. package/dist/workflow-processor/services/index.js.map +1 -1
  52. package/dist/workflow-processor/services/processors/workflow-processor.service.d.ts +7 -2
  53. package/dist/workflow-processor/services/processors/workflow-processor.service.d.ts.map +1 -1
  54. package/dist/workflow-processor/services/processors/workflow-processor.service.js +163 -16
  55. package/dist/workflow-processor/services/processors/workflow-processor.service.js.map +1 -1
  56. package/dist/workflow-processor/services/run-trace.service.d.ts +19 -0
  57. package/dist/workflow-processor/services/run-trace.service.d.ts.map +1 -0
  58. package/dist/workflow-processor/services/run-trace.service.js +110 -0
  59. package/dist/workflow-processor/services/run-trace.service.js.map +1 -0
  60. package/dist/workflow-processor/services/stateless-child-runner.service.d.ts +14 -0
  61. package/dist/workflow-processor/services/stateless-child-runner.service.d.ts.map +1 -0
  62. package/dist/workflow-processor/services/stateless-child-runner.service.js +40 -0
  63. package/dist/workflow-processor/services/stateless-child-runner.service.js.map +1 -0
  64. package/dist/workflow-processor/services/studio-discovery.service.d.ts +1 -28
  65. package/dist/workflow-processor/services/studio-discovery.service.d.ts.map +1 -1
  66. package/dist/workflow-processor/services/studio-discovery.service.js.map +1 -1
  67. package/dist/workflow-processor/services/tool-pipeline.service.d.ts +4 -1
  68. package/dist/workflow-processor/services/tool-pipeline.service.d.ts.map +1 -1
  69. package/dist/workflow-processor/services/tool-pipeline.service.js +63 -5
  70. package/dist/workflow-processor/services/tool-pipeline.service.js.map +1 -1
  71. package/dist/workflow-processor/services/workflow-orchestration.service.d.ts +4 -1
  72. package/dist/workflow-processor/services/workflow-orchestration.service.d.ts.map +1 -1
  73. package/dist/workflow-processor/services/workflow-orchestration.service.js +56 -4
  74. package/dist/workflow-processor/services/workflow-orchestration.service.js.map +1 -1
  75. package/dist/workflow-processor/utils/execution-scope.d.ts +10 -3
  76. package/dist/workflow-processor/utils/execution-scope.d.ts.map +1 -1
  77. package/dist/workflow-processor/utils/execution-scope.js.map +1 -1
  78. package/dist/workflow-processor/utils/index.d.ts +1 -0
  79. package/dist/workflow-processor/utils/index.d.ts.map +1 -1
  80. package/dist/workflow-processor/utils/index.js +1 -0
  81. package/dist/workflow-processor/utils/index.js.map +1 -1
  82. package/dist/workflow-processor/utils/run-trace-collector.d.ts +14 -0
  83. package/dist/workflow-processor/utils/run-trace-collector.d.ts.map +1 -0
  84. package/dist/workflow-processor/utils/run-trace-collector.js +44 -0
  85. package/dist/workflow-processor/utils/run-trace-collector.js.map +1 -0
  86. package/dist/workflows/fan-out/fan-out.types.d.ts.map +1 -1
  87. package/dist/workflows/fan-out/fan-out.types.js.map +1 -1
  88. package/dist/workflows/fan-out/fan-out.workflow.d.ts.map +1 -1
  89. package/dist/workflows/fan-out/fan-out.workflow.js.map +1 -1
  90. package/dist/workflows/sequence/sequence.types.d.ts.map +1 -1
  91. package/dist/workflows/sequence/sequence.types.js.map +1 -1
  92. package/dist/workflows/sequence/sequence.workflow.d.ts.map +1 -1
  93. package/dist/workflows/sequence/sequence.workflow.js.map +1 -1
  94. package/package.json +2 -2
  95. package/dist/common/dtos/client-message.dto.d.ts +0 -13
  96. package/dist/common/dtos/client-message.dto.d.ts.map +0 -1
  97. package/dist/common/dtos/client-message.dto.js +0 -13
  98. package/dist/common/dtos/client-message.dto.js.map +0 -1
  99. package/dist/workflow-processor/services/tool-logging.interceptor.d.ts +0 -6
  100. package/dist/workflow-processor/services/tool-logging.interceptor.d.ts.map +0 -1
  101. package/dist/workflow-processor/services/tool-logging.interceptor.js +0 -34
  102. package/dist/workflow-processor/services/tool-logging.interceptor.js.map +0 -1
@@ -16,7 +16,7 @@ import { InjectRepository } from '@nestjs/typeorm';
16
16
  import { randomUUID } from 'node:crypto';
17
17
  import { Repository } from 'typeorm';
18
18
  import { DocumentEntity, getBlockOptions, getDocumentSchema } from '@loopstack/common';
19
- import { SchemaValidationError } from '../../common/index.js';
19
+ import { SchemaValidationError, TransitionAbortedError } from '../../common/index.js';
20
20
  import { ExecutionScope } from '../utils/index.js';
21
21
  let DocumentPersistenceService = DocumentPersistenceService_1 = class DocumentPersistenceService {
22
22
  executionScope;
@@ -28,6 +28,9 @@ let DocumentPersistenceService = DocumentPersistenceService_1 = class DocumentPe
28
28
  }
29
29
  async create(documentName, documentClass, content, options) {
30
30
  const scope = this.executionScope.get();
31
+ if (scope.abortController.signal.aborted) {
32
+ throw new TransitionAbortedError();
33
+ }
31
34
  const transition = scope.transition;
32
35
  if (!transition) {
33
36
  throw new Error('DocumentPersistenceService.create() called outside an active transition');
@@ -100,6 +103,14 @@ let DocumentPersistenceService = DocumentPersistenceService_1 = class DocumentPe
100
103
  this.logger.debug(`addDocument: ${document.documentName}(key=${document.key}) → index=${document.index} (inherited=${inheritedIndex !== undefined}, docCount=${documents.length})`);
101
104
  documents.push(document);
102
105
  }
106
+ scope.trace.emit({
107
+ type: 'document.emitted',
108
+ transitionId: scope.transition?.id,
109
+ ...(document.id ? { documentId: document.id } : {}),
110
+ ...(document.key ? { key: document.key } : {}),
111
+ documentName: document.documentName,
112
+ ...(invalidated.length > 0 || inheritedIndex !== undefined ? { invalidatedKey: document.key } : {}),
113
+ });
103
114
  scope.persistenceState = { documentsUpdated: true };
104
115
  }
105
116
  validateContent(schema, content, mode, documentName) {
@@ -1 +1 @@
1
- {"version":3,"file":"document-persistence.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/document-persistence.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,cAAc,EAAuB,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AAGhE,IAAM,0BAA0B,kCAAhC,MAAM,0BAA0B;IAIlB;IAEA;IALF,MAAM,GAAG,IAAI,MAAM,CAAC,4BAA0B,CAAC,IAAI,CAAC,CAAC;IAEtE,YACmB,cAA8B,EAE9B,kBAA8C;QAF9C,mBAAc,GAAd,cAAc,CAAgB;QAE9B,uBAAkB,GAAlB,kBAAkB,CAA4B;IAC9D,CAAC;IAUJ,KAAK,CAAC,MAAM,CACV,YAAoB,EACpB,aAAqB,EACrB,OAAgB,EAChB,OAA6B;QAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAGD,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAGvD,MAAM,WAAW,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;QAG1C,MAAM,WAAW,GAAG,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC;QAG7C,MAAM,YAAY,GAAG,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;QACnD,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,eAAe,CAC/D,aAAa,EACb,OAAO,EACP,YAAY,EACZ,YAAY,CACb,CAAC;QAGF,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC5C,GAAG;YACH,YAAY;YACZ,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;YAC7E,KAAK,EAAE,KAAK,IAAI,IAAI;YACpB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,YAAY,EAAE,QAAQ,IAAI,KAAK;YACzC,UAAU,EAAE,UAAU,CAAC,EAAE;YACzB,KAAK,EAAE,UAAU,CAAC,EAAE;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,MAAM;SACxB,CAAC,CAAC;QAGH,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAGrC,IAAI,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAGD,OAAO,KAAK,CAAC,WAAW;YACtB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAOO,KAAK,CAAC,UAAU,CAAC,KAAyB,EAAE,QAAwB;QAC1E,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QAEzC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAG7F,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,IAAI,cAAkC,CAAC;QAEvC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;gBAC/D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBACjC,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC;gBAC7B,CAAC;gBACD,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;gBACzB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YACxD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,WAAW,CAAC,OAAO;qBACtB,kBAAkB,EAAE;qBACpB,MAAM,CAAC,cAAc,CAAC;qBACtB,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;qBAC5B,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;qBACxC,OAAO,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAClC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5B,EAAE,aAAa,EAAE,IAAI,EAAE,CACxB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;YAChD,SAAS,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,GAAG,cAAc,IAAI,SAAS,CAAC,MAAM,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,gBAAgB,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,GAAG,aAAa,QAAQ,CAAC,KAAK,eAAe,cAAc,KAAK,SAAS,cAAc,SAAS,CAAC,MAAM,GAAG,CACjK,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,gBAAgB,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC;IAEO,eAAe,CACrB,MAAyC,EACzC,OAAgB,EAChB,IAAgC,EAChC,YAAoB;QAEpB,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;qBAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;qBAC1E,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,IAAI,qBAAqB,CAAC,aAAa,YAAY,6CAA6C,MAAM,EAAE,CAAC,CAAC;YAClH,CAAC;YAGD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;CACF,CAAA;AArKY,0BAA0B;IADtC,UAAU,EAAE;IAMR,WAAA,gBAAgB,CAAC,cAAc,CAAC,CAAA;qCADA,cAAc;QAEV,UAAU;GANtC,0BAA0B,CAqKtC"}
1
+ {"version":3,"file":"document-persistence.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/document-persistence.service.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,5 @@ export declare class DocumentStore {
13
13
  static isDocumentClass(value: unknown): boolean;
14
14
  }
15
15
  export declare function resolveDocumentName(documentClass: object): string;
16
+ export declare function resolveDocumentClass(documentName: string, declaringTool?: string): DocumentClass;
16
17
  //# sourceMappingURL=document-store.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"document-store.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/document-store.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EAKpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAa/E,qBACa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAD1B,cAAc,EAAE,cAAc,EAC9B,0BAA0B,EAAE,0BAA0B;IAOzE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;IAS/D,IAAI,CAAC,CAAC,SAAS,MAAM,EACzB,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EACrC,aAAa,CAAC,EAAE,CAAC,GAAG,mBAAmB,EACvC,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,cAAc,CAAC;IAsB1B,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAa/D,gBAAgB,IAAI,cAAc,EAAE;IAQpC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;IAQxC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAGhD;AAMD,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAQjE"}
1
+ {"version":3,"file":"document-store.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/document-store.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EAMpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAa/E,qBACa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAD1B,cAAc,EAAE,cAAc,EAC9B,0BAA0B,EAAE,0BAA0B;IAOzE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;IAS/D,IAAI,CAAC,CAAC,SAAS,MAAM,EACzB,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EACrC,aAAa,CAAC,EAAE,CAAC,GAAG,mBAAmB,EACvC,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,cAAc,CAAC;IAsB1B,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAa/D,gBAAgB,IAAI,cAAc,EAAE;IAQpC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;IAQxC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAGhD;AAMD,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAQjE;AAUD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,CAehG"}
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { Injectable } from '@nestjs/common';
11
11
  import { plainToInstance } from 'class-transformer';
12
- import { deriveDocumentIdentifier, getBlockName, getBlockTypeFromMetadata, getDocumentSchema, } from '@loopstack/common';
12
+ import { deriveDocumentIdentifier, getBlockName, getBlockTypeFromMetadata, getDocumentSchema, getRegisteredDocuments, } from '@loopstack/common';
13
13
  import { ExecutionScope } from '../utils/index.js';
14
14
  import { DocumentPersistenceService } from './document-persistence.service.js';
15
15
  let DocumentStore = class DocumentStore {
@@ -75,4 +75,17 @@ export function resolveDocumentName(documentClass) {
75
75
  }
76
76
  return explicitName;
77
77
  }
78
+ let documentClassByName;
79
+ export function resolveDocumentClass(documentName, declaringTool) {
80
+ let found = documentClassByName?.get(documentName);
81
+ if (!found) {
82
+ documentClassByName = new Map([...getRegisteredDocuments()].map((cls) => [resolveDocumentName(cls), cls]));
83
+ found = documentClassByName.get(documentName);
84
+ }
85
+ if (!found) {
86
+ const source = declaringTool ? ` declared by tool '${declaringTool}'` : '';
87
+ throw new Error(`Unknown document '${documentName}'${source}. No registered @Document class resolves to this name.`);
88
+ }
89
+ return found;
90
+ }
78
91
  //# sourceMappingURL=document-store.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"document-store.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/document-store.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-store.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/document-store.service.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ export * from './workflow-state.service.js';
2
2
  export * from './root-processor.service.js';
3
3
  export * from './create-workflow.service.js';
4
4
  export * from './tool-pipeline.service.js';
5
- export * from './tool-logging.interceptor.js';
6
5
  export * from './document-persistence.service.js';
7
6
  export * from './document-store.service.js';
8
7
  export * from './workflow-orchestration.service.js';
@@ -15,4 +14,6 @@ export * from './tool-registry.service.js';
15
14
  export * from './block-processor.service.js';
16
15
  export * from './processor.factory.js';
17
16
  export * from './processors/workflow-processor.service.js';
17
+ export * from './stateless-child-runner.service.js';
18
+ export * from './run-trace.service.js';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC"}
@@ -2,7 +2,6 @@ export * from './workflow-state.service.js';
2
2
  export * from './root-processor.service.js';
3
3
  export * from './create-workflow.service.js';
4
4
  export * from './tool-pipeline.service.js';
5
- export * from './tool-logging.interceptor.js';
6
5
  export * from './document-persistence.service.js';
7
6
  export * from './document-store.service.js';
8
7
  export * from './workflow-orchestration.service.js';
@@ -15,4 +14,6 @@ export * from './tool-registry.service.js';
15
14
  export * from './block-processor.service.js';
16
15
  export * from './processor.factory.js';
17
16
  export * from './processors/workflow-processor.service.js';
17
+ export * from './stateless-child-runner.service.js';
18
+ export * from './run-trace.service.js';
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { DataSource } from 'typeorm';
2
- import { WorkflowEntity, WorkflowInterface, WorkflowMetadataInterface } from '@loopstack/common';
2
+ import { StatelessExecutionState, WorkflowEntity, WorkflowInterface, WorkflowMetadataInterface } from '@loopstack/common';
3
+ import type { Clock } from '@loopstack/common';
3
4
  import { Processor } from '../../../common/index.js';
4
5
  import { ExecutionScope } from '../../utils/index.js';
6
+ import { RunTraceService } from '../run-trace.service.js';
5
7
  import { TransitionResolverService } from '../transition-resolver.service.js';
6
8
  import { WorkflowMemoryMonitorService } from '../workflow-memory-monitor.service.js';
7
9
  import { WorkflowStateService } from '../workflow-state.service.js';
@@ -11,8 +13,10 @@ export declare class WorkflowProcessorService implements Processor {
11
13
  private readonly executionScope;
12
14
  private readonly memoryMonitor;
13
15
  private readonly dataSource;
16
+ private readonly runTraceService;
17
+ private readonly clock;
14
18
  private readonly logger;
15
- constructor(workflowStateService: WorkflowStateService, transitionResolverService: TransitionResolverService, executionScope: ExecutionScope, memoryMonitor: WorkflowMemoryMonitorService, dataSource: DataSource);
19
+ constructor(workflowStateService: WorkflowStateService, transitionResolverService: TransitionResolverService, executionScope: ExecutionScope, memoryMonitor: WorkflowMemoryMonitorService, dataSource: DataSource, runTraceService: RunTraceService, clock: Clock);
16
20
  process(workflow: WorkflowInterface, args: Record<string, unknown> | undefined, context: {
17
21
  root: string;
18
22
  userId: string;
@@ -22,6 +26,7 @@ export declare class WorkflowProcessorService implements Processor {
22
26
  payload: Record<string, unknown>;
23
27
  workflowContext?: Record<string, unknown>;
24
28
  workflowEntity?: WorkflowEntity;
29
+ statelessState?: StatelessExecutionState;
25
30
  options: {
26
31
  stateless: boolean;
27
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-processor.service.d.ts","sourceRoot":"","sources":["../../../../src/workflow-processor/services/processors/workflow-processor.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAGL,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EAG1B,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAoB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAkBpE,qBACa,wBAAyB,YAAW,SAAS;IAItD,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAP7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGjD,oBAAoB,EAAE,oBAAoB,EAC1C,yBAAyB,EAAE,yBAAyB,EACpD,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,4BAA4B,EAC3C,UAAU,EAAE,UAAU;IAGnC,OAAO,CACX,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,OAAO,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KACjC,GACA,OAAO,CAAC,yBAAyB,CAAC;IAgIrC,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,WAAW;YAeL,iBAAiB;YAsGjB,qBAAqB;IAiEnC,OAAO,CAAC,eAAe;YAOT,mBAAmB;CAwLlC"}
1
+ {"version":3,"file":"workflow-processor.service.d.ts","sourceRoot":"","sources":["../../../../src/workflow-processor/services/processors/workflow-processor.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAEL,uBAAuB,EAGvB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EAI1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAoB,SAAS,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,cAAc,EAA2D,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAWpE,qBACa,wBAAyB,YAAW,SAAS;IAItD,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK;IATvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGjD,oBAAoB,EAAE,oBAAoB,EAC1C,yBAAyB,EAAE,yBAAyB,EACpD,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,4BAA4B,EAC3C,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EACjB,KAAK,EAAE,KAAK;IAGxC,OAAO,CACX,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,OAAO,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KACjC,GACA,OAAO,CAAC,yBAAyB,CAAC;IA2MrC,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,WAAW;YAeL,iBAAiB;YAwHjB,qBAAqB;IAiEnC,OAAO,CAAC,eAAe;YAOT,mBAAmB;CAyQlC"}
@@ -7,38 +7,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
10
13
  var WorkflowProcessorService_1;
11
- import { Injectable, Logger } from '@nestjs/common';
14
+ import { Inject, Injectable, Logger } from '@nestjs/common';
12
15
  import { DataSource } from 'typeorm';
13
- import { getGuardMetadataMap, getWorkflowStateSchema, } from '@loopstack/common';
16
+ import { ZodError } from 'zod';
17
+ import { CLOCK, getGuardMetadataMap, getWorkflowIdentifier, getWorkflowStateSchema, } from '@loopstack/common';
14
18
  import { WorkflowState, WorkflowState as WorkflowStateEnum } from '@loopstack/contracts/enums';
15
- import { ConfigTraceError } from '../../../common/index.js';
16
- import { ExecutionScope } from '../../utils/index.js';
19
+ import { ConfigTraceError, TransitionAbortedError } from '../../../common/index.js';
20
+ import { ExecutionScope, RunTraceCollector, shallowStateDiff } from '../../utils/index.js';
21
+ import { RunTraceService } from '../run-trace.service.js';
17
22
  import { TransitionResolverService } from '../transition-resolver.service.js';
18
23
  import { WorkflowMemoryMonitorService } from '../workflow-memory-monitor.service.js';
19
24
  import { WorkflowStateService } from '../workflow-state.service.js';
20
- function rejectAfter(ms, methodName) {
21
- return new Promise((_, reject) => setTimeout(() => reject(new Error(`Transition '${methodName}' timed out after ${ms}ms`)), ms));
22
- }
23
25
  let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProcessorService {
24
26
  workflowStateService;
25
27
  transitionResolverService;
26
28
  executionScope;
27
29
  memoryMonitor;
28
30
  dataSource;
31
+ runTraceService;
32
+ clock;
29
33
  logger = new Logger(WorkflowProcessorService_1.name);
30
- constructor(workflowStateService, transitionResolverService, executionScope, memoryMonitor, dataSource) {
34
+ constructor(workflowStateService, transitionResolverService, executionScope, memoryMonitor, dataSource, runTraceService, clock) {
31
35
  this.workflowStateService = workflowStateService;
32
36
  this.transitionResolverService = transitionResolverService;
33
37
  this.executionScope = executionScope;
34
38
  this.memoryMonitor = memoryMonitor;
35
39
  this.dataSource = dataSource;
40
+ this.runTraceService = runTraceService;
41
+ this.clock = clock;
36
42
  }
37
43
  async process(workflow, args, context) {
38
44
  const isStateless = !!context.options?.stateless;
39
45
  let workflowEntity;
40
46
  let pendingTransition;
41
47
  let latestCheckpoint = null;
48
+ const trace = new RunTraceCollector(context.statelessState?.trace, () => this.clock.now());
42
49
  const meta = {
43
50
  hasError: false,
44
51
  stop: false,
@@ -48,6 +55,7 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
48
55
  documents: [],
49
56
  place: 'start',
50
57
  tools: {},
58
+ trace: trace.events,
51
59
  result: null,
52
60
  retryCount: 0,
53
61
  retryTransitionId: undefined,
@@ -55,6 +63,12 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
55
63
  };
56
64
  if (isStateless) {
57
65
  meta.status = WorkflowStateEnum.Running;
66
+ const resume = context.statelessState;
67
+ if (resume) {
68
+ meta.place = resume.place;
69
+ meta.documents = resume.documents;
70
+ pendingTransition = context.payload?.transition;
71
+ }
58
72
  }
59
73
  else {
60
74
  workflowEntity = context.workflowEntity;
@@ -65,6 +79,7 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
65
79
  meta.place = workflowEntity.place ?? 'start';
66
80
  meta.retryCount = workflowEntity.retryCount ?? 0;
67
81
  meta.retryTransitionId = workflowEntity.retryTransitionId ?? undefined;
82
+ meta.result = workflowEntity.result ?? null;
68
83
  if (workflowEntity) {
69
84
  delete workflowEntity.documents;
70
85
  }
@@ -77,15 +92,21 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
77
92
  this.logger.debug('Skipping processing since state is already processed.');
78
93
  return meta;
79
94
  }
95
+ if (this.runTraceService.isEnabled(workflowEntity.trace)) {
96
+ trace.continueFrom(await this.runTraceService.nextSeq(workflowEntity.id));
97
+ }
80
98
  meta.status = WorkflowStateEnum.Running;
81
99
  }
82
- let state = latestCheckpoint ? (latestCheckpoint.state ?? {}) : {};
100
+ let state = latestCheckpoint
101
+ ? (latestCheckpoint.state ?? {})
102
+ : (context.statelessState?.state ?? {});
83
103
  const checkpointVersion = latestCheckpoint ? latestCheckpoint.version + 1 : 1;
84
104
  meta.version = checkpointVersion;
85
105
  const scopeData = {
86
106
  userId: context.userId,
87
107
  workspaceId: context.workspaceId,
88
108
  workflowId: context.workflowId ?? '',
109
+ workflowName: getWorkflowIdentifier(workflow),
89
110
  labels: context.labels ?? [],
90
111
  args: args ? Object.freeze({ ...args }) : undefined,
91
112
  options: context.options,
@@ -94,6 +115,11 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
94
115
  documents: meta.documents,
95
116
  persistenceState: meta.persistenceState,
96
117
  transition: undefined,
118
+ trace,
119
+ tracePersist: workflowEntity ? this.runTraceService.isEnabled(workflowEntity.trace) : false,
120
+ statelessCallbacks: context.statelessState?.callbacks ? [...context.statelessState.callbacks] : [],
121
+ statelessChildren: context.statelessState?.children ? [...context.statelessState.children] : [],
122
+ abortController: new AbortController(),
97
123
  stateDraft: {},
98
124
  resultDraft: {},
99
125
  resultDirty: false,
@@ -102,13 +128,22 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
102
128
  this.memoryMonitor.logWorkflowStart(workflow.constructor.name);
103
129
  try {
104
130
  state = await this.processStateMachine(scopeData, meta, workflow, pendingTransition, workflowEntity, state);
131
+ if (isStateless) {
132
+ const callbacks = scopeData.statelessCallbacks ?? [];
133
+ while (callbacks.length > 0 && !meta.hasError && meta.place !== 'end') {
134
+ const traceLength = meta.trace.length;
135
+ state = await this.processStateMachine(scopeData, meta, workflow, callbacks[0], workflowEntity, state);
136
+ if (trace.startedSince(traceLength) === 0)
137
+ break;
138
+ callbacks.shift();
139
+ }
140
+ }
105
141
  }
106
142
  catch (e) {
107
143
  const error = e instanceof Error ? e : new Error(String(e));
108
144
  this.logger.error(new ConfigTraceError(error, workflow));
109
145
  meta.errorMessage = error.message;
110
146
  meta.hasError = true;
111
- meta.place = 'error';
112
147
  }
113
148
  const hasRetrySignal = !!meta._retrySignal;
114
149
  if (hasRetrySignal) {
@@ -128,9 +163,30 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
128
163
  }
129
164
  meta.documents = scopeData.documents;
130
165
  meta.persistenceState = scopeData.persistenceState;
166
+ trace.emit({
167
+ type: 'run.settled',
168
+ status: meta.status,
169
+ place: meta.place,
170
+ ...(meta.status === WorkflowState.Waiting
171
+ ? { availableTransitions: meta.availableTransitions.map((t) => t.id) }
172
+ : {}),
173
+ });
174
+ if (isStateless) {
175
+ meta.statelessState = {
176
+ place: meta.place,
177
+ state,
178
+ documents: meta.documents,
179
+ trace: trace.events,
180
+ ...(scopeData.statelessCallbacks?.length ? { callbacks: scopeData.statelessCallbacks } : {}),
181
+ ...(scopeData.statelessChildren?.length ? { children: scopeData.statelessChildren } : {}),
182
+ };
183
+ }
131
184
  this.memoryMonitor.logWorkflowEnd(workflow.constructor.name, meta.documents, meta.version);
132
185
  if (workflowEntity) {
133
186
  await this.workflowStateService.saveExecutionState(workflowEntity, state, meta);
187
+ if (scopeData.tracePersist) {
188
+ await this.runTraceService.saveBatch({ workflowId: workflowEntity.id, workflowName: scopeData.workflowName, workspaceId: scopeData.workspaceId }, trace.events);
189
+ }
134
190
  }
135
191
  return meta;
136
192
  }
@@ -140,6 +196,7 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
140
196
  workspaceId: scopeData.workspaceId,
141
197
  workflowId: scopeData.workflowId,
142
198
  args: scopeData.args,
199
+ signal: scopeData.abortController.signal,
143
200
  execution: {
144
201
  place: meta.place,
145
202
  retryCount: meta.retryCount ?? 0,
@@ -187,13 +244,24 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
187
244
  async executeTransition(scopeData, meta, workflow, methodName, to, data, state, workflowEntity, workflowName, transitionMeta) {
188
245
  const defaultTimeout = parseInt(process.env.DEFAULT_TRANSITION_TIMEOUT ?? '', 10) || 300_000;
189
246
  const timeoutMs = transitionMeta?.timeout ?? defaultTimeout;
247
+ scopeData.abortController = new AbortController();
190
248
  const workflowCtx = this.buildWorkflowContext(scopeData, meta);
191
249
  const invokeMethod = () => {
192
250
  scopeData.stateDraft = { ...state };
193
251
  scopeData.resultDraft = meta.result ? { ...meta.result } : {};
194
252
  scopeData.resultDirty = false;
195
253
  const methodPromise = this.executionScope.run(scopeData, () => this.invokeTransition(workflow, methodName, workflowCtx, state, data));
196
- return timeoutMs > 0 ? Promise.race([methodPromise, rejectAfter(timeoutMs, methodName)]) : methodPromise;
254
+ if (timeoutMs <= 0)
255
+ return methodPromise;
256
+ let cancel;
257
+ const timeoutPromise = new Promise((_, reject) => {
258
+ cancel = this.clock.schedule(() => {
259
+ const timeoutError = new TransitionAbortedError(`Transition '${methodName}' timed out after ${timeoutMs}ms`);
260
+ scopeData.abortController.abort(timeoutError);
261
+ reject(timeoutError);
262
+ }, timeoutMs);
263
+ });
264
+ return Promise.race([methodPromise, timeoutPromise]).finally(() => cancel());
197
265
  };
198
266
  if (!workflowEntity) {
199
267
  const returnValue = await invokeMethod();
@@ -316,6 +384,13 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
316
384
  return state;
317
385
  }
318
386
  }
387
+ scopeData.trace.emit({
388
+ type: 'transition.started',
389
+ transitionId: waitTransition.methodName,
390
+ from: meta.place,
391
+ to: waitTransition.to,
392
+ payload: pendingTransition.payload,
393
+ });
319
394
  if (workflowEntity) {
320
395
  await this.workflowStateService.saveExecutionState(workflowEntity, state, meta);
321
396
  }
@@ -328,6 +403,13 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
328
403
  const subError = new Error(errorMessage);
329
404
  this.logger.warn(`Wait transition '${waitTransition.methodName}' received ${status} callback: ${errorMessage}`);
330
405
  await this.handleTransitionError(meta, subError, waitTransition);
406
+ scopeData.trace.emit({
407
+ type: 'transition.failed',
408
+ transitionId: waitTransition.methodName,
409
+ error: errorMessage,
410
+ retryCount: meta.retryCount ?? 0,
411
+ willRetry: !!meta._retrySignal,
412
+ });
331
413
  const errorAvailable = this.transitionResolverService.getAvailableTransitions(workflow, meta.place);
332
414
  meta.availableTransitions = errorAvailable.map((t) => ({
333
415
  id: t.methodName,
@@ -337,7 +419,32 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
337
419
  }));
338
420
  return state;
339
421
  }
340
- const validatedData = waitTransition.schema && !isFailureCallback ? waitTransition.schema.parse(rawData) : rawData;
422
+ let validatedData;
423
+ if (waitTransition.schema && !isFailureCallback) {
424
+ try {
425
+ validatedData = waitTransition.schema.parse(rawData);
426
+ }
427
+ catch (e) {
428
+ const message = e instanceof ZodError
429
+ ? e.issues.map((i) => `${i.path.length ? i.path.join('.') : '<root>'}: ${i.message}`).join('; ')
430
+ : e instanceof Error
431
+ ? e.message
432
+ : String(e);
433
+ this.logger.warn(`Rejected invalid payload for wait transition '${waitTransition.methodName}': ${message}`);
434
+ meta.errorMessage = `Invalid payload for '${waitTransition.methodName}': ${message}`;
435
+ const stillAvailable = this.transitionResolverService.getAvailableTransitions(workflow, meta.place);
436
+ meta.availableTransitions = stillAvailable.map((t) => ({
437
+ id: t.methodName,
438
+ from: meta.place,
439
+ to: t.to,
440
+ trigger: t.wait ? 'manual' : undefined,
441
+ }));
442
+ return state;
443
+ }
444
+ }
445
+ else {
446
+ validatedData = rawData;
447
+ }
341
448
  const transitionInput = {
342
449
  workflowId: rawPayload.workflowId ?? pendingTransition.workflowId,
343
450
  status,
@@ -346,8 +453,16 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
346
453
  data: validatedData,
347
454
  ...(rawPayload.meta !== undefined ? { meta: rawPayload.meta } : {}),
348
455
  };
456
+ const startedAt = performance.now();
349
457
  try {
350
458
  const result = await this.executeTransition(scopeData, meta, workflow, waitTransition.methodName, waitTransition.to, transitionInput, state, workflowEntity, workflowName, waitTransition);
459
+ scopeData.trace.emit({
460
+ type: 'transition.completed',
461
+ transitionId: waitTransition.methodName,
462
+ durationMs: Math.round(performance.now() - startedAt),
463
+ stateDiff: shallowStateDiff(state, result.newState),
464
+ resultDirty: scopeData.resultDirty,
465
+ });
351
466
  state = result.newState;
352
467
  this.clearRetryState(meta, waitTransition.methodName);
353
468
  }
@@ -355,6 +470,14 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
355
470
  const error = e instanceof Error ? e : new Error(String(e));
356
471
  this.logger.error(new ConfigTraceError(error, workflow));
357
472
  await this.handleTransitionError(meta, error, waitTransition);
473
+ scopeData.trace.emit({
474
+ type: 'transition.failed',
475
+ transitionId: waitTransition.methodName,
476
+ durationMs: Math.round(performance.now() - startedAt),
477
+ error: error.message,
478
+ retryCount: meta.retryCount ?? 0,
479
+ willRetry: !!meta._retrySignal,
480
+ });
358
481
  const errorAvailable = this.transitionResolverService.getAvailableTransitions(workflow, meta.place);
359
482
  meta.availableTransitions = errorAvailable.map((t) => ({
360
483
  id: t.methodName,
@@ -367,9 +490,6 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
367
490
  }
368
491
  }
369
492
  while (true) {
370
- if (meta.place === 'end')
371
- break;
372
- meta.nextPlace = undefined;
373
493
  const available = this.transitionResolverService.getAvailableTransitions(workflow, meta.place);
374
494
  meta.availableTransitions = available.map((t) => ({
375
495
  id: t.methodName,
@@ -377,6 +497,9 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
377
497
  to: t.to,
378
498
  trigger: t.wait ? 'manual' : undefined,
379
499
  }));
500
+ if (meta.place === 'end')
501
+ break;
502
+ meta.nextPlace = undefined;
380
503
  const next = await this.executionScope.run(scopeData, () => {
381
504
  return this.transitionResolverService.resolveNextTransition(workflow, available, guards, state);
382
505
  });
@@ -389,11 +512,25 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
389
512
  payload: null,
390
513
  };
391
514
  scopeData.transition = meta.transition;
515
+ scopeData.trace.emit({
516
+ type: 'transition.started',
517
+ transitionId: next.methodName,
518
+ from: meta.place,
519
+ to: next.to,
520
+ });
392
521
  if (workflowEntity) {
393
522
  await this.workflowStateService.saveExecutionState(workflowEntity, state, meta);
394
523
  }
524
+ const startedAt = performance.now();
395
525
  try {
396
526
  const result = await this.executeTransition(scopeData, meta, workflow, next.methodName, next.to, undefined, state, workflowEntity, workflowName, next);
527
+ scopeData.trace.emit({
528
+ type: 'transition.completed',
529
+ transitionId: next.methodName,
530
+ durationMs: Math.round(performance.now() - startedAt),
531
+ stateDiff: shallowStateDiff(state, result.newState),
532
+ resultDirty: scopeData.resultDirty,
533
+ });
397
534
  state = result.newState;
398
535
  this.clearRetryState(meta, next.methodName);
399
536
  }
@@ -401,6 +538,14 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
401
538
  const error = e instanceof Error ? e : new Error(String(e));
402
539
  this.logger.error(new ConfigTraceError(error, workflow));
403
540
  await this.handleTransitionError(meta, error, next);
541
+ scopeData.trace.emit({
542
+ type: 'transition.failed',
543
+ transitionId: next.methodName,
544
+ durationMs: Math.round(performance.now() - startedAt),
545
+ error: error.message,
546
+ retryCount: meta.retryCount ?? 0,
547
+ willRetry: !!meta._retrySignal,
548
+ });
404
549
  const errorAvailable = this.transitionResolverService.getAvailableTransitions(workflow, meta.place);
405
550
  meta.availableTransitions = errorAvailable.map((t) => ({
406
551
  id: t.methodName,
@@ -416,11 +561,13 @@ let WorkflowProcessorService = WorkflowProcessorService_1 = class WorkflowProces
416
561
  };
417
562
  WorkflowProcessorService = WorkflowProcessorService_1 = __decorate([
418
563
  Injectable(),
564
+ __param(6, Inject(CLOCK)),
419
565
  __metadata("design:paramtypes", [WorkflowStateService,
420
566
  TransitionResolverService,
421
567
  ExecutionScope,
422
568
  WorkflowMemoryMonitorService,
423
- DataSource])
569
+ DataSource,
570
+ RunTraceService, Object])
424
571
  ], WorkflowProcessorService);
425
572
  export { WorkflowProcessorService };
426
573
  //# sourceMappingURL=workflow-processor.service.js.map