@stratix/testing 0.1.0 → 0.1.3
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/README.md +340 -11
- package/dist/AgentTester.js +1 -1
- package/dist/AgentTester.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @stratix/testing
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Comprehensive testing utilities for Stratix applications, with specialized support for AI agents.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -10,27 +10,356 @@ pnpm add -D @stratix/testing
|
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- **InMemoryEventBus** - Event bus for testing
|
|
15
|
-
- **TestContainer** - DI container for tests
|
|
16
|
-
- Helper functions for test entities
|
|
13
|
+
### AI Agent Testing
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
- **MockLLMProvider** - Mock LLM provider for deterministic agent testing
|
|
16
|
+
- **AgentTester** - High-level testing utility with timeout support
|
|
17
|
+
- **Agent Assertions** - Specialized assertions for agent results
|
|
18
|
+
- **Test Helpers** - Utilities for creating test contexts and IDs
|
|
19
|
+
|
|
20
|
+
### General Testing
|
|
21
|
+
|
|
22
|
+
- **TestApplication** - Simplified test application builder
|
|
23
|
+
- **Result Assertions** - Assertions for Result pattern
|
|
24
|
+
- **EntityBuilder** - Fluent API for building test entities
|
|
25
|
+
- **DataFactory** - Generate test data (emails, IDs, dates, etc.)
|
|
26
|
+
|
|
27
|
+
## Quick Examples
|
|
28
|
+
|
|
29
|
+
### Testing AI Agents
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { AgentTester, expectSuccess } from '@stratix/testing';
|
|
33
|
+
|
|
34
|
+
describe('CustomerSupportAgent', () => {
|
|
35
|
+
let tester: AgentTester;
|
|
36
|
+
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
tester = new AgentTester();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('should respond to greetings', async () => {
|
|
42
|
+
const agent = new CustomerSupportAgent(...);
|
|
43
|
+
|
|
44
|
+
// Set deterministic mock response
|
|
45
|
+
tester.setMockResponse({
|
|
46
|
+
content: 'Hello! How can I help you today?',
|
|
47
|
+
usage: { promptTokens: 10, completionTokens: 20, totalTokens: 30 }
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const result = await tester.test(agent, { message: 'Hi' });
|
|
51
|
+
|
|
52
|
+
expect(result.passed).toBe(true);
|
|
53
|
+
expectSuccess(result.result);
|
|
54
|
+
expect(result.duration).toBeLessThan(1000);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Using MockLLMProvider Directly
|
|
19
60
|
|
|
20
61
|
```typescript
|
|
21
62
|
import { MockLLMProvider } from '@stratix/testing';
|
|
22
63
|
|
|
23
|
-
const mockProvider = new MockLLMProvider(
|
|
24
|
-
|
|
25
|
-
|
|
64
|
+
const mockProvider = new MockLLMProvider();
|
|
65
|
+
mockProvider.setResponse({
|
|
66
|
+
content: '{"result": "success"}',
|
|
67
|
+
usage: { promptTokens: 10, completionTokens: 20, totalTokens: 30 }
|
|
26
68
|
});
|
|
27
69
|
|
|
28
|
-
const agent = new MyAgent(mockProvider);
|
|
70
|
+
const agent = new MyAgent({ provider: mockProvider });
|
|
29
71
|
const result = await agent.execute(input);
|
|
30
72
|
|
|
31
|
-
//
|
|
73
|
+
// Verify calls
|
|
74
|
+
expect(mockProvider.getCallCount()).toBe(1);
|
|
75
|
+
expect(mockProvider.getLastCall()).toBeDefined();
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Testing with TestApplication
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import { TestApplication } from '@stratix/testing';
|
|
82
|
+
|
|
83
|
+
describe('Integration Tests', () => {
|
|
84
|
+
let app: Application;
|
|
85
|
+
|
|
86
|
+
beforeEach(async () => {
|
|
87
|
+
app = await TestApplication.create()
|
|
88
|
+
.useInMemoryDefaults()
|
|
89
|
+
.usePlugin(myPlugin)
|
|
90
|
+
.build();
|
|
91
|
+
|
|
92
|
+
await app.start();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
afterEach(async () => {
|
|
96
|
+
await app.stop();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('should process commands', async () => {
|
|
100
|
+
// Test with fully configured app
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Using Result Assertions
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
import { assertSuccess, unwrapSuccess } from '@stratix/testing';
|
|
109
|
+
|
|
110
|
+
const result = await commandHandler.execute(command);
|
|
111
|
+
|
|
112
|
+
// Assert success and throw if failed
|
|
113
|
+
assertSuccess(result);
|
|
114
|
+
|
|
115
|
+
// Or unwrap value directly
|
|
116
|
+
const value = unwrapSuccess(result);
|
|
117
|
+
expect(value.id).toBeDefined();
|
|
32
118
|
```
|
|
33
119
|
|
|
120
|
+
### Building Test Entities
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
import { EntityBuilder } from '@stratix/testing';
|
|
124
|
+
|
|
125
|
+
const user = new EntityBuilder(User)
|
|
126
|
+
.withProps({ email: 'test@example.com', name: 'Test User' })
|
|
127
|
+
.withId(testUserId)
|
|
128
|
+
.build();
|
|
129
|
+
|
|
130
|
+
// Build multiple
|
|
131
|
+
const users = new EntityBuilder(User)
|
|
132
|
+
.withProps({ role: 'admin' })
|
|
133
|
+
.buildMany(5);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Generating Test Data
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
import { DataFactory } from '@stratix/testing';
|
|
140
|
+
|
|
141
|
+
const email = DataFactory.email('user'); // user1@example.com
|
|
142
|
+
const id = DataFactory.entityId<'User'>();
|
|
143
|
+
const date = DataFactory.date(7); // 7 days ago
|
|
144
|
+
const status = DataFactory.pick(['active', 'inactive']);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## API Reference
|
|
148
|
+
|
|
149
|
+
### AgentTester
|
|
150
|
+
|
|
151
|
+
High-level testing utility for AI agents.
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
class AgentTester {
|
|
155
|
+
constructor(options?: TestOptions)
|
|
156
|
+
|
|
157
|
+
// Mock configuration
|
|
158
|
+
setMockResponse(response: MockResponse): void
|
|
159
|
+
setMockResponses(responses: MockResponse[]): void
|
|
160
|
+
getMockProvider(): MockLLMProvider
|
|
161
|
+
|
|
162
|
+
// Testing
|
|
163
|
+
test<TInput, TOutput>(
|
|
164
|
+
agent: AIAgent<TInput, TOutput>,
|
|
165
|
+
input: TInput,
|
|
166
|
+
context?: AgentContext
|
|
167
|
+
): Promise<TestResult<TOutput>>
|
|
168
|
+
|
|
169
|
+
// Assertions
|
|
170
|
+
assertSuccess<TOutput>(result: TestResult<TOutput>): void
|
|
171
|
+
assertFailure<TOutput>(result: TestResult<TOutput>): void
|
|
172
|
+
assertDuration<TOutput>(result: TestResult<TOutput>, maxDuration: number): void
|
|
173
|
+
assertCallCount(expectedCount: number): void
|
|
174
|
+
|
|
175
|
+
// Utilities
|
|
176
|
+
reset(): void
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### MockLLMProvider
|
|
181
|
+
|
|
182
|
+
Mock LLM provider implementing the `LLMProvider` interface.
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
class MockLLMProvider implements LLMProvider {
|
|
186
|
+
// Configuration
|
|
187
|
+
setResponse(response: MockResponse): void
|
|
188
|
+
setResponses(responses: MockResponse[]): void
|
|
189
|
+
addResponse(response: MockResponse): void
|
|
190
|
+
|
|
191
|
+
// Inspection
|
|
192
|
+
getCallHistory(): ReadonlyArray<ChatParams>
|
|
193
|
+
getLastCall(): ChatParams | undefined
|
|
194
|
+
getCallCount(): number
|
|
195
|
+
|
|
196
|
+
// Utilities
|
|
197
|
+
reset(): void
|
|
198
|
+
|
|
199
|
+
// LLMProvider implementation
|
|
200
|
+
chat(params: ChatParams): Promise<ChatResponse>
|
|
201
|
+
streamChat(params: ChatParams): AsyncIterable<ChatChunk>
|
|
202
|
+
embeddings(params: EmbeddingParams): Promise<EmbeddingResponse>
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Agent Assertions
|
|
207
|
+
|
|
208
|
+
Specialized assertions for agent results.
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// Success/Failure
|
|
212
|
+
expectSuccess<T>(result: AgentResult<T>): void
|
|
213
|
+
expectFailure<T>(result: AgentResult<T>): void
|
|
214
|
+
|
|
215
|
+
// Data validation
|
|
216
|
+
expectData<T>(result: AgentResult<T>, expected: T): void
|
|
217
|
+
expectDataContains<T>(result: AgentResult<T>, expected: Partial<T>): void
|
|
218
|
+
|
|
219
|
+
// Performance
|
|
220
|
+
expectCostWithinBudget<T>(result: AgentResult<T>, budget: number): void
|
|
221
|
+
expectDurationWithinLimit<T>(result: AgentResult<T>, maxDuration: number): void
|
|
222
|
+
|
|
223
|
+
// Error validation
|
|
224
|
+
expectErrorContains<T>(result: AgentResult<T>, expectedText: string): void
|
|
225
|
+
|
|
226
|
+
// Model validation
|
|
227
|
+
expectModel<T>(result: AgentResult<T>, expectedModel: string): void
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Test Helpers
|
|
231
|
+
|
|
232
|
+
Utilities for creating test data and running tests.
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
// Context creation
|
|
236
|
+
createTestContext(overrides?: Partial<{
|
|
237
|
+
userId: string;
|
|
238
|
+
sessionId: string;
|
|
239
|
+
environment: 'development' | 'staging' | 'production';
|
|
240
|
+
metadata: Record<string, unknown>;
|
|
241
|
+
budget: number;
|
|
242
|
+
}>): AgentContext
|
|
243
|
+
|
|
244
|
+
// ID creation
|
|
245
|
+
createTestAgentId(): AgentId
|
|
246
|
+
createDeterministicAgentId(seed: string): AgentId
|
|
247
|
+
|
|
248
|
+
// Timing utilities
|
|
249
|
+
wait(ms: number): Promise<void>
|
|
250
|
+
createTimeout(ms: number, message?: string): Promise<never>
|
|
251
|
+
measureTime<T>(fn: () => Promise<T>): Promise<{ result: T; duration: number }>
|
|
252
|
+
|
|
253
|
+
// Test execution
|
|
254
|
+
repeatTest<T>(times: number, testFn: (iteration: number) => Promise<T>): Promise<T[]>
|
|
255
|
+
runInParallel<T>(testFns: Array<() => Promise<T>>): Promise<T[]>
|
|
256
|
+
|
|
257
|
+
// Assertions
|
|
258
|
+
expectToReject(promise: Promise<unknown>, expectedError?: string | RegExp): Promise<void>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Result Assertions
|
|
262
|
+
|
|
263
|
+
Assertions for the Result pattern.
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
// Assertions
|
|
267
|
+
assertSuccess<T>(result: Result<T>): void
|
|
268
|
+
assertFailure<T>(result: Result<T>): void
|
|
269
|
+
|
|
270
|
+
// Unwrapping
|
|
271
|
+
unwrapSuccess<T>(result: Result<T>): T
|
|
272
|
+
unwrapFailure<T>(result: Result<T>): Error
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### TestApplication
|
|
276
|
+
|
|
277
|
+
Simplified application builder for integration tests.
|
|
278
|
+
|
|
279
|
+
```typescript
|
|
280
|
+
class TestApplication {
|
|
281
|
+
static create(): TestApplication
|
|
282
|
+
|
|
283
|
+
useInMemoryDefaults(): this
|
|
284
|
+
useContainer(container: Container): this
|
|
285
|
+
useLogger(logger: Logger): this
|
|
286
|
+
usePlugin(plugin: Plugin, config?: unknown): this
|
|
287
|
+
|
|
288
|
+
build(): Promise<Application>
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Helper function
|
|
292
|
+
createTestApp(): Promise<Application>
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### EntityBuilder
|
|
296
|
+
|
|
297
|
+
Fluent API for building test entities.
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
class EntityBuilder<E extends Entity<any>> {
|
|
301
|
+
constructor(EntityClass: new (props: any, id: any) => E)
|
|
302
|
+
|
|
303
|
+
withProps(props: Partial<any>): this
|
|
304
|
+
withId(id: any): this
|
|
305
|
+
build(): E
|
|
306
|
+
buildMany(count: number): E[]
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// Helper function
|
|
310
|
+
entityBuilder<E extends Entity<any>>(
|
|
311
|
+
EntityClass: new (props: any, id: any) => E
|
|
312
|
+
): EntityBuilder<E>
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### DataFactory
|
|
316
|
+
|
|
317
|
+
Factory for generating test data.
|
|
318
|
+
|
|
319
|
+
```typescript
|
|
320
|
+
class DataFactory {
|
|
321
|
+
static email(prefix?: string): Email
|
|
322
|
+
static string(prefix?: string): string
|
|
323
|
+
static number(min?: number, max?: number): number
|
|
324
|
+
static entityId<T extends string>(): EntityId<T>
|
|
325
|
+
static boolean(): boolean
|
|
326
|
+
static date(daysAgo?: number): Date
|
|
327
|
+
static pick<T>(array: T[]): T
|
|
328
|
+
static reset(): void
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## Best Practices
|
|
333
|
+
|
|
334
|
+
### AI Agent Testing
|
|
335
|
+
|
|
336
|
+
1. **Use MockLLMProvider for unit tests** - Avoid real API calls, keep tests fast and deterministic
|
|
337
|
+
2. **Test multiple conversation turns** - Use `setResponses()` to test multi-turn interactions
|
|
338
|
+
3. **Verify token usage** - Ensure cost tracking works correctly
|
|
339
|
+
4. **Test error scenarios** - Use mock responses with errors to test error handling
|
|
340
|
+
5. **Check call history** - Verify the agent calls the LLM with correct parameters
|
|
341
|
+
|
|
342
|
+
### Result Pattern Testing
|
|
343
|
+
|
|
344
|
+
1. **Always assert before accessing values** - Use `assertSuccess()` or `unwrapSuccess()`
|
|
345
|
+
2. **Test both success and failure paths** - Ensure error handling works
|
|
346
|
+
3. **Use type-safe assertions** - TypeScript narrows types after assertions
|
|
347
|
+
|
|
348
|
+
### Integration Testing
|
|
349
|
+
|
|
350
|
+
1. **Use TestApplication for full stack tests** - Test with real implementations
|
|
351
|
+
2. **Clean up after tests** - Always call `app.stop()` in afterEach
|
|
352
|
+
3. **Use in-memory defaults** - Faster tests without external dependencies
|
|
353
|
+
4. **Test plugin integration** - Verify plugins work together correctly
|
|
354
|
+
|
|
355
|
+
## Examples
|
|
356
|
+
|
|
357
|
+
See the `examples/` directory in the repository for complete examples:
|
|
358
|
+
|
|
359
|
+
- `examples/ai-agents/echo-agent/` - Simple agent testing
|
|
360
|
+
- `examples/ai-agents/customer-support/` - Production agent with comprehensive tests
|
|
361
|
+
- `examples/rest-api/` - Integration testing with TestApplication
|
|
362
|
+
|
|
34
363
|
## License
|
|
35
364
|
|
|
36
365
|
MIT
|
package/dist/AgentTester.js
CHANGED
|
@@ -101,7 +101,7 @@ export class AgentTester {
|
|
|
101
101
|
async executeWithTimeout(agent, input, _context) {
|
|
102
102
|
const timeout = this.options.timeout;
|
|
103
103
|
return Promise.race([
|
|
104
|
-
agent.
|
|
104
|
+
agent.executeWithEvents(input),
|
|
105
105
|
new Promise((_, reject) => {
|
|
106
106
|
setTimeout(() => {
|
|
107
107
|
reject(new Error(`Test timeout after ${timeout}ms`));
|
package/dist/AgentTester.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentTester.js","sourceRoot":"","sources":["../src/AgentTester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA+CvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,WAAW;IACd,YAAY,CAAkB;IAC9B,OAAO,CAAc;IAE7B,YAAY,UAAuB,EAAE;QACnC,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,eAAe,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,QAAuD;QACrE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAyD;QACxE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,KAA+B,EAC/B,KAAa,EACb,OAAsB;QAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,MAA4B,CAAC;QACjC,IAAI,KAAyB,CAAC;QAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAE9D,sBAAsB;YACtB,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG;gBACP,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1D,IAAI,EAAE,SAA+B;gBACrC,QAAQ,EAAE;oBACR,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC;aACsB,CAAC;YAE1B,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,OAAO;YACL,MAAM;YACN,QAAQ;YACR,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,KAA+B,EAC/B,KAAa,EACb,QAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAQ,CAAC;QAEtC,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"AgentTester.js","sourceRoot":"","sources":["../src/AgentTester.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stratix/testing",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Testing utilities for Stratix AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"mock"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@stratix/primitives": "0.1.
|
|
23
|
-
"@stratix/
|
|
24
|
-
"@stratix/
|
|
25
|
-
"@stratix/impl-logger-console": "0.1.
|
|
26
|
-
"@stratix/
|
|
22
|
+
"@stratix/primitives": "0.1.3",
|
|
23
|
+
"@stratix/runtime": "0.1.3",
|
|
24
|
+
"@stratix/abstractions": "0.1.3",
|
|
25
|
+
"@stratix/impl-logger-console": "0.1.3",
|
|
26
|
+
"@stratix/impl-di-awilix": "0.1.3"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^20.10.0",
|