@outputai/core 0.14.0 → 0.14.1-next.1ec4416.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 (100) hide show
  1. package/dist/credentials/credentials.d.ts +6 -0
  2. package/dist/credentials/credentials.js +87 -0
  3. package/dist/credentials/encrypted_yaml_provider.d.ts +2 -0
  4. package/dist/credentials/encrypted_yaml_provider.js +77 -0
  5. package/dist/credentials/encryption.d.ts +3 -0
  6. package/dist/credentials/encryption.js +6 -0
  7. package/dist/credentials/errors.d.ts +13 -0
  8. package/dist/credentials/errors.js +39 -0
  9. package/dist/credentials/index.d.ts +6 -0
  10. package/dist/credentials/index.js +5 -0
  11. package/dist/credentials/init.d.ts +1 -0
  12. package/dist/credentials/init.js +7 -0
  13. package/dist/credentials/paths.d.ts +7 -0
  14. package/dist/credentials/paths.js +14 -0
  15. package/dist/credentials/provider_registry.d.ts +3 -0
  16. package/dist/credentials/provider_registry.js +6 -0
  17. package/dist/credentials/types.d.ts +12 -0
  18. package/dist/credentials/types.js +1 -0
  19. package/package.json +25 -14
  20. package/src/async_storage.d.ts +4 -0
  21. package/src/consts.js +0 -2
  22. package/src/helpers/object.d.ts +2 -0
  23. package/src/hooks/index.d.ts +0 -8
  24. package/src/hooks/index.js +0 -3
  25. package/src/logger/index.d.ts +4 -0
  26. package/src/worker/index.js +3 -1
  27. package/bin/healthcheck.spec.js +0 -90
  28. package/src/bus.spec.js +0 -196
  29. package/src/errors.spec.js +0 -19
  30. package/src/helpers/activity_options.spec.js +0 -55
  31. package/src/helpers/component.spec.js +0 -54
  32. package/src/helpers/error_serializer.spec.js +0 -479
  33. package/src/helpers/errors.spec.js +0 -189
  34. package/src/helpers/fetch.spec.js +0 -292
  35. package/src/helpers/function.spec.js +0 -24
  36. package/src/helpers/object.spec.js +0 -425
  37. package/src/helpers/promise.spec.js +0 -62
  38. package/src/helpers/redact.spec.js +0 -66
  39. package/src/helpers/string.spec.js +0 -99
  40. package/src/helpers/temporal_context.spec.ts +0 -83
  41. package/src/helpers/trace_info.spec.js +0 -45
  42. package/src/helpers/workflow_context.spec.js +0 -46
  43. package/src/hooks/index.spec.js +0 -265
  44. package/src/hooks/pending_hooks.spec.js +0 -62
  45. package/src/interface/evaluator.spec.js +0 -685
  46. package/src/interface/logger.spec.js +0 -172
  47. package/src/interface/step.spec.js +0 -128
  48. package/src/interface/validations/index.spec.js +0 -197
  49. package/src/interface/validations/schemas.spec.js +0 -229
  50. package/src/interface/webhook.spec.js +0 -170
  51. package/src/interface/workflow.spec.js +0 -710
  52. package/src/interface/workflow_utils.spec.js +0 -271
  53. package/src/interface/zod_integration.spec.js +0 -646
  54. package/src/internal_activities/index.spec.js +0 -186
  55. package/src/logger/development.spec.js +0 -87
  56. package/src/logger/index.spec.js +0 -27
  57. package/src/logger/production.spec.js +0 -71
  58. package/src/sdk/helpers/component_metadata.spec.js +0 -30
  59. package/src/sdk/helpers/objects.spec.js +0 -16
  60. package/src/sdk/helpers/path.spec.js +0 -102
  61. package/src/sdk/runtime/context.spec.js +0 -37
  62. package/src/sdk/runtime/events.spec.js +0 -40
  63. package/src/temporal/client.spec.js +0 -124
  64. package/src/tracing/processors/local/index.spec.js +0 -204
  65. package/src/tracing/processors/s3/configs.spec.js +0 -64
  66. package/src/tracing/processors/s3/index.spec.js +0 -185
  67. package/src/tracing/processors/s3/redis_client.spec.js +0 -179
  68. package/src/tracing/processors/s3/s3_client.spec.js +0 -68
  69. package/src/tracing/tools/build_trace_tree.spec.js +0 -216
  70. package/src/tracing/trace_engine.spec.js +0 -299
  71. package/src/worker/bundle.spec.js +0 -53
  72. package/src/worker/bundler_options.spec.js +0 -62
  73. package/src/worker/catalog_workflow/catalog_publisher.spec.js +0 -317
  74. package/src/worker/catalog_workflow/index.spec.js +0 -222
  75. package/src/worker/configs.spec.js +0 -213
  76. package/src/worker/configs_tuner_schema.spec.js +0 -127
  77. package/src/worker/connection_monitor.spec.js +0 -328
  78. package/src/worker/global_functions.spec.js +0 -55
  79. package/src/worker/index.spec.js +0 -526
  80. package/src/worker/interceptors/activity.spec.js +0 -369
  81. package/src/worker/interceptors/headers.spec.js +0 -73
  82. package/src/worker/interceptors/workflow.spec.js +0 -357
  83. package/src/worker/interruption.spec.js +0 -177
  84. package/src/worker/loader/activities.spec.js +0 -212
  85. package/src/worker/loader/hooks.spec.js +0 -64
  86. package/src/worker/loader/matchers.spec.js +0 -140
  87. package/src/worker/loader/tools.spec.js +0 -595
  88. package/src/worker/loader/workflows.spec.js +0 -287
  89. package/src/worker/log_hooks.spec.js +0 -303
  90. package/src/worker/shutdown.spec.js +0 -197
  91. package/src/worker/sinks.spec.js +0 -220
  92. package/src/worker/telemetry.spec.js +0 -80
  93. package/src/worker/temporal_logger.spec.js +0 -90
  94. package/src/worker/webpack_loaders/tools.spec.js +0 -314
  95. package/src/worker/webpack_loaders/workflow_rewriter/collect_target_imports.spec.js +0 -134
  96. package/src/worker/webpack_loaders/workflow_rewriter/index.spec.js +0 -154
  97. package/src/worker/webpack_loaders/workflow_rewriter/rewrite_activity_calls.spec.js +0 -165
  98. package/src/worker/webpack_loaders/workflow_validator/index.spec.js +0 -202
  99. package/src/worker/webpack_loaders/workflow_validator/npm_workflow_export_resolve.spec.js +0 -374
  100. package/src/worker/worker_runner.spec.js +0 -220
@@ -1,271 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { hasErrorType, executeInParallel } from './workflow_utils.js';
3
-
4
- describe( 'executeInParallel', () => {
5
- it( 'returns empty array for empty jobs', async () => {
6
- const results = await executeInParallel( { jobs: [] } );
7
- expect( results ).toEqual( [] );
8
- } );
9
-
10
- it( 'executes all jobs and returns results', async () => {
11
- const jobs = [
12
- () => Promise.resolve( 'a' ),
13
- () => Promise.resolve( 'b' ),
14
- () => Promise.resolve( 'c' )
15
- ];
16
-
17
- const results = await executeInParallel( { jobs } );
18
-
19
- expect( results ).toHaveLength( 3 );
20
- expect( results ).toContainEqual( { ok: true, result: 'a', index: 0 } );
21
- expect( results ).toContainEqual( { ok: true, result: 'b', index: 1 } );
22
- expect( results ).toContainEqual( { ok: true, result: 'c', index: 2 } );
23
- } );
24
-
25
- it( 'handles job failures without throwing', async () => {
26
- const error = new Error( 'job failed' );
27
- const jobs = [
28
- () => Promise.resolve( 'ok' ),
29
- () => Promise.reject( error )
30
- ];
31
-
32
- const results = await executeInParallel( { jobs } );
33
-
34
- expect( results ).toHaveLength( 2 );
35
- expect( results ).toContainEqual( { ok: true, result: 'ok', index: 0 } );
36
- expect( results ).toContainEqual( { ok: false, error, index: 1 } );
37
- } );
38
-
39
- it( 'handles all jobs failing', async () => {
40
- const errors = [ new Error( 'e1' ), new Error( 'e2' ) ];
41
- const jobs = [
42
- () => Promise.reject( errors[0] ),
43
- () => Promise.reject( errors[1] )
44
- ];
45
-
46
- const results = await executeInParallel( { jobs } );
47
-
48
- expect( results ).toHaveLength( 2 );
49
- expect( results ).toContainEqual( { ok: false, error: errors[0], index: 0 } );
50
- expect( results ).toContainEqual( { ok: false, error: errors[1], index: 1 } );
51
- } );
52
-
53
- it( 'respects concurrency limit', async () => {
54
- const tracker = { active: 0, max: 0 };
55
-
56
- const createJob = ( id, delay ) => async () => {
57
- tracker.active++;
58
- tracker.max = Math.max( tracker.max, tracker.active );
59
- await new Promise( r => setTimeout( r, delay ) );
60
- tracker.active--;
61
- return id;
62
- };
63
-
64
- const jobs = [
65
- createJob( 'a', 50 ),
66
- createJob( 'b', 50 ),
67
- createJob( 'c', 50 ),
68
- createJob( 'd', 50 )
69
- ];
70
-
71
- await executeInParallel( { jobs, concurrency: 2 } );
72
-
73
- expect( tracker.max ).toBe( 2 );
74
- } );
75
-
76
- it( 'runs all jobs concurrently when concurrency is Infinity', async () => {
77
- const tracker = { active: 0, max: 0 };
78
-
79
- const createJob = delay => async () => {
80
- tracker.active++;
81
- tracker.max = Math.max( tracker.max, tracker.active );
82
- await new Promise( r => setTimeout( r, delay ) );
83
- tracker.active--;
84
- return 'done';
85
- };
86
-
87
- const jobs = [ createJob( 30 ), createJob( 30 ), createJob( 30 ), createJob( 30 ) ];
88
-
89
- await executeInParallel( { jobs } );
90
-
91
- expect( tracker.max ).toBe( 4 );
92
- } );
93
-
94
- it( 'calls onJobCompleted for each job', async () => {
95
- const onJobCompleted = vi.fn();
96
- const jobs = [
97
- () => Promise.resolve( 'a' ),
98
- () => Promise.resolve( 'b' )
99
- ];
100
-
101
- await executeInParallel( { jobs, onJobCompleted } );
102
-
103
- expect( onJobCompleted ).toHaveBeenCalledTimes( 2 );
104
- expect( onJobCompleted ).toHaveBeenCalledWith( expect.objectContaining( { ok: true, result: 'a', index: 0 } ) );
105
- expect( onJobCompleted ).toHaveBeenCalledWith( expect.objectContaining( { ok: true, result: 'b', index: 1 } ) );
106
- } );
107
-
108
- it( 'works without onJobCompleted callback', async () => {
109
- const jobs = [ () => Promise.resolve( 'x' ) ];
110
-
111
- const results = await executeInParallel( { jobs } );
112
-
113
- expect( results ).toEqual( [ { ok: true, result: 'x', index: 0 } ] );
114
- } );
115
-
116
- it( 'handles synchronous job functions', async () => {
117
- const jobs = [
118
- () => 'sync-a',
119
- () => 'sync-b'
120
- ];
121
-
122
- const results = await executeInParallel( { jobs } );
123
-
124
- expect( results ).toContainEqual( { ok: true, result: 'sync-a', index: 0 } );
125
- expect( results ).toContainEqual( { ok: true, result: 'sync-b', index: 1 } );
126
- } );
127
-
128
- it( 'handles synchronous throwing job functions', async () => {
129
- const error = new Error( 'sync throw' );
130
- const jobs = [
131
- () => {
132
- throw error;
133
- }
134
- ];
135
-
136
- const results = await executeInParallel( { jobs } );
137
-
138
- expect( results ).toEqual( [ { ok: false, error, index: 0 } ] );
139
- } );
140
-
141
- it( 'handles concurrency greater than job count', async () => {
142
- const jobs = [ () => 'only-one' ];
143
-
144
- const results = await executeInParallel( { jobs, concurrency: 10 } );
145
-
146
- expect( results ).toEqual( [ { ok: true, result: 'only-one', index: 0 } ] );
147
- } );
148
-
149
- it( 'calls onJobCompleted in completion order, not submission order', async () => {
150
- const completionOrder = [];
151
- const onJobCompleted = result => completionOrder.push( result.index );
152
-
153
- const jobs = [
154
- async () => {
155
- await new Promise( r => setTimeout( r, 60 ) );
156
- return 'slow';
157
- },
158
- async () => {
159
- await new Promise( r => setTimeout( r, 10 ) );
160
- return 'fast';
161
- }
162
- ];
163
-
164
- await executeInParallel( { jobs, onJobCompleted } );
165
-
166
- expect( completionOrder ).toEqual( [ 1, 0 ] ); // fast (index 1) completes before slow (index 0)
167
- } );
168
-
169
- it( 'returns results sorted by job index for determinism', async () => {
170
- const jobs = [
171
- async () => {
172
- await new Promise( r => setTimeout( r, 60 ) );
173
- return 'slow';
174
- },
175
- async () => {
176
- await new Promise( r => setTimeout( r, 10 ) );
177
- return 'fast';
178
- }
179
- ];
180
-
181
- const results = await executeInParallel( { jobs } );
182
-
183
- expect( results[0].index ).toBe( 0 );
184
- expect( results[1].index ).toBe( 1 );
185
- expect( results ).toEqual( [
186
- { ok: true, result: 'slow', index: 0 },
187
- { ok: true, result: 'fast', index: 1 }
188
- ] );
189
- } );
190
- } );
191
-
192
- describe( 'hasErrorType', () => {
193
- class FooError extends Error {}
194
-
195
- it( 'matches a direct error instance', () => {
196
- expect( hasErrorType( new FooError( 'foo' ), FooError ) ).toBe( true );
197
- } );
198
-
199
- it( 'matches an error instance in the cause chain', () => {
200
- const error = new Error( 'outer', {
201
- cause: new Error( 'middle', {
202
- cause: new FooError( 'foo' )
203
- } )
204
- } );
205
-
206
- expect( hasErrorType( error, FooError ) ).toBe( true );
207
- } );
208
-
209
- it( 'matches Temporal ApplicationFailure type in the cause chain', () => {
210
- const applicationFailure = Object.assign( new Error( 'foo' ), {
211
- name: 'ApplicationFailure',
212
- type: 'FooError'
213
- } );
214
- const activityFailure = Object.assign( new Error( 'Activity execution failed', {
215
- cause: applicationFailure
216
- } ), {
217
- name: 'ActivityFailure'
218
- } );
219
-
220
- expect( hasErrorType( activityFailure, FooError ) ).toBe( true );
221
- } );
222
-
223
- it( 'matches a serialized error name', () => {
224
- const error = Object.assign( new Error( 'foo' ), { name: 'FooError' } );
225
-
226
- expect( hasErrorType( error, FooError ) ).toBe( true );
227
- } );
228
-
229
- it( 'matches an error serialized as its type name', () => {
230
- expect( hasErrorType( 'FooError', FooError ) ).toBe( true );
231
- } );
232
-
233
- it( 'matches an error type in a plain object cause chain', () => {
234
- const error = {
235
- name: 'ActivityFailure',
236
- cause: {
237
- name: 'ApplicationFailure',
238
- type: 'FooError'
239
- }
240
- };
241
-
242
- expect( hasErrorType( error, FooError ) ).toBe( true );
243
- } );
244
-
245
- it.each( [ null, undefined, '', 42, false ] )( 'returns false for unsupported error value %j', error => {
246
- expect( hasErrorType( error, FooError ) ).toBe( false );
247
- } );
248
-
249
- it( 'returns false when ErrorType is not a class', () => {
250
- expect( hasErrorType( new FooError( 'foo' ), null ) ).toBe( false );
251
- } );
252
-
253
- it( 'returns false when the requested error type is absent', () => {
254
- const error = new Error( 'outer', { cause: new TypeError( 'inner' ) } );
255
-
256
- expect( hasErrorType( error, FooError ) ).toBe( false );
257
- } );
258
-
259
- it( 'keeps plain Error matching backwards compatible', () => {
260
- expect( hasErrorType( new Error( 'foo' ), Error ) ).toBe( true );
261
- } );
262
-
263
- it( 'stops traversing cause chains after the depth limit', () => {
264
- const createCauseChain = depth => depth === 20 ?
265
- new FooError( 'foo' ) :
266
- new Error( `depth-${depth}`, { cause: createCauseChain( depth + 1 ) } );
267
- const root = new Error( 'root', { cause: createCauseChain( 0 ) } );
268
-
269
- expect( hasErrorType( root, FooError ) ).toBe( false );
270
- } );
271
- } );