@agtlantis/core 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/types.d.ts +69 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +119 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/errors/utils.d.ts +17 -0
- package/dist/errors/utils.d.ts.map +1 -0
- package/dist/errors/utils.js +16 -0
- package/dist/errors/utils.js.map +1 -0
- package/dist/execution/constants.d.ts +7 -0
- package/dist/execution/constants.d.ts.map +1 -0
- package/dist/execution/constants.js +7 -0
- package/dist/execution/constants.js.map +1 -0
- package/dist/execution/index.d.ts +8 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +7 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/mapping.d.ts +17 -0
- package/dist/execution/mapping.d.ts.map +1 -0
- package/dist/execution/mapping.js +197 -0
- package/dist/execution/mapping.js.map +1 -0
- package/dist/execution/shared.d.ts +86 -0
- package/dist/execution/shared.d.ts.map +1 -0
- package/dist/execution/shared.js +100 -0
- package/dist/execution/shared.js.map +1 -0
- package/dist/execution/simple-host.d.ts +56 -0
- package/dist/execution/simple-host.d.ts.map +1 -0
- package/dist/execution/simple-host.js +126 -0
- package/dist/execution/simple-host.js.map +1 -0
- package/dist/execution/streaming-host.d.ts +79 -0
- package/dist/execution/streaming-host.d.ts.map +1 -0
- package/dist/execution/streaming-host.js +276 -0
- package/dist/execution/streaming-host.js.map +1 -0
- package/dist/execution/testing/fixtures.d.ts +67 -0
- package/dist/execution/testing/fixtures.d.ts.map +1 -0
- package/dist/execution/testing/fixtures.js +145 -0
- package/dist/execution/testing/fixtures.js.map +1 -0
- package/dist/execution/testing/helpers.d.ts +218 -0
- package/dist/execution/testing/helpers.d.ts.map +1 -0
- package/dist/execution/testing/helpers.js +327 -0
- package/dist/execution/testing/helpers.js.map +1 -0
- package/dist/execution/testing/host-configs.d.ts +56 -0
- package/dist/execution/testing/host-configs.d.ts.map +1 -0
- package/dist/execution/testing/host-configs.js +154 -0
- package/dist/execution/testing/host-configs.js.map +1 -0
- package/dist/execution/testing/vitest-assertions.d.ts +102 -0
- package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
- package/dist/execution/testing/vitest-assertions.js +142 -0
- package/dist/execution/testing/vitest-assertions.js.map +1 -0
- package/dist/execution/types.d.ts +432 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +2 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/execution/utils.d.ts +68 -0
- package/dist/execution/utils.d.ts.map +1 -0
- package/dist/execution/utils.js +93 -0
- package/dist/execution/utils.js.map +1 -0
- package/dist/index.d.ts +10 -1506
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -2979
- package/dist/index.js.map +1 -1
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +2 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +161 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +31 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/types.d.ts +46 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +2 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/patterns/index.d.ts +2 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +2 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/progressive/index.d.ts +2 -0
- package/dist/patterns/progressive/index.d.ts.map +1 -0
- package/dist/patterns/progressive/index.js +2 -0
- package/dist/patterns/progressive/index.js.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.js +260 -0
- package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
- package/dist/pricing/calculator.d.ts +71 -0
- package/dist/pricing/calculator.d.ts.map +1 -0
- package/dist/pricing/calculator.js +127 -0
- package/dist/pricing/calculator.js.map +1 -0
- package/dist/pricing/config.d.ts +61 -0
- package/dist/pricing/config.d.ts.map +1 -0
- package/dist/pricing/config.js +87 -0
- package/dist/pricing/config.js.map +1 -0
- package/dist/pricing/defaults.d.ts +29 -0
- package/dist/pricing/defaults.d.ts.map +1 -0
- package/dist/pricing/defaults.js +139 -0
- package/dist/pricing/defaults.js.map +1 -0
- package/dist/pricing/index.d.ts +40 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +43 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/pricing/types.d.ts +96 -0
- package/dist/pricing/types.d.ts.map +1 -0
- package/dist/pricing/types.js +7 -0
- package/dist/pricing/types.js.map +1 -0
- package/dist/pricing/validator.d.ts +55 -0
- package/dist/pricing/validator.d.ts.map +1 -0
- package/dist/pricing/validator.js +84 -0
- package/dist/pricing/validator.js.map +1 -0
- package/dist/prompt/errors.d.ts +112 -0
- package/dist/prompt/errors.d.ts.map +1 -0
- package/dist/prompt/errors.js +175 -0
- package/dist/prompt/errors.js.map +1 -0
- package/dist/prompt/file-prompt-repository.d.ts +80 -0
- package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
- package/dist/prompt/file-prompt-repository.js +287 -0
- package/dist/prompt/file-prompt-repository.js.map +1 -0
- package/dist/prompt/index.d.ts +34 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +37 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/prompt-template.d.ts +64 -0
- package/dist/prompt/prompt-template.d.ts.map +1 -0
- package/dist/prompt/prompt-template.js +90 -0
- package/dist/prompt/prompt-template.js.map +1 -0
- package/dist/prompt/template.d.ts +23 -0
- package/dist/prompt/template.d.ts.map +1 -0
- package/dist/prompt/template.js +70 -0
- package/dist/prompt/template.js.map +1 -0
- package/dist/prompt/types.d.ts +148 -0
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/prompt/types.js +7 -0
- package/dist/prompt/types.js.map +1 -0
- package/dist/provider/base-provider.d.ts +41 -0
- package/dist/provider/base-provider.d.ts.map +1 -0
- package/dist/provider/base-provider.js +21 -0
- package/dist/provider/base-provider.js.map +1 -0
- package/dist/provider/file-cache.d.ts +14 -0
- package/dist/provider/file-cache.d.ts.map +1 -0
- package/dist/provider/file-cache.js +29 -0
- package/dist/provider/file-cache.js.map +1 -0
- package/dist/provider/file-source.d.ts +32 -0
- package/dist/provider/file-source.d.ts.map +1 -0
- package/dist/provider/file-source.js +180 -0
- package/dist/provider/file-source.js.map +1 -0
- package/dist/provider/google/factory.d.ts +107 -0
- package/dist/provider/google/factory.d.ts.map +1 -0
- package/dist/provider/google/factory.js +143 -0
- package/dist/provider/google/factory.js.map +1 -0
- package/dist/provider/google/file-manager.d.ts +14 -0
- package/dist/provider/google/file-manager.d.ts.map +1 -0
- package/dist/provider/google/file-manager.js +183 -0
- package/dist/provider/google/file-manager.js.map +1 -0
- package/dist/provider/google/index.d.ts +8 -0
- package/dist/provider/google/index.d.ts.map +1 -0
- package/dist/provider/google/index.js +10 -0
- package/dist/provider/google/index.js.map +1 -0
- package/dist/provider/hash.d.ts +3 -0
- package/dist/provider/hash.d.ts.map +1 -0
- package/dist/provider/hash.js +34 -0
- package/dist/provider/hash.js.map +1 -0
- package/dist/provider/index.d.ts +9 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +11 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/noop-file-manager.d.ts +9 -0
- package/dist/provider/noop-file-manager.d.ts.map +1 -0
- package/dist/provider/noop-file-manager.js +28 -0
- package/dist/provider/noop-file-manager.js.map +1 -0
- package/dist/provider/openai/factory.d.ts +67 -0
- package/dist/provider/openai/factory.d.ts.map +1 -0
- package/dist/provider/openai/factory.js +95 -0
- package/dist/provider/openai/factory.js.map +1 -0
- package/dist/provider/openai/index.d.ts +7 -0
- package/dist/provider/openai/index.d.ts.map +1 -0
- package/dist/provider/openai/index.js +7 -0
- package/dist/provider/openai/index.js.map +1 -0
- package/dist/provider/types.d.ts +105 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +19 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/session/index.d.ts +7 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/simple-session.d.ts +98 -0
- package/dist/session/simple-session.d.ts.map +1 -0
- package/dist/session/simple-session.js +299 -0
- package/dist/session/simple-session.js.map +1 -0
- package/dist/session/streaming-session.d.ts +90 -0
- package/dist/session/streaming-session.d.ts.map +1 -0
- package/dist/session/streaming-session.js +151 -0
- package/dist/session/streaming-session.js.map +1 -0
- package/dist/session/test-utils.d.ts +19 -0
- package/dist/session/test-utils.d.ts.map +1 -0
- package/dist/session/test-utils.js +65 -0
- package/dist/session/test-utils.js.map +1 -0
- package/dist/session/types.d.ts +219 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +181 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session/usage-extractors.d.ts +7 -0
- package/dist/session/usage-extractors.d.ts.map +1 -0
- package/dist/session/usage-extractors.js +71 -0
- package/dist/session/usage-extractors.js.map +1 -0
- package/dist/testing/fixtures.d.ts +34 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +65 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/helpers.d.ts +20 -0
- package/dist/testing/helpers.d.ts.map +1 -0
- package/dist/testing/helpers.js +32 -0
- package/dist/testing/helpers.js.map +1 -0
- package/dist/testing/index.d.ts +7 -519
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +21 -2123
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-provider.d.ts +79 -0
- package/dist/testing/mock-provider.d.ts.map +1 -0
- package/dist/testing/mock-provider.js +152 -0
- package/dist/testing/mock-provider.js.map +1 -0
- package/dist/testing/mock.d.ts +29 -0
- package/dist/testing/mock.d.ts.map +1 -0
- package/dist/testing/mock.js +154 -0
- package/dist/testing/mock.js.map +1 -0
- package/dist/testing/test-execution.d.ts +14 -0
- package/dist/testing/test-execution.d.ts.map +1 -0
- package/dist/testing/test-execution.js +108 -0
- package/dist/testing/test-execution.js.map +1 -0
- package/dist/utils/deep-merge.d.ts +6 -0
- package/dist/utils/deep-merge.d.ts.map +1 -0
- package/dist/utils/deep-merge.js +24 -0
- package/dist/utils/deep-merge.js.map +1 -0
- package/dist/validation/errors.d.ts +28 -0
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js +39 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +4 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +49 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +2 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validation-history.d.ts +12 -0
- package/dist/validation/validation-history.d.ts.map +1 -0
- package/dist/validation/validation-history.js +29 -0
- package/dist/validation/validation-history.js.map +1 -0
- package/dist/validation/with-validation.d.ts +38 -0
- package/dist/validation/with-validation.d.ts.map +1 -0
- package/dist/validation/with-validation.js +58 -0
- package/dist/validation/with-validation.js.map +1 -0
- package/package.json +72 -76
- package/dist/base-provider-2TTw5HAa.d.cts +0 -1254
- package/dist/base-provider-2TTw5HAa.d.ts +0 -1254
- package/dist/index.cjs +0 -3085
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1506
- package/dist/testing/index.cjs +0 -2167
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -520
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test fixtures for execution module tests.
|
|
3
|
+
* Provides mock factories and session factories for testing.
|
|
4
|
+
*
|
|
5
|
+
* These fixtures are framework-agnostic (no vitest/jest dependency).
|
|
6
|
+
* Pass your own mock function (vi.fn, jest.fn, etc.) or use the noop default.
|
|
7
|
+
*/
|
|
8
|
+
import type { LanguageModel, LanguageModelUsage } from 'ai';
|
|
9
|
+
import type { CompletionEvent } from '../types.js';
|
|
10
|
+
import type { FileManager } from '../../provider/types.js';
|
|
11
|
+
import type { Logger } from '../../observability/logger.js';
|
|
12
|
+
import { SimpleSession } from '../../session/simple-session.js';
|
|
13
|
+
import { StreamingSession } from '../../session/streaming-session.js';
|
|
14
|
+
export type MockFn = (...args: unknown[]) => unknown;
|
|
15
|
+
export type MockFnFactory = () => MockFn;
|
|
16
|
+
export declare const TEST_PROVIDER_TYPE: "google";
|
|
17
|
+
/**
|
|
18
|
+
* Base test event — the domain event users emit via session.emit().
|
|
19
|
+
*/
|
|
20
|
+
export interface TestBaseEvent {
|
|
21
|
+
type: string;
|
|
22
|
+
message?: string;
|
|
23
|
+
data?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Full test event union including CompletionEvent.
|
|
27
|
+
* ExtractResult<TestEvent> = string, EmittableEventInput<TestEvent> = TestBaseEvent.
|
|
28
|
+
*/
|
|
29
|
+
export type TestEvent = TestBaseEvent | CompletionEvent<string>;
|
|
30
|
+
export interface CreateMockModelOptions {
|
|
31
|
+
mockFn?: MockFnFactory;
|
|
32
|
+
}
|
|
33
|
+
export declare function createMockModel(options?: CreateMockModelOptions): LanguageModel;
|
|
34
|
+
export interface CreateMockFileManagerOptions {
|
|
35
|
+
mockFn?: MockFnFactory;
|
|
36
|
+
}
|
|
37
|
+
export declare function createMockFileManager(options?: CreateMockFileManagerOptions): FileManager;
|
|
38
|
+
export interface CreateMockLoggerOptions {
|
|
39
|
+
mockFn?: MockFnFactory;
|
|
40
|
+
}
|
|
41
|
+
export declare function createMockLogger(options?: CreateMockLoggerOptions): Logger;
|
|
42
|
+
export declare function createMockUsage(overrides?: Partial<LanguageModelUsage>): LanguageModelUsage;
|
|
43
|
+
export interface CreateSessionFactoryOptions {
|
|
44
|
+
mockFn?: MockFnFactory;
|
|
45
|
+
logger?: Logger;
|
|
46
|
+
}
|
|
47
|
+
export declare function createSimpleSessionFactory(options?: CreateSessionFactoryOptions): (signal?: AbortSignal) => SimpleSession;
|
|
48
|
+
export declare function createStreamingSessionFactory<TEvent extends {
|
|
49
|
+
type: string;
|
|
50
|
+
} = TestEvent>(options?: CreateSessionFactoryOptions): () => StreamingSession<TEvent>;
|
|
51
|
+
export interface CreateStreamingSessionFactoryWithSignalOptions extends CreateSessionFactoryOptions {
|
|
52
|
+
onSignalCapture?: (signal: AbortSignal | undefined) => void;
|
|
53
|
+
}
|
|
54
|
+
export declare function createStreamingSessionFactoryWithSignal<TEvent extends {
|
|
55
|
+
type: string;
|
|
56
|
+
} = TestEvent>(options?: CreateStreamingSessionFactoryWithSignalOptions): (signal?: AbortSignal) => StreamingSession<TEvent>;
|
|
57
|
+
export declare function collectEvents<T>(stream: AsyncIterable<T>): Promise<T[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a controllable promise for testing async flows
|
|
60
|
+
*/
|
|
61
|
+
export declare function createControllablePromise<T = void>(): {
|
|
62
|
+
promise: Promise<T>;
|
|
63
|
+
resolve: (value: T) => void;
|
|
64
|
+
reject: (error: Error) => void;
|
|
65
|
+
};
|
|
66
|
+
export { createAbortScenario, createAlreadyAbortedSignal, type AbortScenario, createSimpleGenerator, createErrorGenerator, createCancelableGenerator, createCancelableFunction, createDelayedGenerator, createSlowGenerator, collectStreamAsync, createNeverEndingGenerator, createOrderTrackingLogger, type LoggerEventType, } from './helpers.js';
|
|
67
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../src/execution/testing/fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test fixtures for execution module tests.
|
|
3
|
+
* Provides mock factories and session factories for testing.
|
|
4
|
+
*
|
|
5
|
+
* These fixtures are framework-agnostic (no vitest/jest dependency).
|
|
6
|
+
* Pass your own mock function (vi.fn, jest.fn, etc.) or use the noop default.
|
|
7
|
+
*/
|
|
8
|
+
import { SimpleSession } from '../../session/simple-session.js';
|
|
9
|
+
import { StreamingSession } from '../../session/streaming-session.js';
|
|
10
|
+
export const TEST_PROVIDER_TYPE = 'google';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Default noop mock factory
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const noop = () => { };
|
|
15
|
+
const noopFactory = () => noop;
|
|
16
|
+
function createNoopWithReturn(value) {
|
|
17
|
+
return () => value;
|
|
18
|
+
}
|
|
19
|
+
function createNoopAsync(value) {
|
|
20
|
+
return () => Promise.resolve(value);
|
|
21
|
+
}
|
|
22
|
+
export function createMockModel(options = {}) {
|
|
23
|
+
const { mockFn = noopFactory } = options;
|
|
24
|
+
return {
|
|
25
|
+
specificationVersion: 'v1',
|
|
26
|
+
provider: 'test-provider',
|
|
27
|
+
modelId: 'test-model',
|
|
28
|
+
defaultObjectGenerationMode: 'json',
|
|
29
|
+
doGenerate: mockFn(),
|
|
30
|
+
doStream: mockFn(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function createMockFileManager(options = {}) {
|
|
34
|
+
const { mockFn } = options;
|
|
35
|
+
if (mockFn) {
|
|
36
|
+
return {
|
|
37
|
+
upload: mockFn(),
|
|
38
|
+
delete: mockFn(),
|
|
39
|
+
clear: mockFn(),
|
|
40
|
+
getUploadedFiles: mockFn(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Default noop implementation with proper return values
|
|
44
|
+
return {
|
|
45
|
+
upload: createNoopAsync([]),
|
|
46
|
+
delete: createNoopAsync(undefined),
|
|
47
|
+
clear: createNoopAsync(undefined),
|
|
48
|
+
getUploadedFiles: createNoopWithReturn([]),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function createMockLogger(options = {}) {
|
|
52
|
+
const { mockFn = noopFactory } = options;
|
|
53
|
+
return {
|
|
54
|
+
onLLMCallStart: mockFn(),
|
|
55
|
+
onLLMCallEnd: mockFn(),
|
|
56
|
+
onExecutionStart: mockFn(),
|
|
57
|
+
onExecutionEmit: mockFn(),
|
|
58
|
+
onExecutionDone: mockFn(),
|
|
59
|
+
onExecutionError: mockFn(),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function createMockUsage(overrides = {}) {
|
|
63
|
+
return {
|
|
64
|
+
inputTokens: 100,
|
|
65
|
+
outputTokens: 50,
|
|
66
|
+
totalTokens: 150,
|
|
67
|
+
inputTokenDetails: {
|
|
68
|
+
noCacheTokens: 100,
|
|
69
|
+
cacheReadTokens: 0,
|
|
70
|
+
cacheWriteTokens: 0,
|
|
71
|
+
},
|
|
72
|
+
outputTokenDetails: {
|
|
73
|
+
textTokens: 50,
|
|
74
|
+
reasoningTokens: 0,
|
|
75
|
+
},
|
|
76
|
+
...overrides,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function createSimpleSessionFactory(options = {}) {
|
|
80
|
+
const { mockFn, logger } = options;
|
|
81
|
+
return (signal) => new SimpleSession({
|
|
82
|
+
defaultLanguageModel: createMockModel({ mockFn }),
|
|
83
|
+
providerType: TEST_PROVIDER_TYPE,
|
|
84
|
+
fileManager: createMockFileManager({ mockFn }),
|
|
85
|
+
signal,
|
|
86
|
+
logger,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export function createStreamingSessionFactory(options = {}) {
|
|
90
|
+
const { mockFn, logger } = options;
|
|
91
|
+
return () => new StreamingSession({
|
|
92
|
+
defaultLanguageModel: createMockModel({ mockFn }),
|
|
93
|
+
providerType: TEST_PROVIDER_TYPE,
|
|
94
|
+
fileManager: createMockFileManager({ mockFn }),
|
|
95
|
+
logger,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
export function createStreamingSessionFactoryWithSignal(options = {}) {
|
|
99
|
+
const { mockFn, logger, onSignalCapture } = options;
|
|
100
|
+
return (signal) => {
|
|
101
|
+
onSignalCapture?.(signal);
|
|
102
|
+
return new StreamingSession({
|
|
103
|
+
defaultLanguageModel: createMockModel({ mockFn }),
|
|
104
|
+
providerType: TEST_PROVIDER_TYPE,
|
|
105
|
+
fileManager: createMockFileManager({ mockFn }),
|
|
106
|
+
signal,
|
|
107
|
+
logger,
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// ============================================================================
|
|
112
|
+
// Utilities
|
|
113
|
+
// ============================================================================
|
|
114
|
+
export async function collectEvents(stream) {
|
|
115
|
+
const events = [];
|
|
116
|
+
for await (const event of stream) {
|
|
117
|
+
events.push(event);
|
|
118
|
+
}
|
|
119
|
+
return events;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Creates a controllable promise for testing async flows
|
|
123
|
+
*/
|
|
124
|
+
export function createControllablePromise() {
|
|
125
|
+
let resolve;
|
|
126
|
+
let reject;
|
|
127
|
+
const promise = new Promise((res, rej) => {
|
|
128
|
+
resolve = res;
|
|
129
|
+
reject = rej;
|
|
130
|
+
});
|
|
131
|
+
return { promise, resolve, reject };
|
|
132
|
+
}
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// Re-export Test Helpers
|
|
135
|
+
// ============================================================================
|
|
136
|
+
export {
|
|
137
|
+
// Abort/Signal helpers
|
|
138
|
+
createAbortScenario, createAlreadyAbortedSignal,
|
|
139
|
+
// Generator helpers
|
|
140
|
+
createSimpleGenerator, createErrorGenerator, createCancelableGenerator, createCancelableFunction, createDelayedGenerator,
|
|
141
|
+
// Race condition & concurrency helpers
|
|
142
|
+
createSlowGenerator, collectStreamAsync, createNeverEndingGenerator,
|
|
143
|
+
// Logger helpers
|
|
144
|
+
createOrderTrackingLogger, } from './helpers.js';
|
|
145
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../src/execution/testing/fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test helpers for execution module tests.
|
|
3
|
+
* Provides reusable utilities for abort scenarios, generator creation,
|
|
4
|
+
* and logger tracking.
|
|
5
|
+
*
|
|
6
|
+
* These helpers are framework-agnostic (no vitest/jest dependency).
|
|
7
|
+
*/
|
|
8
|
+
import type { SessionEvent, ExtractResult, EmittableEventInput } from '../types.js';
|
|
9
|
+
import type { Logger } from '../../observability/logger.js';
|
|
10
|
+
import type { SimpleSession } from '../../session/simple-session.js';
|
|
11
|
+
export type LoggerEventType = 'start' | 'emit' | 'done' | 'error';
|
|
12
|
+
/**
|
|
13
|
+
* Abort scenario helper for testing cancellation flows.
|
|
14
|
+
*/
|
|
15
|
+
export interface AbortScenario {
|
|
16
|
+
/** The AbortController instance */
|
|
17
|
+
controller: AbortController;
|
|
18
|
+
/** The AbortSignal to pass to execution */
|
|
19
|
+
signal: AbortSignal;
|
|
20
|
+
/** Call to abort with optional reason */
|
|
21
|
+
abort: (reason?: string) => void;
|
|
22
|
+
/** Check if signal is aborted */
|
|
23
|
+
isAborted: () => boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create an abort scenario for testing cancellation.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const { signal, abort, isAborted } = createAbortScenario();
|
|
31
|
+
* const execution = new SimpleExecutionHost(factory, fn, signal);
|
|
32
|
+
*
|
|
33
|
+
* abort('User canceled');
|
|
34
|
+
* expect(isAborted()).toBe(true);
|
|
35
|
+
*
|
|
36
|
+
* const result = await execution.result();
|
|
37
|
+
* expectCanceledResult(result);
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function createAbortScenario(): AbortScenario;
|
|
41
|
+
/**
|
|
42
|
+
* Create an already-aborted signal for testing pre-aborted scenarios.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const signal = createAlreadyAbortedSignal('Pre-aborted');
|
|
47
|
+
* const execution = new SimpleExecutionHost(factory, fn, signal);
|
|
48
|
+
*
|
|
49
|
+
* const result = await execution.result();
|
|
50
|
+
* expectCanceledResult(result);
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function createAlreadyAbortedSignal(reason?: string): AbortSignal;
|
|
54
|
+
/**
|
|
55
|
+
* Create a simple generator that emits specified events and returns the result.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const generator = createSimpleGenerator('result-value', [
|
|
60
|
+
* { type: 'progress', message: 'step 1' },
|
|
61
|
+
* { type: 'progress', message: 'step 2' },
|
|
62
|
+
* ]);
|
|
63
|
+
* const execution = new StreamingExecutionHost(factory, generator);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function createSimpleGenerator<TEvent extends {
|
|
67
|
+
type: string;
|
|
68
|
+
}>(result: ExtractResult<TEvent>, events?: EmittableEventInput<TEvent>[]): (session: {
|
|
69
|
+
emit: (event: EmittableEventInput<TEvent>) => SessionEvent<TEvent>;
|
|
70
|
+
done: (value: ExtractResult<TEvent>) => Promise<SessionEvent<TEvent>>;
|
|
71
|
+
}) => AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent> | Promise<SessionEvent<TEvent>>, unknown>;
|
|
72
|
+
/**
|
|
73
|
+
* Create a generator that throws an error.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const generator = createErrorGenerator(new Error('Test error'));
|
|
78
|
+
* const execution = new StreamingExecutionHost(factory, generator);
|
|
79
|
+
*
|
|
80
|
+
* const result = await execution.result();
|
|
81
|
+
* expectFailedResult(result, 'Test error');
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function createErrorGenerator<TEvent extends {
|
|
85
|
+
type: string;
|
|
86
|
+
}>(error: Error, eventsBeforeError?: EmittableEventInput<TEvent>[]): (session: {
|
|
87
|
+
emit: (event: EmittableEventInput<TEvent>) => SessionEvent<TEvent>;
|
|
88
|
+
}) => AsyncGenerator<SessionEvent<TEvent>, never, unknown>;
|
|
89
|
+
/**
|
|
90
|
+
* Create a generator that waits for cancellation using closure pattern.
|
|
91
|
+
* Uses the provided AbortScenario to detect when to abort.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const abortScenario = createAbortScenario();
|
|
96
|
+
* const onCancelCalled = vi.fn();
|
|
97
|
+
* const generator = createCancelableGenerator(abortScenario, onCancelCalled);
|
|
98
|
+
*
|
|
99
|
+
* const execution = new StreamingExecutionHost(factory, generator, abortScenario.signal);
|
|
100
|
+
* abortScenario.abort();
|
|
101
|
+
*
|
|
102
|
+
* const result = await execution.result();
|
|
103
|
+
* expectCanceledResult(result);
|
|
104
|
+
* expect(onCancelCalled).toHaveBeenCalled();
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function createCancelableGenerator<TEvent extends {
|
|
108
|
+
type: string;
|
|
109
|
+
}>(abortScenario: AbortScenario, onCancel?: () => void, eventsBeforeWait?: EmittableEventInput<TEvent>[]): (session: {
|
|
110
|
+
emit: (event: EmittableEventInput<TEvent>) => SessionEvent<TEvent>;
|
|
111
|
+
}) => AsyncGenerator<SessionEvent<TEvent>, void, unknown>;
|
|
112
|
+
/**
|
|
113
|
+
* Create a function that waits for cancellation using closure pattern.
|
|
114
|
+
* Uses the provided AbortScenario to detect when to abort.
|
|
115
|
+
* Equivalent of createCancelableGenerator for SimpleExecutionHost.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const abortScenario = createAbortScenario();
|
|
120
|
+
* const onCancelCalled = vi.fn();
|
|
121
|
+
* const fn = createCancelableFunction(abortScenario, onCancelCalled);
|
|
122
|
+
*
|
|
123
|
+
* const execution = new SimpleExecutionHost(factory, fn, abortScenario.signal);
|
|
124
|
+
* abortScenario.abort();
|
|
125
|
+
*
|
|
126
|
+
* const result = await execution.result();
|
|
127
|
+
* expectCanceledResult(result);
|
|
128
|
+
* expect(onCancelCalled).toHaveBeenCalled();
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare function createCancelableFunction(abortScenario: AbortScenario, onCancel?: () => void): (session: SimpleSession) => Promise<unknown>;
|
|
132
|
+
/**
|
|
133
|
+
* Create a generator with delay, useful for timing-related tests.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const generator = createDelayedGenerator(100, 'result');
|
|
138
|
+
* const execution = new StreamingExecutionHost(factory, generator);
|
|
139
|
+
*
|
|
140
|
+
* // Cancel before delay completes
|
|
141
|
+
* setTimeout(() => execution.cancel(), 50);
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare function createDelayedGenerator<TEvent extends {
|
|
145
|
+
type: string;
|
|
146
|
+
}>(delayMs: number, result: ExtractResult<TEvent>, abortScenario?: AbortScenario): (session: {
|
|
147
|
+
emit: (event: EmittableEventInput<TEvent>) => SessionEvent<TEvent>;
|
|
148
|
+
done: (value: ExtractResult<TEvent>) => Promise<SessionEvent<TEvent>>;
|
|
149
|
+
}) => AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent> | Promise<SessionEvent<TEvent>>, unknown>;
|
|
150
|
+
/**
|
|
151
|
+
* Create a generator that yields events with a configurable delay between each.
|
|
152
|
+
* Useful for race condition testing where timing control is needed.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const generator = createSlowGenerator([
|
|
157
|
+
* { type: 'chunk', content: 'A' },
|
|
158
|
+
* { type: 'chunk', content: 'B' },
|
|
159
|
+
* ], 10);
|
|
160
|
+
* const execution = new StreamingExecutionHost(factory, generator);
|
|
161
|
+
*
|
|
162
|
+
* // Cancel mid-stream
|
|
163
|
+
* setTimeout(() => execution.cancel(), 15);
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export declare function createSlowGenerator<TEvent extends {
|
|
167
|
+
type: string;
|
|
168
|
+
}>(events: EmittableEventInput<TEvent>[], delayBetweenEventsMs: number, abortScenario?: AbortScenario): (session: {
|
|
169
|
+
emit: (event: EmittableEventInput<TEvent>) => SessionEvent<TEvent>;
|
|
170
|
+
}) => AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent> | undefined, unknown>;
|
|
171
|
+
/**
|
|
172
|
+
* Collect all events from an async iterable stream.
|
|
173
|
+
* Useful for testing stream() output in race condition scenarios.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const events = await collectStreamAsync(execution.stream());
|
|
178
|
+
* expect(events).toHaveLength(3);
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
export declare function collectStreamAsync<T>(stream: AsyncIterable<T>): Promise<T[]>;
|
|
182
|
+
/**
|
|
183
|
+
* Create a generator that never completes (infinite wait).
|
|
184
|
+
* Useful for testing cleanup and cancellation behavior.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const generator = createNeverEndingGenerator([
|
|
189
|
+
* { type: 'chunk', content: 'A' },
|
|
190
|
+
* ]);
|
|
191
|
+
* const execution = new StreamingExecutionHost(factory, generator);
|
|
192
|
+
*
|
|
193
|
+
* // Must cancel to complete
|
|
194
|
+
* execution.cancel();
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export declare function createNeverEndingGenerator<TEvent extends {
|
|
198
|
+
type: string;
|
|
199
|
+
}>(eventsBeforeWait?: EmittableEventInput<TEvent>[], abortScenario?: AbortScenario): (session: {
|
|
200
|
+
emit: (event: EmittableEventInput<TEvent>) => SessionEvent<TEvent>;
|
|
201
|
+
}) => AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent> | undefined, unknown>;
|
|
202
|
+
/**
|
|
203
|
+
* Create a logger that tracks call order for sequence verification.
|
|
204
|
+
* This version is framework-agnostic (no vitest/jest dependency).
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```typescript
|
|
208
|
+
* const { logger, getCallOrder } = createOrderTrackingLogger();
|
|
209
|
+
* // ... run execution with logger ...
|
|
210
|
+
*
|
|
211
|
+
* expect(getCallOrder()).toEqual(['start', 'emit', 'done']);
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
export declare function createOrderTrackingLogger(): {
|
|
215
|
+
logger: Logger;
|
|
216
|
+
getCallOrder: () => LoggerEventType[];
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/execution/testing/helpers.ts"],"names":[],"mappings":"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"}
|