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,691 @@
|
|
|
1
|
+
import type { Tool, MCPServer, Skill, TokenUsage } from "./sdk-primitives.js";
|
|
2
|
+
import type { AgentResponse } from "./agent.js";
|
|
3
|
+
import type { StreamEvent } from "./streaming.js";
|
|
4
|
+
import type { HarnessId, HarnessCapabilities, HarnessHookEvents, HarnessExecutionOptions, HarnessRequest, ToolExecutionRequest, ToolExecutionResult, ModelSpec } from "./harnesses.js";
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Since v1.2. The single `ProviderId` axis is SPLIT:
|
|
7
|
+
* - runtime axis → {@link HarnessId} ('pi' | 'claude-code') — types/harnesses.ts
|
|
8
|
+
* - LLM-host axis → {@link ModelProviderId} (open set) — types/harnesses.ts
|
|
9
|
+
*
|
|
10
|
+
* This union is a SUPERSET kept only so pre-migration consumers (AnthropicProvider
|
|
11
|
+
* id:'anthropic', ProviderRegistry) keep compiling.
|
|
12
|
+
* `'anthropic'` remains for AnthropicProvider (ClaudeCodeHarness alias). The legacy
|
|
13
|
+
* non-harness provider was deleted in v2.0.0 (P4.M1).
|
|
14
|
+
*/
|
|
15
|
+
export type ProviderId = HarnessId | 'anthropic';
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Since v1.2. Use {@link HarnessCapabilities} from types/harnesses.ts.
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // BEFORE (v1.x)
|
|
21
|
+
* import type { ProviderCapabilities } from 'groundswell';
|
|
22
|
+
* // AFTER (v1.2)
|
|
23
|
+
* import type { HarnessCapabilities } from 'groundswell';
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export type ProviderCapabilities = HarnessCapabilities;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Since v1.2. Use {@link HarnessHookEvents} from types/harnesses.ts.
|
|
29
|
+
*
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // BEFORE (v1.x)
|
|
32
|
+
* import type { ProviderHookEvents } from 'groundswell';
|
|
33
|
+
* // AFTER (v1.2)
|
|
34
|
+
* import type { HarnessHookEvents } from 'groundswell';
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export type ProviderHookEvents = HarnessHookEvents;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated Since v1.2. Use {@link HarnessExecutionOptions} from types/harnesses.ts.
|
|
40
|
+
*
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // BEFORE (v1.x)
|
|
43
|
+
* import type { ProviderExecutionOptions } from 'groundswell';
|
|
44
|
+
* // AFTER (v1.2)
|
|
45
|
+
* import type { HarnessExecutionOptions } from 'groundswell';
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export type ProviderExecutionOptions = HarnessExecutionOptions;
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated Since v1.2. Use {@link HarnessRequest} from types/harnesses.ts.
|
|
51
|
+
*
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // BEFORE (v1.x)
|
|
54
|
+
* import type { ProviderRequest } from 'groundswell';
|
|
55
|
+
* // AFTER (v1.2)
|
|
56
|
+
* import type { HarnessRequest } from 'groundswell';
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export type ProviderRequest = HarnessRequest;
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Since v1.2. Use {@link ModelSpec} from types/harnesses.ts directly.
|
|
62
|
+
* `provider` is now the open `ModelProviderId` set (anthropic/openai/google/zai/…).
|
|
63
|
+
*
|
|
64
|
+
* ```typescript
|
|
65
|
+
* // BEFORE (v1.x)
|
|
66
|
+
* import type { ModelSpec } from 'groundswell';
|
|
67
|
+
* // AFTER (v1.2)
|
|
68
|
+
* import type { ModelSpec } from 'groundswell';
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export type { ModelSpec };
|
|
72
|
+
export type { ToolExecutionRequest, ToolExecutionResult };
|
|
73
|
+
/**
|
|
74
|
+
* @deprecated Since v1.2. Use {@link HarnessOptions} from types/harnesses.ts.
|
|
75
|
+
*
|
|
76
|
+
* Note: HarnessOptions is SLIMMED — it omits `sessionStore`, `sessionPersistence`,
|
|
77
|
+
* `sessionTtl`, and `sessionPath` (those move to the concrete harness adapter).
|
|
78
|
+
*
|
|
79
|
+
* ```typescript
|
|
80
|
+
* // BEFORE (v1.x)
|
|
81
|
+
* import type { ProviderOptions } from 'groundswell';
|
|
82
|
+
* const opts: ProviderOptions = { sessionPersistence: 'file', sessionPath: '/tmp' };
|
|
83
|
+
* // AFTER (v1.2)
|
|
84
|
+
* import type { HarnessOptions } from 'groundswell';
|
|
85
|
+
* const opts: HarnessOptions = { apiKey: 'sk-...' };
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export interface ProviderOptions {
|
|
89
|
+
/** API endpoint override */
|
|
90
|
+
endpoint?: string;
|
|
91
|
+
/** API key (if not from environment) */
|
|
92
|
+
apiKey?: string;
|
|
93
|
+
/** Session ID for session-based providers */
|
|
94
|
+
sessionId?: string;
|
|
95
|
+
/** Timeout in milliseconds */
|
|
96
|
+
timeout?: number;
|
|
97
|
+
/** Custom headers */
|
|
98
|
+
headers?: Record<string, string>;
|
|
99
|
+
/**
|
|
100
|
+
* Session store for persistent session storage
|
|
101
|
+
*
|
|
102
|
+
* @remarks
|
|
103
|
+
* Using type import to avoid circular dependency. The actual SessionStore
|
|
104
|
+
* type is imported from '../harnesses/session-store.js'.
|
|
105
|
+
*/
|
|
106
|
+
sessionStore?: import("../harnesses/session-store.js").SessionStore<SessionState>;
|
|
107
|
+
/**
|
|
108
|
+
* Session persistence type
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* Use 'file' for persistent storage across restarts. Mutually exclusive with
|
|
112
|
+
* sessionStore property.
|
|
113
|
+
*
|
|
114
|
+
* When specified, a SessionStore instance will be created automatically.
|
|
115
|
+
* Provide sessionStore directly for custom store implementations.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* // Easy configuration - file persistence
|
|
120
|
+
* { sessionPersistence: 'file' }
|
|
121
|
+
*
|
|
122
|
+
* // Full configuration - custom path and TTL
|
|
123
|
+
* {
|
|
124
|
+
* sessionPersistence: 'file',
|
|
125
|
+
* sessionPath: '/tmp/sessions',
|
|
126
|
+
* sessionTtl: 3600000
|
|
127
|
+
* }
|
|
128
|
+
*
|
|
129
|
+
* // Direct injection - custom store
|
|
130
|
+
* { sessionStore: new CustomStore() }
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
sessionPersistence?: 'memory' | 'file' | 'redis';
|
|
134
|
+
/**
|
|
135
|
+
* Session time-to-live in milliseconds
|
|
136
|
+
*
|
|
137
|
+
* @remarks
|
|
138
|
+
* Sessions expire after this duration. Default: 86400000 (24 hours).
|
|
139
|
+
*
|
|
140
|
+
* Note: TTL enforcement is planned for a future PRP (P2.M2.T2.S2).
|
|
141
|
+
* This option is accepted now for forward compatibility.
|
|
142
|
+
*/
|
|
143
|
+
sessionTtl?: number;
|
|
144
|
+
/**
|
|
145
|
+
* Directory path for file-based session storage
|
|
146
|
+
*
|
|
147
|
+
* @remarks
|
|
148
|
+
* Only used when sessionPersistence is 'file'. Default: './sessions'.
|
|
149
|
+
*/
|
|
150
|
+
sessionPath?: string;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @deprecated Since v1.2. Session state is harness-adapter-internal; do not depend on
|
|
154
|
+
* this Anthropic-SDK-specific shape from public code.
|
|
155
|
+
*
|
|
156
|
+
* ```typescript
|
|
157
|
+
* // BEFORE (v1.x)
|
|
158
|
+
* import type { SessionState } from 'groundswell';
|
|
159
|
+
* // AFTER (v1.2)
|
|
160
|
+
* // Access session state through the harness adapter internals; do not import.
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export interface SessionState {
|
|
164
|
+
/** Conversation history - all user messages in this session */
|
|
165
|
+
history: import("@anthropic-ai/claude-agent-sdk").SDKUserMessage[];
|
|
166
|
+
/** Last result message from the most recent execution */
|
|
167
|
+
lastResult: import("@anthropic-ai/claude-agent-sdk").SDKResultMessage | null;
|
|
168
|
+
/**
|
|
169
|
+
* Unix timestamp in milliseconds when session was created
|
|
170
|
+
*
|
|
171
|
+
* @remarks
|
|
172
|
+
* Set automatically on session creation. Used for TTL expiration
|
|
173
|
+
* calculations alongside lastAccessedAt.
|
|
174
|
+
*
|
|
175
|
+
* Optional for backward compatibility with legacy sessions.
|
|
176
|
+
*/
|
|
177
|
+
createdAt?: number;
|
|
178
|
+
/**
|
|
179
|
+
* Unix timestamp in milliseconds when session was last accessed
|
|
180
|
+
*
|
|
181
|
+
* @remarks
|
|
182
|
+
* Updated automatically on session load/save operations. Used for
|
|
183
|
+
* sliding TTL expiration - sessions expire after lastAccessedAt + TTL.
|
|
184
|
+
*
|
|
185
|
+
* Optional for backward compatibility with legacy sessions.
|
|
186
|
+
*/
|
|
187
|
+
lastAccessedAt?: number;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Tool executor callback function
|
|
191
|
+
* Delegates tool execution to the MCPHandler
|
|
192
|
+
*
|
|
193
|
+
* @remarks
|
|
194
|
+
* Provider implementations receive this callback and use it to execute tools.
|
|
195
|
+
* The provider does not create or manage its own MCPHandler instance.
|
|
196
|
+
*/
|
|
197
|
+
export type ToolExecutor = (request: ToolExecutionRequest) => Promise<ToolExecutionResult>;
|
|
198
|
+
/**
|
|
199
|
+
* Provider response status
|
|
200
|
+
*
|
|
201
|
+
* @deprecated Since v1.5.0. Will be removed in v2.0.0.
|
|
202
|
+
* Use {@link AgentResponseStatus} instead.
|
|
203
|
+
*
|
|
204
|
+
* The values are identical: `'success' | 'error' | 'partial'`
|
|
205
|
+
*
|
|
206
|
+
* ## Migration Guide
|
|
207
|
+
*
|
|
208
|
+
* **Quick migration**: Replace `ProviderResponseStatus` with `AgentResponseStatus`
|
|
209
|
+
*
|
|
210
|
+
* ```typescript
|
|
211
|
+
* // BEFORE (v1.x)
|
|
212
|
+
* import { ProviderResponseStatus } from 'groundswell';
|
|
213
|
+
* const status: ProviderResponseStatus = 'success';
|
|
214
|
+
*
|
|
215
|
+
* // AFTER (v1.5+)
|
|
216
|
+
* import { AgentResponseStatus } from 'groundswell';
|
|
217
|
+
* const status: AgentResponseStatus = 'success';
|
|
218
|
+
* ```
|
|
219
|
+
*
|
|
220
|
+
* Three-state status indicating the outcome of a provider operation.
|
|
221
|
+
* - 'success': Operation completed successfully with valid data
|
|
222
|
+
* - 'error': Operation failed with error details
|
|
223
|
+
* - 'partial': Operation partially completed (streaming, incremental)
|
|
224
|
+
*
|
|
225
|
+
* @see {@link AgentResponseStatus | New response status type}
|
|
226
|
+
*/
|
|
227
|
+
export type ProviderResponseStatus = "success" | "error" | "partial";
|
|
228
|
+
/**
|
|
229
|
+
* Detailed error information for provider operations
|
|
230
|
+
*
|
|
231
|
+
* @deprecated Since v1.5.0. Will be removed in v2.0.0.
|
|
232
|
+
* Use {@link AgentErrorDetails} instead.
|
|
233
|
+
*
|
|
234
|
+
* The structure is identical - only the type name changed.
|
|
235
|
+
*
|
|
236
|
+
* ## Migration Guide
|
|
237
|
+
*
|
|
238
|
+
* **Quick migration**: Replace `ProviderErrorDetails` with `AgentErrorDetails`
|
|
239
|
+
*
|
|
240
|
+
* ```typescript
|
|
241
|
+
* // BEFORE (v1.x)
|
|
242
|
+
* import { ProviderErrorDetails } from 'groundswell';
|
|
243
|
+
* const error: ProviderErrorDetails = {
|
|
244
|
+
* code: 'VALIDATION_FAILED',
|
|
245
|
+
* message: 'Invalid input',
|
|
246
|
+
* details: null,
|
|
247
|
+
* recoverable: false
|
|
248
|
+
* };
|
|
249
|
+
*
|
|
250
|
+
* // AFTER (v1.5+)
|
|
251
|
+
* import { AgentErrorDetails } from 'groundswell';
|
|
252
|
+
* const error: AgentErrorDetails = {
|
|
253
|
+
* code: 'VALIDATION_FAILED',
|
|
254
|
+
* message: 'Invalid input',
|
|
255
|
+
* details: null,
|
|
256
|
+
* recoverable: false
|
|
257
|
+
* };
|
|
258
|
+
* ```
|
|
259
|
+
*
|
|
260
|
+
* Provides structured error details for failed provider operations.
|
|
261
|
+
* Used in ProviderResult when status is 'error'.
|
|
262
|
+
*
|
|
263
|
+
* @see {@link AgentErrorDetails | New error details type}
|
|
264
|
+
*/
|
|
265
|
+
export interface ProviderErrorDetails {
|
|
266
|
+
/**
|
|
267
|
+
* Machine-readable error code
|
|
268
|
+
* Examples: VALIDATION_FAILED, EXECUTION_FAILED, API_REQUEST_FAILED
|
|
269
|
+
*/
|
|
270
|
+
code: string;
|
|
271
|
+
/**
|
|
272
|
+
* Human-readable error description
|
|
273
|
+
* Explains what went wrong in user-friendly terms
|
|
274
|
+
*/
|
|
275
|
+
message: string;
|
|
276
|
+
/**
|
|
277
|
+
* Additional error context
|
|
278
|
+
* May contain structured data about the error for debugging
|
|
279
|
+
*/
|
|
280
|
+
details?: Record<string, unknown> | null;
|
|
281
|
+
/**
|
|
282
|
+
* Whether the error is recoverable
|
|
283
|
+
* Hint for parent workflow retry logic
|
|
284
|
+
*/
|
|
285
|
+
recoverable: boolean;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Metadata about provider operation execution
|
|
289
|
+
*
|
|
290
|
+
* @deprecated Since v1.5.0. Will be removed in v2.0.0.
|
|
291
|
+
* Use {@link AgentResponseMetadata} instead.
|
|
292
|
+
*
|
|
293
|
+
* Field mapping:
|
|
294
|
+
* - `providerId` → `agentId`
|
|
295
|
+
* - All other fields are identical
|
|
296
|
+
*
|
|
297
|
+
* ## Migration Guide
|
|
298
|
+
*
|
|
299
|
+
* **Quick migration**: Replace `ProviderResponseMetadata` with `AgentResponseMetadata` and rename `providerId` to `agentId`
|
|
300
|
+
*
|
|
301
|
+
* ```typescript
|
|
302
|
+
* // BEFORE (v1.x)
|
|
303
|
+
* import { ProviderResponseMetadata } from 'groundswell';
|
|
304
|
+
* const metadata: ProviderResponseMetadata = {
|
|
305
|
+
* providerId: 'anthropic',
|
|
306
|
+
* timestamp: Date.now(),
|
|
307
|
+
* duration: 1523
|
|
308
|
+
* };
|
|
309
|
+
*
|
|
310
|
+
* // AFTER (v1.5+)
|
|
311
|
+
* import { AgentResponseMetadata } from 'groundswell';
|
|
312
|
+
* const metadata: AgentResponseMetadata = {
|
|
313
|
+
* agentId: 'anthropic', // Note: providerId → agentId
|
|
314
|
+
* timestamp: Date.now(),
|
|
315
|
+
* duration: 1523
|
|
316
|
+
* };
|
|
317
|
+
* ```
|
|
318
|
+
*
|
|
319
|
+
* Contains execution context information for provider operations.
|
|
320
|
+
* Always present in ProviderResult regardless of status.
|
|
321
|
+
*
|
|
322
|
+
* @see {@link AgentResponseMetadata | New response metadata type}
|
|
323
|
+
*/
|
|
324
|
+
export interface ProviderResponseMetadata {
|
|
325
|
+
/**
|
|
326
|
+
* Provider identifier
|
|
327
|
+
* ID of the provider that generated this response
|
|
328
|
+
*/
|
|
329
|
+
providerId: string;
|
|
330
|
+
/**
|
|
331
|
+
* Unix timestamp in milliseconds
|
|
332
|
+
* Time when the response was generated
|
|
333
|
+
*/
|
|
334
|
+
timestamp: number;
|
|
335
|
+
/**
|
|
336
|
+
* Execution duration in milliseconds
|
|
337
|
+
* Time taken for the provider operation to complete
|
|
338
|
+
*/
|
|
339
|
+
duration?: number | null;
|
|
340
|
+
/**
|
|
341
|
+
* Request correlation ID
|
|
342
|
+
* Used for tracing requests across distributed systems
|
|
343
|
+
*/
|
|
344
|
+
requestId?: string | null;
|
|
345
|
+
/**
|
|
346
|
+
* Token usage from the API
|
|
347
|
+
* Breakdown of input, output, and cache tokens used
|
|
348
|
+
*/
|
|
349
|
+
usage?: TokenUsage;
|
|
350
|
+
/**
|
|
351
|
+
* Number of tool invocations
|
|
352
|
+
* Count of tool/function calls made during execution
|
|
353
|
+
*/
|
|
354
|
+
toolCalls?: number;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Provider execution result wrapper
|
|
358
|
+
*
|
|
359
|
+
* @deprecated Since v1.5.0. Will be removed in v2.0.0.
|
|
360
|
+
* Use {@link AgentResponse} instead.
|
|
361
|
+
*
|
|
362
|
+
* ## Migration Guide
|
|
363
|
+
*
|
|
364
|
+
* **Quick migration**: Replace `ProviderResult<T>` with `AgentResponse<T>`
|
|
365
|
+
*
|
|
366
|
+
* ```typescript
|
|
367
|
+
* // BEFORE (v1.x)
|
|
368
|
+
* import { ProviderResult } from 'groundswell';
|
|
369
|
+
* const result: ProviderResult<Data> = await provider.execute(...);
|
|
370
|
+
*
|
|
371
|
+
* // AFTER (v1.5+)
|
|
372
|
+
* import { AgentResponse } from 'groundswell';
|
|
373
|
+
* const result: AgentResponse<Data> = await provider.execute(...);
|
|
374
|
+
* ```
|
|
375
|
+
*
|
|
376
|
+
* The structure is identical - only the type name changes:
|
|
377
|
+
* - `status: 'success' | 'error' | 'partial'` (same)
|
|
378
|
+
* - `data: T | null` (same)
|
|
379
|
+
* - `error: ErrorDetails | null` (same structure)
|
|
380
|
+
* - `metadata: ResponseMetadata` (same structure, with `providerId` → `agentId`)
|
|
381
|
+
*
|
|
382
|
+
* Wraps the result of provider execution with status, data, error,
|
|
383
|
+
* and metadata. Uses discriminated union pattern for type safety.
|
|
384
|
+
*
|
|
385
|
+
* ## PRD 6.4 Response Requirements
|
|
386
|
+
*
|
|
387
|
+
* All ProviderResult instances MUST satisfy:
|
|
388
|
+
* 1. **Strict JSON**: Parseable by JSON.parse()
|
|
389
|
+
* 2. **No Prose Wrapping**: No markdown or conversational text
|
|
390
|
+
* 3. **Consistent Structure**: Conforms to this interface
|
|
391
|
+
* 4. **Null over Undefined**: Use null for absent values
|
|
392
|
+
* 5. **Error Responses**: Failed ops return valid JSON with status='error'
|
|
393
|
+
*
|
|
394
|
+
* ## Type Narrowing
|
|
395
|
+
*
|
|
396
|
+
* The status field is a discriminant. Use type guards to narrow:
|
|
397
|
+
* - status='success' → data is T (not null), error is null
|
|
398
|
+
* - status='error' → data is null, error is ProviderErrorDetails (not null)
|
|
399
|
+
* - status='partial' → data is T (not null), error may be null
|
|
400
|
+
*
|
|
401
|
+
* @template T - The type of data returned on success (unknown by default)
|
|
402
|
+
* @see {@link AgentResponse | New response type}
|
|
403
|
+
* @see {@link ProviderResponseStatus}, {@link ProviderErrorDetails}
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* ```ts
|
|
407
|
+
* const result: ProviderResult<{ answer: string }> = {
|
|
408
|
+
* status: 'success',
|
|
409
|
+
* data: { answer: '42' },
|
|
410
|
+
* error: null,
|
|
411
|
+
* metadata: { providerId: 'anthropic', timestamp: Date.now() }
|
|
412
|
+
* };
|
|
413
|
+
* ```
|
|
414
|
+
*/
|
|
415
|
+
export interface ProviderResult<T = unknown> {
|
|
416
|
+
/**
|
|
417
|
+
* Response status discriminator
|
|
418
|
+
* Use for type narrowing: 'success' | 'error' | 'partial'
|
|
419
|
+
*/
|
|
420
|
+
status: ProviderResponseStatus;
|
|
421
|
+
/**
|
|
422
|
+
* Response data
|
|
423
|
+
* Present on success and partial responses, null on error
|
|
424
|
+
*/
|
|
425
|
+
data: T | null;
|
|
426
|
+
/**
|
|
427
|
+
* Error details
|
|
428
|
+
* Present on error responses, null on success
|
|
429
|
+
*/
|
|
430
|
+
error: ProviderErrorDetails | null;
|
|
431
|
+
/**
|
|
432
|
+
* Response metadata
|
|
433
|
+
* Always present, contains execution context
|
|
434
|
+
*/
|
|
435
|
+
metadata: ProviderResponseMetadata;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* @deprecated Since v1.2. Use {@link GlobalHarnessConfig} from types/harnesses.ts.
|
|
439
|
+
*
|
|
440
|
+
* Note the field renames:
|
|
441
|
+
* `defaultProvider` → `defaultHarness`
|
|
442
|
+
* `providerDefaults` → `harnessDefaults`
|
|
443
|
+
* (plus the new `defaultModelProvider` axis)
|
|
444
|
+
*
|
|
445
|
+
* Successor `configureHarnesses()` lands in P1.M2.T2.S1.
|
|
446
|
+
*
|
|
447
|
+
* ```typescript
|
|
448
|
+
* // BEFORE (v1.x)
|
|
449
|
+
* import type { GlobalProviderConfig } from 'groundswell';
|
|
450
|
+
* const cfg: GlobalProviderConfig = { defaultProvider: 'anthropic' };
|
|
451
|
+
* // AFTER (v1.2)
|
|
452
|
+
* import type { GlobalHarnessConfig } from 'groundswell';
|
|
453
|
+
* const cfg: GlobalHarnessConfig = { defaultHarness: 'claude-code', defaultModelProvider: 'anthropic' };
|
|
454
|
+
* ```
|
|
455
|
+
*/
|
|
456
|
+
export interface GlobalProviderConfig {
|
|
457
|
+
/**
|
|
458
|
+
* Default provider to use when none specified
|
|
459
|
+
*/
|
|
460
|
+
defaultProvider: ProviderId;
|
|
461
|
+
/**
|
|
462
|
+
* Per-provider default options
|
|
463
|
+
* Mapped by provider ID, all options are optional
|
|
464
|
+
*/
|
|
465
|
+
providerDefaults?: Partial<Record<ProviderId, ProviderOptions>>;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* @deprecated Since v1.2. Implement {@link Harness} (types/harnesses.ts) instead.
|
|
469
|
+
*
|
|
470
|
+
* NOTE: this interface is kept CONCRETE (not `extends Harness`) because Harness.id is the
|
|
471
|
+
* narrow `HarnessId` while adapters still declare `id: ProviderId` with the legacy
|
|
472
|
+
* `'anthropic'` literal. It is removed when AnthropicProvider→ClaudeCodeHarness
|
|
473
|
+
* (P2.M1) migration completes. The method surface is identical to
|
|
474
|
+
* Harness — only the `id` union width differs today.
|
|
475
|
+
*
|
|
476
|
+
* ```typescript
|
|
477
|
+
* // BEFORE (v1.x)
|
|
478
|
+
* import type { Provider } from 'groundswell';
|
|
479
|
+
* class MyProvider implements Provider { readonly id: ProviderId = 'anthropic'; … }
|
|
480
|
+
* // AFTER (v1.2)
|
|
481
|
+
* import type { Harness } from 'groundswell';
|
|
482
|
+
* class MyHarness implements Harness { readonly id: HarnessId = 'claude-code'; … }
|
|
483
|
+
* ```
|
|
484
|
+
*/
|
|
485
|
+
export interface Provider {
|
|
486
|
+
/**
|
|
487
|
+
* Unique provider identifier
|
|
488
|
+
*
|
|
489
|
+
* Used for provider selection and model qualification.
|
|
490
|
+
* Must be one of the supported {@link ProviderId} values.
|
|
491
|
+
*
|
|
492
|
+
* @readonly
|
|
493
|
+
*
|
|
494
|
+
* @example
|
|
495
|
+
* ```ts
|
|
496
|
+
* readonly id: ProviderId; // 'anthropic'
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
readonly id: ProviderId;
|
|
500
|
+
/**
|
|
501
|
+
* Provider capability flags
|
|
502
|
+
*
|
|
503
|
+
* Indicates which features this provider supports.
|
|
504
|
+
* Used for feature detection and capability queries.
|
|
505
|
+
*
|
|
506
|
+
* @readonly
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```ts
|
|
510
|
+
* readonly capabilities: ProviderCapabilities;
|
|
511
|
+
* // { mcp: true, skills: true, lsp: true, streaming: true, sessions: false, extendedThinking: false }
|
|
512
|
+
* ```
|
|
513
|
+
*/
|
|
514
|
+
readonly capabilities: ProviderCapabilities;
|
|
515
|
+
/**
|
|
516
|
+
* Initialize the provider with optional configuration
|
|
517
|
+
*
|
|
518
|
+
* Called when provider is first instantiated or registered.
|
|
519
|
+
* Providers should perform one-time setup here (SDK clients, connections).
|
|
520
|
+
*
|
|
521
|
+
* @param options - Optional provider-specific configuration
|
|
522
|
+
* @throws ProviderError if initialization fails
|
|
523
|
+
*
|
|
524
|
+
* @example
|
|
525
|
+
* ```ts
|
|
526
|
+
* await provider.initialize({ apiKey: 'sk-...', endpoint: 'https://...' });
|
|
527
|
+
* ```
|
|
528
|
+
*/
|
|
529
|
+
initialize(options?: ProviderOptions): Promise<void>;
|
|
530
|
+
/**
|
|
531
|
+
* Terminate the provider and cleanup resources
|
|
532
|
+
*
|
|
533
|
+
* Called when provider is being shut down or unregistered.
|
|
534
|
+
* Providers should close connections, release resources, etc.
|
|
535
|
+
*
|
|
536
|
+
* @example
|
|
537
|
+
* ```ts
|
|
538
|
+
* await provider.terminate();
|
|
539
|
+
* ```
|
|
540
|
+
*/
|
|
541
|
+
terminate(): Promise<void>;
|
|
542
|
+
/**
|
|
543
|
+
* Execute a prompt request with type-safe response
|
|
544
|
+
*
|
|
545
|
+
* This is the core method for LLM execution. Providers must:
|
|
546
|
+
* 1. Construct the appropriate SDK query/request
|
|
547
|
+
* 2. Handle tool execution via the toolExecutor callback
|
|
548
|
+
* 3. Invoke hooks at appropriate lifecycle points
|
|
549
|
+
* 4. Return an AgentResponse with validated data (or AsyncGenerator for streaming)
|
|
550
|
+
*
|
|
551
|
+
* @typeParam T - The expected response data type (inferred from schema or explicit)
|
|
552
|
+
* @param request - The prompt request with options
|
|
553
|
+
* @param toolExecutor - Callback for executing tools (delegated to MCPHandler)
|
|
554
|
+
* @param hooks - Optional lifecycle hooks for events
|
|
555
|
+
* @returns Promise resolving to AgentResponse or AsyncGenerator for streaming
|
|
556
|
+
*
|
|
557
|
+
* @example <caption>Explicit type parameter</caption>
|
|
558
|
+
* ```ts
|
|
559
|
+
* const response = await provider.execute<{ answer: string }>(
|
|
560
|
+
* { prompt: 'What is 2+2?', options: {} },
|
|
561
|
+
* toolExecutor,
|
|
562
|
+
* hooks
|
|
563
|
+
* );
|
|
564
|
+
* if (response.status === 'success') {
|
|
565
|
+
* console.log(response.data.answer); // Type-safe access
|
|
566
|
+
* }
|
|
567
|
+
* ```
|
|
568
|
+
*
|
|
569
|
+
* @example <caption>Schema inference (if supported)</caption>
|
|
570
|
+
* ```ts
|
|
571
|
+
* const response = await provider.execute(
|
|
572
|
+
* { prompt: '...', options: { outputSchema: AnswerSchema } },
|
|
573
|
+
* toolExecutor
|
|
574
|
+
* );
|
|
575
|
+
* ```
|
|
576
|
+
*
|
|
577
|
+
* @example <caption>Streaming mode</caption>
|
|
578
|
+
* ```ts
|
|
579
|
+
* const stream = await provider.execute(
|
|
580
|
+
* { prompt: '...', options: { streaming: true } },
|
|
581
|
+
* toolExecutor
|
|
582
|
+
* );
|
|
583
|
+
* if (Symbol.asyncIterator in stream) {
|
|
584
|
+
* for await (const event of stream) {
|
|
585
|
+
* // Handle streaming events
|
|
586
|
+
* }
|
|
587
|
+
* }
|
|
588
|
+
* ```
|
|
589
|
+
*/
|
|
590
|
+
execute<T>(request: ProviderRequest, toolExecutor: ToolExecutor, hooks?: ProviderHookEvents): Promise<AgentResponse<T>> | AsyncGenerator<StreamEvent, AgentResponse<T>, unknown>;
|
|
591
|
+
/**
|
|
592
|
+
* Register MCP servers and return available tools
|
|
593
|
+
*
|
|
594
|
+
* Providers should connect to the given MCP servers and discover
|
|
595
|
+
* all available tools. Returns the list of discovered tools.
|
|
596
|
+
*
|
|
597
|
+
* @param servers - Array of MCP server configurations
|
|
598
|
+
* @returns Promise resolving to array of discovered Tool definitions
|
|
599
|
+
*
|
|
600
|
+
* @example
|
|
601
|
+
* ```ts
|
|
602
|
+
* const tools = await provider.registerMCPs([
|
|
603
|
+
* { name: 'filesystem', transport: 'stdio', command: 'python', args: ['mcp_server.py'] }
|
|
604
|
+
* ]);
|
|
605
|
+
* console.log(`Registered ${tools.length} tools`);
|
|
606
|
+
* ```
|
|
607
|
+
*/
|
|
608
|
+
registerMCPs(servers: MCPServer[]): Promise<Tool[]>;
|
|
609
|
+
/**
|
|
610
|
+
* Load skills into the provider
|
|
611
|
+
*
|
|
612
|
+
* Skills are reusable prompt templates or capabilities.
|
|
613
|
+
* Anthropic provider uses system prompts; other providers have their own skill mechanisms.
|
|
614
|
+
*
|
|
615
|
+
* @param skills - Array of skill definitions to load
|
|
616
|
+
*
|
|
617
|
+
* @example
|
|
618
|
+
* ```ts
|
|
619
|
+
* await provider.loadSkills([
|
|
620
|
+
* { name: 'web-search', path: '/skills/web-search' }
|
|
621
|
+
* ]);
|
|
622
|
+
* ```
|
|
623
|
+
*/
|
|
624
|
+
loadSkills(skills: Skill[]): Promise<void>;
|
|
625
|
+
/**
|
|
626
|
+
* Normalize a model string to a ModelSpec
|
|
627
|
+
*
|
|
628
|
+
* Parses model strings in two formats:
|
|
629
|
+
* - Plain: "claude-sonnet-4-20250514" (uses default provider)
|
|
630
|
+
* - Qualified: "anthropic/claude-opus-4-20250514" (explicit provider)
|
|
631
|
+
*
|
|
632
|
+
* @param model - Model string to parse
|
|
633
|
+
* @returns ModelSpec with provider, model, and raw string
|
|
634
|
+
*
|
|
635
|
+
* @example
|
|
636
|
+
* ```ts
|
|
637
|
+
* provider.normalizeModel('claude-sonnet-4')
|
|
638
|
+
* // Returns: { provider: 'anthropic', model: 'claude-sonnet-4', raw: 'claude-sonnet-4' }
|
|
639
|
+
*
|
|
640
|
+
* provider.normalizeModel('anthropic/claude-opus-4')
|
|
641
|
+
* // Returns: { provider: 'anthropic', model: 'claude-opus-4', raw: 'anthropic/claude-opus-4' }
|
|
642
|
+
* ```
|
|
643
|
+
*/
|
|
644
|
+
normalizeModel(model: string): ModelSpec;
|
|
645
|
+
/**
|
|
646
|
+
* Check if a specific capability is supported
|
|
647
|
+
*
|
|
648
|
+
* Convenience method for querying provider capabilities.
|
|
649
|
+
* Equivalent to accessing `this.capabilities[capability]`.
|
|
650
|
+
*
|
|
651
|
+
* @param capability - The capability to check (must be keyof ProviderCapabilities)
|
|
652
|
+
* @returns true if the capability is supported, false otherwise
|
|
653
|
+
*
|
|
654
|
+
* @example
|
|
655
|
+
* ```ts
|
|
656
|
+
* const provider = new AnthropicProvider();
|
|
657
|
+
* if (provider.supports('mcp')) {
|
|
658
|
+
* // Register MCP servers
|
|
659
|
+
* }
|
|
660
|
+
*
|
|
661
|
+
* // Type-safe: TypeScript will error on invalid capability names
|
|
662
|
+
* provider.supports('invalid'); // Type error
|
|
663
|
+
* ```
|
|
664
|
+
*/
|
|
665
|
+
supports(capability: keyof ProviderCapabilities): boolean;
|
|
666
|
+
/**
|
|
667
|
+
* Check if all specified features are supported
|
|
668
|
+
*
|
|
669
|
+
* Convenience method for validating multiple capabilities at once.
|
|
670
|
+
* Returns true only if ALL specified features are supported.
|
|
671
|
+
*
|
|
672
|
+
* @param features - Array of capability keys to check
|
|
673
|
+
* @returns true if all features are supported, false if any are unsupported
|
|
674
|
+
*
|
|
675
|
+
* @example
|
|
676
|
+
* ```ts
|
|
677
|
+
* const provider = new AnthropicProvider();
|
|
678
|
+
* if (provider.requiresFeatures(['mcp', 'streaming'])) {
|
|
679
|
+
* // Enable advanced features requiring both MCP and streaming
|
|
680
|
+
* }
|
|
681
|
+
*
|
|
682
|
+
* // Empty array returns true (no requirements)
|
|
683
|
+
* provider.requiresFeatures([]); // true
|
|
684
|
+
*
|
|
685
|
+
* // Any unsupported feature returns false
|
|
686
|
+
* provider.requiresFeatures(['mcp', 'lsp']); // false if lsp is not supported
|
|
687
|
+
* ```
|
|
688
|
+
*/
|
|
689
|
+
requiresFeatures(features: (keyof ProviderCapabilities)[]): boolean;
|
|
690
|
+
}
|
|
691
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/types/providers.ts"],"names":[],"mappings":"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"}
|