groundswell 0.0.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +26 -9
- package/dist/cache/cache-key.d.ts +20 -0
- package/dist/cache/cache-key.d.ts.map +1 -1
- package/dist/cache/cache-key.js +9 -0
- package/dist/cache/cache-key.js.map +1 -1
- package/dist/core/agent.d.ts +120 -29
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +584 -177
- package/dist/core/agent.js.map +1 -1
- package/dist/core/mcp-handler.d.ts +63 -5
- package/dist/core/mcp-handler.d.ts.map +1 -1
- package/dist/core/mcp-handler.js +184 -4
- package/dist/core/mcp-handler.js.map +1 -1
- package/dist/core/workflow-context.d.ts +6 -2
- package/dist/core/workflow-context.d.ts.map +1 -1
- package/dist/core/workflow-context.js +99 -4
- package/dist/core/workflow-context.js.map +1 -1
- package/dist/core/workflow.d.ts +315 -13
- package/dist/core/workflow.d.ts.map +1 -1
- package/dist/core/workflow.js +552 -30
- package/dist/core/workflow.js.map +1 -1
- package/dist/debugger/event-replayer.d.ts +422 -0
- package/dist/debugger/event-replayer.d.ts.map +1 -0
- package/dist/debugger/event-replayer.js +639 -0
- package/dist/debugger/event-replayer.js.map +1 -0
- package/dist/debugger/tree-debugger.d.ts +170 -1
- package/dist/debugger/tree-debugger.d.ts.map +1 -1
- package/dist/debugger/tree-debugger.js +423 -1
- package/dist/debugger/tree-debugger.js.map +1 -1
- package/dist/decorators/step.d.ts.map +1 -1
- package/dist/decorators/step.js +129 -47
- package/dist/decorators/step.js.map +1 -1
- package/dist/harnesses/claude-code-harness.d.ts +391 -0
- package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
- package/dist/harnesses/claude-code-harness.js +1076 -0
- package/dist/harnesses/claude-code-harness.js.map +1 -0
- package/dist/harnesses/harness-registry.d.ts +440 -0
- package/dist/harnesses/harness-registry.d.ts.map +1 -0
- package/dist/harnesses/harness-registry.js +543 -0
- package/dist/harnesses/harness-registry.js.map +1 -0
- package/dist/harnesses/index.d.ts +12 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +11 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/pi-harness.d.ts +219 -0
- package/dist/harnesses/pi-harness.d.ts.map +1 -0
- package/dist/harnesses/pi-harness.js +676 -0
- package/dist/harnesses/pi-harness.js.map +1 -0
- package/dist/harnesses/pi-schema-converter.d.ts +24 -0
- package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
- package/dist/harnesses/pi-schema-converter.js +81 -0
- package/dist/harnesses/pi-schema-converter.js.map +1 -0
- package/dist/harnesses/register-defaults.d.ts +24 -0
- package/dist/harnesses/register-defaults.d.ts.map +1 -0
- package/dist/harnesses/register-defaults.js +40 -0
- package/dist/harnesses/register-defaults.js.map +1 -0
- package/dist/harnesses/session-store.d.ts +201 -0
- package/dist/harnesses/session-store.d.ts.map +1 -0
- package/dist/harnesses/session-store.js +254 -0
- package/dist/harnesses/session-store.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/reflection/reflection.d.ts.map +1 -1
- package/dist/reflection/reflection.js +19 -4
- package/dist/reflection/reflection.js.map +1 -1
- package/dist/types/agent.d.ts +1253 -2
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +418 -1
- package/dist/types/agent.js.map +1 -1
- package/dist/types/decorators.d.ts +10 -1
- package/dist/types/decorators.d.ts.map +1 -1
- package/dist/types/events.d.ts +26 -0
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/harnesses.d.ts +474 -0
- package/dist/types/harnesses.d.ts.map +1 -0
- package/dist/types/harnesses.js +2 -0
- package/dist/types/harnesses.js.map +1 -0
- package/dist/types/index.d.ts +9 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/providers.d.ts +691 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +14 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/restart.d.ts +132 -0
- package/dist/types/restart.d.ts.map +1 -0
- package/dist/types/restart.js +2 -0
- package/dist/types/restart.js.map +1 -0
- package/dist/types/streaming.d.ts +194 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +67 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/workflow-context.d.ts +137 -1
- package/dist/types/workflow-context.d.ts.map +1 -1
- package/dist/utils/agent-validation.d.ts +88 -0
- package/dist/utils/agent-validation.d.ts.map +1 -0
- package/dist/utils/agent-validation.js +87 -0
- package/dist/utils/agent-validation.js.map +1 -0
- package/dist/utils/delay.d.ts +7 -0
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +9 -0
- package/dist/utils/delay.js.map +1 -0
- package/dist/utils/harness-config.d.ts +180 -0
- package/dist/utils/harness-config.d.ts.map +1 -0
- package/dist/utils/harness-config.js +311 -0
- package/dist/utils/harness-config.js.map +1 -0
- package/dist/utils/index.d.ts +9 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/model-spec.d.ts +110 -0
- package/dist/utils/model-spec.d.ts.map +1 -0
- package/dist/utils/model-spec.js +149 -0
- package/dist/utils/model-spec.js.map +1 -0
- package/dist/utils/provider-config.d.ts +10 -0
- package/dist/utils/provider-config.d.ts.map +1 -0
- package/dist/utils/provider-config.js +10 -0
- package/dist/utils/provider-config.js.map +1 -0
- package/dist/utils/restart-analysis.d.ts +202 -0
- package/dist/utils/restart-analysis.d.ts.map +1 -0
- package/dist/utils/restart-analysis.js +426 -0
- package/dist/utils/restart-analysis.js.map +1 -0
- package/dist/utils/session-serialization.d.ts +118 -0
- package/dist/utils/session-serialization.d.ts.map +1 -0
- package/dist/utils/session-serialization.js +217 -0
- package/dist/utils/session-serialization.js.map +1 -0
- package/package.json +31 -5
- package/CHANGELOG.md +0 -188
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts +0 -16
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/attachChild-performance.test.js +0 -187
- package/dist/__tests__/adversarial/attachChild-performance.test.js.map +0 -1
- package/dist/__tests__/adversarial/circular-reference.test.d.ts +0 -13
- package/dist/__tests__/adversarial/circular-reference.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/circular-reference.test.js +0 -92
- package/dist/__tests__/adversarial/circular-reference.test.js.map +0 -1
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts +0 -16
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/complex-circular-reference.test.js +0 -127
- package/dist/__tests__/adversarial/complex-circular-reference.test.js.map +0 -1
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts +0 -21
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js +0 -667
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js.map +0 -1
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts +0 -6
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/deep-analysis.test.js +0 -877
- package/dist/__tests__/adversarial/deep-analysis.test.js.map +0 -1
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts +0 -13
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js +0 -186
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js.map +0 -1
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts +0 -6
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js +0 -626
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js.map +0 -1
- package/dist/__tests__/adversarial/edge-case.test.d.ts +0 -6
- package/dist/__tests__/adversarial/edge-case.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/edge-case.test.js +0 -857
- package/dist/__tests__/adversarial/edge-case.test.js.map +0 -1
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts +0 -20
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/error-merge-strategy.test.js +0 -907
- package/dist/__tests__/adversarial/error-merge-strategy.test.js.map +0 -1
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts +0 -2
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/incremental-performance.test.js +0 -113
- package/dist/__tests__/adversarial/incremental-performance.test.js.map +0 -1
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts +0 -22
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js +0 -383
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js.map +0 -1
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts +0 -21
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/observer-propagation.test.js +0 -404
- package/dist/__tests__/adversarial/observer-propagation.test.js.map +0 -1
- package/dist/__tests__/adversarial/parent-validation.test.d.ts +0 -13
- package/dist/__tests__/adversarial/parent-validation.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/parent-validation.test.js +0 -128
- package/dist/__tests__/adversarial/parent-validation.test.js.map +0 -1
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts +0 -20
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js +0 -482
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js.map +0 -1
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts +0 -6
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/prd-compliance.test.js +0 -886
- package/dist/__tests__/adversarial/prd-compliance.test.js.map +0 -1
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts +0 -22
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts.map +0 -1
- package/dist/__tests__/compatibility/backward-compatibility.test.js +0 -1843
- package/dist/__tests__/compatibility/backward-compatibility.test.js.map +0 -1
- package/dist/__tests__/helpers/index.d.ts +0 -10
- package/dist/__tests__/helpers/index.d.ts.map +0 -1
- package/dist/__tests__/helpers/index.js +0 -10
- package/dist/__tests__/helpers/index.js.map +0 -1
- package/dist/__tests__/helpers/tree-verification.d.ts +0 -90
- package/dist/__tests__/helpers/tree-verification.d.ts.map +0 -1
- package/dist/__tests__/helpers/tree-verification.js +0 -202
- package/dist/__tests__/helpers/tree-verification.js.map +0 -1
- package/dist/__tests__/integration/agent-workflow.test.d.ts +0 -2
- package/dist/__tests__/integration/agent-workflow.test.d.ts.map +0 -1
- package/dist/__tests__/integration/agent-workflow.test.js +0 -256
- package/dist/__tests__/integration/agent-workflow.test.js.map +0 -1
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts +0 -14
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts.map +0 -1
- package/dist/__tests__/integration/bidirectional-consistency.test.js +0 -668
- package/dist/__tests__/integration/bidirectional-consistency.test.js.map +0 -1
- package/dist/__tests__/integration/observer-logging.test.d.ts +0 -2
- package/dist/__tests__/integration/observer-logging.test.d.ts.map +0 -1
- package/dist/__tests__/integration/observer-logging.test.js +0 -517
- package/dist/__tests__/integration/observer-logging.test.js.map +0 -1
- package/dist/__tests__/integration/tree-mirroring.test.d.ts +0 -2
- package/dist/__tests__/integration/tree-mirroring.test.d.ts.map +0 -1
- package/dist/__tests__/integration/tree-mirroring.test.js +0 -117
- package/dist/__tests__/integration/tree-mirroring.test.js.map +0 -1
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts +0 -12
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts.map +0 -1
- package/dist/__tests__/integration/workflow-reparenting.test.js +0 -239
- package/dist/__tests__/integration/workflow-reparenting.test.js.map +0 -1
- package/dist/__tests__/unit/agent.test.d.ts +0 -2
- package/dist/__tests__/unit/agent.test.d.ts.map +0 -1
- package/dist/__tests__/unit/agent.test.js +0 -143
- package/dist/__tests__/unit/agent.test.js.map +0 -1
- package/dist/__tests__/unit/cache-key.test.d.ts +0 -5
- package/dist/__tests__/unit/cache-key.test.d.ts.map +0 -1
- package/dist/__tests__/unit/cache-key.test.js +0 -145
- package/dist/__tests__/unit/cache-key.test.js.map +0 -1
- package/dist/__tests__/unit/cache.test.d.ts +0 -5
- package/dist/__tests__/unit/cache.test.d.ts.map +0 -1
- package/dist/__tests__/unit/cache.test.js +0 -132
- package/dist/__tests__/unit/cache.test.js.map +0 -1
- package/dist/__tests__/unit/context.test.d.ts +0 -2
- package/dist/__tests__/unit/context.test.d.ts.map +0 -1
- package/dist/__tests__/unit/context.test.js +0 -220
- package/dist/__tests__/unit/context.test.js.map +0 -1
- package/dist/__tests__/unit/decorators.test.d.ts +0 -2
- package/dist/__tests__/unit/decorators.test.d.ts.map +0 -1
- package/dist/__tests__/unit/decorators.test.js +0 -162
- package/dist/__tests__/unit/decorators.test.js.map +0 -1
- package/dist/__tests__/unit/introspection-tools.test.d.ts +0 -5
- package/dist/__tests__/unit/introspection-tools.test.d.ts.map +0 -1
- package/dist/__tests__/unit/introspection-tools.test.js +0 -191
- package/dist/__tests__/unit/introspection-tools.test.js.map +0 -1
- package/dist/__tests__/unit/logger.test.d.ts +0 -2
- package/dist/__tests__/unit/logger.test.d.ts.map +0 -1
- package/dist/__tests__/unit/logger.test.js +0 -241
- package/dist/__tests__/unit/logger.test.js.map +0 -1
- package/dist/__tests__/unit/observable.test.d.ts +0 -2
- package/dist/__tests__/unit/observable.test.d.ts.map +0 -1
- package/dist/__tests__/unit/observable.test.js +0 -251
- package/dist/__tests__/unit/observable.test.js.map +0 -1
- package/dist/__tests__/unit/prompt.test.d.ts +0 -2
- package/dist/__tests__/unit/prompt.test.d.ts.map +0 -1
- package/dist/__tests__/unit/prompt.test.js +0 -113
- package/dist/__tests__/unit/prompt.test.js.map +0 -1
- package/dist/__tests__/unit/reflection.test.d.ts +0 -5
- package/dist/__tests__/unit/reflection.test.d.ts.map +0 -1
- package/dist/__tests__/unit/reflection.test.js +0 -160
- package/dist/__tests__/unit/reflection.test.js.map +0 -1
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts +0 -2
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts.map +0 -1
- package/dist/__tests__/unit/tree-debugger-incremental.test.js +0 -136
- package/dist/__tests__/unit/tree-debugger-incremental.test.js.map +0 -1
- package/dist/__tests__/unit/tree-debugger.test.d.ts +0 -2
- package/dist/__tests__/unit/tree-debugger.test.d.ts.map +0 -1
- package/dist/__tests__/unit/tree-debugger.test.js +0 -69
- package/dist/__tests__/unit/tree-debugger.test.js.map +0 -1
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts +0 -2
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts.map +0 -1
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js +0 -154
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js.map +0 -1
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow-detachChild.test.js +0 -76
- package/dist/__tests__/unit/workflow-detachChild.test.js.map +0 -1
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js +0 -122
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js.map +0 -1
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js +0 -140
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js.map +0 -1
- package/dist/__tests__/unit/workflow.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow.test.js +0 -330
- package/dist/__tests__/unit/workflow.test.js.map +0 -1
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness Registry - Singleton harness lifecycle management
|
|
3
|
+
*
|
|
4
|
+
* Implements singleton pattern for managing harness instances across
|
|
5
|
+
* the application. Ensures single shared instance of each harness.
|
|
6
|
+
*
|
|
7
|
+
* @module harnesses
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Type Definitions for Initialization Tracking
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Provider initialization status enum
|
|
14
|
+
*
|
|
15
|
+
* Defines all possible initialization states for type-safe status tracking.
|
|
16
|
+
*/
|
|
17
|
+
export var InitializationStatus;
|
|
18
|
+
(function (InitializationStatus) {
|
|
19
|
+
/** Provider not yet initialized */
|
|
20
|
+
InitializationStatus["UNINITIALIZED"] = "uninitialized";
|
|
21
|
+
/** Currently initializing (in progress) */
|
|
22
|
+
InitializationStatus["INITIALIZING"] = "initializing";
|
|
23
|
+
/** Successfully initialized */
|
|
24
|
+
InitializationStatus["INITIALIZED"] = "initialized";
|
|
25
|
+
/** Initialization failed */
|
|
26
|
+
InitializationStatus["FAILED"] = "failed";
|
|
27
|
+
})(InitializationStatus || (InitializationStatus = {}));
|
|
28
|
+
/**
|
|
29
|
+
* Singleton registry for managing harness instances.
|
|
30
|
+
*
|
|
31
|
+
* This class maintains a single instance of itself and stores harness
|
|
32
|
+
* instances in a Map for efficient lookup by ProviderId.
|
|
33
|
+
*
|
|
34
|
+
* ## Singleton Pattern
|
|
35
|
+
*
|
|
36
|
+
* - Private constructor prevents direct instantiation
|
|
37
|
+
* - Static getInstance() returns the single instance
|
|
38
|
+
* - Lazy initialization creates instance on first call
|
|
39
|
+
*
|
|
40
|
+
* ## Usage
|
|
41
|
+
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* // Get registry instance
|
|
44
|
+
* const registry = HarnessRegistry.getInstance();
|
|
45
|
+
*
|
|
46
|
+
* // Register a harness
|
|
47
|
+
* registry.register(anthropicProvider);
|
|
48
|
+
*
|
|
49
|
+
* // Retrieve a harness
|
|
50
|
+
* const provider = registry.get('anthropic');
|
|
51
|
+
*
|
|
52
|
+
* // Check existence
|
|
53
|
+
* if (registry.has('anthropic')) {
|
|
54
|
+
* // Harness is registered
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* import { HarnessRegistry } from 'groundswell';
|
|
61
|
+
*
|
|
62
|
+
* // Register harnesses at startup
|
|
63
|
+
* const registry = HarnessRegistry.getInstance();
|
|
64
|
+
* registry.register(new AnthropicProvider());
|
|
65
|
+
* registry.register(new ClaudeCodeHarness());
|
|
66
|
+
*
|
|
67
|
+
* // Retrieve harnesses throughout application
|
|
68
|
+
* const anthropic = registry.get('anthropic');
|
|
69
|
+
* if (anthropic) {
|
|
70
|
+
* await anthropic.initialize();
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export class HarnessRegistry {
|
|
75
|
+
/**
|
|
76
|
+
* Private static instance - the singleton instance
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
static instance;
|
|
81
|
+
/**
|
|
82
|
+
* Private provider storage - maps ProviderId to Provider instance
|
|
83
|
+
*
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
providers = new Map();
|
|
87
|
+
/**
|
|
88
|
+
* Private initialization state storage - maps ProviderId to ProviderInitState
|
|
89
|
+
*
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
states = new Map();
|
|
93
|
+
/**
|
|
94
|
+
* Private constructor - prevents direct instantiation
|
|
95
|
+
*
|
|
96
|
+
* Use getInstance() to get the singleton instance.
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
constructor() {
|
|
101
|
+
// Empty constructor for S1
|
|
102
|
+
// Future subtasks may initialize with configuration
|
|
103
|
+
}
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// Static Methods - Singleton Access
|
|
106
|
+
// ============================================================================
|
|
107
|
+
/**
|
|
108
|
+
* Get the singleton HarnessRegistry instance
|
|
109
|
+
*
|
|
110
|
+
* Creates the instance on first call (lazy initialization).
|
|
111
|
+
* Returns the same instance on subsequent calls.
|
|
112
|
+
*
|
|
113
|
+
* @returns The singleton HarnessRegistry instance
|
|
114
|
+
* @remarks Creates instance on first call (lazy initialization).
|
|
115
|
+
* Returns same instance on subsequent calls.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* const registry1 = HarnessRegistry.getInstance();
|
|
120
|
+
* const registry2 = HarnessRegistry.getInstance();
|
|
121
|
+
* console.log(registry1 === registry2); // true
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
static getInstance() {
|
|
125
|
+
if (!HarnessRegistry.instance) {
|
|
126
|
+
HarnessRegistry.instance = new HarnessRegistry();
|
|
127
|
+
}
|
|
128
|
+
return HarnessRegistry.instance;
|
|
129
|
+
}
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// Instance Methods - Registry Operations
|
|
132
|
+
// ============================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Register a provider instance
|
|
135
|
+
*
|
|
136
|
+
* Stores the provider in the registry using its id as the key.
|
|
137
|
+
* Throws an error if a provider with the same id is already registered.
|
|
138
|
+
*
|
|
139
|
+
* @param provider - The provider instance to register
|
|
140
|
+
* @throws {Error} If a provider with the same id is already registered
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```ts
|
|
144
|
+
* const registry = ProviderRegistry.getInstance();
|
|
145
|
+
* const anthropic = new AnthropicProvider();
|
|
146
|
+
* registry.register(anthropic);
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
register(provider) {
|
|
150
|
+
// PATTERN: Check for duplicate before adding
|
|
151
|
+
// GOTCHA: provider.id is readonly - use directly
|
|
152
|
+
// GOTCHA: Throw descriptive error message
|
|
153
|
+
if (this.providers.has(provider.id)) {
|
|
154
|
+
throw new Error(`Provider '${provider.id}' is already registered`);
|
|
155
|
+
}
|
|
156
|
+
this.providers.set(provider.id, provider);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get a registered provider by id
|
|
160
|
+
*
|
|
161
|
+
* Returns the provider instance if registered, otherwise returns undefined.
|
|
162
|
+
* Does NOT throw for missing providers.
|
|
163
|
+
*
|
|
164
|
+
* @param id - The provider id to look up
|
|
165
|
+
* @returns The provider instance, or undefined if not registered
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* const registry = ProviderRegistry.getInstance();
|
|
170
|
+
* const anthropic = registry.get('anthropic');
|
|
171
|
+
* if (anthropic) {
|
|
172
|
+
* console.log('Provider found:', anthropic.id);
|
|
173
|
+
* }
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
get(id) {
|
|
177
|
+
// PATTERN: Return undefined for missing items
|
|
178
|
+
// GOTCHA: Do NOT throw for missing providers
|
|
179
|
+
return this.providers.get(id);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if a provider is registered
|
|
183
|
+
*
|
|
184
|
+
* Returns true if a provider with the given id is registered,
|
|
185
|
+
* otherwise returns false.
|
|
186
|
+
*
|
|
187
|
+
* @param id - The provider id to check
|
|
188
|
+
* @returns true if the provider is registered, false otherwise
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```ts
|
|
192
|
+
* const registry = ProviderRegistry.getInstance();
|
|
193
|
+
* if (registry.has('anthropic')) {
|
|
194
|
+
* console.log('Anthropic provider is available');
|
|
195
|
+
* }
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
has(id) {
|
|
199
|
+
// PATTERN: Use Map.has() for existence check
|
|
200
|
+
return this.providers.has(id);
|
|
201
|
+
}
|
|
202
|
+
// ============================================================================
|
|
203
|
+
// Instance Methods - Provider Initialization
|
|
204
|
+
// ============================================================================
|
|
205
|
+
/**
|
|
206
|
+
* Initialize a single provider with promise caching
|
|
207
|
+
*
|
|
208
|
+
* Initializes a provider with the given options. Multiple concurrent calls
|
|
209
|
+
* to initialize the same provider will share the same promise (no duplicate
|
|
210
|
+
* initialization). Already initialized providers return immediately.
|
|
211
|
+
*
|
|
212
|
+
* ## Promise Caching
|
|
213
|
+
*
|
|
214
|
+
* The initialization promise is cached in the provider's state. Concurrent
|
|
215
|
+
* calls to initialize the same provider will await the same promise.
|
|
216
|
+
*
|
|
217
|
+
* ## State Transitions
|
|
218
|
+
*
|
|
219
|
+
* - UNINITIALIZED → INITIALIZING → INITIALIZED (success)
|
|
220
|
+
* - UNINITIALIZED → INITIALIZING → FAILED (error)
|
|
221
|
+
*
|
|
222
|
+
* @param id - The provider id to initialize (required)
|
|
223
|
+
* @param options - Optional provider configuration options (default: undefined)
|
|
224
|
+
* @returns Promise that resolves when initialization completes
|
|
225
|
+
* @throws {Error} If provider is not registered
|
|
226
|
+
* @throws {Error} If provider initialization fails
|
|
227
|
+
* @side effects May modify internal state, may fail provider if already initialized with different options.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* const registry = ProviderRegistry.getInstance();
|
|
232
|
+
* await registry.initializeProvider('anthropic', { apiKey: 'sk-...' });
|
|
233
|
+
* console.log(registry.isReady('anthropic')); // true
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
async initializeProvider(id, options) {
|
|
237
|
+
// Get provider from registry
|
|
238
|
+
const provider = this.get(id);
|
|
239
|
+
if (!provider) {
|
|
240
|
+
throw new Error(`Provider '${id}' is not registered`);
|
|
241
|
+
}
|
|
242
|
+
// Get or create initialization state
|
|
243
|
+
let state = this.states.get(id);
|
|
244
|
+
if (!state) {
|
|
245
|
+
state = { status: InitializationStatus.UNINITIALIZED };
|
|
246
|
+
this.states.set(id, state);
|
|
247
|
+
}
|
|
248
|
+
// Return cached promise if already initializing
|
|
249
|
+
if (state.status === InitializationStatus.INITIALIZING && state.initPromise) {
|
|
250
|
+
return state.initPromise;
|
|
251
|
+
}
|
|
252
|
+
// Return immediately if already initialized
|
|
253
|
+
if (state.status === InitializationStatus.INITIALIZED) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
// Start initialization
|
|
257
|
+
state.status = InitializationStatus.INITIALIZING;
|
|
258
|
+
state.initPromise = (async () => {
|
|
259
|
+
try {
|
|
260
|
+
await provider.initialize(options);
|
|
261
|
+
state.status = InitializationStatus.INITIALIZED;
|
|
262
|
+
state.initializedAt = Date.now();
|
|
263
|
+
state.error = undefined;
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
state.status = InitializationStatus.FAILED;
|
|
267
|
+
state.error = error;
|
|
268
|
+
throw error; // Re-throw for caller
|
|
269
|
+
}
|
|
270
|
+
})();
|
|
271
|
+
return state.initPromise;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Initialize all registered providers in parallel
|
|
275
|
+
*
|
|
276
|
+
* Uses Promise.allSettled to allow partial success - if one provider fails,
|
|
277
|
+
* others continue initialization. Errors are aggregated in the return value.
|
|
278
|
+
*
|
|
279
|
+
* Provider options are resolved from config.providerDefaults[providerId].
|
|
280
|
+
* If no options are configured for a provider, undefined is passed.
|
|
281
|
+
*
|
|
282
|
+
* ## Parallel Initialization
|
|
283
|
+
*
|
|
284
|
+
* All providers initialize concurrently for faster startup. The method
|
|
285
|
+
* waits for all initialization attempts to complete before returning.
|
|
286
|
+
*
|
|
287
|
+
* ## Error Aggregation
|
|
288
|
+
*
|
|
289
|
+
* This method never throws - all errors are collected in the returned
|
|
290
|
+
* BatchInitResult.failed array. Check this array to identify failed providers.
|
|
291
|
+
*
|
|
292
|
+
* @param config - Global provider configuration with provider defaults (required)
|
|
293
|
+
* @returns Promise resolving to success/failure lists
|
|
294
|
+
* @side effects Modifies internal state, fails providers individually if initialization fails.
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```ts
|
|
298
|
+
* const registry = ProviderRegistry.getInstance();
|
|
299
|
+
* const config = getGlobalProviderConfig();
|
|
300
|
+
* const result = await registry.initializeAll(config);
|
|
301
|
+
*
|
|
302
|
+
* console.log(`Initialized: ${result.success.join(', ')}`);
|
|
303
|
+
* if (result.failed.length > 0) {
|
|
304
|
+
* console.error(`Failed: ${result.failed.map(f => f.providerId).join(', ')}`);
|
|
305
|
+
* }
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
async initializeAll(config) {
|
|
309
|
+
const providerIds = Array.from(this.providers.keys());
|
|
310
|
+
// Map each provider ID to an initialization function
|
|
311
|
+
const initPromises = providerIds.map(async (id) => {
|
|
312
|
+
// Resolve options from config.providerDefaults
|
|
313
|
+
const options = config.providerDefaults?.[id];
|
|
314
|
+
try {
|
|
315
|
+
await this.initializeProvider(id, options);
|
|
316
|
+
return { status: 'success', providerId: id };
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
return {
|
|
320
|
+
status: 'failed',
|
|
321
|
+
providerId: id,
|
|
322
|
+
error: error
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// Use Promise.allSettled for partial success tolerance
|
|
327
|
+
const results = await Promise.allSettled(initPromises);
|
|
328
|
+
// Aggregate results
|
|
329
|
+
const success = [];
|
|
330
|
+
const failed = [];
|
|
331
|
+
for (const result of results) {
|
|
332
|
+
if (result.status === 'fulfilled') {
|
|
333
|
+
const value = result.value;
|
|
334
|
+
if (value.status === 'success') {
|
|
335
|
+
success.push(value.providerId);
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
failed.push({ providerId: value.providerId, error: value.error });
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Promise.allSettled never rejects, but handle defensively
|
|
342
|
+
}
|
|
343
|
+
return { success, failed };
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Get initialization status for a provider
|
|
347
|
+
*
|
|
348
|
+
* Returns the current initialization status for the given provider ID.
|
|
349
|
+
* Unknown providers return UNINITIALIZED status.
|
|
350
|
+
*
|
|
351
|
+
* @param id - The provider id to check
|
|
352
|
+
* @returns Current initialization status
|
|
353
|
+
*
|
|
354
|
+
* @example
|
|
355
|
+
* ```ts
|
|
356
|
+
* const registry = ProviderRegistry.getInstance();
|
|
357
|
+
* const status = registry.getStatus('anthropic');
|
|
358
|
+
* console.log(status); // 'initialized' | 'initializing' | 'failed' | 'uninitialized'
|
|
359
|
+
* ```
|
|
360
|
+
*/
|
|
361
|
+
getStatus(id) {
|
|
362
|
+
return this.states.get(id)?.status ?? InitializationStatus.UNINITIALIZED;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Check if a provider is ready to use
|
|
366
|
+
*
|
|
367
|
+
* Returns true only if the provider has successfully initialized.
|
|
368
|
+
* Use this method to check provider readiness before use.
|
|
369
|
+
*
|
|
370
|
+
* @param id - The provider id to check
|
|
371
|
+
* @returns true if provider is initialized and ready, false otherwise
|
|
372
|
+
*
|
|
373
|
+
* @example
|
|
374
|
+
* ```ts
|
|
375
|
+
* const registry = ProviderRegistry.getInstance();
|
|
376
|
+
* if (registry.isReady('anthropic')) {
|
|
377
|
+
* const provider = registry.get('anthropic');
|
|
378
|
+
* // Use provider
|
|
379
|
+
* }
|
|
380
|
+
* ```
|
|
381
|
+
*/
|
|
382
|
+
isReady(id) {
|
|
383
|
+
return this.getStatus(id) === InitializationStatus.INITIALIZED;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Get all provider initialization states
|
|
387
|
+
*
|
|
388
|
+
* Returns a copy of the internal states Map for health checks,
|
|
389
|
+
* monitoring, and debugging. The returned Map is a shallow copy -
|
|
390
|
+
* modifications to it won't affect internal state.
|
|
391
|
+
*
|
|
392
|
+
* @returns Map of provider ID to initialization state
|
|
393
|
+
*
|
|
394
|
+
* @example
|
|
395
|
+
* ```ts
|
|
396
|
+
* const registry = ProviderRegistry.getInstance();
|
|
397
|
+
* const statuses = registry.getAllStatuses();
|
|
398
|
+
*
|
|
399
|
+
* for (const [id, state] of statuses.entries()) {
|
|
400
|
+
* console.log(`${id}: ${state.status}`);
|
|
401
|
+
* }
|
|
402
|
+
* ```
|
|
403
|
+
*/
|
|
404
|
+
getAllStatuses() {
|
|
405
|
+
// Return a copy to prevent external mutation
|
|
406
|
+
return new Map(this.states);
|
|
407
|
+
}
|
|
408
|
+
// ============================================================================
|
|
409
|
+
// Instance Methods - Provider Termination
|
|
410
|
+
// ============================================================================
|
|
411
|
+
/**
|
|
412
|
+
* Terminate all registered providers with error tolerance
|
|
413
|
+
*
|
|
414
|
+
* Terminates all providers in parallel, ensuring each gets a chance to
|
|
415
|
+
* clean up resources even if some fail. Errors are logged but not thrown.
|
|
416
|
+
* After termination completes, clears the providers and states maps.
|
|
417
|
+
*
|
|
418
|
+
* ## Parallel Termination
|
|
419
|
+
*
|
|
420
|
+
* All providers terminate concurrently using Promise.allSettled.
|
|
421
|
+
* This ensures fast shutdown while allowing partial success.
|
|
422
|
+
*
|
|
423
|
+
* ## Error Handling
|
|
424
|
+
*
|
|
425
|
+
* If a provider's terminate() throws, the error is logged but other
|
|
426
|
+
* providers continue terminating. The method never throws.
|
|
427
|
+
*
|
|
428
|
+
* ## State Cleanup
|
|
429
|
+
*
|
|
430
|
+
* After all termination attempts complete, the providers and states
|
|
431
|
+
* maps are cleared. This releases references and allows re-initialization.
|
|
432
|
+
*
|
|
433
|
+
* @side effects Calls provider.terminate() for each provider, clears internal state maps,
|
|
434
|
+
* logs errors for failed terminations, and performs cleanup for memory-based stores.
|
|
435
|
+
*
|
|
436
|
+
* @example
|
|
437
|
+
* ```ts
|
|
438
|
+
* const registry = ProviderRegistry.getInstance();
|
|
439
|
+
*
|
|
440
|
+
* // Register and initialize providers
|
|
441
|
+
* registry.register(anthropicProvider);
|
|
442
|
+
* registry.register(claudeCodeProvider);
|
|
443
|
+
* await registry.initializeAll(config);
|
|
444
|
+
*
|
|
445
|
+
* // Later, during shutdown
|
|
446
|
+
* await registry.terminateAll();
|
|
447
|
+
*
|
|
448
|
+
* // All providers terminated, maps cleared
|
|
449
|
+
* console.log(registry.has('anthropic')); // false
|
|
450
|
+
* ```
|
|
451
|
+
*/
|
|
452
|
+
async terminateAll() {
|
|
453
|
+
// PATTERN: Convert Map entries to array for iteration
|
|
454
|
+
const terminatePromises = Array.from(this.providers.entries()).map(async ([id, provider]) => {
|
|
455
|
+
try {
|
|
456
|
+
await provider.terminate();
|
|
457
|
+
}
|
|
458
|
+
catch (error) {
|
|
459
|
+
// PATTERN: Log but continue - don't let one failure block others
|
|
460
|
+
console.error(`Failed to terminate provider '${id}':`, error);
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
// PATTERN: Use Promise.allSettled for partial success tolerance
|
|
464
|
+
await Promise.allSettled(terminatePromises);
|
|
465
|
+
// PATTERN: Clear maps AFTER termination completes
|
|
466
|
+
this.providers.clear();
|
|
467
|
+
this.states.clear();
|
|
468
|
+
}
|
|
469
|
+
// ============================================================================
|
|
470
|
+
// Testing Utilities - Internal Use Only
|
|
471
|
+
// ============================================================================
|
|
472
|
+
/**
|
|
473
|
+
* Reset the singleton instance to null
|
|
474
|
+
*
|
|
475
|
+
* **FOR TESTING PURPOSES ONLY**
|
|
476
|
+
*
|
|
477
|
+
* Clears the singleton instance, causing the next call to getInstance()
|
|
478
|
+
* to create a fresh instance. Use in afterEach() hooks to ensure
|
|
479
|
+
* test isolation.
|
|
480
|
+
*
|
|
481
|
+
* @internal
|
|
482
|
+
*
|
|
483
|
+
* @example
|
|
484
|
+
* ```ts
|
|
485
|
+
* import { describe, it, afterEach } from 'vitest';
|
|
486
|
+
*
|
|
487
|
+
* describe('ProviderRegistry', () => {
|
|
488
|
+
* afterEach(() => {
|
|
489
|
+
* ProviderRegistry._resetForTesting();
|
|
490
|
+
* });
|
|
491
|
+
*
|
|
492
|
+
* it('should start fresh', () => {
|
|
493
|
+
* const registry = ProviderRegistry.getInstance();
|
|
494
|
+
* // Test with clean state
|
|
495
|
+
* });
|
|
496
|
+
* });
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
static _resetForTesting() {
|
|
500
|
+
HarnessRegistry.instance = null;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Reset initialization state for testing
|
|
504
|
+
*
|
|
505
|
+
* **FOR TESTING PURPOSES ONLY**
|
|
506
|
+
*
|
|
507
|
+
* Clears the initialization states Map, removing all cached promises
|
|
508
|
+
* and status information. Use in afterEach() hooks along with
|
|
509
|
+
* _resetForTesting() to ensure complete test isolation.
|
|
510
|
+
*
|
|
511
|
+
* @internal
|
|
512
|
+
*
|
|
513
|
+
* @example
|
|
514
|
+
* ```ts
|
|
515
|
+
* import { describe, it, afterEach } from 'vitest';
|
|
516
|
+
* import { ProviderRegistry } from './harness-registry.js';
|
|
517
|
+
*
|
|
518
|
+
* describe('ProviderRegistry', () => {
|
|
519
|
+
* afterEach(() => {
|
|
520
|
+
* const registry = ProviderRegistry.getInstance();
|
|
521
|
+
* registry._resetInitStateForTesting();
|
|
522
|
+
* ProviderRegistry._resetForTesting();
|
|
523
|
+
* });
|
|
524
|
+
*
|
|
525
|
+
* it('should initialize fresh', () => {
|
|
526
|
+
* const registry = ProviderRegistry.getInstance();
|
|
527
|
+
* // Test with clean initialization state
|
|
528
|
+
* });
|
|
529
|
+
* });
|
|
530
|
+
* ```
|
|
531
|
+
*/
|
|
532
|
+
_resetInitStateForTesting() {
|
|
533
|
+
this.states.clear();
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* @deprecated Since v1.2. Use {@link HarnessRegistry}. Retained so existing
|
|
538
|
+
* `import { ProviderRegistry }` callsites (agent.ts, tests, public barrel) keep
|
|
539
|
+
* resolving during the harness-vocabulary migration. Removed when P2.M1/P3.M1/P4.M1
|
|
540
|
+
* collapse the Provider/ProviderId aliases.
|
|
541
|
+
*/
|
|
542
|
+
export const ProviderRegistry = HarnessRegistry;
|
|
543
|
+
//# sourceMappingURL=harness-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-registry.js","sourceRoot":"","sources":["../../src/harnesses/harness-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness module exports
|
|
3
|
+
*
|
|
4
|
+
* Exports the HarnessRegistry class (+ deprecated ProviderRegistry alias)
|
|
5
|
+
* for managing harness instances and InitializationStatus enum for type-safe
|
|
6
|
+
* status checking.
|
|
7
|
+
*/
|
|
8
|
+
export { HarnessRegistry, ProviderRegistry, InitializationStatus } from './harness-registry.js';
|
|
9
|
+
export { MemorySessionStore, FileSessionStore, } from './session-store.js';
|
|
10
|
+
export type { SessionStore, RedisSessionStore, } from './session-store.js';
|
|
11
|
+
export { registerDefaultHarnesses } from './register-defaults.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harnesses/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEhG,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,YAAY,EACZ,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness module exports
|
|
3
|
+
*
|
|
4
|
+
* Exports the HarnessRegistry class (+ deprecated ProviderRegistry alias)
|
|
5
|
+
* for managing harness instances and InitializationStatus enum for type-safe
|
|
6
|
+
* status checking.
|
|
7
|
+
*/
|
|
8
|
+
export { HarnessRegistry, ProviderRegistry, InitializationStatus } from './harness-registry.js';
|
|
9
|
+
export { MemorySessionStore, FileSessionStore, } from './session-store.js';
|
|
10
|
+
export { registerDefaultHarnesses } from './register-defaults.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harnesses/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEhG,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC"}
|