@substrate-ai/core 0.19.54 → 0.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +33 -33
  2. package/dist/config/types.d.ts +17 -17
  3. package/package.json +16 -2
  4. package/dist/__tests__/adapter.test.d.ts +0 -12
  5. package/dist/__tests__/adapter.test.d.ts.map +0 -1
  6. package/dist/__tests__/adapter.test.js +0 -259
  7. package/dist/__tests__/adapter.test.js.map +0 -1
  8. package/dist/__tests__/event-bus.test.d.ts +0 -14
  9. package/dist/__tests__/event-bus.test.d.ts.map +0 -1
  10. package/dist/__tests__/event-bus.test.js +0 -199
  11. package/dist/__tests__/event-bus.test.js.map +0 -1
  12. package/dist/__tests__/output-quality.test.d.ts +0 -8
  13. package/dist/__tests__/output-quality.test.d.ts.map +0 -1
  14. package/dist/__tests__/output-quality.test.js +0 -166
  15. package/dist/__tests__/output-quality.test.js.map +0 -1
  16. package/dist/__tests__/schema-suffix.test.d.ts +0 -9
  17. package/dist/__tests__/schema-suffix.test.d.ts.map +0 -1
  18. package/dist/__tests__/schema-suffix.test.js +0 -126
  19. package/dist/__tests__/schema-suffix.test.js.map +0 -1
  20. package/dist/__tests__/yaml-parser.test.d.ts +0 -18
  21. package/dist/__tests__/yaml-parser.test.d.ts.map +0 -1
  22. package/dist/__tests__/yaml-parser.test.js +0 -475
  23. package/dist/__tests__/yaml-parser.test.js.map +0 -1
  24. package/dist/__type-checks__.d.ts +0 -11
  25. package/dist/__type-checks__.d.ts.map +0 -1
  26. package/dist/__type-checks__.js +0 -19
  27. package/dist/__type-checks__.js.map +0 -1
  28. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts +0 -12
  29. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts.map +0 -1
  30. package/dist/adapters/__tests__/adapter-output-normalizer.test.js +0 -193
  31. package/dist/adapters/__tests__/adapter-output-normalizer.test.js.map +0 -1
  32. package/dist/persistence/dolt-adapter-transaction.test.d.ts +0 -10
  33. package/dist/persistence/dolt-adapter-transaction.test.d.ts.map +0 -1
  34. package/dist/persistence/dolt-adapter-transaction.test.js +0 -359
  35. package/dist/persistence/dolt-adapter-transaction.test.js.map +0 -1
package/README.md CHANGED
@@ -1,55 +1,55 @@
1
1
  # @substrate-ai/core
2
2
 
3
- General-purpose agent infrastructure for the Substrate platform. This package contains all transport-agnostic modules extracted from the Substrate monolith during Epic 41 (Core Extraction Phase 1). Downstream packages `substrate-ai` (SDLC), factory, and any custom orchestrators — import from `@substrate-ai/core` without coupling to SDLC-specific types.
3
+ Transport-agnostic primitives for the [Substrate](https://github.com/johnplanow/substrate) platform. This is the foundation package adapters, dispatch, routing, persistence, telemetry, cost tracking, event bus, and supervisor analysis kept free of SDLC-specific concerns so downstream packages (`@substrate-ai/sdlc`, `@substrate-ai/factory`, or custom orchestrators) can compose the pieces they need.
4
4
 
5
- ## Exported Modules
5
+ ## Install
6
6
 
7
- | Namespace | Key exports |
7
+ ```bash
8
+ npm install @substrate-ai/core
9
+ ```
10
+
11
+ Node 22 or later is required. If you plan to use the Dolt persistence adapter in socket mode, also install `mysql2` — it is declared as an optional peer dependency so consumers who only use the CLI or file-backed adapters skip the transitive binary.
12
+
13
+ ## Modules
14
+
15
+ | Namespace | Representative exports |
8
16
  |---|---|
9
17
  | **adapters** | `WorkerAdapter`, `AdapterRegistry`, `SpawnCommand`, `AdapterOptions` |
18
+ | **budget** | `BudgetTracker` |
10
19
  | **config** | `SubstrateConfig`, config loader, validation helpers |
11
- | **dispatch** | `Dispatcher`, `DispatchRequest`, `DispatchHandle`, `DispatchResult`, `DispatchConfig` |
12
- | **events** | `TypedEventBus`, `TypedEventBusImpl`, `createEventBus`, `CoreEvents`, `EventMap`, `EventHandler` |
13
- | **git** | Git utilities, worktree management, `GitManager` |
14
- | **persistence** | `DatabaseAdapter`, `DatabaseAdapterConfig`, `SyncAdapter`, `isSyncAdapter`, `InitSchemaFn` |
15
- | **routing** | `RoutingDecision`, `RoutingPolicy`, `IRoutingResolver`, `ModelResolution` |
16
- | **telemetry** | Telemetry pipeline, scoring modules, `ITelemetryPersistence`, `estimateCost` |
17
- | **supervisor** | Analysis engine, experimenter framework |
18
- | **budget** | `BudgetTracker` interface and implementation |
19
- | **cost-tracker** | Token rates, cost tracking, `CostEntry`, `TaskCostSummary`, `SessionCostSummary` |
20
- | **monitor** | `MonitorAgent`, `RecommendationEngine`, `ReportGenerator`, `TaskTypeClassifier` |
21
- | **version-manager** | `VersionManager`, `VersionManagerImpl`, `UpdateChecker`, `VersionCache` |
22
20
  | **context** | `ContextCompiler`, `TaskDescriptor`, `CompileResult` |
21
+ | **cost-tracker** | `CostTracker`, `CostEntry`, `TaskCostSummary`, `TOKEN_RATES` |
22
+ | **dispatch** | `Dispatcher`, `DispatchRequest`, `DispatchHandle`, `DispatchResult` |
23
+ | **events** | `TypedEventBus`, `createEventBus`, `CoreEvents`, `EventMap`, `EventHandler` |
24
+ | **git** | Git utilities, worktree management, `GitManager` |
25
+ | **llm** | `callLLM`, `LLMCallParams`, `LLMCallResult` (default stub — provide your own implementation) |
26
+ | **monitor** | `MonitorAgent`, `RecommendationEngine`, `ReportGenerator` |
27
+ | **persistence** | `DatabaseAdapter`, `SyncAdapter`, `createDatabaseAdapter` |
23
28
  | **quality-gates** | `QualityGate`, `GatePipeline`, `GateResult` |
29
+ | **routing** | `RoutingDecision`, `RoutingPolicy`, `IRoutingResolver` |
30
+ | **supervisor** | Analysis engine, experimenter framework |
31
+ | **telemetry** | Telemetry pipeline, scoring modules, `estimateCost` |
32
+ | **version-manager** | `VersionManager`, `UpdateChecker`, `VersionCache` |
24
33
 
25
34
  ## Usage
26
35
 
27
36
  ```typescript
28
- // Event bus subscribe and publish typed pipeline events
29
- import { createEventBus, TypedEventBus } from '@substrate-ai/core';
37
+ import { createEventBus, type TypedEventBus } from '@substrate-ai/core'
30
38
 
31
- const bus: TypedEventBus = createEventBus();
32
- bus.on('story:complete', (event) => console.log('Story done:', event.storyKey));
39
+ const bus: TypedEventBus = createEventBus()
40
+ bus.on('story:complete', (event) => console.log('Story done:', event.storyKey))
33
41
  ```
34
42
 
35
43
  ```typescript
36
- // Adapter registry register and retrieve worker adapters
37
- import { AdapterRegistry, WorkerAdapter } from '@substrate-ai/core';
44
+ import { AdapterRegistry } from '@substrate-ai/core'
38
45
 
39
- const registry = new AdapterRegistry();
40
- registry.register('claude', myClaudeAdapter);
41
- const adapter: WorkerAdapter = registry.get('claude');
46
+ const registry = new AdapterRegistry()
47
+ registry.register('claude', myClaudeAdapter)
48
+ const adapter = registry.get('claude')
42
49
  ```
43
50
 
44
- ```typescript
45
- // Persistence — create a database adapter for pipeline state
46
- import { DatabaseAdapterConfig, createDatabaseAdapter } from '@substrate-ai/core';
47
-
48
- const config: DatabaseAdapterConfig = { backend: 'dolt', basePath: '.substrate' };
49
- const db = await createDatabaseAdapter(config);
50
- await db.initSchema(mySchema);
51
- ```
51
+ ## Versioning
52
52
 
53
- ## Version
53
+ This package releases in lockstep with `substrate-ai` on every `v*` tag push. Pick any version ≥ `0.20.1` — all four `@substrate-ai/*` packages publish together with verified npm provenance.
54
54
 
55
- `@substrate-ai/core` follows the root `substrate-ai` version. Current version: **0.9.0** (Epic 41 — Core Extraction Phase 1 complete).
55
+ See the [main repository](https://github.com/johnplanow/substrate) for the full platform documentation.
@@ -12,9 +12,9 @@ import { z } from 'zod';
12
12
  import type { ILogger } from '../dispatch/types.js';
13
13
  /** Subscription routing modes */
14
14
  export declare const SubscriptionRoutingSchema: z.ZodEnum<{
15
- auto: "auto";
16
15
  subscription: "subscription";
17
16
  api: "api";
17
+ auto: "auto";
18
18
  disabled: "disabled";
19
19
  }>;
20
20
  export type SubscriptionRouting = z.infer<typeof SubscriptionRoutingSchema>;
@@ -29,9 +29,9 @@ export declare const ProviderConfigSchema: z.ZodObject<{
29
29
  enabled: z.ZodBoolean;
30
30
  cli_path: z.ZodOptional<z.ZodString>;
31
31
  subscription_routing: z.ZodEnum<{
32
- auto: "auto";
33
32
  subscription: "subscription";
34
33
  api: "api";
34
+ auto: "auto";
35
35
  disabled: "disabled";
36
36
  }>;
37
37
  max_concurrent: z.ZodNumber;
@@ -49,9 +49,9 @@ export declare const ProvidersSchema: z.ZodObject<{
49
49
  enabled: z.ZodBoolean;
50
50
  cli_path: z.ZodOptional<z.ZodString>;
51
51
  subscription_routing: z.ZodEnum<{
52
- auto: "auto";
53
52
  subscription: "subscription";
54
53
  api: "api";
54
+ auto: "auto";
55
55
  disabled: "disabled";
56
56
  }>;
57
57
  max_concurrent: z.ZodNumber;
@@ -66,9 +66,9 @@ export declare const ProvidersSchema: z.ZodObject<{
66
66
  enabled: z.ZodBoolean;
67
67
  cli_path: z.ZodOptional<z.ZodString>;
68
68
  subscription_routing: z.ZodEnum<{
69
- auto: "auto";
70
69
  subscription: "subscription";
71
70
  api: "api";
71
+ auto: "auto";
72
72
  disabled: "disabled";
73
73
  }>;
74
74
  max_concurrent: z.ZodNumber;
@@ -83,9 +83,9 @@ export declare const ProvidersSchema: z.ZodObject<{
83
83
  enabled: z.ZodBoolean;
84
84
  cli_path: z.ZodOptional<z.ZodString>;
85
85
  subscription_routing: z.ZodEnum<{
86
- auto: "auto";
87
86
  subscription: "subscription";
88
87
  api: "api";
88
+ auto: "auto";
89
89
  disabled: "disabled";
90
90
  }>;
91
91
  max_concurrent: z.ZodNumber;
@@ -99,21 +99,21 @@ export declare const ProvidersSchema: z.ZodObject<{
99
99
  }, z.core.$strict>;
100
100
  export type ProvidersConfig = z.infer<typeof ProvidersSchema>;
101
101
  export declare const LogLevelSchema: z.ZodEnum<{
102
- error: "error";
103
102
  trace: "trace";
104
103
  debug: "debug";
105
104
  info: "info";
106
105
  warn: "warn";
106
+ error: "error";
107
107
  fatal: "fatal";
108
108
  }>;
109
109
  export type LogLevelValue = z.infer<typeof LogLevelSchema>;
110
110
  export declare const GlobalSettingsSchema: z.ZodObject<{
111
111
  log_level: z.ZodEnum<{
112
- error: "error";
113
112
  trace: "trace";
114
113
  debug: "debug";
115
114
  info: "info";
116
115
  warn: "warn";
116
+ error: "error";
117
117
  fatal: "fatal";
118
118
  }>;
119
119
  max_concurrent_tasks: z.ZodNumber;
@@ -164,11 +164,11 @@ export declare const SubstrateConfigSchema: z.ZodObject<{
164
164
  }>>;
165
165
  global: z.ZodObject<{
166
166
  log_level: z.ZodEnum<{
167
- error: "error";
168
167
  trace: "trace";
169
168
  debug: "debug";
170
169
  info: "info";
171
170
  warn: "warn";
171
+ error: "error";
172
172
  fatal: "fatal";
173
173
  }>;
174
174
  max_concurrent_tasks: z.ZodNumber;
@@ -182,9 +182,9 @@ export declare const SubstrateConfigSchema: z.ZodObject<{
182
182
  enabled: z.ZodBoolean;
183
183
  cli_path: z.ZodOptional<z.ZodString>;
184
184
  subscription_routing: z.ZodEnum<{
185
- auto: "auto";
186
185
  subscription: "subscription";
187
186
  api: "api";
187
+ auto: "auto";
188
188
  disabled: "disabled";
189
189
  }>;
190
190
  max_concurrent: z.ZodNumber;
@@ -199,9 +199,9 @@ export declare const SubstrateConfigSchema: z.ZodObject<{
199
199
  enabled: z.ZodBoolean;
200
200
  cli_path: z.ZodOptional<z.ZodString>;
201
201
  subscription_routing: z.ZodEnum<{
202
- auto: "auto";
203
202
  subscription: "subscription";
204
203
  api: "api";
204
+ auto: "auto";
205
205
  disabled: "disabled";
206
206
  }>;
207
207
  max_concurrent: z.ZodNumber;
@@ -216,9 +216,9 @@ export declare const SubstrateConfigSchema: z.ZodObject<{
216
216
  enabled: z.ZodBoolean;
217
217
  cli_path: z.ZodOptional<z.ZodString>;
218
218
  subscription_routing: z.ZodEnum<{
219
- auto: "auto";
220
219
  subscription: "subscription";
221
220
  api: "api";
221
+ auto: "auto";
222
222
  disabled: "disabled";
223
223
  }>;
224
224
  max_concurrent: z.ZodNumber;
@@ -258,9 +258,9 @@ export declare const PartialProviderConfigSchema: z.ZodObject<{
258
258
  enabled: z.ZodOptional<z.ZodBoolean>;
259
259
  cli_path: z.ZodOptional<z.ZodOptional<z.ZodString>>;
260
260
  subscription_routing: z.ZodOptional<z.ZodEnum<{
261
- auto: "auto";
262
261
  subscription: "subscription";
263
262
  api: "api";
263
+ auto: "auto";
264
264
  disabled: "disabled";
265
265
  }>>;
266
266
  max_concurrent: z.ZodOptional<z.ZodNumber>;
@@ -274,11 +274,11 @@ export declare const PartialProviderConfigSchema: z.ZodObject<{
274
274
  export type PartialProviderConfig = z.infer<typeof PartialProviderConfigSchema>;
275
275
  export declare const PartialGlobalSettingsSchema: z.ZodObject<{
276
276
  log_level: z.ZodOptional<z.ZodEnum<{
277
- error: "error";
278
277
  trace: "trace";
279
278
  debug: "debug";
280
279
  info: "info";
281
280
  warn: "warn";
281
+ error: "error";
282
282
  fatal: "fatal";
283
283
  }>>;
284
284
  max_concurrent_tasks: z.ZodOptional<z.ZodNumber>;
@@ -297,11 +297,11 @@ export declare const PartialSubstrateConfigSchema: z.ZodObject<{
297
297
  }>>;
298
298
  global: z.ZodOptional<z.ZodObject<{
299
299
  log_level: z.ZodOptional<z.ZodEnum<{
300
- error: "error";
301
300
  trace: "trace";
302
301
  debug: "debug";
303
302
  info: "info";
304
303
  warn: "warn";
304
+ error: "error";
305
305
  fatal: "fatal";
306
306
  }>>;
307
307
  max_concurrent_tasks: z.ZodOptional<z.ZodNumber>;
@@ -315,9 +315,9 @@ export declare const PartialSubstrateConfigSchema: z.ZodObject<{
315
315
  enabled: z.ZodOptional<z.ZodBoolean>;
316
316
  cli_path: z.ZodOptional<z.ZodOptional<z.ZodString>>;
317
317
  subscription_routing: z.ZodOptional<z.ZodEnum<{
318
- auto: "auto";
319
318
  subscription: "subscription";
320
319
  api: "api";
320
+ auto: "auto";
321
321
  disabled: "disabled";
322
322
  }>>;
323
323
  max_concurrent: z.ZodOptional<z.ZodNumber>;
@@ -332,9 +332,9 @@ export declare const PartialSubstrateConfigSchema: z.ZodObject<{
332
332
  enabled: z.ZodOptional<z.ZodBoolean>;
333
333
  cli_path: z.ZodOptional<z.ZodOptional<z.ZodString>>;
334
334
  subscription_routing: z.ZodOptional<z.ZodEnum<{
335
- auto: "auto";
336
335
  subscription: "subscription";
337
336
  api: "api";
337
+ auto: "auto";
338
338
  disabled: "disabled";
339
339
  }>>;
340
340
  max_concurrent: z.ZodOptional<z.ZodNumber>;
@@ -349,9 +349,9 @@ export declare const PartialSubstrateConfigSchema: z.ZodObject<{
349
349
  enabled: z.ZodOptional<z.ZodBoolean>;
350
350
  cli_path: z.ZodOptional<z.ZodOptional<z.ZodString>>;
351
351
  subscription_routing: z.ZodOptional<z.ZodEnum<{
352
- auto: "auto";
353
352
  subscription: "subscription";
354
353
  api: "api";
354
+ auto: "auto";
355
355
  disabled: "disabled";
356
356
  }>>;
357
357
  max_concurrent: z.ZodOptional<z.ZodNumber>;
package/package.json CHANGED
@@ -1,7 +1,13 @@
1
1
  {
2
2
  "name": "@substrate-ai/core",
3
- "version": "0.19.54",
3
+ "version": "0.20.2",
4
4
  "type": "module",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/johnplanow/substrate.git",
9
+ "directory": "packages/core"
10
+ },
5
11
  "main": "./dist/index.js",
6
12
  "types": "./dist/index.d.ts",
7
13
  "exports": {
@@ -16,12 +22,20 @@
16
22
  "scripts": {
17
23
  "build": "tsc -b"
18
24
  },
25
+ "engines": {
26
+ "node": ">=22.0.0"
27
+ },
19
28
  "dependencies": {
20
29
  "js-yaml": "^4.1.1",
21
30
  "semver": "^7.6.3",
22
31
  "zod": "^4.3.6"
23
32
  },
24
- "optionalDependencies": {
33
+ "peerDependencies": {
25
34
  "mysql2": "^3.20.0"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "mysql2": {
38
+ "optional": true
39
+ }
26
40
  }
27
41
  }
@@ -1,12 +0,0 @@
1
- /**
2
- * Unit tests for packages/core/src/persistence/adapter.ts
3
- *
4
- * Tests the createDatabaseAdapter() factory function with all three backend
5
- * modes (auto, memory, dolt), Dolt availability detection, fallback logic,
6
- * and warning messages.
7
- *
8
- * All filesystem and child_process interactions are mocked — no real Dolt
9
- * installation is required.
10
- */
11
- export {};
12
- //# sourceMappingURL=adapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/adapter.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -1,259 +0,0 @@
1
- /**
2
- * Unit tests for packages/core/src/persistence/adapter.ts
3
- *
4
- * Tests the createDatabaseAdapter() factory function with all three backend
5
- * modes (auto, memory, dolt), Dolt availability detection, fallback logic,
6
- * and warning messages.
7
- *
8
- * All filesystem and child_process interactions are mocked — no real Dolt
9
- * installation is required.
10
- */
11
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
12
- import { createDatabaseAdapter } from '../persistence/adapter.js';
13
- import { DoltDatabaseAdapter } from '../persistence/dolt-adapter.js';
14
- import { InMemoryDatabaseAdapter } from '../persistence/memory-adapter.js';
15
- // ---------------------------------------------------------------------------
16
- // Mock node:child_process and node:fs
17
- // ---------------------------------------------------------------------------
18
- vi.mock('node:child_process', () => ({
19
- spawnSync: vi.fn(),
20
- }));
21
- vi.mock('node:fs', () => ({
22
- existsSync: vi.fn(),
23
- }));
24
- import { spawnSync } from 'node:child_process';
25
- import { existsSync } from 'node:fs';
26
- const mockedSpawnSync = vi.mocked(spawnSync);
27
- const mockedExistsSync = vi.mocked(existsSync);
28
- // ---------------------------------------------------------------------------
29
- // Helper: create a mock DoltClientLike factory
30
- // ---------------------------------------------------------------------------
31
- function makeMockDoltClientFactory() {
32
- const mockClient = {
33
- query: vi.fn().mockResolvedValue([]),
34
- close: vi.fn().mockResolvedValue(undefined),
35
- };
36
- const factory = vi.fn().mockReturnValue(mockClient);
37
- return { factory, mockClient };
38
- }
39
- // ---------------------------------------------------------------------------
40
- // Helper: configure mocks so isDoltAvailable returns true
41
- // ---------------------------------------------------------------------------
42
- function configureDoltAvailable() {
43
- mockedExistsSync.mockReturnValue(true);
44
- mockedSpawnSync.mockReturnValue({
45
- status: 0,
46
- pid: 1,
47
- output: [],
48
- stdout: Buffer.from(''),
49
- stderr: Buffer.from(''),
50
- signal: null,
51
- });
52
- }
53
- // ---------------------------------------------------------------------------
54
- // Helper: configure mocks so isDoltAvailable returns false (no .dolt dir)
55
- // ---------------------------------------------------------------------------
56
- function configureDoltUnavailable() {
57
- mockedExistsSync.mockReturnValue(false);
58
- mockedSpawnSync.mockReturnValue({
59
- error: new Error('ENOENT'),
60
- status: null,
61
- pid: 0,
62
- output: [],
63
- stdout: Buffer.from(''),
64
- stderr: Buffer.from(''),
65
- signal: null,
66
- });
67
- }
68
- // ---------------------------------------------------------------------------
69
- // Helper: configure mocks so .dolt dir exists but binary fails
70
- // ---------------------------------------------------------------------------
71
- function configureDoltDirExistsBinaryFails() {
72
- mockedExistsSync.mockReturnValue(true);
73
- mockedSpawnSync.mockReturnValue({
74
- error: new Error('ENOENT'),
75
- status: null,
76
- pid: 0,
77
- output: [],
78
- stdout: Buffer.from(''),
79
- stderr: Buffer.from(''),
80
- signal: null,
81
- });
82
- }
83
- // ---------------------------------------------------------------------------
84
- // Tests
85
- // ---------------------------------------------------------------------------
86
- describe('createDatabaseAdapter', () => {
87
- beforeEach(() => {
88
- vi.clearAllMocks();
89
- });
90
- afterEach(() => {
91
- vi.restoreAllMocks();
92
- });
93
- // -------------------------------------------------------------------------
94
- // backend = 'memory'
95
- // -------------------------------------------------------------------------
96
- describe('backend = "memory"', () => {
97
- it('returns an InMemoryDatabaseAdapter regardless of Dolt availability', () => {
98
- configureDoltAvailable();
99
- const adapter = createDatabaseAdapter({ backend: 'memory' });
100
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
101
- // Should not probe Dolt at all
102
- expect(mockedExistsSync).not.toHaveBeenCalled();
103
- expect(mockedSpawnSync).not.toHaveBeenCalled();
104
- });
105
- it('does not call the doltClientFactory when backend is memory', () => {
106
- const { factory } = makeMockDoltClientFactory();
107
- const adapter = createDatabaseAdapter({ backend: 'memory' }, factory);
108
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
109
- expect(factory).not.toHaveBeenCalled();
110
- });
111
- });
112
- // -------------------------------------------------------------------------
113
- // backend = 'dolt'
114
- // -------------------------------------------------------------------------
115
- describe('backend = "dolt"', () => {
116
- it('returns a DoltDatabaseAdapter when factory is provided', () => {
117
- const { factory, mockClient } = makeMockDoltClientFactory();
118
- const adapter = createDatabaseAdapter({ backend: 'dolt', basePath: '/tmp/test-project' }, factory);
119
- expect(adapter).toBeInstanceOf(DoltDatabaseAdapter);
120
- expect(factory).toHaveBeenCalledWith('/tmp/test-project/.substrate/state');
121
- });
122
- it('falls back to InMemoryDatabaseAdapter when no factory is provided', () => {
123
- const warnSpy = vi.spyOn(console, 'debug').mockImplementation(() => { });
124
- const adapter = createDatabaseAdapter({ backend: 'dolt' });
125
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
126
- expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('no doltClientFactory provided'));
127
- });
128
- });
129
- // -------------------------------------------------------------------------
130
- // backend = 'auto'
131
- // -------------------------------------------------------------------------
132
- describe('backend = "auto"', () => {
133
- it('returns DoltDatabaseAdapter when Dolt is available and factory provided', () => {
134
- configureDoltAvailable();
135
- const { factory } = makeMockDoltClientFactory();
136
- const adapter = createDatabaseAdapter({ backend: 'auto', basePath: '/tmp/test-project' }, factory);
137
- expect(adapter).toBeInstanceOf(DoltDatabaseAdapter);
138
- expect(factory).toHaveBeenCalledWith('/tmp/test-project/.substrate/state');
139
- });
140
- it('returns InMemoryDatabaseAdapter when Dolt dir does not exist', () => {
141
- configureDoltUnavailable();
142
- const { factory } = makeMockDoltClientFactory();
143
- const adapter = createDatabaseAdapter({ backend: 'auto', basePath: '/tmp/test-project' }, factory);
144
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
145
- // Factory should NOT be called since Dolt is unavailable
146
- expect(factory).not.toHaveBeenCalled();
147
- });
148
- it('returns InMemoryDatabaseAdapter when no factory is provided even if Dolt is available', () => {
149
- configureDoltAvailable();
150
- const adapter = createDatabaseAdapter({
151
- backend: 'auto',
152
- basePath: '/tmp/test-project',
153
- });
154
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
155
- });
156
- it('defaults backend to "auto" when config is undefined', () => {
157
- configureDoltUnavailable();
158
- const adapter = createDatabaseAdapter();
159
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
160
- });
161
- it('defaults basePath to process.cwd() when not specified', () => {
162
- configureDoltAvailable();
163
- const { factory } = makeMockDoltClientFactory();
164
- const cwd = process.cwd();
165
- const adapter = createDatabaseAdapter({ backend: 'auto' }, factory);
166
- expect(adapter).toBeInstanceOf(DoltDatabaseAdapter);
167
- expect(factory).toHaveBeenCalledWith(`${cwd}/.substrate/state`);
168
- });
169
- });
170
- // -------------------------------------------------------------------------
171
- // isDoltAvailable — retry logic
172
- // -------------------------------------------------------------------------
173
- describe('isDoltAvailable retry logic (via auto backend)', () => {
174
- it('retries once when .dolt dir exists but binary fails, then succeeds', () => {
175
- const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
176
- // .dolt directory exists
177
- mockedExistsSync.mockReturnValue(true);
178
- // First call to `dolt version` fails, retry succeeds
179
- let callCount = 0;
180
- mockedSpawnSync.mockImplementation((cmd) => {
181
- if (cmd === 'dolt') {
182
- callCount++;
183
- if (callCount <= 1) {
184
- // First attempt: binary unavailable
185
- return {
186
- error: new Error('ENOENT'),
187
- status: null,
188
- pid: 0,
189
- output: [],
190
- stdout: Buffer.from(''),
191
- stderr: Buffer.from(''),
192
- signal: null,
193
- };
194
- }
195
- // Retry: binary available
196
- return {
197
- status: 0,
198
- pid: 1,
199
- output: [],
200
- stdout: Buffer.from(''),
201
- stderr: Buffer.from(''),
202
- signal: null,
203
- };
204
- }
205
- // sleep call
206
- return {
207
- status: 0,
208
- pid: 1,
209
- output: [],
210
- stdout: Buffer.from(''),
211
- stderr: Buffer.from(''),
212
- signal: null,
213
- };
214
- });
215
- const { factory } = makeMockDoltClientFactory();
216
- const adapter = createDatabaseAdapter({ backend: 'auto', basePath: '/tmp/test-project' }, factory);
217
- expect(adapter).toBeInstanceOf(DoltDatabaseAdapter);
218
- // Should have warned about the retry
219
- expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('retrying once'));
220
- });
221
- it('falls back to InMemory with warning when .dolt dir exists but binary fails on both attempts', () => {
222
- const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
223
- configureDoltDirExistsBinaryFails();
224
- const { factory } = makeMockDoltClientFactory();
225
- const adapter = createDatabaseAdapter({ backend: 'auto', basePath: '/tmp/test-project' }, factory);
226
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
227
- // Should warn about retry and about final fallback
228
- expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('retrying once'));
229
- expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('still unavailable after retry'));
230
- });
231
- });
232
- // -------------------------------------------------------------------------
233
- // backendType property
234
- // -------------------------------------------------------------------------
235
- describe('backendType property', () => {
236
- it('InMemoryDatabaseAdapter has backendType "memory"', () => {
237
- configureDoltUnavailable();
238
- const adapter = createDatabaseAdapter({ backend: 'memory' });
239
- expect(adapter.backendType).toBe('memory');
240
- });
241
- it('DoltDatabaseAdapter has backendType "dolt"', () => {
242
- configureDoltAvailable();
243
- const { factory } = makeMockDoltClientFactory();
244
- const adapter = createDatabaseAdapter({ backend: 'auto', basePath: '/tmp/test-project' }, factory);
245
- expect(adapter.backendType).toBe('dolt');
246
- });
247
- });
248
- // -------------------------------------------------------------------------
249
- // Edge cases
250
- // -------------------------------------------------------------------------
251
- describe('edge cases', () => {
252
- it('handles backend=undefined in config (defaults to auto)', () => {
253
- configureDoltUnavailable();
254
- const adapter = createDatabaseAdapter({ backend: 'auto' });
255
- expect(adapter).toBeInstanceOf(InMemoryDatabaseAdapter);
256
- });
257
- });
258
- });
259
- //# sourceMappingURL=adapter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["../../src/__tests__/adapter.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Unit tests for packages/core/src/events/event-bus.ts
3
- *
4
- * Tests the TypedEventBusImpl class and createEventBus factory:
5
- * - Basic emit/on/off lifecycle
6
- * - Typed event emission with correct payload delivery
7
- * - Multiple handlers for same event
8
- * - Handler removal (off)
9
- * - Synchronous dispatch guarantee
10
- * - Multiple event types coexisting
11
- * - createEventBus factory returns working instance
12
- */
13
- export {};
14
- //# sourceMappingURL=event-bus.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/event-bus.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}