groundswell 0.0.2 → 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 +86 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +204 -0
- package/dist/cache/cache-key.js.map +1 -0
- package/dist/cache/cache.d.ts +104 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +179 -0
- package/dist/cache/cache.js.map +1 -0
- package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/core/agent.d.ts +203 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +833 -0
- package/dist/core/agent.js.map +1 -0
- package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +80 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/event-tree.d.ts +72 -0
- package/dist/core/event-tree.d.ts.map +1 -0
- package/dist/core/event-tree.js +211 -0
- package/dist/core/event-tree.js.map +1 -0
- package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
- package/dist/core/factory.d.ts.map +1 -0
- package/dist/core/factory.js +110 -0
- package/dist/core/factory.js.map +1 -0
- package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +50 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +91 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mcp-handler.d.ts +127 -0
- package/dist/core/mcp-handler.d.ts.map +1 -0
- package/dist/core/mcp-handler.js +323 -0
- package/dist/core/mcp-handler.js.map +1 -0
- package/dist/core/prompt.d.ts +80 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +120 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/workflow-context.d.ts +61 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +358 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workflow.d.ts +543 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +986 -0
- package/dist/core/workflow.js.map +1 -0
- 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/index.d.ts +2 -0
- package/dist/debugger/index.d.ts.map +1 -0
- package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
- package/dist/debugger/index.js.map +1 -0
- package/dist/debugger/tree-debugger.d.ts +240 -0
- package/dist/debugger/tree-debugger.d.ts.map +1 -0
- package/dist/debugger/tree-debugger.js +620 -0
- package/dist/debugger/tree-debugger.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/observed-state.d.ts +32 -0
- package/dist/decorators/observed-state.d.ts.map +1 -0
- package/dist/decorators/observed-state.js +79 -0
- package/dist/decorators/observed-state.js.map +1 -0
- package/dist/decorators/step.d.ts +15 -0
- package/dist/decorators/step.d.ts.map +1 -0
- package/dist/decorators/step.js +192 -0
- package/dist/decorators/step.js.map +1 -0
- package/dist/decorators/task.d.ts +50 -0
- package/dist/decorators/task.d.ts.map +1 -0
- package/dist/decorators/task.js +118 -0
- package/dist/decorators/task.js.map +1 -0
- package/dist/examples/index.d.ts +3 -0
- package/dist/examples/index.d.ts.map +1 -0
- package/{src/examples/index.ts → dist/examples/index.js} +1 -0
- package/dist/examples/index.js.map +1 -0
- package/dist/examples/tdd-orchestrator.d.ts +15 -0
- package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
- package/dist/examples/tdd-orchestrator.js +121 -0
- package/dist/examples/tdd-orchestrator.js.map +1 -0
- package/dist/examples/test-cycle-workflow.d.ts +14 -0
- package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
- package/dist/examples/test-cycle-workflow.js +116 -0
- package/dist/examples/test-cycle-workflow.js.map +1 -0
- 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 +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/reflection/index.d.ts +5 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/reflection.d.ts +84 -0
- package/dist/reflection/reflection.d.ts.map +1 -0
- package/dist/reflection/reflection.js +344 -0
- package/dist/reflection/reflection.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/introspection.d.ts +165 -0
- package/dist/tools/introspection.d.ts.map +1 -0
- package/dist/tools/introspection.js +324 -0
- package/dist/tools/introspection.js.map +1 -0
- package/dist/types/agent.d.ts +1317 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +423 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/decorators.d.ts +40 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/decorators.js +2 -0
- package/dist/types/decorators.js.map +1 -0
- package/dist/types/error-strategy.d.ts +13 -0
- package/dist/types/error-strategy.d.ts.map +1 -0
- package/dist/types/error-strategy.js +2 -0
- package/dist/types/error-strategy.js.map +1 -0
- package/dist/types/error.d.ts +20 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +2 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/events.d.ts +113 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- 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 +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/logging.d.ts +24 -0
- package/dist/types/logging.d.ts.map +1 -0
- package/dist/types/logging.js +2 -0
- package/dist/types/logging.js.map +1 -0
- package/dist/types/observer.d.ts +18 -0
- package/dist/types/observer.d.ts.map +1 -0
- package/dist/types/observer.js +2 -0
- package/dist/types/observer.js.map +1 -0
- package/dist/types/prompt.d.ts +31 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +6 -0
- package/dist/types/prompt.js.map +1 -0
- 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/reflection.d.ts +96 -0
- package/dist/types/reflection.d.ts.map +1 -0
- package/dist/types/reflection.js +24 -0
- package/dist/types/reflection.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/sdk-primitives.d.ts +118 -0
- package/dist/types/sdk-primitives.d.ts.map +1 -0
- package/dist/types/sdk-primitives.js +6 -0
- package/dist/types/sdk-primitives.js.map +1 -0
- package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
- package/dist/types/snapshot.d.ts.map +1 -0
- package/dist/types/snapshot.js +2 -0
- package/dist/types/snapshot.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 +275 -0
- package/dist/types/workflow-context.d.ts.map +1 -0
- package/dist/types/workflow-context.js +8 -0
- package/dist/types/workflow-context.js.map +1 -0
- package/dist/types/workflow.d.ts +30 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +2 -0
- package/dist/types/workflow.js.map +1 -0
- 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/id.d.ts +6 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +12 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- 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/observable.d.ts +54 -0
- package/dist/utils/observable.d.ts.map +1 -0
- package/dist/utils/observable.js +82 -0
- package/dist/utils/observable.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/dist/utils/workflow-error-utils.d.ts +22 -0
- package/dist/utils/workflow-error-utils.d.ts.map +1 -0
- package/dist/utils/workflow-error-utils.js +45 -0
- package/dist/utils/workflow-error-utils.js.map +1 -0
- package/package.json +34 -5
- package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
- package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
- package/.claude/commands/task-breakdown.md +0 -94
- package/.claude/settings.local.json +0 -9
- package/.claude/system_prompts/task-breakdown.md +0 -101
- package/CHANGELOG.md +0 -188
- package/PRD.md +0 -543
- package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
- package/PRPs/PRDs/002-agent-prompt.md +0 -390
- package/PRPs/PRDs/003-agent-prompt.md +0 -943
- package/PRPs/PRDs/004-agent-prompt.md +0 -1136
- package/PRPs/PRDs/tasks-001.json +0 -492
- package/PRPs/README.md +0 -83
- package/PRPs/templates/prp_base.md +0 -222
- package/docs/agent.md +0 -422
- package/docs/prompt.md +0 -419
- package/docs/workflow.md +0 -600
- package/examples/README.md +0 -258
- package/examples/examples/01-basic-workflow.ts +0 -100
- package/examples/examples/02-decorator-options.ts +0 -217
- package/examples/examples/03-parent-child.ts +0 -241
- package/examples/examples/04-observers-debugger.ts +0 -340
- package/examples/examples/05-error-handling.ts +0 -387
- package/examples/examples/06-concurrent-tasks.ts +0 -352
- package/examples/examples/07-agent-loops.ts +0 -432
- package/examples/examples/08-sdk-features.ts +0 -667
- package/examples/examples/09-reflection.ts +0 -573
- package/examples/examples/10-introspection.ts +0 -550
- package/examples/examples/11-reparenting-workflows.ts +0 -269
- package/examples/index.ts +0 -147
- package/examples/utils/helpers.ts +0 -57
- package/package-lock.json +0 -2398
- package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
- package/plan/001_d3bb02af4886/backlog.json +0 -867
- package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
- package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
- package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
- package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
- package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
- package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
- package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
- package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
- package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
- package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
- package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
- package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
- package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
- package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
- package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
- package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
- package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
- package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
- package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
- package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
- package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
- package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
- package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
- package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
- package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
- package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
- package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
- package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
- package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
- package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
- package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
- package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
- package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
- package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
- package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
- package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
- package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
- package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
- package/scripts/generate-llms-full.ts +0 -206
- package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
- package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
- package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
- package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
- package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
- package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
- package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
- package/src/__tests__/adversarial/edge-case.test.ts +0 -703
- package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
- package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
- package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
- package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
- package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
- package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
- package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
- package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
- package/src/__tests__/helpers/index.ts +0 -18
- package/src/__tests__/helpers/tree-verification.ts +0 -257
- package/src/__tests__/integration/agent-workflow.test.ts +0 -256
- package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
- package/src/__tests__/integration/observer-logging.test.ts +0 -643
- package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
- package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
- package/src/__tests__/unit/agent.test.ts +0 -169
- package/src/__tests__/unit/cache-key.test.ts +0 -182
- package/src/__tests__/unit/cache.test.ts +0 -172
- package/src/__tests__/unit/context.test.ts +0 -217
- package/src/__tests__/unit/decorators.test.ts +0 -100
- package/src/__tests__/unit/introspection-tools.test.ts +0 -277
- package/src/__tests__/unit/logger.test.ts +0 -293
- package/src/__tests__/unit/observable.test.ts +0 -321
- package/src/__tests__/unit/prompt.test.ts +0 -135
- package/src/__tests__/unit/reflection.test.ts +0 -210
- package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
- package/src/__tests__/unit/tree-debugger.test.ts +0 -85
- package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
- package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
- package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
- package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
- package/src/__tests__/unit/workflow.test.ts +0 -357
- package/src/cache/cache-key.ts +0 -244
- package/src/cache/cache.ts +0 -236
- package/src/core/agent.ts +0 -593
- package/src/core/event-tree.ts +0 -260
- package/src/core/logger.ts +0 -112
- package/src/core/mcp-handler.ts +0 -184
- package/src/core/prompt.ts +0 -150
- package/src/core/workflow-context.ts +0 -351
- package/src/core/workflow.ts +0 -540
- package/src/debugger/tree-debugger.ts +0 -255
- package/src/decorators/observed-state.ts +0 -95
- package/src/decorators/step.ts +0 -139
- package/src/decorators/task.ts +0 -159
- package/src/examples/tdd-orchestrator.ts +0 -65
- package/src/examples/test-cycle-workflow.ts +0 -64
- package/src/index.ts +0 -142
- package/src/reflection/reflection.ts +0 -407
- package/src/tools/index.ts +0 -36
- package/src/tools/introspection.ts +0 -464
- package/src/types/agent.ts +0 -90
- package/src/types/decorators.ts +0 -32
- package/src/types/error-strategy.ts +0 -13
- package/src/types/error.ts +0 -20
- package/src/types/events.ts +0 -75
- package/src/types/index.ts +0 -55
- package/src/types/logging.ts +0 -24
- package/src/types/observer.ts +0 -18
- package/src/types/prompt.ts +0 -40
- package/src/types/reflection.ts +0 -117
- package/src/types/sdk-primitives.ts +0 -128
- package/src/types/workflow-context.ts +0 -163
- package/src/types/workflow.ts +0 -37
- package/src/utils/id.ts +0 -11
- package/src/utils/index.ts +0 -4
- package/src/utils/observable.ts +0 -106
- package/src/utils/workflow-error-utils.ts +0 -56
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness configuration cascade utilities (PRD §7.6 / §7.7).
|
|
3
|
+
*
|
|
4
|
+
* ## Dual-Cascade Architecture
|
|
5
|
+
*
|
|
6
|
+
* This module provides the v1.2 canonical harness-configuration functions that operate
|
|
7
|
+
* on the `GlobalHarnessConfig` / `HarnessId` / `HarnessOptions` types. It also contains
|
|
8
|
+
* deprecated legacy aliases (`configureProviders` / `getGlobalProviderConfig` /
|
|
9
|
+
* `resolveProviderConfig` / `resetGlobalConfig`) that preserve backward compatibility
|
|
10
|
+
* with existing consumers (`agent.ts`, legacy test files) during the migration.
|
|
11
|
+
*
|
|
12
|
+
* ## Dual-Singleton Design (Scope Decision)
|
|
13
|
+
*
|
|
14
|
+
* The legacy and harness functions validate **disjoint id sets**:
|
|
15
|
+
* - `configureHarnesses` accepts only `'pi' | 'claude-code'`
|
|
16
|
+
* - `configureProviders` accepts the full `ProviderId` superset (including `'anthropic'`)
|
|
17
|
+
*
|
|
18
|
+
* Existing consumers (agent.ts, 4 integration/override test files) pass `'anthropic'`
|
|
19
|
+
* through `configureProviders`. Making it delegate to `configureHarnesses` would throw and break
|
|
20
|
+
* those consumers, which are out of scope for this task (owned by P3.M1 / P4.M1).
|
|
21
|
+
*
|
|
22
|
+
* Therefore, **`configureProviders` keeps its own module-private singleton** with permissive
|
|
23
|
+
* validation, while `resolveProviderConfig` safely delegates to `resolveHarnessConfig` (which
|
|
24
|
+
* performs NO id validation — it treats ids as opaque string keys).
|
|
25
|
+
*
|
|
26
|
+
* Once P3.M1 rewires agent.ts to read the harness path and P4.M1 removes the legacy literals,
|
|
27
|
+
* the legacy singleton can be deleted and the aliases collapse to true delegation.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link GlobalHarnessConfig} in types/harnesses.ts
|
|
30
|
+
* @see {@link GlobalProviderConfig} in types/providers.ts
|
|
31
|
+
*/
|
|
32
|
+
import type { GlobalHarnessConfig, HarnessId, HarnessOptions } from '../types/harnesses.js';
|
|
33
|
+
import type { GlobalProviderConfig, ProviderId, ProviderOptions } from '../types/providers.js';
|
|
34
|
+
/**
|
|
35
|
+
* Configure the global harness settings.
|
|
36
|
+
*
|
|
37
|
+
* Validates and stores the harness configuration. Should be called once at
|
|
38
|
+
* application startup. The harness cascade (PRD §7.7) uses this as the lowest
|
|
39
|
+
* priority layer — agent and prompt overrides take precedence.
|
|
40
|
+
*
|
|
41
|
+
* ## Validation
|
|
42
|
+
*
|
|
43
|
+
* - `defaultHarness` must be `'pi'` or `'claude-code'`
|
|
44
|
+
* - `harnessDefaults` keys (if present) must be valid `HarnessId` values
|
|
45
|
+
* - `defaultModelProvider` is an **open set** (any string) — NOT validated (PRD §7.8)
|
|
46
|
+
*
|
|
47
|
+
* @param config - Global harness configuration
|
|
48
|
+
* @throws {Error} If `defaultHarness` is invalid
|
|
49
|
+
* @throws {Error} If `harnessDefaults` contains invalid harness IDs
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { configureHarnesses } from 'groundswell';
|
|
54
|
+
*
|
|
55
|
+
* configureHarnesses({
|
|
56
|
+
* defaultHarness: 'pi',
|
|
57
|
+
* defaultModelProvider: 'anthropic',
|
|
58
|
+
* harnessDefaults: {
|
|
59
|
+
* 'claude-code': { apiKey: process.env.ANTHROPIC_API_KEY },
|
|
60
|
+
* },
|
|
61
|
+
* });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function configureHarnesses(config: GlobalHarnessConfig): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get the current global harness configuration.
|
|
67
|
+
*
|
|
68
|
+
* Returns the configured value if `configureHarnesses()` was called, otherwise
|
|
69
|
+
* returns the default configuration. **Never returns null.**
|
|
70
|
+
*
|
|
71
|
+
* @returns Current global harness configuration
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* const config = getGlobalHarnessConfig();
|
|
76
|
+
* console.log(config.defaultHarness); // 'pi' (default)
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare function getGlobalHarnessConfig(): GlobalHarnessConfig;
|
|
80
|
+
/**
|
|
81
|
+
* Resolve harness configuration via the PRD §7.7 cascade.
|
|
82
|
+
*
|
|
83
|
+
* A **pure function** — takes `globalConfig` as a parameter and does NOT read
|
|
84
|
+
* the singleton. This purity enables both `resolveHarnessConfig` and the legacy
|
|
85
|
+
* `resolveProviderConfig` (which delegates to this function) to work correctly.
|
|
86
|
+
*
|
|
87
|
+
* ## Provider Resolution (nullish coalescing — prompt wins)
|
|
88
|
+
*
|
|
89
|
+
* ```ts
|
|
90
|
+
* const harness = promptHarness ?? agentHarness ?? globalConfig.defaultHarness;
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* ## Options Merge (object spread — last write wins)
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* const options = {
|
|
97
|
+
* ...globalConfig.harnessDefaults?.[harness], // base
|
|
98
|
+
* ...agentOptions, // middle
|
|
99
|
+
* ...promptOptions, // top
|
|
100
|
+
* };
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* @param globalConfig - Global harness configuration
|
|
104
|
+
* @param agentHarness - Agent-level harness override (optional)
|
|
105
|
+
* @param agentOptions - Agent-level options override (optional)
|
|
106
|
+
* @param promptHarness - Prompt-level harness override (optional)
|
|
107
|
+
* @param promptOptions - Prompt-level options override (optional)
|
|
108
|
+
* @returns Resolved harness and merged options
|
|
109
|
+
*/
|
|
110
|
+
export declare function resolveHarnessConfig(globalConfig: GlobalHarnessConfig, agentHarness?: HarnessId, agentOptions?: HarnessOptions, promptHarness?: HarnessId, promptOptions?: HarnessOptions): {
|
|
111
|
+
harness: HarnessId;
|
|
112
|
+
options: HarnessOptions;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Reset the global harness configuration to defaults.
|
|
116
|
+
*
|
|
117
|
+
* **FOR TESTING PURPOSES ONLY.**
|
|
118
|
+
*
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
export declare function resetGlobalHarnessConfig(): void;
|
|
122
|
+
/**
|
|
123
|
+
* Configure global provider settings.
|
|
124
|
+
*
|
|
125
|
+
* @deprecated Since v1.2. Use {@link configureHarnesses}.
|
|
126
|
+
*
|
|
127
|
+
* This function keeps its **own module-private singleton** (`globalProviderConfig`)
|
|
128
|
+
* with permissive `ProviderId` validation. It does NOT delegate to
|
|
129
|
+
* `configureHarnesses` because the harness validator rejects `'anthropic'`,
|
|
130
|
+
* which existing consumers still pass.
|
|
131
|
+
*
|
|
132
|
+
* @param config - Global provider configuration
|
|
133
|
+
* @throws {Error} If `defaultProvider` is invalid
|
|
134
|
+
* @throws {Error} If `providerDefaults` contains invalid provider IDs
|
|
135
|
+
*/
|
|
136
|
+
export declare function configureProviders(config: GlobalProviderConfig): void;
|
|
137
|
+
/**
|
|
138
|
+
* Get the current global provider configuration.
|
|
139
|
+
*
|
|
140
|
+
* @deprecated Since v1.2. Use {@link getGlobalHarnessConfig}.
|
|
141
|
+
*
|
|
142
|
+
* Reads the legacy `globalProviderConfig` singleton. Returns the configured value
|
|
143
|
+
* if `configureProviders()` was called, otherwise the legacy default
|
|
144
|
+
* (`defaultProvider: 'anthropic'`). **Never returns null.**
|
|
145
|
+
*
|
|
146
|
+
* @returns Current global provider configuration
|
|
147
|
+
*/
|
|
148
|
+
export declare function getGlobalProviderConfig(): GlobalProviderConfig;
|
|
149
|
+
/**
|
|
150
|
+
* Resolve provider configuration via the cascade.
|
|
151
|
+
*
|
|
152
|
+
* @deprecated Since v1.2. Use {@link resolveHarnessConfig}.
|
|
153
|
+
*
|
|
154
|
+
* **Delegates to {@link resolveHarnessConfig}** — the cascade algorithm is shared.
|
|
155
|
+
* Translates the `GlobalProviderConfig` shape to `GlobalHarnessConfig` (field renames),
|
|
156
|
+
* calls `resolveHarnessConfig` (which performs NO id validation — safe for legacy literals),
|
|
157
|
+
* and maps the result back to `{ provider, options }`.
|
|
158
|
+
*
|
|
159
|
+
* @param globalConfig - Global provider configuration from configureProviders()
|
|
160
|
+
* @param agentProvider - Agent-level provider override (optional)
|
|
161
|
+
* @param agentOptions - Agent-level options override (optional)
|
|
162
|
+
* @param promptProvider - Prompt-level provider override (optional)
|
|
163
|
+
* @param promptOptions - Prompt-level options override (optional)
|
|
164
|
+
* @returns Resolved provider and merged options
|
|
165
|
+
*/
|
|
166
|
+
export declare function resolveProviderConfig(globalConfig: GlobalProviderConfig, agentProvider?: ProviderId, agentOptions?: ProviderOptions, promptProvider?: ProviderId, promptOptions?: ProviderOptions): {
|
|
167
|
+
provider: ProviderId;
|
|
168
|
+
options: ProviderOptions;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Reset global configuration to defaults.
|
|
172
|
+
*
|
|
173
|
+
* @deprecated Since v1.2. Use {@link resetGlobalHarnessConfig}.
|
|
174
|
+
*
|
|
175
|
+
* **FOR TESTING PURPOSES ONLY.**
|
|
176
|
+
*
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
export declare function resetGlobalConfig(): void;
|
|
180
|
+
//# sourceMappingURL=harness-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-config.d.ts","sourceRoot":"","sources":["../../src/utils/harness-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,cAAc,EACf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,eAAe,EAChB,MAAM,uBAAuB,CAAC;AA4C/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAuBpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,mBAAmB,EACjC,YAAY,CAAC,EAAE,SAAS,EACxB,YAAY,CAAC,EAAE,cAAc,EAC7B,aAAa,CAAC,EAAE,SAAS,EACzB,aAAa,CAAC,EAAE,cAAc,GAC7B;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAejD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAiDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAuBrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,oBAAoB,EAClC,aAAa,CAAC,EAAE,UAAU,EAC1B,YAAY,CAAC,EAAE,eAAe,EAC9B,cAAc,CAAC,EAAE,UAAU,EAC3B,aAAa,CAAC,EAAE,eAAe,GAC9B;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAmBpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness configuration cascade utilities (PRD §7.6 / §7.7).
|
|
3
|
+
*
|
|
4
|
+
* ## Dual-Cascade Architecture
|
|
5
|
+
*
|
|
6
|
+
* This module provides the v1.2 canonical harness-configuration functions that operate
|
|
7
|
+
* on the `GlobalHarnessConfig` / `HarnessId` / `HarnessOptions` types. It also contains
|
|
8
|
+
* deprecated legacy aliases (`configureProviders` / `getGlobalProviderConfig` /
|
|
9
|
+
* `resolveProviderConfig` / `resetGlobalConfig`) that preserve backward compatibility
|
|
10
|
+
* with existing consumers (`agent.ts`, legacy test files) during the migration.
|
|
11
|
+
*
|
|
12
|
+
* ## Dual-Singleton Design (Scope Decision)
|
|
13
|
+
*
|
|
14
|
+
* The legacy and harness functions validate **disjoint id sets**:
|
|
15
|
+
* - `configureHarnesses` accepts only `'pi' | 'claude-code'`
|
|
16
|
+
* - `configureProviders` accepts the full `ProviderId` superset (including `'anthropic'`)
|
|
17
|
+
*
|
|
18
|
+
* Existing consumers (agent.ts, 4 integration/override test files) pass `'anthropic'`
|
|
19
|
+
* through `configureProviders`. Making it delegate to `configureHarnesses` would throw and break
|
|
20
|
+
* those consumers, which are out of scope for this task (owned by P3.M1 / P4.M1).
|
|
21
|
+
*
|
|
22
|
+
* Therefore, **`configureProviders` keeps its own module-private singleton** with permissive
|
|
23
|
+
* validation, while `resolveProviderConfig` safely delegates to `resolveHarnessConfig` (which
|
|
24
|
+
* performs NO id validation — it treats ids as opaque string keys).
|
|
25
|
+
*
|
|
26
|
+
* Once P3.M1 rewires agent.ts to read the harness path and P4.M1 removes the legacy literals,
|
|
27
|
+
* the legacy singleton can be deleted and the aliases collapse to true delegation.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link GlobalHarnessConfig} in types/harnesses.ts
|
|
30
|
+
* @see {@link GlobalProviderConfig} in types/providers.ts
|
|
31
|
+
*/
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Harness Cascade — Module-Private Storage
|
|
34
|
+
// ============================================================================
|
|
35
|
+
/**
|
|
36
|
+
* Module-private harness configuration singleton.
|
|
37
|
+
*
|
|
38
|
+
* Not exported — access via `getGlobalHarnessConfig()` / `configureHarnesses()`.
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
let globalHarnessConfig = null;
|
|
42
|
+
/**
|
|
43
|
+
* Default harness configuration (PRD §7.1 — `pi` is the vendor-neutral default).
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
const DEFAULT_HARNESS_CONFIG = {
|
|
47
|
+
defaultHarness: 'pi',
|
|
48
|
+
};
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Harness Cascade — Validation Helpers
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* Type guard: checks if a string is a valid `HarnessId` ('pi' | 'claude-code').
|
|
54
|
+
*/
|
|
55
|
+
function isValidHarnessId(value) {
|
|
56
|
+
return value === 'pi' || value === 'claude-code';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Formatted list of supported harnesses for error messages.
|
|
60
|
+
*/
|
|
61
|
+
function getSupportedHarnessesList() {
|
|
62
|
+
return '"pi", "claude-code"';
|
|
63
|
+
}
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Harness Cascade — Public API
|
|
66
|
+
// ============================================================================
|
|
67
|
+
/**
|
|
68
|
+
* Configure the global harness settings.
|
|
69
|
+
*
|
|
70
|
+
* Validates and stores the harness configuration. Should be called once at
|
|
71
|
+
* application startup. The harness cascade (PRD §7.7) uses this as the lowest
|
|
72
|
+
* priority layer — agent and prompt overrides take precedence.
|
|
73
|
+
*
|
|
74
|
+
* ## Validation
|
|
75
|
+
*
|
|
76
|
+
* - `defaultHarness` must be `'pi'` or `'claude-code'`
|
|
77
|
+
* - `harnessDefaults` keys (if present) must be valid `HarnessId` values
|
|
78
|
+
* - `defaultModelProvider` is an **open set** (any string) — NOT validated (PRD §7.8)
|
|
79
|
+
*
|
|
80
|
+
* @param config - Global harness configuration
|
|
81
|
+
* @throws {Error} If `defaultHarness` is invalid
|
|
82
|
+
* @throws {Error} If `harnessDefaults` contains invalid harness IDs
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* import { configureHarnesses } from 'groundswell';
|
|
87
|
+
*
|
|
88
|
+
* configureHarnesses({
|
|
89
|
+
* defaultHarness: 'pi',
|
|
90
|
+
* defaultModelProvider: 'anthropic',
|
|
91
|
+
* harnessDefaults: {
|
|
92
|
+
* 'claude-code': { apiKey: process.env.ANTHROPIC_API_KEY },
|
|
93
|
+
* },
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export function configureHarnesses(config) {
|
|
98
|
+
// Validate defaultHarness
|
|
99
|
+
if (!isValidHarnessId(config.defaultHarness)) {
|
|
100
|
+
throw new Error(`Invalid default harness: "${config.defaultHarness}". ` +
|
|
101
|
+
`Supported harnesses: ${getSupportedHarnessesList()}`);
|
|
102
|
+
}
|
|
103
|
+
// Validate harnessDefaults keys (if present)
|
|
104
|
+
if (config.harnessDefaults) {
|
|
105
|
+
for (const id of Object.keys(config.harnessDefaults)) {
|
|
106
|
+
if (!isValidHarnessId(id)) {
|
|
107
|
+
throw new Error(`Invalid harness in harnessDefaults: "${id}". ` +
|
|
108
|
+
`Supported harnesses: ${getSupportedHarnessesList()}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Store configuration (defaultModelProvider is open set — no validation)
|
|
113
|
+
globalHarnessConfig = config;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the current global harness configuration.
|
|
117
|
+
*
|
|
118
|
+
* Returns the configured value if `configureHarnesses()` was called, otherwise
|
|
119
|
+
* returns the default configuration. **Never returns null.**
|
|
120
|
+
*
|
|
121
|
+
* @returns Current global harness configuration
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```ts
|
|
125
|
+
* const config = getGlobalHarnessConfig();
|
|
126
|
+
* console.log(config.defaultHarness); // 'pi' (default)
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export function getGlobalHarnessConfig() {
|
|
130
|
+
return globalHarnessConfig ?? DEFAULT_HARNESS_CONFIG;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Resolve harness configuration via the PRD §7.7 cascade.
|
|
134
|
+
*
|
|
135
|
+
* A **pure function** — takes `globalConfig` as a parameter and does NOT read
|
|
136
|
+
* the singleton. This purity enables both `resolveHarnessConfig` and the legacy
|
|
137
|
+
* `resolveProviderConfig` (which delegates to this function) to work correctly.
|
|
138
|
+
*
|
|
139
|
+
* ## Provider Resolution (nullish coalescing — prompt wins)
|
|
140
|
+
*
|
|
141
|
+
* ```ts
|
|
142
|
+
* const harness = promptHarness ?? agentHarness ?? globalConfig.defaultHarness;
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* ## Options Merge (object spread — last write wins)
|
|
146
|
+
*
|
|
147
|
+
* ```ts
|
|
148
|
+
* const options = {
|
|
149
|
+
* ...globalConfig.harnessDefaults?.[harness], // base
|
|
150
|
+
* ...agentOptions, // middle
|
|
151
|
+
* ...promptOptions, // top
|
|
152
|
+
* };
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @param globalConfig - Global harness configuration
|
|
156
|
+
* @param agentHarness - Agent-level harness override (optional)
|
|
157
|
+
* @param agentOptions - Agent-level options override (optional)
|
|
158
|
+
* @param promptHarness - Prompt-level harness override (optional)
|
|
159
|
+
* @param promptOptions - Prompt-level options override (optional)
|
|
160
|
+
* @returns Resolved harness and merged options
|
|
161
|
+
*/
|
|
162
|
+
export function resolveHarnessConfig(globalConfig, agentHarness, agentOptions, promptHarness, promptOptions) {
|
|
163
|
+
// Step 1: Resolve harness — prompt wins (first-defined-wins via ??)
|
|
164
|
+
const harness = promptHarness ?? agentHarness ?? globalConfig.defaultHarness;
|
|
165
|
+
// Step 2: Get global defaults for the resolved harness
|
|
166
|
+
const globalDefaults = globalConfig.harnessDefaults?.[harness];
|
|
167
|
+
// Step 3: Merge options — last write wins
|
|
168
|
+
const options = {
|
|
169
|
+
...(globalDefaults ?? {}),
|
|
170
|
+
...(agentOptions ?? {}),
|
|
171
|
+
...(promptOptions ?? {}),
|
|
172
|
+
};
|
|
173
|
+
return { harness, options };
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Reset the global harness configuration to defaults.
|
|
177
|
+
*
|
|
178
|
+
* **FOR TESTING PURPOSES ONLY.**
|
|
179
|
+
*
|
|
180
|
+
* @internal
|
|
181
|
+
*/
|
|
182
|
+
export function resetGlobalHarnessConfig() {
|
|
183
|
+
globalHarnessConfig = null;
|
|
184
|
+
}
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// Deprecated Legacy Aliases — Module-Private Storage (Separate Singleton)
|
|
187
|
+
// ============================================================================
|
|
188
|
+
/**
|
|
189
|
+
* Module-private LEGACY provider configuration singleton.
|
|
190
|
+
*
|
|
191
|
+
* **Separate from `globalHarnessConfig`** — the two validate disjoint id sets
|
|
192
|
+
* (see module-level Scope Decision). This singleton is owned by the deprecated
|
|
193
|
+
* `configureProviders` / `getGlobalProviderConfig` / `resetGlobalConfig` functions.
|
|
194
|
+
* @internal
|
|
195
|
+
*/
|
|
196
|
+
let globalProviderConfig = null;
|
|
197
|
+
/**
|
|
198
|
+
* Default LEGACY provider configuration.
|
|
199
|
+
* @internal
|
|
200
|
+
*/
|
|
201
|
+
const DEFAULT_PROVIDER_CONFIG = {
|
|
202
|
+
defaultProvider: 'anthropic',
|
|
203
|
+
providerDefaults: undefined,
|
|
204
|
+
};
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// Deprecated Legacy Aliases — Validation Helpers
|
|
207
|
+
// ============================================================================
|
|
208
|
+
/**
|
|
209
|
+
* Type guard: checks if a string is a valid `ProviderId`.
|
|
210
|
+
*
|
|
211
|
+
* Accepts 'anthropic' (legacy), 'pi', and 'claude-code'.
|
|
212
|
+
*/
|
|
213
|
+
function isValidProviderId(value) {
|
|
214
|
+
return value === 'anthropic' || value === 'pi' || value === 'claude-code';
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Formatted list of supported providers for LEGACY error messages.
|
|
218
|
+
*/
|
|
219
|
+
function getSupportedProvidersList() {
|
|
220
|
+
return '"anthropic", "pi", "claude-code"';
|
|
221
|
+
}
|
|
222
|
+
// ============================================================================
|
|
223
|
+
// Deprecated Legacy Aliases — Public API
|
|
224
|
+
// ============================================================================
|
|
225
|
+
/**
|
|
226
|
+
* Configure global provider settings.
|
|
227
|
+
*
|
|
228
|
+
* @deprecated Since v1.2. Use {@link configureHarnesses}.
|
|
229
|
+
*
|
|
230
|
+
* This function keeps its **own module-private singleton** (`globalProviderConfig`)
|
|
231
|
+
* with permissive `ProviderId` validation. It does NOT delegate to
|
|
232
|
+
* `configureHarnesses` because the harness validator rejects `'anthropic'`,
|
|
233
|
+
* which existing consumers still pass.
|
|
234
|
+
*
|
|
235
|
+
* @param config - Global provider configuration
|
|
236
|
+
* @throws {Error} If `defaultProvider` is invalid
|
|
237
|
+
* @throws {Error} If `providerDefaults` contains invalid provider IDs
|
|
238
|
+
*/
|
|
239
|
+
export function configureProviders(config) {
|
|
240
|
+
// Step 1: Validate defaultProvider
|
|
241
|
+
if (!isValidProviderId(config.defaultProvider)) {
|
|
242
|
+
throw new Error(`Invalid default provider: "${config.defaultProvider}". ` +
|
|
243
|
+
`Supported providers: ${getSupportedProvidersList()}`);
|
|
244
|
+
}
|
|
245
|
+
// Step 2: Validate providerDefaults keys (if present)
|
|
246
|
+
if (config.providerDefaults) {
|
|
247
|
+
for (const providerId of Object.keys(config.providerDefaults)) {
|
|
248
|
+
if (!isValidProviderId(providerId)) {
|
|
249
|
+
throw new Error(`Invalid provider in providerDefaults: "${providerId}". ` +
|
|
250
|
+
`Supported providers: ${getSupportedProvidersList()}`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Step 3: Store configuration in the LEGACY singleton (NOT configureHarnesses)
|
|
255
|
+
globalProviderConfig = config;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get the current global provider configuration.
|
|
259
|
+
*
|
|
260
|
+
* @deprecated Since v1.2. Use {@link getGlobalHarnessConfig}.
|
|
261
|
+
*
|
|
262
|
+
* Reads the legacy `globalProviderConfig` singleton. Returns the configured value
|
|
263
|
+
* if `configureProviders()` was called, otherwise the legacy default
|
|
264
|
+
* (`defaultProvider: 'anthropic'`). **Never returns null.**
|
|
265
|
+
*
|
|
266
|
+
* @returns Current global provider configuration
|
|
267
|
+
*/
|
|
268
|
+
export function getGlobalProviderConfig() {
|
|
269
|
+
return globalProviderConfig ?? DEFAULT_PROVIDER_CONFIG;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Resolve provider configuration via the cascade.
|
|
273
|
+
*
|
|
274
|
+
* @deprecated Since v1.2. Use {@link resolveHarnessConfig}.
|
|
275
|
+
*
|
|
276
|
+
* **Delegates to {@link resolveHarnessConfig}** — the cascade algorithm is shared.
|
|
277
|
+
* Translates the `GlobalProviderConfig` shape to `GlobalHarnessConfig` (field renames),
|
|
278
|
+
* calls `resolveHarnessConfig` (which performs NO id validation — safe for legacy literals),
|
|
279
|
+
* and maps the result back to `{ provider, options }`.
|
|
280
|
+
*
|
|
281
|
+
* @param globalConfig - Global provider configuration from configureProviders()
|
|
282
|
+
* @param agentProvider - Agent-level provider override (optional)
|
|
283
|
+
* @param agentOptions - Agent-level options override (optional)
|
|
284
|
+
* @param promptProvider - Prompt-level provider override (optional)
|
|
285
|
+
* @param promptOptions - Prompt-level options override (optional)
|
|
286
|
+
* @returns Resolved provider and merged options
|
|
287
|
+
*/
|
|
288
|
+
export function resolveProviderConfig(globalConfig, agentProvider, agentOptions, promptProvider, promptOptions) {
|
|
289
|
+
// Translate GlobalProviderConfig → GlobalHarnessConfig shape (unsound but runtime-safe casts)
|
|
290
|
+
const harnessGlobal = {
|
|
291
|
+
defaultHarness: globalConfig.defaultProvider,
|
|
292
|
+
harnessDefaults: globalConfig.providerDefaults,
|
|
293
|
+
};
|
|
294
|
+
// Delegate to resolveHarnessConfig (pure function — no singleton coupling)
|
|
295
|
+
const { harness, options } = resolveHarnessConfig(harnessGlobal, agentProvider, agentOptions, promptProvider, promptOptions);
|
|
296
|
+
// Map back to legacy shape
|
|
297
|
+
return { provider: harness, options: options };
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Reset global configuration to defaults.
|
|
301
|
+
*
|
|
302
|
+
* @deprecated Since v1.2. Use {@link resetGlobalHarnessConfig}.
|
|
303
|
+
*
|
|
304
|
+
* **FOR TESTING PURPOSES ONLY.**
|
|
305
|
+
*
|
|
306
|
+
* @internal
|
|
307
|
+
*/
|
|
308
|
+
export function resetGlobalConfig() {
|
|
309
|
+
globalProviderConfig = null;
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=harness-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-config.js","sourceRoot":"","sources":["../../src/utils/harness-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAMnC"}
|
package/dist/utils/id.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a unique identifier
|
|
3
|
+
* Uses crypto.randomUUID if available, falls back to timestamp + random
|
|
4
|
+
*/
|
|
5
|
+
export function generateId() {
|
|
6
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
7
|
+
return crypto.randomUUID();
|
|
8
|
+
}
|
|
9
|
+
// Fallback for environments without crypto.randomUUID
|
|
10
|
+
return `${Date.now().toString(36)}-${Math.random().toString(36).substring(2, 11)}`;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IACD,sDAAsD;IACtD,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { analyzeErrorForRestart, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_SET } from './restart-analysis.js';
|
|
2
|
+
export { validateAgentResponse } from './agent-validation.js';
|
|
3
|
+
export { configureProviders } from './provider-config.js';
|
|
4
|
+
export { configureHarnesses, getGlobalHarnessConfig, resolveHarnessConfig, resetGlobalHarnessConfig } from './harness-config.js';
|
|
5
|
+
export { delay } from './delay.js';
|
|
6
|
+
export { generateId } from './id.js';
|
|
7
|
+
export { mergeWorkflowErrors } from './workflow-error-utils.js';
|
|
8
|
+
export { parseModelSpec, formatModelForProvider } from './model-spec.js';
|
|
9
|
+
export { Observable } from './observable.js';
|
|
10
|
+
export type { Subscription, Observer } from './observable.js';
|
|
11
|
+
export type { ValidationResult } from './agent-validation.js';
|
|
12
|
+
export { serializeSession, deserializeSession, SessionSerializationError } from './session-serialization.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACjI,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { analyzeErrorForRestart, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_SET } from './restart-analysis.js';
|
|
2
|
+
export { validateAgentResponse } from './agent-validation.js';
|
|
3
|
+
export { configureProviders } from './provider-config.js';
|
|
4
|
+
export { configureHarnesses, getGlobalHarnessConfig, resolveHarnessConfig, resetGlobalHarnessConfig } from './harness-config.js';
|
|
5
|
+
export { delay } from './delay.js';
|
|
6
|
+
export { generateId } from './id.js';
|
|
7
|
+
export { mergeWorkflowErrors } from './workflow-error-utils.js';
|
|
8
|
+
export { parseModelSpec, formatModelForProvider } from './model-spec.js';
|
|
9
|
+
export { Observable } from './observable.js';
|
|
10
|
+
export { serializeSession, deserializeSession, SessionSerializationError } from './session-serialization.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACjI,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC"}
|