@agtlantis/core 0.4.1 → 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 -1502
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -3081
- 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 -515
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +21 -2096
- 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 -78
- package/dist/base-provider-C3mFLNiN.d.cts +0 -1236
- package/dist/base-provider-C3mFLNiN.d.ts +0 -1236
- package/dist/index.cjs +0 -3188
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1502
- package/dist/testing/index.cjs +0 -2144
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -516
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MockProvider - Test provider for @agtlantis/core.
|
|
3
|
+
*
|
|
4
|
+
* Extends BaseProvider to provide mock LLM responses with call tracking.
|
|
5
|
+
* Use `mock.provider()` factory for convenient creation.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { mock } from '@agtlantis/core/testing';
|
|
10
|
+
*
|
|
11
|
+
* const provider = mock.provider(mock.text('Hello!'));
|
|
12
|
+
* const execution = provider.simpleExecution(async (session) => {
|
|
13
|
+
* const { text } = await session.generateText({ prompt: 'Say hi' });
|
|
14
|
+
* return text;
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* expect(await execution.toResult()).toBe('Hello!');
|
|
18
|
+
* expect(provider.getCalls()).toHaveLength(1);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { MockLanguageModelV3 } from 'ai/test';
|
|
22
|
+
import { noopLogger } from '../observability/logger.js';
|
|
23
|
+
import { BaseProvider } from '../provider/base-provider.js';
|
|
24
|
+
import { SimpleSession } from '../session/simple-session.js';
|
|
25
|
+
import { StreamingSession } from '../session/streaming-session.js';
|
|
26
|
+
import { NoOpFileManager } from '../provider/noop-file-manager.js';
|
|
27
|
+
export class MockProvider extends BaseProvider {
|
|
28
|
+
calls = [];
|
|
29
|
+
modelSource;
|
|
30
|
+
fileManagerInstance;
|
|
31
|
+
loggerInstance;
|
|
32
|
+
defaultModelId;
|
|
33
|
+
pricingConfig;
|
|
34
|
+
providerTypeId;
|
|
35
|
+
constructor(config) {
|
|
36
|
+
super();
|
|
37
|
+
if (!config.model && !config.modelFactory) {
|
|
38
|
+
throw new Error('MockProvider requires either model or modelFactory');
|
|
39
|
+
}
|
|
40
|
+
this.modelSource = config.modelFactory ?? config.model;
|
|
41
|
+
this.fileManagerInstance = config.fileManager ?? new NoOpFileManager();
|
|
42
|
+
this.loggerInstance = config.logger ?? noopLogger;
|
|
43
|
+
this.defaultModelId = null;
|
|
44
|
+
this.providerTypeId = config.providerType ?? 'mock';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates instance for fluent API without calling constructor.
|
|
48
|
+
* Shares calls array between fluent instances for tracking.
|
|
49
|
+
*/
|
|
50
|
+
static createWithConfig(modelSource, fileManager, logger, defaultModelId, pricingConfig, providerType, existingCalls) {
|
|
51
|
+
const provider = Object.create(MockProvider.prototype);
|
|
52
|
+
Object.assign(provider, {
|
|
53
|
+
modelSource,
|
|
54
|
+
fileManagerInstance: fileManager,
|
|
55
|
+
loggerInstance: logger,
|
|
56
|
+
defaultModelId,
|
|
57
|
+
pricingConfig,
|
|
58
|
+
providerTypeId: providerType,
|
|
59
|
+
calls: existingCalls,
|
|
60
|
+
});
|
|
61
|
+
return provider;
|
|
62
|
+
}
|
|
63
|
+
getCalls() {
|
|
64
|
+
return [...this.calls];
|
|
65
|
+
}
|
|
66
|
+
clearCalls() {
|
|
67
|
+
this.calls.length = 0;
|
|
68
|
+
}
|
|
69
|
+
withDefaultModel(modelId) {
|
|
70
|
+
return MockProvider.createWithConfig(this.modelSource, this.fileManagerInstance, this.loggerInstance, modelId, this.pricingConfig, this.providerTypeId, this.calls);
|
|
71
|
+
}
|
|
72
|
+
withLogger(logger) {
|
|
73
|
+
return MockProvider.createWithConfig(this.modelSource, this.fileManagerInstance, logger, this.defaultModelId, this.pricingConfig, this.providerTypeId, this.calls);
|
|
74
|
+
}
|
|
75
|
+
withPricing(pricing) {
|
|
76
|
+
return MockProvider.createWithConfig(this.modelSource, this.fileManagerInstance, this.loggerInstance, this.defaultModelId, pricing, this.providerTypeId, this.calls);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Mock implementation - returns same provider since mocks don't use provider options.
|
|
80
|
+
*/
|
|
81
|
+
withDefaultOptions(_options) {
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Mock implementation - returns same provider since mocks don't use generation options.
|
|
86
|
+
*/
|
|
87
|
+
withDefaultGenerationOptions(_options) {
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
createSimpleSession(signal) {
|
|
91
|
+
return new SimpleSession({ ...this.buildSessionConfig(), signal });
|
|
92
|
+
}
|
|
93
|
+
createStreamingSession(signal) {
|
|
94
|
+
return new StreamingSession({ ...this.buildSessionConfig(), signal });
|
|
95
|
+
}
|
|
96
|
+
buildSessionConfig() {
|
|
97
|
+
const effectiveModelId = this.defaultModelId ?? 'default';
|
|
98
|
+
return {
|
|
99
|
+
defaultLanguageModel: this.createTrackingModel(effectiveModelId),
|
|
100
|
+
modelFactory: (modelId) => this.createTrackingModel(modelId),
|
|
101
|
+
providerType: this.providerTypeId,
|
|
102
|
+
providerPricing: this.pricingConfig,
|
|
103
|
+
fileManager: this.fileManagerInstance,
|
|
104
|
+
logger: this.loggerInstance,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
getBaseModel(modelId) {
|
|
108
|
+
if (typeof this.modelSource === 'function') {
|
|
109
|
+
return this.modelSource(modelId);
|
|
110
|
+
}
|
|
111
|
+
return this.modelSource;
|
|
112
|
+
}
|
|
113
|
+
createTrackingModel(modelId) {
|
|
114
|
+
const baseModel = this.getBaseModel(modelId);
|
|
115
|
+
const calls = this.calls;
|
|
116
|
+
return {
|
|
117
|
+
...baseModel,
|
|
118
|
+
specificationVersion: baseModel.specificationVersion,
|
|
119
|
+
provider: baseModel.provider,
|
|
120
|
+
modelId: baseModel.modelId,
|
|
121
|
+
supportedUrls: baseModel.supportedUrls,
|
|
122
|
+
doGenerate: async (params) => {
|
|
123
|
+
calls.push({
|
|
124
|
+
modelId,
|
|
125
|
+
type: 'generate',
|
|
126
|
+
timestamp: Date.now(),
|
|
127
|
+
params,
|
|
128
|
+
});
|
|
129
|
+
return baseModel.doGenerate(params);
|
|
130
|
+
},
|
|
131
|
+
doStream: async (params) => {
|
|
132
|
+
calls.push({
|
|
133
|
+
modelId,
|
|
134
|
+
type: 'stream',
|
|
135
|
+
timestamp: Date.now(),
|
|
136
|
+
params,
|
|
137
|
+
});
|
|
138
|
+
return baseModel.doStream(params);
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export function createMockProvider(configOrModel) {
|
|
144
|
+
if (typeof configOrModel === 'function') {
|
|
145
|
+
return new MockProvider({ modelFactory: configOrModel });
|
|
146
|
+
}
|
|
147
|
+
if (configOrModel instanceof MockLanguageModelV3) {
|
|
148
|
+
return new MockProvider({ model: configOrModel });
|
|
149
|
+
}
|
|
150
|
+
return new MockProvider(configOrModel);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=mock-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-provider.js","sourceRoot":"","sources":["../../src/testing/mock-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory functions for AI SDK testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenient helpers to create MockLanguageModelV3 instances
|
|
5
|
+
* with predefined responses for unit testing.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* import { generateText } from 'ai';
|
|
9
|
+
* import { mock } from '@agtlantis/core/testing';
|
|
10
|
+
*
|
|
11
|
+
* const result = await generateText({
|
|
12
|
+
* model: mock.text('Hello, world!'),
|
|
13
|
+
* prompt: 'Say hello',
|
|
14
|
+
* });
|
|
15
|
+
*/
|
|
16
|
+
import { MockLanguageModelV3 } from 'ai/test';
|
|
17
|
+
import { MockProvider, type MockProviderConfig, type ModelFactory } from './mock-provider.js';
|
|
18
|
+
type DoGenerateResult = Awaited<ReturnType<MockLanguageModelV3['doGenerate']>>;
|
|
19
|
+
export type ResponseOptions = Partial<Omit<DoGenerateResult, 'content'>>;
|
|
20
|
+
interface MockHelpers {
|
|
21
|
+
text(text: string, options?: ResponseOptions): MockLanguageModelV3;
|
|
22
|
+
json<T>(data: T, options?: ResponseOptions): MockLanguageModelV3;
|
|
23
|
+
stream(chunks: string[], options?: ResponseOptions): MockLanguageModelV3;
|
|
24
|
+
error(error: Error): MockLanguageModelV3;
|
|
25
|
+
provider(configOrModel: MockProviderConfig | MockLanguageModelV3 | ModelFactory): MockProvider;
|
|
26
|
+
}
|
|
27
|
+
export declare const mock: MockHelpers;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/testing/mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,mBAAmB,EAA0B,MAAM,SAAS,CAAC;AACtE,OAAO,EACH,YAAY,EAEZ,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACpB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;AAYzE,UAAU,WAAW;IACjB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC;IACnE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC;IACzE,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,YAAY,GAAG,YAAY,CAAC;CAClG;AAED,eAAO,MAAM,IAAI,EAAE,WAmIlB,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory functions for AI SDK testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenient helpers to create MockLanguageModelV3 instances
|
|
5
|
+
* with predefined responses for unit testing.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* import { generateText } from 'ai';
|
|
9
|
+
* import { mock } from '@agtlantis/core/testing';
|
|
10
|
+
*
|
|
11
|
+
* const result = await generateText({
|
|
12
|
+
* model: mock.text('Hello, world!'),
|
|
13
|
+
* prompt: 'Say hello',
|
|
14
|
+
* });
|
|
15
|
+
*/
|
|
16
|
+
import { MockLanguageModelV3, simulateReadableStream } from 'ai/test';
|
|
17
|
+
import { createMockProvider, } from './mock-provider.js';
|
|
18
|
+
const DEFAULT_USAGE = {
|
|
19
|
+
inputTokens: { total: 0, noCache: 0, cacheRead: undefined, cacheWrite: undefined },
|
|
20
|
+
outputTokens: { total: 0, text: 0, reasoning: undefined },
|
|
21
|
+
};
|
|
22
|
+
const DEFAULT_FINISH = {
|
|
23
|
+
unified: 'stop',
|
|
24
|
+
raw: undefined,
|
|
25
|
+
};
|
|
26
|
+
export const mock = {
|
|
27
|
+
/**
|
|
28
|
+
* Creates a MockLanguageModelV3 that returns text content.
|
|
29
|
+
*
|
|
30
|
+
* @param text - The text to return from generateText
|
|
31
|
+
* @param options - Optional overrides for usage, finishReason, etc.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const model = mock.text('Hello, world!');
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // With custom usage for cost calculation tests
|
|
38
|
+
* const model = mock.text('Hello', {
|
|
39
|
+
* usage: {
|
|
40
|
+
* inputTokens: { total: 100 },
|
|
41
|
+
* outputTokens: { total: 50 },
|
|
42
|
+
* },
|
|
43
|
+
* });
|
|
44
|
+
*/
|
|
45
|
+
text(text, options) {
|
|
46
|
+
return new MockLanguageModelV3({
|
|
47
|
+
doGenerate: async () => ({
|
|
48
|
+
content: [{ type: 'text', text }],
|
|
49
|
+
finishReason: options?.finishReason ?? DEFAULT_FINISH,
|
|
50
|
+
usage: options?.usage ?? DEFAULT_USAGE,
|
|
51
|
+
warnings: options?.warnings ?? [],
|
|
52
|
+
providerMetadata: options?.providerMetadata,
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* Creates a MockLanguageModelV3 that returns JSON content.
|
|
58
|
+
*
|
|
59
|
+
* Automatically stringifies the data. Use with generateObject or
|
|
60
|
+
* generateText + Output.object.
|
|
61
|
+
*
|
|
62
|
+
* @param data - The object to return as JSON
|
|
63
|
+
* @param options - Optional overrides for usage, finishReason, etc.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* const model = mock.json({ name: 'Alice', age: 30 });
|
|
67
|
+
*/
|
|
68
|
+
json(data, options) {
|
|
69
|
+
return mock.text(JSON.stringify(data), options);
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* Creates a MockLanguageModelV3 that streams text chunks.
|
|
73
|
+
*
|
|
74
|
+
* @param chunks - Array of text strings to stream
|
|
75
|
+
* @param options - Optional overrides for finishReason, usage, etc.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* const model = mock.stream(['Hello', ', ', 'world!']);
|
|
79
|
+
*/
|
|
80
|
+
stream(chunks, options) {
|
|
81
|
+
return new MockLanguageModelV3({
|
|
82
|
+
doStream: async () => ({
|
|
83
|
+
stream: simulateReadableStream({
|
|
84
|
+
chunks: [
|
|
85
|
+
{ type: 'text-start', id: 'text-1' },
|
|
86
|
+
...chunks.map((chunk) => ({
|
|
87
|
+
type: 'text-delta',
|
|
88
|
+
id: 'text-1',
|
|
89
|
+
delta: chunk,
|
|
90
|
+
})),
|
|
91
|
+
{ type: 'text-end', id: 'text-1' },
|
|
92
|
+
{
|
|
93
|
+
type: 'finish',
|
|
94
|
+
finishReason: options?.finishReason ?? DEFAULT_FINISH,
|
|
95
|
+
usage: options?.usage ?? DEFAULT_USAGE,
|
|
96
|
+
logprobs: undefined,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
}),
|
|
100
|
+
}),
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* Creates a MockLanguageModelV3 that throws an error.
|
|
105
|
+
*
|
|
106
|
+
* @param error - The error to throw
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* const model = mock.error(new Error('Rate limit exceeded'));
|
|
110
|
+
*
|
|
111
|
+
* await expect(generateText({ model, prompt: 'Hi' }))
|
|
112
|
+
* .rejects.toThrow('Rate limit exceeded');
|
|
113
|
+
*/
|
|
114
|
+
error(error) {
|
|
115
|
+
return new MockLanguageModelV3({
|
|
116
|
+
doGenerate: async () => {
|
|
117
|
+
throw error;
|
|
118
|
+
},
|
|
119
|
+
doStream: async () => {
|
|
120
|
+
throw error;
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
/**
|
|
125
|
+
* Creates a MockProvider with call tracking.
|
|
126
|
+
*
|
|
127
|
+
* Supports three input styles:
|
|
128
|
+
* - Single model: `mock.provider(mock.text('Hello'))`
|
|
129
|
+
* - Model factory: `mock.provider((modelId) => mock.text(modelId))`
|
|
130
|
+
* - Full config: `mock.provider({ model, fileManager, logger })`
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* // Basic usage
|
|
135
|
+
* const provider = mock.provider(mock.text('Hello!'));
|
|
136
|
+
* const execution = provider.simpleExecution(async (session) => {
|
|
137
|
+
* const { text } = await session.generateText({ prompt: 'Say hi' });
|
|
138
|
+
* return text;
|
|
139
|
+
* });
|
|
140
|
+
* expect(await execution.toResult()).toBe('Hello!');
|
|
141
|
+
* expect(provider.getCalls()).toHaveLength(1);
|
|
142
|
+
*
|
|
143
|
+
* // With model factory for different responses per model
|
|
144
|
+
* const provider = mock.provider((modelId) => {
|
|
145
|
+
* if (modelId === 'gpt-4') return mock.text('GPT-4 response');
|
|
146
|
+
* return mock.text('Default response');
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
provider(configOrModel) {
|
|
151
|
+
return createMockProvider(configOrModel);
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/testing/mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAEH,kBAAkB,GAGrB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,aAAa,GAA8B;IAC7C,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;IAClF,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE;CAC5D,CAAC;AAEF,MAAM,cAAc,GAAqC;IACrD,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,SAAS;CACjB,CAAC;AAUF,MAAM,CAAC,MAAM,IAAI,GAAgB;IAC7B;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAY,EAAE,OAAyB,EAAuB;QAC/D,OAAO,IAAI,mBAAmB,CAAC;YAC3B,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBACjC,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,cAAc;gBACrD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,aAAa;gBACtC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE;gBACjC,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;aAC9C,CAAC;SACL,CAAC,CAAC;IAAA,CACN;IAED;;;;;;;;;;;OAWG;IACH,IAAI,CAAI,IAAO,EAAE,OAAyB,EAAuB;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAAA,CACnD;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAgB,EAAE,OAAyB,EAAuB;QACrE,OAAO,IAAI,mBAAmB,CAAC;YAC3B,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACnB,MAAM,EAAE,sBAAsB,CAAC;oBAC3B,MAAM,EAAE;wBACJ,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE;wBACpC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BACtB,IAAI,EAAE,YAAqB;4BAC3B,EAAE,EAAE,QAAQ;4BACZ,KAAK,EAAE,KAAK;yBACf,CAAC,CAAC;wBACH,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE;wBAClC;4BACI,IAAI,EAAE,QAAQ;4BACd,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,cAAc;4BACrD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,aAAa;4BACtC,QAAQ,EAAE,SAAS;yBACtB;qBACJ;iBACJ,CAAC;aACL,CAAC;SACL,CAAC,CAAC;IAAA,CACN;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAY,EAAuB;QACrC,OAAO,IAAI,mBAAmB,CAAC;YAC3B,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,KAAK,CAAC;YAAA,CACf;YACD,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,KAAK,CAAC;YAAA,CACf;SACJ,CAAC,CAAC;IAAA,CACN;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,aAAsE,EAAgB;QAC3F,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAAA,CAC5C;CACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StreamingExecution, ExtractResult, EmittableEventInput } from '../execution/types.js';
|
|
2
|
+
export declare function createTestExecution<TEvent extends {
|
|
3
|
+
type: string;
|
|
4
|
+
}>(result: ExtractResult<TEvent>, events?: EmittableEventInput<TEvent>[]): StreamingExecution<TEvent>;
|
|
5
|
+
export declare function createTestErrorExecution<TEvent extends {
|
|
6
|
+
type: string;
|
|
7
|
+
}>(error: Error, options?: {
|
|
8
|
+
events?: EmittableEventInput<TEvent>[];
|
|
9
|
+
data?: ExtractResult<TEvent>;
|
|
10
|
+
}): StreamingExecution<TEvent>;
|
|
11
|
+
export declare function createTestCanceledExecution<TEvent extends {
|
|
12
|
+
type: string;
|
|
13
|
+
}>(events?: EmittableEventInput<TEvent>[]): StreamingExecution<TEvent>;
|
|
14
|
+
//# sourceMappingURL=test-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-execution.d.ts","sourceRoot":"","sources":["../../src/testing/test-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,kBAAkB,EAGlB,aAAa,EACb,mBAAmB,EAEtB,MAAM,uBAAuB,CAAC;AAQ/B,wBAAgB,mBAAmB,CAAC,MAAM,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/D,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,MAAM,GAAE,mBAAmB,CAAC,MAAM,CAAC,EAAO,GAC3C,kBAAkB,CAAC,MAAM,CAAC,CA4C5B;AAED,wBAAgB,wBAAwB,CAAC,MAAM,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAO,GACvF,kBAAkB,CAAC,MAAM,CAAC,CAkD5B;AAED,wBAAgB,2BAA2B,CAAC,MAAM,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACvE,MAAM,GAAE,mBAAmB,CAAC,MAAM,CAAC,EAAO,GAC3C,kBAAkB,CAAC,MAAM,CAAC,CAkC5B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { SessionSummary } from '../session/types.js';
|
|
2
|
+
function createTestMetrics() {
|
|
3
|
+
return { timestamp: Date.now(), elapsedMs: 0, deltaMs: 0 };
|
|
4
|
+
}
|
|
5
|
+
export function createTestExecution(result, events = []) {
|
|
6
|
+
const summary = SessionSummary.forTest({});
|
|
7
|
+
const completionEvent = {
|
|
8
|
+
type: 'complete',
|
|
9
|
+
data: result,
|
|
10
|
+
summary,
|
|
11
|
+
metrics: createTestMetrics(),
|
|
12
|
+
};
|
|
13
|
+
const allEvents = [
|
|
14
|
+
...events.map((e) => ({ ...e, metrics: createTestMetrics() })),
|
|
15
|
+
completionEvent,
|
|
16
|
+
];
|
|
17
|
+
return {
|
|
18
|
+
stream() {
|
|
19
|
+
return {
|
|
20
|
+
[Symbol.asyncIterator]() {
|
|
21
|
+
let index = 0;
|
|
22
|
+
return {
|
|
23
|
+
async next() {
|
|
24
|
+
if (index < allEvents.length) {
|
|
25
|
+
return { value: allEvents[index++], done: false };
|
|
26
|
+
}
|
|
27
|
+
return { value: undefined, done: true };
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
async result() {
|
|
34
|
+
return { status: 'succeeded', value: result, events: allEvents, summary };
|
|
35
|
+
},
|
|
36
|
+
cancel() { },
|
|
37
|
+
async cleanup() { },
|
|
38
|
+
async [Symbol.asyncDispose]() { },
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function createTestErrorExecution(error, options = {}) {
|
|
42
|
+
const summary = SessionSummary.forTest({});
|
|
43
|
+
const errorEvent = {
|
|
44
|
+
type: 'error',
|
|
45
|
+
error,
|
|
46
|
+
summary,
|
|
47
|
+
metrics: createTestMetrics(),
|
|
48
|
+
};
|
|
49
|
+
if (options.data !== undefined) {
|
|
50
|
+
errorEvent.data = options.data;
|
|
51
|
+
}
|
|
52
|
+
const typedErrorEvent = errorEvent;
|
|
53
|
+
const allEvents = [
|
|
54
|
+
...(options.events ?? []).map((e) => ({ ...e, metrics: createTestMetrics() })),
|
|
55
|
+
typedErrorEvent,
|
|
56
|
+
];
|
|
57
|
+
return {
|
|
58
|
+
stream() {
|
|
59
|
+
return {
|
|
60
|
+
[Symbol.asyncIterator]() {
|
|
61
|
+
let index = 0;
|
|
62
|
+
return {
|
|
63
|
+
async next() {
|
|
64
|
+
if (index < allEvents.length) {
|
|
65
|
+
return { value: allEvents[index++], done: false };
|
|
66
|
+
}
|
|
67
|
+
return { value: undefined, done: true };
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
async result() {
|
|
74
|
+
return { status: 'failed', error, events: allEvents, summary };
|
|
75
|
+
},
|
|
76
|
+
cancel() { },
|
|
77
|
+
async cleanup() { },
|
|
78
|
+
async [Symbol.asyncDispose]() { },
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function createTestCanceledExecution(events = []) {
|
|
82
|
+
const summary = SessionSummary.forTest({});
|
|
83
|
+
const allEvents = events.map((e) => ({ ...e, metrics: createTestMetrics() }));
|
|
84
|
+
return {
|
|
85
|
+
stream() {
|
|
86
|
+
return {
|
|
87
|
+
[Symbol.asyncIterator]() {
|
|
88
|
+
let index = 0;
|
|
89
|
+
return {
|
|
90
|
+
async next() {
|
|
91
|
+
if (index < allEvents.length) {
|
|
92
|
+
return { value: allEvents[index++], done: false };
|
|
93
|
+
}
|
|
94
|
+
return { value: undefined, done: true };
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
async result() {
|
|
101
|
+
return { status: 'canceled', events: allEvents, summary };
|
|
102
|
+
},
|
|
103
|
+
cancel() { },
|
|
104
|
+
async cleanup() { },
|
|
105
|
+
async [Symbol.asyncDispose]() { },
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=test-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-execution.js","sourceRoot":"","sources":["../../src/testing/test-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⚠️ WARNING: Designed for shallow-nested plain objects (e.g., ProviderOptions).
|
|
3
|
+
* Not a full lodash/merge replacement — does not handle circular refs, class instances, or Symbols.
|
|
4
|
+
*/
|
|
5
|
+
export declare function deepMerge(...sources: (Record<string, unknown> | undefined | null)[]): Record<string, unknown>;
|
|
6
|
+
//# sourceMappingURL=deep-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-merge.d.ts","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,SAAS,CACvB,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GACzD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function isPlainObject(value) {
|
|
2
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* ⚠️ WARNING: Designed for shallow-nested plain objects (e.g., ProviderOptions).
|
|
6
|
+
* Not a full lodash/merge replacement — does not handle circular refs, class instances, or Symbols.
|
|
7
|
+
*/
|
|
8
|
+
export function deepMerge(...sources) {
|
|
9
|
+
const result = {};
|
|
10
|
+
for (const source of sources) {
|
|
11
|
+
if (!source)
|
|
12
|
+
continue;
|
|
13
|
+
for (const key of Object.keys(source)) {
|
|
14
|
+
const existing = result[key];
|
|
15
|
+
const incoming = source[key];
|
|
16
|
+
result[key] =
|
|
17
|
+
isPlainObject(existing) && isPlainObject(incoming)
|
|
18
|
+
? deepMerge(existing, incoming)
|
|
19
|
+
: incoming;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=deep-merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,CAAC,KAAc,EAAoC;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAAA,CAC7E;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,GAAG,OAAuD,EACjC;IACzB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE7B,MAAM,CAAC,GAAG,CAAC;gBACT,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;oBAChD,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;oBAC/B,CAAC,CAAC,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAAA,CACf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AgtlantisError, type AgtlantisErrorCode } from '../errors/index.js';
|
|
2
|
+
import type { ReadonlyValidationHistory } from './types.js';
|
|
3
|
+
export declare enum ValidationErrorCode {
|
|
4
|
+
VALIDATION_EXHAUSTED = "VALIDATION_EXHAUSTED"
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when validation fails after all attempts are exhausted.
|
|
8
|
+
* Contains the full validation history for debugging and partial result recovery.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* try {
|
|
13
|
+
* const result = await withValidation(execute, options);
|
|
14
|
+
* } catch (e) {
|
|
15
|
+
* if (e instanceof ValidationExhaustedError) {
|
|
16
|
+
* console.log(`Failed after ${e.history.all.length} attempts`);
|
|
17
|
+
* console.log('Last result:', e.history.last?.result);
|
|
18
|
+
* console.log('All failures:', e.history.failureReasons);
|
|
19
|
+
* console.log('Error code:', e.code); // 'VALIDATION_EXHAUSTED'
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class ValidationExhaustedError<TResult> extends AgtlantisError<ValidationErrorCode & AgtlantisErrorCode> {
|
|
25
|
+
readonly history: ReadonlyValidationHistory<TResult>;
|
|
26
|
+
constructor(message: string, history: ReadonlyValidationHistory<TResult>);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,oBAAY,mBAAmB;IAC7B,oBAAoB,yBAAyB;CAC9C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,wBAAwB,CAAC,OAAO,CAAE,SAAQ,cAAc,CACnE,mBAAmB,GAAG,kBAAkB,CACzC;aAGmB,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC;IAF7D,YACE,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC,EAU5D;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AgtlantisError } from '../errors/index.js';
|
|
2
|
+
export { ValidationErrorCode };
|
|
3
|
+
var ValidationErrorCode;
|
|
4
|
+
(function (ValidationErrorCode) {
|
|
5
|
+
ValidationErrorCode["VALIDATION_EXHAUSTED"] = "VALIDATION_EXHAUSTED";
|
|
6
|
+
})(ValidationErrorCode || (ValidationErrorCode = {}));
|
|
7
|
+
/**
|
|
8
|
+
* Error thrown when validation fails after all attempts are exhausted.
|
|
9
|
+
* Contains the full validation history for debugging and partial result recovery.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* try {
|
|
14
|
+
* const result = await withValidation(execute, options);
|
|
15
|
+
* } catch (e) {
|
|
16
|
+
* if (e instanceof ValidationExhaustedError) {
|
|
17
|
+
* console.log(`Failed after ${e.history.all.length} attempts`);
|
|
18
|
+
* console.log('Last result:', e.history.last?.result);
|
|
19
|
+
* console.log('All failures:', e.history.failureReasons);
|
|
20
|
+
* console.log('Error code:', e.code); // 'VALIDATION_EXHAUSTED'
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class ValidationExhaustedError extends AgtlantisError {
|
|
26
|
+
history;
|
|
27
|
+
constructor(message, history) {
|
|
28
|
+
super(message, {
|
|
29
|
+
code: ValidationErrorCode.VALIDATION_EXHAUSTED,
|
|
30
|
+
context: {
|
|
31
|
+
attempts: history.all.length,
|
|
32
|
+
failureReasons: history.failureReasons,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
this.history = history;
|
|
36
|
+
this.name = 'ValidationExhaustedError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2B,MAAM,oBAAoB,CAAC;SAGjE,mBAAmB;AAA/B,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,oEAA6C,CAAA;AAAC,CAChD,EAFY,mBAAmB,KAAnB,mBAAmB,QAE9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,wBAAkC,SAAQ,cAEtD;IAGmB,OAAO;IAFzB,YACE,OAAe,EACC,OAA2C,EAC3D;QACA,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,mBAAmB,CAAC,oBAAgE;YAC1F,OAAO,EAAE;gBACP,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;gBAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC;SACF,CAAC,CAAC;uBARa,OAAO;QASvB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAAA,CACxC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { ValidationResult, ValidationAttempt, ValidationOptions, ReadonlyValidationHistory, } from './types.js';
|
|
2
|
+
export { ValidationHistory } from './validation-history.js';
|
|
3
|
+
export { ValidationErrorCode, ValidationExhaustedError } from './errors.js';
|
|
4
|
+
export { withValidation } from './with-validation.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|