groundswell 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +188 -0
- package/README.md +99 -5
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts +16 -0
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/attachChild-performance.test.js +187 -0
- package/dist/__tests__/adversarial/attachChild-performance.test.js.map +1 -0
- package/dist/__tests__/adversarial/circular-reference.test.d.ts +13 -0
- package/dist/__tests__/adversarial/circular-reference.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/circular-reference.test.js +92 -0
- package/dist/__tests__/adversarial/circular-reference.test.js.map +1 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts +16 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.js +127 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.js.map +1 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts +21 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js +667 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js.map +1 -0
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts +6 -0
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/deep-analysis.test.js +877 -0
- package/dist/__tests__/adversarial/deep-analysis.test.js.map +1 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts +13 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js +186 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js.map +1 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts +6 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js +626 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js.map +1 -0
- package/dist/__tests__/adversarial/edge-case.test.d.ts +6 -0
- package/dist/__tests__/adversarial/edge-case.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/edge-case.test.js +857 -0
- package/dist/__tests__/adversarial/edge-case.test.js.map +1 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts +20 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.js +907 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.js.map +1 -0
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts +2 -0
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/incremental-performance.test.js +113 -0
- package/dist/__tests__/adversarial/incremental-performance.test.js.map +1 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts +22 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js +383 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js.map +1 -0
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts +21 -0
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/observer-propagation.test.js +404 -0
- package/dist/__tests__/adversarial/observer-propagation.test.js.map +1 -0
- package/dist/__tests__/adversarial/parent-validation.test.d.ts +13 -0
- package/dist/__tests__/adversarial/parent-validation.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/parent-validation.test.js +128 -0
- package/dist/__tests__/adversarial/parent-validation.test.js.map +1 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts +20 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js +482 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js.map +1 -0
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts +6 -0
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/prd-compliance.test.js +886 -0
- package/dist/__tests__/adversarial/prd-compliance.test.js.map +1 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts +22 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts.map +1 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.js +1843 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.js.map +1 -0
- package/dist/__tests__/helpers/index.d.ts +10 -0
- package/dist/__tests__/helpers/index.d.ts.map +1 -0
- package/dist/__tests__/helpers/index.js +10 -0
- package/dist/__tests__/helpers/index.js.map +1 -0
- package/dist/__tests__/helpers/tree-verification.d.ts +90 -0
- package/dist/__tests__/helpers/tree-verification.d.ts.map +1 -0
- package/dist/__tests__/helpers/tree-verification.js +202 -0
- package/dist/__tests__/helpers/tree-verification.js.map +1 -0
- package/dist/__tests__/integration/agent-workflow.test.d.ts +2 -0
- package/dist/__tests__/integration/agent-workflow.test.d.ts.map +1 -0
- package/dist/__tests__/integration/agent-workflow.test.js +256 -0
- package/dist/__tests__/integration/agent-workflow.test.js.map +1 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts +14 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts.map +1 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.js +668 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.js.map +1 -0
- package/dist/__tests__/integration/observer-logging.test.d.ts +2 -0
- package/dist/__tests__/integration/observer-logging.test.d.ts.map +1 -0
- package/dist/__tests__/integration/observer-logging.test.js +517 -0
- package/dist/__tests__/integration/observer-logging.test.js.map +1 -0
- package/dist/__tests__/integration/tree-mirroring.test.d.ts +2 -0
- package/dist/__tests__/integration/tree-mirroring.test.d.ts.map +1 -0
- package/dist/__tests__/integration/tree-mirroring.test.js +117 -0
- package/dist/__tests__/integration/tree-mirroring.test.js.map +1 -0
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts +12 -0
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts.map +1 -0
- package/dist/__tests__/integration/workflow-reparenting.test.js +239 -0
- package/dist/__tests__/integration/workflow-reparenting.test.js.map +1 -0
- package/dist/__tests__/unit/agent.test.d.ts +2 -0
- package/dist/__tests__/unit/agent.test.d.ts.map +1 -0
- package/dist/__tests__/unit/agent.test.js +143 -0
- package/dist/__tests__/unit/agent.test.js.map +1 -0
- package/dist/__tests__/unit/cache-key.test.d.ts +5 -0
- package/dist/__tests__/unit/cache-key.test.d.ts.map +1 -0
- package/dist/__tests__/unit/cache-key.test.js +145 -0
- package/dist/__tests__/unit/cache-key.test.js.map +1 -0
- package/dist/__tests__/unit/cache.test.d.ts +5 -0
- package/dist/__tests__/unit/cache.test.d.ts.map +1 -0
- package/dist/__tests__/unit/cache.test.js +132 -0
- package/dist/__tests__/unit/cache.test.js.map +1 -0
- package/dist/__tests__/unit/context.test.d.ts +2 -0
- package/dist/__tests__/unit/context.test.d.ts.map +1 -0
- package/dist/__tests__/unit/context.test.js +220 -0
- package/dist/__tests__/unit/context.test.js.map +1 -0
- package/dist/__tests__/unit/decorators.test.d.ts +2 -0
- package/dist/__tests__/unit/decorators.test.d.ts.map +1 -0
- package/dist/__tests__/unit/decorators.test.js +162 -0
- package/dist/__tests__/unit/decorators.test.js.map +1 -0
- package/dist/__tests__/unit/introspection-tools.test.d.ts +5 -0
- package/dist/__tests__/unit/introspection-tools.test.d.ts.map +1 -0
- package/dist/__tests__/unit/introspection-tools.test.js +191 -0
- package/dist/__tests__/unit/introspection-tools.test.js.map +1 -0
- package/dist/__tests__/unit/logger.test.d.ts +2 -0
- package/dist/__tests__/unit/logger.test.d.ts.map +1 -0
- package/dist/__tests__/unit/logger.test.js +241 -0
- package/dist/__tests__/unit/logger.test.js.map +1 -0
- package/dist/__tests__/unit/observable.test.d.ts +2 -0
- package/dist/__tests__/unit/observable.test.d.ts.map +1 -0
- package/dist/__tests__/unit/observable.test.js +251 -0
- package/dist/__tests__/unit/observable.test.js.map +1 -0
- package/dist/__tests__/unit/prompt.test.d.ts +2 -0
- package/dist/__tests__/unit/prompt.test.d.ts.map +1 -0
- package/dist/__tests__/unit/prompt.test.js +113 -0
- package/dist/__tests__/unit/prompt.test.js.map +1 -0
- package/dist/__tests__/unit/reflection.test.d.ts +5 -0
- package/dist/__tests__/unit/reflection.test.d.ts.map +1 -0
- package/dist/__tests__/unit/reflection.test.js +160 -0
- package/dist/__tests__/unit/reflection.test.js.map +1 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts +2 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts.map +1 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.js +136 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.js.map +1 -0
- package/dist/__tests__/unit/tree-debugger.test.d.ts +2 -0
- package/dist/__tests__/unit/tree-debugger.test.d.ts.map +1 -0
- package/dist/__tests__/unit/tree-debugger.test.js +69 -0
- package/dist/__tests__/unit/tree-debugger.test.js.map +1 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts +2 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts.map +1 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js +154 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js.map +1 -0
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow-detachChild.test.js +76 -0
- package/dist/__tests__/unit/workflow-detachChild.test.js.map +1 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js +122 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js.map +1 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js +140 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js.map +1 -0
- package/dist/__tests__/unit/workflow.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow.test.js +330 -0
- package/dist/__tests__/unit/workflow.test.js.map +1 -0
- package/dist/cache/cache-key.d.ts +66 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +195 -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 +112 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +426 -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 +69 -0
- package/dist/core/mcp-handler.d.ts.map +1 -0
- package/dist/core/mcp-handler.js +143 -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 +57 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +263 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workflow.d.ts +241 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +464 -0
- package/dist/core/workflow.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 +71 -0
- package/dist/debugger/tree-debugger.d.ts.map +1 -0
- package/dist/debugger/tree-debugger.js +198 -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 +110 -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/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -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 +329 -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 +66 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +6 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/decorators.d.ts +31 -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 +87 -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/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -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/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/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/workflow-context.d.ts +139 -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/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/{src/utils/index.ts → dist/utils/index.d.ts} +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.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/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 +7 -2
- package/.claude/settings.local.json +0 -9
- package/.claude/system_prompts/task-breakdown.md +0 -100
- package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
- package/PRPs/PRDs/001-hierarchical-workflow-engine.md +0 -543
- 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 -244
- 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/index.ts +0 -143
- package/examples/utils/helpers.ts +0 -57
- package/llms_full.txt +0 -5890
- package/plan/P1P2/PRP.md +0 -527
- package/plan/P1P2/research/LRU_CACHE_BEST_PRACTICES.md +0 -1929
- package/plan/P1P2/research/LRU_CACHE_CODE_PATTERNS.md +0 -857
- package/plan/P1P2/research/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
- package/plan/P1P2/research/LRU_CACHE_RESEARCH_INDEX.md +0 -424
- package/plan/P1P2/research/REFLECTION_INDEX.md +0 -291
- package/plan/P1P2/research/REFLECTION_RESEARCH_REPORT.md +0 -1342
- package/plan/P1P2/research/RESEARCH_SUMMARY.md +0 -342
- package/plan/P1P2/research/anthropic-sdk.md +0 -174
- package/plan/P1P2/research/async-local-storage.md +0 -200
- package/plan/P1P2/research/reflection-code-patterns.md +0 -1205
- package/plan/P1P2/research/reflection-decision-matrix.md +0 -421
- package/plan/P1P2/research/reflection-implementation-guide.md +0 -1341
- package/plan/P1P2/research/reflection-integration-guide.md +0 -834
- package/plan/P1P2/research/reflection-patterns.md +0 -1468
- package/plan/P1P2/research/reflection-quick-reference.md +0 -558
- package/plan/P1P2/research/zod-schema.md +0 -152
- package/plan/P3P4/PRP.md +0 -1388
- package/plan/P3P4/research/caching-lru.md +0 -116
- package/plan/P3P4/research/introspection-tools.md +0 -177
- package/plan/P3P4/research/reflection-patterns.md +0 -117
- package/plan/P4P5/PRP.md +0 -1136
- package/plan/P4P5/research/RESEARCH_SUMMARY.md +0 -151
- package/plan/architecture/external_deps.md +0 -358
- package/plan/architecture/system_context.md +0 -242
- package/plan/backlog.json +0 -867
- package/plan/research/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
- package/plan/research/README-INTROSPECTION.md +0 -352
- package/plan/research/agent-introspection-patterns.md +0 -1085
- package/plan/research/introspection-security-guide.md +0 -928
- package/plan/research/introspection-tool-examples.md +0 -875
- package/scripts/generate-llms-full.ts +0 -206
- package/src/__tests__/integration/agent-workflow.test.ts +0 -256
- package/src/__tests__/integration/tree-mirroring.test.ts +0 -114
- 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 -138
- package/src/__tests__/unit/decorators.test.ts +0 -100
- package/src/__tests__/unit/introspection-tools.test.ts +0 -277
- package/src/__tests__/unit/prompt.test.ts +0 -135
- package/src/__tests__/unit/reflection.test.ts +0 -210
- package/src/__tests__/unit/tree-debugger.test.ts +0 -85
- package/src/__tests__/unit/workflow.test.ts +0 -81
- package/src/cache/cache-key.ts +0 -244
- package/src/cache/cache.ts +0 -236
- package/src/core/agent.ts +0 -573
- package/src/core/event-tree.ts +0 -260
- package/src/core/logger.ts +0 -87
- package/src/core/mcp-handler.ts +0 -184
- package/src/core/prompt.ts +0 -150
- package/src/core/workflow-context.ts +0 -349
- package/src/core/workflow.ts +0 -302
- package/src/debugger/tree-debugger.ts +0 -210
- package/src/decorators/observed-state.ts +0 -95
- package/src/decorators/step.ts +0 -139
- package/src/decorators/task.ts +0 -96
- package/src/examples/tdd-orchestrator.ts +0 -65
- package/src/examples/test-cycle-workflow.ts +0 -64
- package/src/index.ts +0 -140
- 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 -25
- package/src/types/error-strategy.ts +0 -13
- package/src/types/error.ts +0 -20
- package/src/types/events.ts +0 -74
- 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/observable.ts +0 -77
- package/tasks.json +0 -0
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# Phase 4 & 5 Research Summary
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This document summarizes the research findings that informed the PRP for Phases 4 & 5 of the Groundswell orchestration framework.
|
|
6
|
-
|
|
7
|
-
## Phase 4 Status: COMPLETE
|
|
8
|
-
|
|
9
|
-
All Phase 4 implementations are complete and verified. The research from P3P4 was applied successfully:
|
|
10
|
-
|
|
11
|
-
### Dynamic Factory Functions (P4.1)
|
|
12
|
-
- **Implementation**: `/src/core/factory.ts` (124 lines)
|
|
13
|
-
- **Functions**: `createWorkflow()`, `createAgent()`, `createPrompt()`, `quickWorkflow()`, `quickAgent()`
|
|
14
|
-
- **Pattern**: Factory pattern for dynamic entity creation at runtime
|
|
15
|
-
|
|
16
|
-
### Dynamic Context Revision (P4.2)
|
|
17
|
-
- **Implementation**: `/src/core/workflow-context.ts` (349 lines)
|
|
18
|
-
- **Method**: `replaceLastPromptResult<T>(newPrompt, agent)`
|
|
19
|
-
- **Pattern**: Marks previous node as 'revised', attaches new result as sibling
|
|
20
|
-
|
|
21
|
-
### Introspection Tools (P4.3-P4.5)
|
|
22
|
-
- **Implementation**: `/src/tools/introspection.ts` (465 lines)
|
|
23
|
-
- **Tools Defined**: 6 tools per PRD Section 11
|
|
24
|
-
- **Pattern**: Anthropic Tool format with `input_schema` JSON Schema
|
|
25
|
-
|
|
26
|
-
## Phase 5 Research: Example Implementation
|
|
27
|
-
|
|
28
|
-
### Existing Example Patterns (Examples 1-6)
|
|
29
|
-
|
|
30
|
-
**File Structure Pattern**:
|
|
31
|
-
```
|
|
32
|
-
/examples/examples/NN-feature-name.ts
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**Code Structure**:
|
|
36
|
-
1. JSDoc header with "Demonstrates:" section
|
|
37
|
-
2. Imports (groundswell, then helpers)
|
|
38
|
-
3. Workflow/Agent class definitions
|
|
39
|
-
4. `run*Example()` export function with Parts 1-N
|
|
40
|
-
5. Direct execution check via `import.meta.url`
|
|
41
|
-
|
|
42
|
-
**Output Pattern**:
|
|
43
|
-
- `printHeader()` for main sections
|
|
44
|
-
- `printSection()` for subsections
|
|
45
|
-
- Console output showing actual feature behavior
|
|
46
|
-
- Tree visualization at end
|
|
47
|
-
|
|
48
|
-
### Example 7: Agent Loops with Observability
|
|
49
|
-
|
|
50
|
-
**Key Patterns to Demonstrate**:
|
|
51
|
-
1. Agent.prompt() inside ctx.step() loop
|
|
52
|
-
2. Multi-agent routing based on data type
|
|
53
|
-
3. Full event tree with timing per iteration
|
|
54
|
-
4. Cache metrics display
|
|
55
|
-
|
|
56
|
-
**Reference Research**: `/plan/P3P4/research/caching-lru.md`
|
|
57
|
-
- Shows cache hit/miss tracking
|
|
58
|
-
- Metrics include: hits, misses, size, itemCount
|
|
59
|
-
|
|
60
|
-
### Example 8: SDK Features
|
|
61
|
-
|
|
62
|
-
**Key Patterns to Demonstrate**:
|
|
63
|
-
1. Tool definition in Anthropic format
|
|
64
|
-
2. MCPHandler registration pattern
|
|
65
|
-
3. Hook lifecycle (pre/post tool, session start/end)
|
|
66
|
-
4. Skill loading from path
|
|
67
|
-
|
|
68
|
-
**Reference Research**: `/plan/P1P2/research/anthropic-sdk.md`
|
|
69
|
-
- Tool schema follows JSON Schema spec
|
|
70
|
-
- Hooks must be async functions
|
|
71
|
-
- Skills inject SKILL.md content into system prompt
|
|
72
|
-
|
|
73
|
-
### Example 9: Multi-level Reflection
|
|
74
|
-
|
|
75
|
-
**Key Patterns to Demonstrate**:
|
|
76
|
-
1. Prompt-level: `enableReflection: true` on Prompt
|
|
77
|
-
2. Agent-level: `agent.reflect()` method
|
|
78
|
-
3. Workflow-level: `enableReflection` on WorkflowConfig
|
|
79
|
-
|
|
80
|
-
**Reference Research**: `/plan/P3P4/research/reflection-patterns.md`
|
|
81
|
-
- Max 3 attempts before failure
|
|
82
|
-
- Skip reflection for rate limits, auth errors
|
|
83
|
-
- Emit reflectionStart/reflectionEnd events
|
|
84
|
-
|
|
85
|
-
**Non-Retryable Errors**:
|
|
86
|
-
- Rate limit exceeded
|
|
87
|
-
- Authentication failure
|
|
88
|
-
- Quota exceeded
|
|
89
|
-
- Network errors (timeouts)
|
|
90
|
-
|
|
91
|
-
### Example 10: Introspection Tools
|
|
92
|
-
|
|
93
|
-
**Key Patterns to Demonstrate**:
|
|
94
|
-
1. All 6 introspection tools in action
|
|
95
|
-
2. Nested workflow hierarchy for context
|
|
96
|
-
3. Agent using tools to describe position
|
|
97
|
-
|
|
98
|
-
**Reference Research**: `/plan/P3P4/research/introspection-tools.md`
|
|
99
|
-
- Tools are read-only (except spawn)
|
|
100
|
-
- Use getExecutionContext() for context access
|
|
101
|
-
- Security: filter secrets from responses
|
|
102
|
-
|
|
103
|
-
**Tools to Demonstrate**:
|
|
104
|
-
| Tool | Purpose | Returns |
|
|
105
|
-
|------|---------|---------|
|
|
106
|
-
| `inspect_current_node` | "Where am I?" | id, name, status, parentId, depth |
|
|
107
|
-
| `read_ancestor_chain` | "What's above me?" | Array of ancestors to root |
|
|
108
|
-
| `list_siblings_children` | "What's around me?" | Siblings or children array |
|
|
109
|
-
| `inspect_prior_outputs` | "What happened before?" | Previous step outputs |
|
|
110
|
-
| `inspect_cache_status` | "Is this cached?" | Cache entry info |
|
|
111
|
-
| `request_spawn_workflow` | "Can I create children?" | Spawn request result |
|
|
112
|
-
|
|
113
|
-
## Implementation Verification
|
|
114
|
-
|
|
115
|
-
### Validation Commands
|
|
116
|
-
```bash
|
|
117
|
-
# Build check
|
|
118
|
-
npm run build
|
|
119
|
-
|
|
120
|
-
# Test check
|
|
121
|
-
npm test
|
|
122
|
-
|
|
123
|
-
# Export verification
|
|
124
|
-
node -e "const g = require('./dist'); console.log(Object.keys(g).length, 'exports');"
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Expected Outputs
|
|
128
|
-
- Build: 0 errors
|
|
129
|
-
- Tests: All passing
|
|
130
|
-
- Exports: ~60+ exports from main index
|
|
131
|
-
|
|
132
|
-
## References
|
|
133
|
-
|
|
134
|
-
### Primary Research Documents
|
|
135
|
-
- `/plan/P3P4/research/caching-lru.md` - LRU cache patterns
|
|
136
|
-
- `/plan/P3P4/research/reflection-patterns.md` - Reflection implementation
|
|
137
|
-
- `/plan/P3P4/research/introspection-tools.md` - Tool specifications
|
|
138
|
-
- `/plan/research/agent-introspection-patterns.md` - Hierarchy patterns
|
|
139
|
-
- `/plan/research/introspection-security-guide.md` - Security boundaries
|
|
140
|
-
|
|
141
|
-
### Implementation References
|
|
142
|
-
- `/src/core/agent.ts` - Agent implementation (573 lines)
|
|
143
|
-
- `/src/core/prompt.ts` - Prompt implementation (150 lines)
|
|
144
|
-
- `/src/cache/cache.ts` - LLMCache implementation (237 lines)
|
|
145
|
-
- `/src/reflection/reflection.ts` - ReflectionManager (407 lines)
|
|
146
|
-
- `/src/tools/introspection.ts` - Introspection tools (465 lines)
|
|
147
|
-
|
|
148
|
-
### Example References
|
|
149
|
-
- `/examples/examples/01-basic-workflow.ts` - Basic patterns
|
|
150
|
-
- `/examples/examples/04-observers-debugger.ts` - Debugging patterns
|
|
151
|
-
- `/examples/examples/05-error-handling.ts` - Error patterns
|
|
@@ -1,358 +0,0 @@
|
|
|
1
|
-
# External Dependencies - Research Findings
|
|
2
|
-
|
|
3
|
-
## Document Purpose
|
|
4
|
-
This document records verified external dependencies, SDK patterns, and integration requirements for the Agent/Prompt layer implementation.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. Anthropic SDK (@anthropic-ai/sdk)
|
|
9
|
-
|
|
10
|
-
### Package Information
|
|
11
|
-
- **NPM Package**: `@anthropic-ai/sdk`
|
|
12
|
-
- **Verified Version**: `0.71.1` (already in node_modules)
|
|
13
|
-
- **Node.js Requirement**: 18+
|
|
14
|
-
- **Module Type**: ESM compatible
|
|
15
|
-
|
|
16
|
-
### Key Interfaces for Integration
|
|
17
|
-
|
|
18
|
-
```typescript
|
|
19
|
-
// Core types to import from SDK
|
|
20
|
-
import Anthropic from '@anthropic-ai/sdk';
|
|
21
|
-
|
|
22
|
-
// Message types
|
|
23
|
-
interface MessageCreateParams {
|
|
24
|
-
model: string;
|
|
25
|
-
max_tokens: number;
|
|
26
|
-
messages: MessageParam[];
|
|
27
|
-
system?: string;
|
|
28
|
-
tools?: Tool[];
|
|
29
|
-
temperature?: number;
|
|
30
|
-
stop_sequences?: string[];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
interface MessageParam {
|
|
34
|
-
role: 'user' | 'assistant';
|
|
35
|
-
content: ContentBlock[] | string;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Tool definition
|
|
39
|
-
interface Tool {
|
|
40
|
-
name: string;
|
|
41
|
-
description: string;
|
|
42
|
-
input_schema: {
|
|
43
|
-
type: 'object';
|
|
44
|
-
properties: Record<string, unknown>;
|
|
45
|
-
required?: string[];
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Response types
|
|
50
|
-
interface Message {
|
|
51
|
-
id: string;
|
|
52
|
-
type: 'message';
|
|
53
|
-
role: 'assistant';
|
|
54
|
-
content: ContentBlock[];
|
|
55
|
-
model: string;
|
|
56
|
-
stop_reason: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use';
|
|
57
|
-
stop_sequence: string | null;
|
|
58
|
-
usage: Usage;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
interface Usage {
|
|
62
|
-
input_tokens: number;
|
|
63
|
-
output_tokens: number;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Content blocks
|
|
67
|
-
type ContentBlock = TextBlock | ToolUseBlock;
|
|
68
|
-
|
|
69
|
-
interface TextBlock {
|
|
70
|
-
type: 'text';
|
|
71
|
-
text: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
interface ToolUseBlock {
|
|
75
|
-
type: 'tool_use';
|
|
76
|
-
id: string;
|
|
77
|
-
name: string;
|
|
78
|
-
input: Record<string, unknown>;
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Streaming Support
|
|
83
|
-
```typescript
|
|
84
|
-
// Streaming iteration
|
|
85
|
-
const stream = await anthropic.messages.stream({
|
|
86
|
-
model: 'claude-sonnet-4-20250514',
|
|
87
|
-
max_tokens: 1024,
|
|
88
|
-
messages: [{ role: 'user', content: 'Hello' }],
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
for await (const event of stream) {
|
|
92
|
-
// event types: message_start, content_block_start, content_block_delta,
|
|
93
|
-
// content_block_stop, message_delta, message_stop
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Tool Use Pattern
|
|
98
|
-
```typescript
|
|
99
|
-
// Define tools
|
|
100
|
-
const tools: Tool[] = [{
|
|
101
|
-
name: 'get_weather',
|
|
102
|
-
description: 'Get the weather for a location',
|
|
103
|
-
input_schema: {
|
|
104
|
-
type: 'object',
|
|
105
|
-
properties: {
|
|
106
|
-
location: { type: 'string', description: 'City name' }
|
|
107
|
-
},
|
|
108
|
-
required: ['location']
|
|
109
|
-
}
|
|
110
|
-
}];
|
|
111
|
-
|
|
112
|
-
// Send message with tools
|
|
113
|
-
const response = await anthropic.messages.create({
|
|
114
|
-
model: 'claude-sonnet-4-20250514',
|
|
115
|
-
max_tokens: 1024,
|
|
116
|
-
tools,
|
|
117
|
-
messages: [{ role: 'user', content: 'What is the weather in SF?' }]
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// Handle tool_use response
|
|
121
|
-
if (response.stop_reason === 'tool_use') {
|
|
122
|
-
const toolUse = response.content.find(b => b.type === 'tool_use');
|
|
123
|
-
// Execute tool, send result back
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Environment Variables
|
|
128
|
-
```bash
|
|
129
|
-
ANTHROPIC_API_KEY=sk-ant-... # Required
|
|
130
|
-
ANTHROPIC_BASE_URL=... # Optional, for proxies
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## 2. Zod Schema Validation
|
|
136
|
-
|
|
137
|
-
### Package Information
|
|
138
|
-
- **NPM Package**: `zod`
|
|
139
|
-
- **Recommended Version**: `^3.23.0` (v3 stable)
|
|
140
|
-
- **In node_modules**: `4.1.13` (v4 beta - consider downgrade for stability)
|
|
141
|
-
|
|
142
|
-
### Key Patterns for Prompt Response Validation
|
|
143
|
-
|
|
144
|
-
```typescript
|
|
145
|
-
import { z } from 'zod';
|
|
146
|
-
|
|
147
|
-
// Define response schema
|
|
148
|
-
const ReviewResponseSchema = z.object({
|
|
149
|
-
approved: z.boolean(),
|
|
150
|
-
comments: z.array(z.object({
|
|
151
|
-
file: z.string(),
|
|
152
|
-
line: z.number(),
|
|
153
|
-
message: z.string(),
|
|
154
|
-
severity: z.enum(['error', 'warning', 'info']),
|
|
155
|
-
})),
|
|
156
|
-
summary: z.string(),
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
type ReviewResponse = z.infer<typeof ReviewResponseSchema>;
|
|
160
|
-
|
|
161
|
-
// In Prompt class
|
|
162
|
-
class Prompt<T> {
|
|
163
|
-
constructor(config: PromptConfig<T>) {
|
|
164
|
-
this.responseFormat = config.responseFormat; // ZodSchema<T>
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Validation method
|
|
168
|
-
validateResponse(data: unknown): T {
|
|
169
|
-
return this.responseFormat.parse(data);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Schema to JSON Schema (for cache key hashing)
|
|
175
|
-
```typescript
|
|
176
|
-
import { z } from 'zod';
|
|
177
|
-
|
|
178
|
-
// Get deterministic representation for hashing
|
|
179
|
-
function schemaToHashable(schema: z.ZodType): string {
|
|
180
|
-
// Zod doesn't have built-in JSON schema export
|
|
181
|
-
// Use schema._def for internal representation
|
|
182
|
-
return JSON.stringify(schema._def);
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## 3. Node.js Crypto API (SHA-256 Cache Keys)
|
|
189
|
-
|
|
190
|
-
### Available in Node 18+
|
|
191
|
-
```typescript
|
|
192
|
-
import { createHash } from 'crypto';
|
|
193
|
-
|
|
194
|
-
function generateCacheKey(inputs: CacheKeyInputs): string {
|
|
195
|
-
const hash = createHash('sha256');
|
|
196
|
-
|
|
197
|
-
// Deterministic JSON encoding
|
|
198
|
-
const canonical = JSON.stringify({
|
|
199
|
-
user: inputs.user,
|
|
200
|
-
data: inputs.data,
|
|
201
|
-
system: inputs.system,
|
|
202
|
-
model: inputs.model,
|
|
203
|
-
temperature: inputs.temperature,
|
|
204
|
-
tools: inputs.tools?.map(t => t.name).sort(),
|
|
205
|
-
mcps: inputs.mcps?.map(m => m.name).sort(),
|
|
206
|
-
skills: inputs.skills?.map(s => s.name).sort(),
|
|
207
|
-
schemaHash: inputs.schemaHash,
|
|
208
|
-
}, Object.keys(inputs).sort());
|
|
209
|
-
|
|
210
|
-
hash.update(canonical);
|
|
211
|
-
return hash.digest('hex');
|
|
212
|
-
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## 4. MCP (Model Context Protocol) Integration
|
|
218
|
-
|
|
219
|
-
### SDK MCP Server Pattern
|
|
220
|
-
From research, MCP servers can be:
|
|
221
|
-
1. **In-process**: Faster, no subprocess overhead
|
|
222
|
-
2. **External (stdio)**: Separate process
|
|
223
|
-
|
|
224
|
-
### In-Process MCP Server (Recommended)
|
|
225
|
-
```typescript
|
|
226
|
-
// Pattern from Anthropic docs
|
|
227
|
-
import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
|
|
228
|
-
|
|
229
|
-
const server = createSdkMcpServer({
|
|
230
|
-
name: 'my-tools',
|
|
231
|
-
version: '1.0.0',
|
|
232
|
-
tools: [
|
|
233
|
-
tool('get_data', 'Fetch data', { id: z.string() }, async (args) => {
|
|
234
|
-
return { content: [{ type: 'text', text: '...' }] };
|
|
235
|
-
})
|
|
236
|
-
]
|
|
237
|
-
});
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### MCPServer Interface for Groundswell
|
|
241
|
-
```typescript
|
|
242
|
-
interface MCPServer {
|
|
243
|
-
name: string;
|
|
244
|
-
version?: string;
|
|
245
|
-
transport: 'stdio' | 'inprocess';
|
|
246
|
-
command?: string; // For stdio
|
|
247
|
-
args?: string[]; // For stdio
|
|
248
|
-
tools?: Tool[]; // For inprocess
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
## 5. Hooks (Anthropic SDK)
|
|
255
|
-
|
|
256
|
-
### Hook Types Available
|
|
257
|
-
```typescript
|
|
258
|
-
// From SDK
|
|
259
|
-
type HookType = 'PreToolUse' | 'PostToolUse' | 'SessionStart' | 'SessionEnd';
|
|
260
|
-
|
|
261
|
-
interface AgentHooks {
|
|
262
|
-
PreToolUse?: HookHandler[];
|
|
263
|
-
PostToolUse?: HookHandler[];
|
|
264
|
-
SessionStart?: HookHandler[];
|
|
265
|
-
SessionEnd?: HookHandler[];
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
type HookHandler = (
|
|
269
|
-
input: HookInput,
|
|
270
|
-
toolUseId: string,
|
|
271
|
-
context: HookContext
|
|
272
|
-
) => Promise<HookOutput>;
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### Pass-Through Strategy
|
|
276
|
-
Hooks MUST be passed through unchanged to Anthropic SDK. Groundswell does NOT add custom hook types.
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
|
-
## 6. Skills Integration
|
|
281
|
-
|
|
282
|
-
### Skill Structure
|
|
283
|
-
```
|
|
284
|
-
.claude/skills/
|
|
285
|
-
└── my-skill/
|
|
286
|
-
├── SKILL.md (required)
|
|
287
|
-
├── /scripts (optional)
|
|
288
|
-
└── /references (optional)
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### Skills in AgentConfig
|
|
292
|
-
```typescript
|
|
293
|
-
interface Skill {
|
|
294
|
-
name: string;
|
|
295
|
-
path: string; // Path to skill directory
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
interface AgentConfig {
|
|
299
|
-
skills?: Skill[];
|
|
300
|
-
}
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
## 7. Verified Compatibility Matrix
|
|
306
|
-
|
|
307
|
-
| Dependency | Version | Node.js | ESM | Status |
|
|
308
|
-
|------------|---------|---------|-----|--------|
|
|
309
|
-
| @anthropic-ai/sdk | 0.71.1 | 18+ | Yes | In node_modules |
|
|
310
|
-
| zod | 3.23.x | 16+ | Yes | Install needed |
|
|
311
|
-
| typescript | 5.2+ | 18+ | Yes | In devDependencies |
|
|
312
|
-
| vitest | 1.0+ | 18+ | Yes | In devDependencies |
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
## 8. API Endpoint Reference
|
|
317
|
-
|
|
318
|
-
### Anthropic Messages API
|
|
319
|
-
```
|
|
320
|
-
POST https://api.anthropic.com/v1/messages
|
|
321
|
-
Headers:
|
|
322
|
-
x-api-key: $ANTHROPIC_API_KEY
|
|
323
|
-
anthropic-version: 2023-06-01
|
|
324
|
-
content-type: application/json
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
### Models Available
|
|
328
|
-
- `claude-sonnet-4-20250514` (recommended)
|
|
329
|
-
- `claude-3-5-sonnet-20241022`
|
|
330
|
-
- `claude-3-5-haiku-20241022`
|
|
331
|
-
- `claude-3-opus-20240229`
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
## 9. Breaking Changes & Deprecations
|
|
336
|
-
|
|
337
|
-
### SDK Migration (v0.1.0)
|
|
338
|
-
- Package renamed: `@anthropic-ai/claude-code` -> `@anthropic-ai/claude-agent-sdk`
|
|
339
|
-
- Class renamed: `ClaudeCodeOptions` -> `ClaudeAgentOptions`
|
|
340
|
-
- These changes apply to the AGENT SDK, not the base SDK we're using
|
|
341
|
-
|
|
342
|
-
### Zod v4 Breaking Changes
|
|
343
|
-
- v4 is in beta; recommend using v3.x for production
|
|
344
|
-
- Schema internals changed; cache key hashing needs testing
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## 10. Integration Checklist
|
|
349
|
-
|
|
350
|
-
- [ ] Add `@anthropic-ai/sdk` to package.json dependencies
|
|
351
|
-
- [ ] Add `zod@^3.23.0` to package.json dependencies
|
|
352
|
-
- [ ] Verify ANTHROPIC_API_KEY environment variable handling
|
|
353
|
-
- [ ] Test streaming iteration pattern
|
|
354
|
-
- [ ] Test tool use response handling
|
|
355
|
-
- [ ] Implement cache key SHA-256 generation
|
|
356
|
-
- [ ] Test Zod schema validation
|
|
357
|
-
- [ ] Create MCP server wrapper (if needed)
|
|
358
|
-
- [ ] Pass through hooks unchanged
|