@t4h.framework/core 0.9.0 → 0.10.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 (121) hide show
  1. package/.ai/skills/framework-core/SKILL.md +9 -8
  2. package/.ai/skills/framework-workflow-creation/SKILL.md +32 -7
  3. package/.ai/skills/framework-workflow-testing/SKILL.md +9 -1
  4. package/CHANGELOG.md +117 -0
  5. package/README.md +13 -8
  6. package/dist/activities/StartWorkflowActivity.d.ts +5 -6
  7. package/dist/activities/StartWorkflowActivity.d.ts.map +1 -1
  8. package/dist/activities/StartWorkflowActivity.js +12 -11
  9. package/dist/activities/StartWorkflowActivity.js.map +1 -1
  10. package/dist/core.d.ts +1 -0
  11. package/dist/core.d.ts.map +1 -1
  12. package/dist/core.js +1 -0
  13. package/dist/core.js.map +1 -1
  14. package/dist/exceptions/TimerNotAllowedException.d.ts +5 -0
  15. package/dist/exceptions/TimerNotAllowedException.d.ts.map +1 -0
  16. package/dist/exceptions/TimerNotAllowedException.js +9 -0
  17. package/dist/exceptions/TimerNotAllowedException.js.map +1 -0
  18. package/dist/models/AsyncActivityAwaitable.d.ts +1 -1
  19. package/dist/models/AsyncActivityAwaitable.d.ts.map +1 -1
  20. package/dist/models/AsyncActivityAwaitable.js +2 -0
  21. package/dist/models/AsyncActivityAwaitable.js.map +1 -1
  22. package/dist/models/History.d.ts +17 -2
  23. package/dist/models/History.d.ts.map +1 -1
  24. package/dist/models/History.js +26 -8
  25. package/dist/models/History.js.map +1 -1
  26. package/dist/models/Logger.d.ts.map +1 -1
  27. package/dist/models/Logger.js +2 -1
  28. package/dist/models/Logger.js.map +1 -1
  29. package/dist/testing/TestClock.d.ts.map +1 -1
  30. package/dist/testing/TestClock.js +6 -35
  31. package/dist/testing/TestClock.js.map +1 -1
  32. package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -1
  33. package/dist/testing/TestWorkflowEnvironment.js +6 -4
  34. package/dist/testing/TestWorkflowEnvironment.js.map +1 -1
  35. package/dist/testing/tools/resolve-activity.d.ts.map +1 -1
  36. package/dist/testing/tools/resolve-activity.js +4 -1
  37. package/dist/testing/tools/resolve-activity.js.map +1 -1
  38. package/dist/testing/tools/resolve-async-activity.d.ts +3 -2
  39. package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -1
  40. package/dist/testing/tools/resolve-async-activity.js +17 -36
  41. package/dist/testing/tools/resolve-async-activity.js.map +1 -1
  42. package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -1
  43. package/dist/testing/tools/run-workflow-ticks.js +6 -0
  44. package/dist/testing/tools/run-workflow-ticks.js.map +1 -1
  45. package/dist/testing/tools/run-workflow.d.ts +4 -0
  46. package/dist/testing/tools/run-workflow.d.ts.map +1 -1
  47. package/dist/testing/tools/run-workflow.js +17 -7
  48. package/dist/testing/tools/run-workflow.js.map +1 -1
  49. package/dist/tools/Deterministic.d.ts +7 -0
  50. package/dist/tools/Deterministic.d.ts.map +1 -0
  51. package/dist/tools/Deterministic.js +107 -0
  52. package/dist/tools/Deterministic.js.map +1 -0
  53. package/dist/tools/Internals.d.ts +2 -0
  54. package/dist/tools/Internals.d.ts.map +1 -1
  55. package/dist/tools/Internals.js +5 -1
  56. package/dist/tools/Internals.js.map +1 -1
  57. package/dist/tools/clock.d.ts +3 -0
  58. package/dist/tools/clock.d.ts.map +1 -0
  59. package/dist/tools/clock.js +11 -0
  60. package/dist/tools/clock.js.map +1 -0
  61. package/dist/tools/random.d.ts +3 -0
  62. package/dist/tools/random.d.ts.map +1 -0
  63. package/dist/tools/random.js +29 -0
  64. package/dist/tools/random.js.map +1 -0
  65. package/package.json +1 -1
  66. package/dist/models/ContinueAsNew.d.ts +0 -24
  67. package/dist/models/ContinueAsNew.d.ts.map +0 -1
  68. package/dist/models/ContinueAsNew.js +0 -28
  69. package/dist/models/ContinueAsNew.js.map +0 -1
  70. package/dist/models/ExecutionContext.d.ts +0 -8
  71. package/dist/models/ExecutionContext.d.ts.map +0 -1
  72. package/dist/models/ExecutionContext.js +0 -22
  73. package/dist/models/ExecutionContext.js.map +0 -1
  74. package/dist/testing/ActivityTesting.d.ts +0 -25
  75. package/dist/testing/ActivityTesting.d.ts.map +0 -1
  76. package/dist/testing/ActivityTesting.js +0 -74
  77. package/dist/testing/ActivityTesting.js.map +0 -1
  78. package/dist/testing/NonDeterministicWorkflowError.d.ts +0 -4
  79. package/dist/testing/NonDeterministicWorkflowError.d.ts.map +0 -1
  80. package/dist/testing/NonDeterministicWorkflowError.js +0 -7
  81. package/dist/testing/NonDeterministicWorkflowError.js.map +0 -1
  82. package/dist/testing/StrictGuard.d.ts +0 -4
  83. package/dist/testing/StrictGuard.d.ts.map +0 -1
  84. package/dist/testing/StrictGuard.js +0 -26
  85. package/dist/testing/StrictGuard.js.map +0 -1
  86. package/dist/testing/WorkflowTesting.d.ts +0 -6
  87. package/dist/testing/WorkflowTesting.d.ts.map +0 -1
  88. package/dist/testing/WorkflowTesting.js +0 -7
  89. package/dist/testing/WorkflowTesting.js.map +0 -1
  90. package/dist/testing/create-mock-claim.d.ts +0 -11
  91. package/dist/testing/create-mock-claim.d.ts.map +0 -1
  92. package/dist/testing/create-mock-claim.js +0 -26
  93. package/dist/testing/create-mock-claim.js.map +0 -1
  94. package/dist/testing/create-mock-claims.d.ts +0 -13
  95. package/dist/testing/create-mock-claims.d.ts.map +0 -1
  96. package/dist/testing/create-mock-claims.js +0 -8
  97. package/dist/testing/create-mock-claims.js.map +0 -1
  98. package/dist/testing/create-test-env.d.ts +0 -10
  99. package/dist/testing/create-test-env.d.ts.map +0 -1
  100. package/dist/testing/create-test-env.js +0 -7
  101. package/dist/testing/create-test-env.js.map +0 -1
  102. package/dist/testing/mock-async.d.ts +0 -48
  103. package/dist/testing/mock-async.d.ts.map +0 -1
  104. package/dist/testing/mock-async.js +0 -58
  105. package/dist/testing/mock-async.js.map +0 -1
  106. package/dist/testing/outcomes.d.ts +0 -12
  107. package/dist/testing/outcomes.d.ts.map +0 -1
  108. package/dist/testing/outcomes.js +0 -10
  109. package/dist/testing/outcomes.js.map +0 -1
  110. package/dist/testing/run-workflow.d.ts +0 -32
  111. package/dist/testing/run-workflow.d.ts.map +0 -1
  112. package/dist/testing/run-workflow.js +0 -160
  113. package/dist/testing/run-workflow.js.map +0 -1
  114. package/dist/testing/tools/serializable-clone.d.ts +0 -21
  115. package/dist/testing/tools/serializable-clone.d.ts.map +0 -1
  116. package/dist/testing/tools/serializable-clone.js +0 -77
  117. package/dist/testing/tools/serializable-clone.js.map +0 -1
  118. package/dist/testing/types.d.ts +0 -19
  119. package/dist/testing/types.d.ts.map +0 -1
  120. package/dist/testing/types.js +0 -2
  121. package/dist/testing/types.js.map +0 -1
@@ -1,8 +0,0 @@
1
- import { mockClaim } from './create-mock-claim.js';
2
- export function createMockClaims(...providers) {
3
- return providers;
4
- }
5
- export function createMockClaimsFromMap(entries) {
6
- return entries.map(([ClaimClass, implementation]) => mockClaim(ClaimClass, implementation ?? {}));
7
- }
8
- //# sourceMappingURL=create-mock-claims.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-mock-claims.js","sourceRoot":"","sources":["../../src/testing/create-mock-claims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIlD,MAAM,UAAU,gBAAgB,CAC9B,GAAG,SAAwC;IAE3C,OAAO,SAAS,CAAA;AAClB,CAAC;AAOD,MAAM,UAAU,uBAAuB,CACrC,OAAkC;IAElC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,EAAE,CAClD,SAAS,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAC5C,CAAA;AACH,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Env } from '../../models/Env.js'
2
- export declare function createTestEnv(
3
- overrides: Record<string, string | undefined>,
4
- base?: Record<string, string | undefined>,
5
- ): Record<string, string | undefined>
6
- export declare function createTestEnvEntries(
7
- overrides: Record<string, string | undefined>,
8
- base?: Record<string, string | undefined>,
9
- ): Env.Entries
10
- //# sourceMappingURL=create-test-env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-test-env.d.ts","sourceRoot":"","sources":["../../src/testing/create-test-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC7C,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAEpC;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC7C,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAC5C,GAAG,CAAC,OAAO,CAEb"}
@@ -1,7 +0,0 @@
1
- export function createTestEnv(overrides, base = {}) {
2
- return { ...base, ...overrides };
3
- }
4
- export function createTestEnvEntries(overrides, base = {}) {
5
- return createTestEnv(overrides, base);
6
- }
7
- //# sourceMappingURL=create-test-env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-test-env.js","sourceRoot":"","sources":["../../src/testing/create-test-env.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,SAA6C,EAC7C,OAA2C,EAAE;IAE7C,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAA6C,EAC7C,OAA2C,EAAE;IAE7C,OAAO,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACvC,CAAC"}
@@ -1,48 +0,0 @@
1
- import type { MockAsyncActivity } from '../types.js'
2
- import {
3
- AsyncActivity,
4
- type AnyAsyncActivity,
5
- } from '../../models/AsyncActivity.js'
6
- import type { AsyncActivityResultPending } from '../../models/AsyncActivityAdvanceResult.js'
7
- type InferSerializableOutput<T extends AnyAsyncActivity> =
8
- T extends AsyncActivity<any, any, infer TSerializableOutput, any, any, any>
9
- ? TSerializableOutput
10
- : unknown
11
- type TypedOutcome<TOutput> =
12
- | {
13
- status: 'fulfilled'
14
- output?: TOutput
15
- }
16
- | {
17
- status: 'rejected'
18
- reason?: unknown
19
- }
20
- | {
21
- status: 'timeout'
22
- }
23
- interface OnContext {
24
- callCount: number
25
- input: unknown
26
- pending: AsyncActivityResultPending
27
- }
28
- type OnCallback<T extends AnyAsyncActivity> = (
29
- activity: T,
30
- context: OnContext,
31
- ) =>
32
- | TypedOutcome<InferSerializableOutput<T>>
33
- | Promise<TypedOutcome<InferSerializableOutput<T>>>
34
- type OnHandler<T extends AnyAsyncActivity> =
35
- | TypedOutcome<InferSerializableOutput<T>>
36
- | TypedOutcome<InferSerializableOutput<T>>[]
37
- | OnCallback<T>
38
- export interface MockAsyncBuilder extends MockAsyncActivity {
39
- on<T extends AnyAsyncActivity>(
40
- ActivityClass: new () => T,
41
- handler: OnHandler<T>,
42
- ): MockAsyncBuilder
43
- timeout(): MockAsyncBuilder
44
- fallback(handler: MockAsyncActivity): MockAsyncBuilder
45
- }
46
- export declare function mockAsync(): MockAsyncBuilder
47
- export {}
48
- //# sourceMappingURL=mock-async.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-async.d.ts","sourceRoot":"","sources":["../../src/testing/mock-async.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,aAAa,EACb,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAEzF,KAAK,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,IACrD,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACvE,mBAAmB,GACnB,OAAO,CAAA;AAEb,KAAK,YAAY,CAAC,OAAO,IACrB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAEzB,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,0BAA0B,CAAA;CACpC;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC5C,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,SAAS,KAEhB,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAErD,KAAK,SAAS,CAAC,CAAC,SAAS,gBAAgB,IACrC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GACxC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,GAC1C,UAAU,CAAC,CAAC,CAAC,CAAA;AAQjB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAC3B,aAAa,EAAE,UAAU,CAAC,EAC1B,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GACpB,gBAAgB,CAAA;IAEnB,OAAO,IAAI,gBAAgB,CAAA;IAE3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAA;CACvD;AAED,wBAAgB,SAAS,IAAI,gBAAgB,CA+E5C"}
@@ -1,58 +0,0 @@
1
- import { TestClock } from './TestClock.js';
2
- import { AsyncActivity, } from '../models/AsyncActivity.js';
3
- export function mockAsync() {
4
- const entries = [];
5
- let timeoutFallback = false;
6
- let fallbackHandler;
7
- const execute = async (activity, context) => {
8
- for (const entry of entries) {
9
- if (!(activity instanceof entry.ActivityClass))
10
- continue;
11
- const callCount = entry.callCount++;
12
- const ctx = {
13
- callCount,
14
- input: context.input,
15
- pending: context.pending,
16
- };
17
- if (typeof entry.handler === 'function') {
18
- return entry.handler(activity, ctx);
19
- }
20
- if (Array.isArray(entry.handler)) {
21
- const outcome = entry.handler[callCount];
22
- if (outcome === undefined)
23
- throw new Error(`mockAsync().on(${activity.constructor.name}): no outcome at call ${callCount} (${entry.handler.length} defined)`);
24
- return outcome;
25
- }
26
- return entry.handler;
27
- }
28
- if (timeoutFallback && context.pending.timeoutAt) {
29
- const target = context.pending.timeoutAt.getTime();
30
- if (TestClock.isActive() && TestClock.now() < target)
31
- TestClock.advance(target - TestClock.now());
32
- return { status: 'timeout' };
33
- }
34
- if (fallbackHandler)
35
- return fallbackHandler(activity, context);
36
- throw new Error(`mockAsync(): no handler registered for "${activity.constructor.name}"`);
37
- };
38
- const builder = Object.assign(execute, {
39
- on(ActivityClass, handler) {
40
- entries.push({
41
- ActivityClass: ActivityClass,
42
- handler: handler,
43
- callCount: 0,
44
- });
45
- return builder;
46
- },
47
- timeout() {
48
- timeoutFallback = true;
49
- return builder;
50
- },
51
- fallback(handler) {
52
- fallbackHandler = handler;
53
- return builder;
54
- },
55
- });
56
- return builder;
57
- }
58
- //# sourceMappingURL=mock-async.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-async.js","sourceRoot":"","sources":["../../src/testing/mock-async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAM1C,OAAO,EACL,aAAa,GAEd,MAAM,4BAA4B,CAAA;AAgDnC,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAc,EAAE,CAAA;IAC7B,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,IAAI,eAA8C,CAAA;IAElD,MAAM,OAAO,GAAsB,KAAK,EACtC,QAA0B,EAC1B,OAAiC,EACF,EAAE;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,QAAQ,YAAY,KAAK,CAAC,aAAa,CAAC;gBAAE,SAAQ;YAExD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;YACnC,MAAM,GAAG,GAAc;gBACrB,SAAS;gBACT,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAA;YAED,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACxC,OAAQ,KAAK,CAAC,OAAwC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACvE,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBAExC,IAAI,OAAO,KAAK,SAAS;oBACvB,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,CAAC,WAAW,CAAC,IAAI,yBAAyB,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,WAAW,CAClH,CAAA;gBAEH,OAAO,OAAO,CAAA;YAChB,CAAC;YAED,OAAO,KAAK,CAAC,OAAO,CAAA;QACtB,CAAC;QAED,IAAI,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YAElD,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM;gBAClD,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;YAE7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QAC9B,CAAC;QAED,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE9D,MAAM,IAAI,KAAK,CACb,2CAA2C,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CACxE,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAqB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QACvD,EAAE,CACA,aAA0B,EAC1B,OAAqB;YAErB,OAAO,CAAC,IAAI,CAAC;gBACX,aAAa,EAAE,aAA2C;gBAC1D,OAAO,EAAE,OAAsC;gBAC/C,SAAS,EAAE,CAAC;aACb,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO;YACL,eAAe,GAAG,IAAI,CAAA;YACtB,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,QAAQ,CAAC,OAA0B;YACjC,eAAe,GAAG,OAAO,CAAA;YACzB,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,12 +0,0 @@
1
- export declare function fulfilled<T>(output?: T): {
2
- status: 'fulfilled';
3
- output?: T;
4
- };
5
- export declare function rejected(reason?: unknown): {
6
- status: 'rejected';
7
- reason?: unknown;
8
- };
9
- export declare function timeout(): {
10
- status: 'timeout';
11
- };
12
- //# sourceMappingURL=outcomes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outcomes.d.ts","sourceRoot":"","sources":["../../src/testing/outcomes.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,CAAA;CAAE,CAE5E;AAED,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAEnF;AAED,wBAAgB,OAAO,IAAI;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAE/C"}
@@ -1,10 +0,0 @@
1
- export function fulfilled(output) {
2
- return { status: 'fulfilled', output };
3
- }
4
- export function rejected(reason) {
5
- return { status: 'rejected', reason };
6
- }
7
- export function timeout() {
8
- return { status: 'timeout' };
9
- }
10
- //# sourceMappingURL=outcomes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../src/testing/outcomes.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,MAAU;IACrC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAgB;IACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC"}
@@ -1,32 +0,0 @@
1
- import { type TestClockRunOptions } from './TestClock.js';
2
- import type { MockAsyncActivity } from './types.js';
3
- import type { ClaimProvider } from '../models/Claim.js';
4
- import type { Env } from '../models/Env.js';
5
- import type { HistoryItem } from '../models/History.js';
6
- import type { Log } from '../models/Logger.js';
7
- import type { Workflow, WorkflowInput } from '../models/Workflow.js';
8
- export type { AsyncActivityOutcome, MockAsyncActivity, MockAsyncActivityContext, } from './types.js';
9
- export interface RunWorkflowOptions {
10
- claims?: readonly ClaimProvider<any>[];
11
- env?: Env.Entries;
12
- mockAsyncActivity?: MockAsyncActivity;
13
- maxTicks?: number;
14
- logs?: Log[];
15
- history?: HistoryItem[];
16
- clock?: TestClockRunOptions | false;
17
- strict?: boolean;
18
- autoResolveTimeouts?: boolean;
19
- }
20
- export interface RunWorkflowResult<TOutput = unknown> {
21
- output: TOutput;
22
- history: readonly HistoryItem[];
23
- logs: readonly Log[];
24
- clockNow?: number;
25
- }
26
- export declare function runWorkflow<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options?: RunWorkflowOptions): Promise<unknown>;
27
- export declare function runWorkflowDetailed<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options?: RunWorkflowOptions): Promise<RunWorkflowResult>;
28
- export declare function runWorkflowTicks<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options: RunWorkflowOptions & {
29
- history: HistoryItem[];
30
- logs: Log[];
31
- }): Promise<any>;
32
- //# sourceMappingURL=run-workflow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-workflow.d.ts","sourceRoot":"","sources":["../../src/testing/run-workflow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,EAAwB,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAWzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAG9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGpE,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACjB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAA;IACnC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,OAAO;IAClD,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAqBD,wBAAsB,WAAW,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5D,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE,kBAAuB,oBAKjC;AAED,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACpE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAwB5B;AAED,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACjE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,kBAAkB,GAAG;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ,gBAkCF"}
@@ -1,160 +0,0 @@
1
- import { mockAsync } from './mock-async.js';
2
- import { StrictGuard } from './StrictGuard.js';
3
- import { TestClock } from './TestClock.js';
4
- import { AsyncActivity, } from '../models/AsyncActivity.js';
5
- import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, } from '../models/AsyncActivityAdvanceResult.js';
6
- import { PushActivity } from '../models/PushActivity.js';
7
- import { SyncActivity } from '../models/SyncActivity.js';
8
- import { Internals } from '../tools/Internals.js';
9
- function resolveMockAsyncActivity(options) {
10
- if (options.mockAsyncActivity !== undefined)
11
- return options.mockAsyncActivity;
12
- if (options.autoResolveTimeouts)
13
- return mockAsync().timeout();
14
- return undefined;
15
- }
16
- function runWithClock(clock, fn) {
17
- if (clock === false || clock === undefined)
18
- return fn();
19
- return TestClock.run(clock, fn);
20
- }
21
- export async function runWorkflow(workflow, input, options = {}) {
22
- const { output } = await runWorkflowDetailed(workflow, input, options);
23
- return output;
24
- }
25
- export async function runWorkflowDetailed(workflow, input, options = {}) {
26
- const history = options.history ?? [];
27
- const logs = options.logs ?? [];
28
- const restoreStrict = options.strict ? StrictGuard.install() : undefined;
29
- let clockNow;
30
- try {
31
- const output = await runWithClock(options.clock, async () => {
32
- const result = await runWorkflowTicks(workflow, input, {
33
- ...options,
34
- history,
35
- logs,
36
- mockAsyncActivity: resolveMockAsyncActivity(options),
37
- });
38
- if (TestClock.isActive())
39
- clockNow = TestClock.now();
40
- return result;
41
- });
42
- return { output, history, logs, clockNow };
43
- }
44
- finally {
45
- restoreStrict?.();
46
- }
47
- }
48
- export async function runWorkflowTicks(workflow, input, options) {
49
- const claims = options.claims ?? [];
50
- const env = options.env ?? {};
51
- const maxTicks = options.maxTicks ?? 10_000;
52
- const { history, logs } = options;
53
- const mock = options.mockAsyncActivity;
54
- const resolutionState = { callCount: 0 };
55
- for (let tick = 0; tick < maxTicks; tick++) {
56
- try {
57
- return await Internals.runWorkflow(workflow, {
58
- input,
59
- claims,
60
- env,
61
- history,
62
- logs,
63
- });
64
- }
65
- catch (pushOrError) {
66
- if (!(pushOrError instanceof PushActivity))
67
- throw pushOrError;
68
- const item = await resolveActivity(pushOrError, { claims, env }, mock, resolutionState);
69
- history.push(item);
70
- }
71
- }
72
- throw new Error(`Workflow did not settle within ${maxTicks} ticks`);
73
- }
74
- async function resolveActivity(push, context, mockAsyncActivity, resolutionState) {
75
- const activity = push.activity;
76
- const activityContext = {
77
- ...context,
78
- id: activity.id,
79
- };
80
- if (activity instanceof SyncActivity) {
81
- const output = await Internals.runActivity(activity, activityContext, instance => instance.run(push.input));
82
- return { id: activity.id, type: 'sync', output };
83
- }
84
- if (activity instanceof AsyncActivity) {
85
- const bootstrap = await Internals.runActivity(activity, activityContext, instance => instance.bootstrap(push.input));
86
- return resolveAsyncActivity(activity, bootstrap, activityContext, push.input, mockAsyncActivity, resolutionState);
87
- }
88
- throw new Error('Unknown activity type');
89
- }
90
- async function resolveAsyncActivity(activity, bootstrap, context, input, mockAsyncActivity, resolutionState) {
91
- if (bootstrap instanceof AsyncActivityResultFulfilled)
92
- return {
93
- id: activity.id,
94
- type: 'async',
95
- status: 'fulfilled',
96
- output: bootstrap.payload,
97
- };
98
- if (bootstrap instanceof AsyncActivityResultRejected)
99
- return {
100
- id: activity.id,
101
- type: 'async',
102
- status: 'rejected',
103
- output: bootstrap.payload,
104
- };
105
- if (!(bootstrap instanceof AsyncActivityResultPending))
106
- throw new Error('Unknown async activity result');
107
- const name = activity.constructor.name;
108
- if (!mockAsyncActivity)
109
- throw new Error(`Async activity "${name}" is pending and no mockAsyncActivity was provided`);
110
- const outcome = await mockAsyncActivity(activity, {
111
- input,
112
- pending: bootstrap,
113
- callCount: resolutionState?.callCount ?? 0,
114
- });
115
- if (resolutionState)
116
- resolutionState.callCount++;
117
- return outcomeToHistoryItem(activity, outcome, bootstrap, context, name);
118
- }
119
- async function outcomeToHistoryItem(activity, outcome, pending, context, name) {
120
- switch (outcome.status) {
121
- case 'fulfilled':
122
- return {
123
- id: activity.id,
124
- type: 'async',
125
- status: 'fulfilled',
126
- output: outcome.output,
127
- };
128
- case 'rejected':
129
- return {
130
- id: activity.id,
131
- type: 'async',
132
- status: 'rejected',
133
- output: outcome.reason,
134
- };
135
- case 'timeout': {
136
- const onTimeout = activity.onTimeout?.bind(activity);
137
- if (!onTimeout)
138
- throw new Error(`Async activity "${name}" timed out but defines no onTimeout handler`);
139
- const result = await Internals.runActivity(activity, context, () => onTimeout(pending));
140
- if (result instanceof AsyncActivityResultFulfilled)
141
- return {
142
- id: activity.id,
143
- type: 'async',
144
- status: 'fulfilled',
145
- output: result.payload,
146
- };
147
- if (result instanceof AsyncActivityResultRejected)
148
- return {
149
- id: activity.id,
150
- type: 'async',
151
- status: 'rejected',
152
- output: result.payload,
153
- };
154
- throw new Error(`Async activity "${name}" stayed pending after onTimeout`);
155
- }
156
- default:
157
- throw new Error(`Unknown async activity outcome for "${name}"`);
158
- }
159
- }
160
- //# sourceMappingURL=run-workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-workflow.js","sourceRoot":"","sources":["../../src/testing/run-workflow.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Deep-clones a value for replay isolation while preserving the framework's
3
- * value objects.
4
- *
5
- * The replay determinism check needs a fresh, isolated copy of the recorded
6
- * history so the replay run never shares mutable state with the original run.
7
- * `structuredClone` is unfit for that here: it drops prototypes, so any
8
- * `SerializableClass` stored in history (e.g. the HTTP `Body`) would come back
9
- * as a plain object without its methods, and replaying a workflow that reads
10
- * it (`response.body.text()`) would throw `text is not a function`.
11
- *
12
- * Instead, each `SerializableClass` is round-tripped through its own
13
- * `toSerializable` / `fromSerializable` hooks — the exact contract the runtime
14
- * uses to persist and restore history — so the reconstructed instance keeps
15
- * its behaviour (and misbehaving custom serializers surface here too). `Binary`
16
- * leaves are shared by reference: their concrete, stream-backed
17
- * implementations live in other packages and are treated as immutable during
18
- * replay.
19
- */
20
- export declare function serializableClone<T>(value: T): Promise<T>;
21
- //# sourceMappingURL=serializable-clone.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializable-clone.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/serializable-clone.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE/D"}
@@ -1,77 +0,0 @@
1
- import { Binary } from '../../models/Binary.js';
2
- import { SerializableClass, } from '../../models/SerializableHelper.js';
3
- /**
4
- * Deep-clones a value for replay isolation while preserving the framework's
5
- * value objects.
6
- *
7
- * The replay determinism check needs a fresh, isolated copy of the recorded
8
- * history so the replay run never shares mutable state with the original run.
9
- * `structuredClone` is unfit for that here: it drops prototypes, so any
10
- * `SerializableClass` stored in history (e.g. the HTTP `Body`) would come back
11
- * as a plain object without its methods, and replaying a workflow that reads
12
- * it (`response.body.text()`) would throw `text is not a function`.
13
- *
14
- * Instead, each `SerializableClass` is round-tripped through its own
15
- * `toSerializable` / `fromSerializable` hooks — the exact contract the runtime
16
- * uses to persist and restore history — so the reconstructed instance keeps
17
- * its behaviour (and misbehaving custom serializers surface here too). `Binary`
18
- * leaves are shared by reference: their concrete, stream-backed
19
- * implementations live in other packages and are treated as immutable during
20
- * replay.
21
- */
22
- export async function serializableClone(value) {
23
- return (await clone(value, new WeakMap()));
24
- }
25
- async function clone(value, seen) {
26
- if (value === null || typeof value !== 'object')
27
- return value;
28
- // Leaf value object: shared by reference (immutable during replay, and its
29
- // concrete serialization lives outside core).
30
- if (value instanceof Binary)
31
- return value;
32
- // Rebuild via the same hooks the runtime uses, so the clone is a real
33
- // instance with a working prototype.
34
- if (value instanceof SerializableClass) {
35
- const serializer = inner => clone(inner, seen);
36
- const serialized = await value.toSerializable(serializer);
37
- return value.constructor.fromSerializable(serialized, serializer);
38
- }
39
- if (value instanceof Date)
40
- return new Date(value.getTime());
41
- if (Buffer.isBuffer(value))
42
- return Buffer.from(value);
43
- if (value instanceof ArrayBuffer)
44
- return value.slice(0);
45
- if (ArrayBuffer.isView(value))
46
- return value.slice();
47
- const cached = seen.get(value);
48
- if (cached)
49
- return cached;
50
- if (Array.isArray(value)) {
51
- const result = [];
52
- seen.set(value, result);
53
- for (const item of value)
54
- result.push(await clone(item, seen));
55
- return result;
56
- }
57
- if (value instanceof Map) {
58
- const result = new Map();
59
- seen.set(value, result);
60
- for (const [key, val] of value)
61
- result.set(await clone(key, seen), await clone(val, seen));
62
- return result;
63
- }
64
- if (value instanceof Set) {
65
- const result = new Set();
66
- seen.set(value, result);
67
- for (const val of value)
68
- result.add(await clone(val, seen));
69
- return result;
70
- }
71
- const result = {};
72
- seen.set(value, result);
73
- for (const [key, val] of Object.entries(value))
74
- result[key] = await clone(val, seen);
75
- return result;
76
- }
77
- //# sourceMappingURL=serializable-clone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializable-clone.js","sourceRoot":"","sources":["../../../src/testing/tools/serializable-clone.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { AnyAsyncActivity } from '../models/AsyncActivity.js';
2
- import type { AsyncActivityResultPending } from '../models/AsyncActivityAdvanceResult.js';
3
- export type AsyncActivityOutcome = {
4
- status: 'fulfilled';
5
- output?: unknown;
6
- } | {
7
- status: 'rejected';
8
- reason?: unknown;
9
- } | {
10
- status: 'timeout';
11
- };
12
- export interface MockAsyncActivityContext {
13
- input: unknown;
14
- pending: AsyncActivityResultPending;
15
- callCount: number;
16
- }
17
- export type MockAsyncActivity = (activity: AnyAsyncActivity, context: MockAsyncActivityContext) => AsyncActivityOutcome | Promise<AsyncActivityOutcome>;
18
- export type ClaimConstructor = abstract new (...args: readonly any[]) => any;
19
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAEzF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAEzB,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,0BAA0B,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,KAC9B,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,KAAK,GAAG,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":""}