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,518 +0,0 @@
|
|
|
1
|
-
# Product Requirement Prompt (PRP): Default Error Merger Implementation
|
|
2
|
-
|
|
3
|
-
**Work Item:** P1.M2.T2.S3 - Create default error merger implementation
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Goal
|
|
8
|
-
|
|
9
|
-
**Feature Goal:** Extract and modularize the error merging logic from `src/decorators/task.ts` into a reusable utility function for concurrent workflow error aggregation.
|
|
10
|
-
|
|
11
|
-
**Deliverable:** A standalone `mergeWorkflowErrors()` utility function exported from `src/utils/workflow-error-utils.ts` that aggregates multiple `WorkflowError` objects into a single merged error.
|
|
12
|
-
|
|
13
|
-
**Success Definition:**
|
|
14
|
-
1. `mergeWorkflowErrors()` function is created and exported from `src/utils/workflow-error-utils.ts`
|
|
15
|
-
2. The function aggregates errors according to the specification in `plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md`
|
|
16
|
-
3. The existing `defaultErrorMerger` in `src/decorators/task.ts` is replaced with an import from the new utility
|
|
17
|
-
4. Tests pass validating the merge behavior
|
|
18
|
-
5. The function is exported from `src/utils/index.ts` and `src/index.ts` for public API access
|
|
19
|
-
|
|
20
|
-
## Why
|
|
21
|
-
|
|
22
|
-
- **Maintainability:** Error merging logic currently lives inline in the Task decorator. Extracting it to a utility enables reuse and independent testing.
|
|
23
|
-
- **Testability:** A standalone function is easier to unit test than inline decorator logic.
|
|
24
|
-
- **API Completeness:** Users may want to merge errors programmatically for custom error handling scenarios.
|
|
25
|
-
- **Consistency:** Other utilities (generateId, Observable) live in `src/utils/`, making this the correct home for error utilities.
|
|
26
|
-
- **Previous Work:** The `defaultErrorMerger` function already exists in `src/decorators/task.ts` (lines 23-56) with a comment indicating it should be extracted in this subtask.
|
|
27
|
-
|
|
28
|
-
## What
|
|
29
|
-
|
|
30
|
-
Create a `mergeWorkflowErrors()` utility function that:
|
|
31
|
-
|
|
32
|
-
1. **Accepts:** An array of `WorkflowError` objects, task name, parent workflow ID, and total children count
|
|
33
|
-
2. **Aggregates:**
|
|
34
|
-
- Message: `"X of Y concurrent child workflows failed in task 'taskName'"`
|
|
35
|
-
- All unique workflow IDs that failed
|
|
36
|
-
- All logs from all errors (flattened)
|
|
37
|
-
- First error's stack trace
|
|
38
|
-
- First error's state snapshot
|
|
39
|
-
- Original errors array in the `original` field with metadata
|
|
40
|
-
3. **Returns:** A single merged `WorkflowError` object
|
|
41
|
-
|
|
42
|
-
### Success Criteria
|
|
43
|
-
|
|
44
|
-
- [ ] `mergeWorkflowErrors()` function created in `src/utils/workflow-error-utils.ts`
|
|
45
|
-
- [ ] Function aggregates messages with count and task name
|
|
46
|
-
- [ ] Function collects unique failed workflow IDs
|
|
47
|
-
- [ ] Function flattens all logs arrays
|
|
48
|
-
- [ ] Function uses first error's stack and state
|
|
49
|
-
- [ ] Function includes original errors array in metadata
|
|
50
|
-
- [ ] Function exported from `src/utils/index.ts`
|
|
51
|
-
- [ ] Function exported from `src/index.ts`
|
|
52
|
-
- [ ] `defaultErrorMerger` in `src/decorators/task.ts` replaced with import
|
|
53
|
-
- [ ] Unit tests created and passing
|
|
54
|
-
- [ ] Existing tests still pass (no regressions)
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## All Needed Context
|
|
59
|
-
|
|
60
|
-
### Context Completeness Check
|
|
61
|
-
|
|
62
|
-
**No Prior Knowledge Test:** If someone knew nothing about this codebase, they would have:
|
|
63
|
-
- The exact `WorkflowError` interface structure
|
|
64
|
-
- The exact `ErrorMergeStrategy` interface structure
|
|
65
|
-
- The existing `defaultErrorMerger` implementation to reference
|
|
66
|
-
- Test patterns used in the codebase
|
|
67
|
-
- File locations and naming conventions
|
|
68
|
-
- Export patterns from the main index
|
|
69
|
-
|
|
70
|
-
### Documentation & References
|
|
71
|
-
|
|
72
|
-
```yaml
|
|
73
|
-
# MUST READ - Include these in your context window
|
|
74
|
-
- file: /home/dustin/projects/groundswell/src/types/error.ts
|
|
75
|
-
why: Defines WorkflowError interface with all required fields (message, original, workflowId, stack, state, logs)
|
|
76
|
-
critical: The merge function must return a WorkflowError that matches this interface exactly
|
|
77
|
-
|
|
78
|
-
- file: /home/dustin/projects/groundswell/src/types/error-strategy.ts
|
|
79
|
-
why: Defines ErrorMergeStrategy interface for understanding the merge strategy pattern
|
|
80
|
-
gotcha: The combine() function signature takes WorkflowError[] and returns WorkflowError
|
|
81
|
-
|
|
82
|
-
- file: /home/dustin/projects/groundswell/src/decorators/task.ts (lines 18-56)
|
|
83
|
-
why: Contains the existing defaultErrorMerger implementation that should be extracted
|
|
84
|
-
pattern: Use this as the reference implementation - it already implements the required merge logic
|
|
85
|
-
gotcha: The comment on line 21 explicitly states "This will be extracted to src/utils/error-merger.ts in P1.M2.T2.S3"
|
|
86
|
-
critical: This is the source implementation - copy the logic structure exactly
|
|
87
|
-
|
|
88
|
-
- file: /home/dustin/projects/groundswell/src/decorators/task.ts (lines 160-177)
|
|
89
|
-
why: Shows how defaultErrorMerger is currently called - maintain this call signature
|
|
90
|
-
pattern: defaultErrorMerger(errors, taskName, parentWorkflowId, totalChildren)
|
|
91
|
-
|
|
92
|
-
- file: /home/dustin/projects/groundswell/src/utils/index.ts
|
|
93
|
-
why: Shows the export pattern for utils - add mergeWorkflowErrors export here
|
|
94
|
-
pattern: export { generateId } from './id.js'; - follow this pattern
|
|
95
|
-
|
|
96
|
-
- file: /home/dustin/projects/groundswell/src/index.ts (lines 84-86)
|
|
97
|
-
why: Shows how utils are re-exported from main index
|
|
98
|
-
pattern: export { generateId } from './utils/id.js'; - follow this pattern
|
|
99
|
-
|
|
100
|
-
- file: /home/dustin/projects/groundswell/src/types/logging.ts
|
|
101
|
-
why: Defines LogEntry type which is used in WorkflowError.logs array
|
|
102
|
-
gotcha: logs is LogEntry[] - use flatMap to flatten multiple log arrays
|
|
103
|
-
|
|
104
|
-
- file: /home/dustin/projects/groundswell/src/types/snapshot.ts
|
|
105
|
-
why: Defines SerializedWorkflowState type used in WorkflowError.state
|
|
106
|
-
gotcha: state is Record<string, unknown> - use first error's state or empty object
|
|
107
|
-
|
|
108
|
-
- file: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md (lines 207-217)
|
|
109
|
-
why: Contains the recommended default merger implementation from architecture doc
|
|
110
|
-
critical: This documents the intended merge behavior per the PRD specification
|
|
111
|
-
|
|
112
|
-
- docfile: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md (lines 72-90)
|
|
113
|
-
why: Documents Issue 3 about Missing Error Merge Strategy Implementation
|
|
114
|
-
section: "### Issue 3: Missing Error Merge Strategy Implementation"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Current Codebase Tree (relevant portions)
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
src/
|
|
121
|
-
├── core/
|
|
122
|
-
│ └── workflow.ts # Workflow class, error handling
|
|
123
|
-
├── decorators/
|
|
124
|
-
│ ├── index.ts
|
|
125
|
-
│ └── task.ts # Contains defaultErrorMerger (lines 23-56) - TO BE EXTRACTED
|
|
126
|
-
├── types/
|
|
127
|
-
│ ├── index.ts # Exports WorkflowError, ErrorMergeStrategy
|
|
128
|
-
│ ├── error.ts # WorkflowError interface
|
|
129
|
-
│ ├── error-strategy.ts # ErrorMergeStrategy interface
|
|
130
|
-
│ ├── logging.ts # LogEntry type
|
|
131
|
-
│ └── snapshot.ts # SerializedWorkflowState type
|
|
132
|
-
├── utils/
|
|
133
|
-
│ ├── id.ts # generateId utility
|
|
134
|
-
│ ├── observable.ts # Observable utility
|
|
135
|
-
│ └── index.ts # Exports from utils module
|
|
136
|
-
└── index.ts # Main export file
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Desired Codebase Tree (files to be added)
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
src/
|
|
143
|
-
├── utils/
|
|
144
|
-
│ ├── workflow-error-utils.ts # NEW - mergeWorkflowErrors function
|
|
145
|
-
│ └── index.ts # MODIFY - Add export for mergeWorkflowErrors
|
|
146
|
-
├── decorators/
|
|
147
|
-
│ └── task.ts # MODIFY - Import mergeWorkflowErrors, remove inline defaultErrorMerger
|
|
148
|
-
└── index.ts # MODIFY - Add re-export of mergeWorkflowErrors
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Known Gotchas of Our Codebase & Library Quirks
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
// CRITICAL: TypeScript ES modules - use .js extensions in imports
|
|
155
|
-
// Even though source files are .ts, imports use .js extension
|
|
156
|
-
// Example: import { WorkflowError } from './types/error.js';
|
|
157
|
-
|
|
158
|
-
// CRITICAL: The existing defaultErrorMerger includes metadata in the 'original' field
|
|
159
|
-
// This metadata (name, message, errors, totalChildren, failedChildren, failedWorkflowIds)
|
|
160
|
-
// should be preserved in the extracted function
|
|
161
|
-
|
|
162
|
-
// GOTCHA: WorkflowError.original is typed as 'unknown' - the metadata object
|
|
163
|
-
// must be cast with 'as unknown' to satisfy the type checker
|
|
164
|
-
|
|
165
|
-
// PATTERN: Use flatMap for flattening logs arrays
|
|
166
|
-
// allLogs = errors.flatMap((e) => e.logs);
|
|
167
|
-
|
|
168
|
-
// PATTERN: Use Set to get unique workflow IDs
|
|
169
|
-
// failedWorkflowIds = [...new Set(errors.map((e) => e.workflowId))];
|
|
170
|
-
|
|
171
|
-
// GOTCHA: stack and state are optional fields - use optional chaining
|
|
172
|
-
// stack: errors[0]?.stack
|
|
173
|
-
// state: errors[0]?.state || ({} as SerializedWorkflowState)
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## Implementation Blueprint
|
|
179
|
-
|
|
180
|
-
### Data Models and Structure
|
|
181
|
-
|
|
182
|
-
The `WorkflowError` interface is already defined in `src/types/error.ts`:
|
|
183
|
-
|
|
184
|
-
```typescript
|
|
185
|
-
export interface WorkflowError {
|
|
186
|
-
message: string; // Error message
|
|
187
|
-
original: unknown; // Original thrown error (will contain metadata object)
|
|
188
|
-
workflowId: string; // ID of workflow where error occurred
|
|
189
|
-
stack?: string; // Stack trace if available
|
|
190
|
-
state: SerializedWorkflowState; // State snapshot at time of error
|
|
191
|
-
logs: LogEntry[]; // Logs from the failing workflow node
|
|
192
|
-
}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Implementation Tasks (ordered by dependencies)
|
|
196
|
-
|
|
197
|
-
```yaml
|
|
198
|
-
Task 1: CREATE src/utils/workflow-error-utils.ts
|
|
199
|
-
- IMPLEMENT: mergeWorkflowErrors function with exact signature from existing defaultErrorMerger
|
|
200
|
-
- FUNCTION SIGNATURE: mergeWorkflowErrors(errors: WorkflowError[], taskName: string, parentWorkflowId: string, totalChildren: number): WorkflowError
|
|
201
|
-
- COPY logic from: src/decorators/task.ts lines 23-56 (defaultErrorMerger function)
|
|
202
|
-
- IMPORT types: WorkflowError from '../types/error.js', SerializedWorkflowState from '../types/snapshot.js'
|
|
203
|
-
- MERGE LOGIC:
|
|
204
|
-
- message: "${errors.length} of ${totalChildren} concurrent child workflows failed in task '${taskName}'"
|
|
205
|
-
- failedWorkflowIds: [...new Set(errors.map((e) => e.workflowId))]
|
|
206
|
-
- allLogs: errors.flatMap((e) => e.logs)
|
|
207
|
-
- stack: errors[0]?.stack (first error's stack)
|
|
208
|
-
- state: errors[0]?.state || ({} as SerializedWorkflowState) (first error's state)
|
|
209
|
-
- original: metadata object with name, message, errors, totalChildren, failedChildren, failedWorkflowIds
|
|
210
|
-
- NAMING: camelCase for function, snake_case for imports
|
|
211
|
-
- PLACEMENT: New file in src/utils/
|
|
212
|
-
- JSDOC: Add documentation explaining the merge behavior
|
|
213
|
-
|
|
214
|
-
Task 2: MODIFY src/utils/index.ts
|
|
215
|
-
- ADD export: export { mergeWorkflowErrors } from './workflow-error-utils.js';
|
|
216
|
-
- PRESERVE: All existing exports (generateId, Observable)
|
|
217
|
-
- PATTERN: Follow existing export pattern - one export per line
|
|
218
|
-
|
|
219
|
-
Task 3: MODIFY src/decorators/task.ts
|
|
220
|
-
- ADD import: import { mergeWorkflowErrors } from '../utils/workflow-error-utils.js';
|
|
221
|
-
- REMOVE: defaultErrorMerger function definition (lines 18-56)
|
|
222
|
-
- REPLACE: All references to 'defaultErrorMerger' with 'mergeWorkflowErrors'
|
|
223
|
-
- FIND: Line 167 where defaultErrorMerger is called
|
|
224
|
-
- PRESERVE: All other Task decorator logic unchanged
|
|
225
|
-
- VERIFY: No other references to defaultErrorMerger exist
|
|
226
|
-
|
|
227
|
-
Task 4: MODIFY src/index.ts
|
|
228
|
-
- ADD export: export { mergeWorkflowErrors } from './utils/workflow-error-utils.js';
|
|
229
|
-
- PLACEMENT: In the utilities section (after line 86, near generateId export)
|
|
230
|
-
- PRESERVE: All existing exports
|
|
231
|
-
|
|
232
|
-
Task 5: CREATE src/__tests__/unit/utils/workflow-error-utils.test.ts
|
|
233
|
-
- IMPLEMENT: Unit tests for mergeWorkflowErrors function
|
|
234
|
-
- TEST CASES:
|
|
235
|
-
- Single error (returns error with count 1)
|
|
236
|
-
- Multiple errors with unique workflow IDs
|
|
237
|
-
- Multiple errors with duplicate workflow IDs
|
|
238
|
-
- Empty errors array (edge case - should handle gracefully)
|
|
239
|
-
- Logs aggregation (flatMap behavior)
|
|
240
|
-
- Stack trace selection (first error's stack)
|
|
241
|
-
- State selection (first error's state)
|
|
242
|
-
- Metadata object structure in original field
|
|
243
|
-
- FOLLOW pattern: src/__tests__/unit/decorators.test.ts (test structure and patterns)
|
|
244
|
-
- NAMING: test files use *.test.ts suffix
|
|
245
|
-
- FRAMEWORK: Vitest - use describe, it, expect from 'vitest'
|
|
246
|
-
- PLACEMENT: Test file alongside the code it tests in src/__tests__/unit/utils/
|
|
247
|
-
|
|
248
|
-
Task 6: VERIFY existing tests still pass
|
|
249
|
-
- RUN: npm test (or uv run vitest run)
|
|
250
|
-
- CHECK: All 344 existing tests still pass
|
|
251
|
-
- NO regressions: The change is a refactoring - behavior should be identical
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### Implementation Patterns & Key Details
|
|
255
|
-
|
|
256
|
-
```typescript
|
|
257
|
-
// ============================================================================
|
|
258
|
-
// CRITICAL: Function signature (must match defaultErrorMerger exactly)
|
|
259
|
-
// ============================================================================
|
|
260
|
-
/**
|
|
261
|
-
* Merge multiple WorkflowError objects into a single aggregated error
|
|
262
|
-
* This is the default merger used when errorMergeStrategy is enabled
|
|
263
|
-
*
|
|
264
|
-
* @param errors - Array of WorkflowError objects to merge
|
|
265
|
-
* @param taskName - Name of the task that spawned the concurrent workflows
|
|
266
|
-
* @param parentWorkflowId - ID of the parent workflow
|
|
267
|
-
* @param totalChildren - Total number of child workflows that were spawned
|
|
268
|
-
* @returns A merged WorkflowError containing aggregated information
|
|
269
|
-
*/
|
|
270
|
-
export function mergeWorkflowErrors(
|
|
271
|
-
errors: WorkflowError[],
|
|
272
|
-
taskName: string,
|
|
273
|
-
parentWorkflowId: string,
|
|
274
|
-
totalChildren: number
|
|
275
|
-
): WorkflowError
|
|
276
|
-
|
|
277
|
-
// ============================================================================
|
|
278
|
-
// PATTERN: Message construction with count and task name
|
|
279
|
-
// ============================================================================
|
|
280
|
-
const message = `${errors.length} of ${totalChildren} concurrent child workflows failed in task '${taskName}'`;
|
|
281
|
-
|
|
282
|
-
// ============================================================================
|
|
283
|
-
// PATTERN: Unique workflow IDs using Set
|
|
284
|
-
// ============================================================================
|
|
285
|
-
const failedWorkflowIds = [...new Set(errors.map((e) => e.workflowId))];
|
|
286
|
-
|
|
287
|
-
// ============================================================================
|
|
288
|
-
// PATTERN: Flatten logs arrays using flatMap
|
|
289
|
-
// ============================================================================
|
|
290
|
-
const allLogs = errors.flatMap((e) => e.logs);
|
|
291
|
-
|
|
292
|
-
// ============================================================================
|
|
293
|
-
// PATTERN: First error's stack and state with optional chaining
|
|
294
|
-
// ============================================================================
|
|
295
|
-
stack: errors[0]?.stack,
|
|
296
|
-
state: errors[0]?.state || ({} as SerializedWorkflowState),
|
|
297
|
-
|
|
298
|
-
// ============================================================================
|
|
299
|
-
// CRITICAL: Metadata object structure in 'original' field (as unknown cast)
|
|
300
|
-
// ============================================================================
|
|
301
|
-
original: {
|
|
302
|
-
name: 'WorkflowAggregateError',
|
|
303
|
-
message,
|
|
304
|
-
errors,
|
|
305
|
-
totalChildren,
|
|
306
|
-
failedChildren: errors.length,
|
|
307
|
-
failedWorkflowIds,
|
|
308
|
-
} as unknown,
|
|
309
|
-
|
|
310
|
-
// ============================================================================
|
|
311
|
-
// IMPORT PATTERN: Use .js extensions for ES modules
|
|
312
|
-
// ============================================================================
|
|
313
|
-
import type { WorkflowError } from '../types/error.js';
|
|
314
|
-
import type { SerializedWorkflowState } from '../types/snapshot.js';
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
### Integration Points
|
|
318
|
-
|
|
319
|
-
```yaml
|
|
320
|
-
TASK_DECORATOR:
|
|
321
|
-
- file: src/decorators/task.ts
|
|
322
|
-
- remove: defaultErrorMerger function definition (lines 18-56)
|
|
323
|
-
- add_import: import { mergeWorkflowErrors } from '../utils/workflow-error-utils.js';
|
|
324
|
-
- replace_call: Line 167 - change defaultErrorMerger to mergeWorkflowErrors
|
|
325
|
-
|
|
326
|
-
UTILS_EXPORTS:
|
|
327
|
-
- file: src/utils/index.ts
|
|
328
|
-
- add_export: export { mergeWorkflowErrors } from './workflow-error-utils.js';
|
|
329
|
-
|
|
330
|
-
MAIN_EXPORT:
|
|
331
|
-
- file: src/index.ts
|
|
332
|
-
- add_export: export { mergeWorkflowErrors } from './utils/workflow-error-utils.js';
|
|
333
|
-
- location: In utilities section (around line 86)
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
|
-
## Validation Loop
|
|
339
|
-
|
|
340
|
-
### Level 1: Syntax & Style (Immediate Feedback)
|
|
341
|
-
|
|
342
|
-
```bash
|
|
343
|
-
# Run after each file creation - fix before proceeding
|
|
344
|
-
npm run lint
|
|
345
|
-
|
|
346
|
-
# This runs: tsc --noEmit (TypeScript type checking)
|
|
347
|
-
# Expected: Zero type errors. If errors exist, READ output and fix before proceeding.
|
|
348
|
-
|
|
349
|
-
# Manual checks after implementation:
|
|
350
|
-
# 1. Verify .js extensions in all import statements
|
|
351
|
-
# 2. Verify all types are imported from correct paths
|
|
352
|
-
# 3. Verify function signature matches defaultErrorMerger
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
### Level 2: Unit Tests (Component Validation)
|
|
356
|
-
|
|
357
|
-
```bash
|
|
358
|
-
# Test the new utility function specifically
|
|
359
|
-
npm test -- src/__tests__/unit/utils/workflow-error-utils.test.ts
|
|
360
|
-
|
|
361
|
-
# Full test suite for affected areas
|
|
362
|
-
npm test -- src/__tests__/unit/decorators.test.ts
|
|
363
|
-
npm test -- src/__tests__/unit/
|
|
364
|
-
|
|
365
|
-
# Coverage validation
|
|
366
|
-
npm test -- --coverage
|
|
367
|
-
|
|
368
|
-
# Expected: All tests pass. If failing, debug root cause and fix implementation.
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
### Level 3: Integration Testing (System Validation)
|
|
372
|
-
|
|
373
|
-
```bash
|
|
374
|
-
# Run the full test suite to verify no regressions
|
|
375
|
-
npm test
|
|
376
|
-
|
|
377
|
-
# Expected: All 344 existing tests pass plus new tests
|
|
378
|
-
# This refactoring should NOT change any behavior - it's purely extraction
|
|
379
|
-
|
|
380
|
-
# Test specific concurrent task scenarios
|
|
381
|
-
npm test -- examples/examples/06-concurrent-tasks.ts
|
|
382
|
-
|
|
383
|
-
# Test error handling examples
|
|
384
|
-
npm test -- examples/examples/05-error-handling.ts
|
|
385
|
-
|
|
386
|
-
# Expected: All concurrent task and error handling tests still work
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
### Level 4: Manual Validation
|
|
390
|
-
|
|
391
|
-
```bash
|
|
392
|
-
# Run concurrent tasks example to verify error merging still works
|
|
393
|
-
npm run start:concurrent
|
|
394
|
-
|
|
395
|
-
# Run error handling example
|
|
396
|
-
npm run start:errors
|
|
397
|
-
|
|
398
|
-
# Expected: Both examples run successfully, errors are properly merged
|
|
399
|
-
# when errorMergeStrategy is enabled
|
|
400
|
-
|
|
401
|
-
# Check exports are working
|
|
402
|
-
node -e "const { mergeWorkflowErrors } = require('./dist/index.js'); console.log('Export check:', typeof mergeWorkflowErrors);"
|
|
403
|
-
# Expected: "Export check: function"
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
---
|
|
407
|
-
|
|
408
|
-
## Final Validation Checklist
|
|
409
|
-
|
|
410
|
-
### Technical Validation
|
|
411
|
-
|
|
412
|
-
- [ ] All 4 validation levels completed successfully
|
|
413
|
-
- [ ] All tests pass: `npm test` (344+ tests)
|
|
414
|
-
- [ ] No type errors: `npm run lint` returns cleanly
|
|
415
|
-
- [ ] Function signature matches defaultErrorMerger exactly
|
|
416
|
-
- [ ] mergeWorkflowErrors exported from src/utils/index.ts
|
|
417
|
-
- [ ] mergeWorkflowErrors re-exported from src/index.ts
|
|
418
|
-
- [ ] defaultErrorMerger removed from src/decorators/task.ts
|
|
419
|
-
|
|
420
|
-
### Feature Validation
|
|
421
|
-
|
|
422
|
-
- [ ] Message includes error count, total children, and task name
|
|
423
|
-
- [ ] Unique workflow IDs collected correctly
|
|
424
|
-
- [ ] Logs flattened using flatMap
|
|
425
|
-
- [ ] First error's stack used
|
|
426
|
-
- [ ] First error's state used (or empty object)
|
|
427
|
-
- [ ] Metadata object in 'original' field with all required properties
|
|
428
|
-
- [ ] Concurrent task error scenarios still work
|
|
429
|
-
- [ ] Error merge strategy integration still works
|
|
430
|
-
|
|
431
|
-
### Code Quality Validation
|
|
432
|
-
|
|
433
|
-
- [ ] Follows existing codebase patterns and naming conventions
|
|
434
|
-
- [ ] File placement matches desired codebase tree structure
|
|
435
|
-
- [ ] JSDoc comments added to the function
|
|
436
|
-
- [ ] Imports use .js extensions for ES modules
|
|
437
|
-
- [ ] No breaking changes to existing behavior
|
|
438
|
-
- [ ] Tests cover happy path and edge cases
|
|
439
|
-
|
|
440
|
-
### Documentation & Deployment
|
|
441
|
-
|
|
442
|
-
- [ ] Code is self-documenting with clear variable names
|
|
443
|
-
- [ ] Function behavior documented in JSDoc
|
|
444
|
-
- [ ] Comment in src/decorators/task.ts line 21 acknowledged/removed
|
|
445
|
-
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
## Anti-Patterns to Avoid
|
|
449
|
-
|
|
450
|
-
- ❌ Don't change the merge logic - this is a pure extraction, behavior must be identical
|
|
451
|
-
- ❌ Don't forget to add the export to src/utils/index.ts and src/index.ts
|
|
452
|
-
- ❌ Don't use .ts extensions in imports - must use .js for ES modules
|
|
453
|
-
- ❌ Don't skip the cast `as unknown` for the metadata object in `original` field
|
|
454
|
-
- ❌ Don't forget to handle optional fields (stack, state) with optional chaining
|
|
455
|
-
- ❌ Don't remove the metadata from the `original` field - it contains important context
|
|
456
|
-
- ❌ Don't change the function signature - it must match defaultErrorMerger exactly
|
|
457
|
-
- ❌ Don't forget to run full test suite - this is a refactoring, no behavior should change
|
|
458
|
-
- ❌ Don't place the file anywhere other than src/utils/ - that's the established pattern
|
|
459
|
-
- ❌ Don't create a new directory for error utilities - put it in existing utils/
|
|
460
|
-
|
|
461
|
-
---
|
|
462
|
-
|
|
463
|
-
## Confidence Score
|
|
464
|
-
|
|
465
|
-
**8/10** - High confidence for one-pass implementation success
|
|
466
|
-
|
|
467
|
-
**Reasoning:**
|
|
468
|
-
- Existing implementation (defaultErrorMerger) provides exact reference
|
|
469
|
-
- Clear file location and export patterns established in codebase
|
|
470
|
-
- Well-defined types and interfaces
|
|
471
|
-
- Comprehensive test patterns available
|
|
472
|
-
- The only complexity is ensuring exact behavior preservation during extraction
|
|
473
|
-
|
|
474
|
-
**Risk Factors:**
|
|
475
|
-
- Must preserve exact behavior of defaultErrorMerger
|
|
476
|
-
- Must handle TypeScript ES module import syntax correctly (.js extensions)
|
|
477
|
-
- Must update all export locations (utils/index.ts and main index.ts)
|
|
478
|
-
|
|
479
|
-
---
|
|
480
|
-
|
|
481
|
-
## Additional Context from Research
|
|
482
|
-
|
|
483
|
-
### Existing Test Patterns Found
|
|
484
|
-
|
|
485
|
-
From `src/__tests__/unit/decorators.test.ts`:
|
|
486
|
-
```typescript
|
|
487
|
-
// Error testing pattern
|
|
488
|
-
it('should wrap errors in WorkflowError', async () => {
|
|
489
|
-
class FailingWorkflow extends Workflow {
|
|
490
|
-
@Step()
|
|
491
|
-
async failingStep(): Promise<void> {
|
|
492
|
-
throw new Error('Step failed');
|
|
493
|
-
}
|
|
494
|
-
async run(): Promise<void> {
|
|
495
|
-
await this.failingStep();
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
const wf = new FailingWorkflow();
|
|
499
|
-
await expect(wf.run()).rejects.toMatchObject({
|
|
500
|
-
message: 'Step failed',
|
|
501
|
-
workflowId: wf.id,
|
|
502
|
-
});
|
|
503
|
-
});
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
### Related Work Items (for context)
|
|
507
|
-
|
|
508
|
-
- **P1.M2.T2.S1** (Complete): Added errorMergeStrategy to TaskOptions interface
|
|
509
|
-
- **P1.M2.T2.S2** (Complete): Implemented error aggregation logic in @Task decorator
|
|
510
|
-
- **P1.M2.T2.S4** (Pending): Add tests for ErrorMergeStrategy functionality
|
|
511
|
-
|
|
512
|
-
This subtask (P1.M2.T2.S3) extracts the default merger for better modularity and testability.
|
|
513
|
-
|
|
514
|
-
### References
|
|
515
|
-
|
|
516
|
-
- Error handling architecture: `plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md`
|
|
517
|
-
- PRD snapshot: `plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md`
|
|
518
|
-
- Existing implementation: `src/decorators/task.ts` lines 23-56
|