groundswell 0.0.2 → 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/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/{src/__tests__/helpers/index.ts → dist/__tests__/helpers/index.js} +2 -10
- 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} +1 -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 +5 -2
- 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/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/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/observable.ts +0 -106
- package/src/utils/workflow-error-utils.ts +0 -56
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
# Bug Fix Requirements
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This document reports findings from comprehensive end-to-end testing of the hierarchical workflow engine implementation against the PRD specifications. The testing methodology included:
|
|
6
|
-
|
|
7
|
-
- **240 existing unit tests** - All passing
|
|
8
|
-
- **Creative end-to-end testing** - PRD example workflows and edge cases
|
|
9
|
-
- **Adversarial testing** - Unexpected inputs, boundary conditions, and stress scenarios
|
|
10
|
-
- **PRD compliance verification** - Validation against all PRD requirements
|
|
11
|
-
|
|
12
|
-
**Overall Assessment**: The implementation is robust and well-tested. One critical bug was discovered that could lead to inconsistent tree state under certain conditions.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Critical Issues (Must Fix)
|
|
17
|
-
|
|
18
|
-
### Issue 1: `attachChild()` Allows Creating Inconsistent Tree State
|
|
19
|
-
|
|
20
|
-
**Severity**: Critical
|
|
21
|
-
**PRD Reference**: Section 12.2 - Workflow Base Class, `attachChild` method
|
|
22
|
-
**Location**: `src/core/workflow.ts:187-201`
|
|
23
|
-
|
|
24
|
-
#### Expected Behavior
|
|
25
|
-
|
|
26
|
-
The workflow tree should maintain consistency:
|
|
27
|
-
- A child workflow should have exactly one parent
|
|
28
|
-
- The `child.parent` property should always match the parent that contains it
|
|
29
|
-
- A child should only appear in one parent's `children` array
|
|
30
|
-
|
|
31
|
-
#### Actual Behavior
|
|
32
|
-
|
|
33
|
-
The `attachChild()` method does not validate if the child workflow already has a parent. This allows:
|
|
34
|
-
|
|
35
|
-
1. A child to be added to multiple parents' `children` arrays
|
|
36
|
-
2. The `child.parent` property to point to only the original parent
|
|
37
|
-
3. Inconsistent tree state that breaks observer propagation and tree debugging
|
|
38
|
-
|
|
39
|
-
#### Steps to Reproduce
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
import { Workflow } from './src/index.js';
|
|
43
|
-
|
|
44
|
-
const parent1 = new Workflow('Parent1');
|
|
45
|
-
const parent2 = new Workflow('Parent2');
|
|
46
|
-
|
|
47
|
-
// Create child with parent1 - child is automatically attached
|
|
48
|
-
const child = new Workflow('Child', parent1);
|
|
49
|
-
|
|
50
|
-
// BUG: attachChild doesn't check if child already has a parent
|
|
51
|
-
parent2.attachChild(child);
|
|
52
|
-
|
|
53
|
-
// Result: INCONSISTENT STATE
|
|
54
|
-
// - child.parent === parent1 (original parent)
|
|
55
|
-
// - parent1.children.includes(child) === true
|
|
56
|
-
// - parent2.children.includes(child) === true
|
|
57
|
-
// - Child appears in TWO trees but only links to one
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
#### Impact
|
|
61
|
-
|
|
62
|
-
1. **Observer Event Propagation**: Events from the shared child only propagate to the original parent's observers, not all parents that contain the child.
|
|
63
|
-
|
|
64
|
-
2. **Tree Debugger Output**: The tree debugger shows the child in both trees, but navigation via parent/child links is inconsistent.
|
|
65
|
-
|
|
66
|
-
3. **getRoot() Behavior**: The `getRoot()` method only follows the `child.parent` chain, so it will always return the original parent even though the child is in multiple trees.
|
|
67
|
-
|
|
68
|
-
4. **Data Integrity**: The "1:1 tree mirror" requirement from the PRD is violated - the in-memory tree structure becomes inconsistent.
|
|
69
|
-
|
|
70
|
-
#### Suggested Fix
|
|
71
|
-
|
|
72
|
-
Update the `attachChild()` method in `src/core/workflow.ts` to validate the child's parent state:
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
public attachChild(child: Workflow): void {
|
|
76
|
-
// Check if already attached to THIS workflow
|
|
77
|
-
if (this.children.includes(child)) {
|
|
78
|
-
throw new Error('Child already attached to this workflow');
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// NEW: Check if child already has a different parent
|
|
82
|
-
if (child.parent && child.parent !== this) {
|
|
83
|
-
throw new Error(
|
|
84
|
-
`Child '${child.node.name}' already has a parent '${child.parent.node.name}'. ` +
|
|
85
|
-
`A workflow can only have one parent.`
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// NEW: Update child's parent if it's currently null
|
|
90
|
-
if (!child.parent) {
|
|
91
|
-
child.parent = this;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
this.children.push(child);
|
|
95
|
-
this.node.children.push(child.node);
|
|
96
|
-
|
|
97
|
-
this.emitEvent({
|
|
98
|
-
type: 'childAttached',
|
|
99
|
-
parentId: this.id,
|
|
100
|
-
child: child.node,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Note**: The fix should also consider whether to update `child.node.parent` similarly for consistency with the node tree structure.
|
|
106
|
-
|
|
107
|
-
#### Test Coverage
|
|
108
|
-
|
|
109
|
-
Add the following test to `src/__tests__/adversarial/edge-case.test.ts`:
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
it('should prevent attaching a child that already has a different parent', async () => {
|
|
113
|
-
class ChildWorkflow extends Workflow {
|
|
114
|
-
async run() {
|
|
115
|
-
return 'child';
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
class ParentWorkflow extends Workflow {
|
|
120
|
-
async run() {
|
|
121
|
-
return 'parent';
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const parent1 = new ParentWorkflow('Parent1');
|
|
126
|
-
const parent2 = new ParentWorkflow('Parent2');
|
|
127
|
-
|
|
128
|
-
// Create child with parent1
|
|
129
|
-
const child = new ChildWorkflow('Child', parent1);
|
|
130
|
-
|
|
131
|
-
// Should throw because child already has parent1 as parent
|
|
132
|
-
expect(() => {
|
|
133
|
-
parent2.attachChild(child);
|
|
134
|
-
}).toThrow(/already has a parent/);
|
|
135
|
-
});
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Major Issues (Should Fix)
|
|
141
|
-
|
|
142
|
-
*None discovered*
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Minor Issues (Nice to Fix)
|
|
147
|
-
|
|
148
|
-
### Issue 1: Manual Parent Property Mutation Not Validated
|
|
149
|
-
|
|
150
|
-
**Severity**: Minor
|
|
151
|
-
**PRD Reference**: Implicit - data integrity expectation
|
|
152
|
-
|
|
153
|
-
#### Description
|
|
154
|
-
|
|
155
|
-
The `parent` property on `Workflow` is public and can be manually mutated to create inconsistent tree state. While this requires intentional misuse (not normal API usage), making it private or adding validation could improve robustness.
|
|
156
|
-
|
|
157
|
-
#### Suggested Fix
|
|
158
|
-
|
|
159
|
-
Consider making `parent` private with a getter, or add validation in setter to ensure consistency with `children` arrays.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Testing Summary
|
|
164
|
-
|
|
165
|
-
### Total Tests Performed
|
|
166
|
-
- **Existing test suite**: 240 tests (all passing)
|
|
167
|
-
- **Custom e2e tests**: 20+ additional scenarios
|
|
168
|
-
- **Adversarial scenarios**: 15+ edge cases
|
|
169
|
-
- **PRD compliance checks**: 7+ verification tests
|
|
170
|
-
|
|
171
|
-
### Passing
|
|
172
|
-
- All 240 existing tests pass
|
|
173
|
-
- All custom end-to-end tests pass
|
|
174
|
-
- All PRD compliance checks pass
|
|
175
|
-
|
|
176
|
-
### Failing
|
|
177
|
-
- **1 critical bug**: `attachChild()` allows inconsistent tree state
|
|
178
|
-
|
|
179
|
-
### Areas with Good Coverage
|
|
180
|
-
- ✅ PRD Section 3: Core data model (WorkflowNode, WorkflowStatus)
|
|
181
|
-
- ✅ PRD Section 4: Logging and events model
|
|
182
|
-
- ✅ PRD Section 5: Error model with state snapshots
|
|
183
|
-
- ✅ PRD Section 6: Snapshot system with @ObservedState
|
|
184
|
-
- ✅ PRD Section 7: Observer pattern and event propagation
|
|
185
|
-
- ✅ PRD Section 8: Decorators (@Step, @Task, @ObservedState)
|
|
186
|
-
- ✅ PRD Section 11: Tree debugger API
|
|
187
|
-
- ✅ PRD Section 12: Base class implementation
|
|
188
|
-
- ✅ Edge cases: Unicode, empty values, deep hierarchies, concurrent execution
|
|
189
|
-
- ✅ Adversarial scenarios: Circular references, observer errors, state transitions
|
|
190
|
-
|
|
191
|
-
### Areas Needing More Attention
|
|
192
|
-
- ⚠️ **Tree integrity validation**: The `attachChild()` method needs parent validation (see Critical Issue 1)
|
|
193
|
-
- ℹ️ **Functional workflows**: Good coverage but could test more complex functional workflow scenarios
|
|
194
|
-
- ℹ️ **Concurrent task error handling**: Current implementation throws on first error; could document this behavior more clearly
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Additional Notes
|
|
199
|
-
|
|
200
|
-
### Positive Findings
|
|
201
|
-
|
|
202
|
-
1. **Strong Type Safety**: TypeScript types are comprehensive and align well with the PRD
|
|
203
|
-
2. **Robust Error Handling**: @Step decorator properly wraps errors with full context
|
|
204
|
-
3. **Good Observer Pattern**: Observers receive events correctly and errors in observers don't crash the system
|
|
205
|
-
4. **Complete PRD Compliance**: Aside from the identified bug, all PRD requirements are met
|
|
206
|
-
5. **Excellent Test Coverage**: 240 tests covering unit, integration, and adversarial scenarios
|
|
207
|
-
|
|
208
|
-
### PRD Requirements Fully Satisfied
|
|
209
|
-
|
|
210
|
-
- ✅ Hierarchical workflows with parent/child relationships
|
|
211
|
-
- ✅ All 5 workflow status values supported
|
|
212
|
-
- ✅ Complete Logging with 4 log levels
|
|
213
|
-
- ✅ All 7 WorkflowEvent types properly emitted
|
|
214
|
-
- ✅ WorkflowError includes all required fields (message, original, workflowId, stack, state, logs)
|
|
215
|
-
- ✅ @Step decorator with all options (name, snapshotState, trackTiming, logStart, logFinish)
|
|
216
|
-
- ✅ @Task decorator with concurrent execution support
|
|
217
|
-
- ✅ @ObservedState with redact and hidden options
|
|
218
|
-
- ✅ WorkflowTreeDebugger implements all required methods (getTree, getNode, events, toTreeString, toLogString)
|
|
219
|
-
- ✅ Perfect 1:1 tree mirror in logs and events
|
|
220
|
-
- ✅ Root-only observer restriction enforced
|
|
221
|
-
- ✅ State snapshot captured AFTER step completion
|
|
222
|
-
- ✅ Circular reference detection in getRoot() (works for direct cycles)
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## Conclusion
|
|
227
|
-
|
|
228
|
-
The hierarchical workflow engine implementation is of high quality and nearly fully compliant with the PRD. The critical bug in `attachChild()` should be fixed before production use, as it can lead to subtle data integrity issues that are difficult to debug.
|
|
229
|
-
|
|
230
|
-
Once the `attachChild()` validation is added, the implementation will be production-ready for the use cases described in the PRD.
|
|
@@ -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
|