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,558 +0,0 @@
|
|
|
1
|
-
# Bug Fix Requirements
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Comprehensive end-to-end validation testing was conducted on the Hierarchical Workflow Engine implementation against PRD #001 (`PRPs/PRDs/001-hierarchical-workflow-engine.md`).
|
|
6
|
-
|
|
7
|
-
**Testing Methodology:**
|
|
8
|
-
1. **PRD Scope Analysis** - Deep analysis of all requirements, interfaces, and acceptance criteria
|
|
9
|
-
2. **Code Review** - Line-by-line examination of all core implementation files
|
|
10
|
-
3. **Test Suite Execution** - 157 tests executed (154 passing, 3 failing)
|
|
11
|
-
4. **Edge Case Analysis** - Creative adversarial testing scenarios
|
|
12
|
-
5. **Type Safety Validation** - TypeScript compilation successful with no errors
|
|
13
|
-
6. **Integration Testing** - Tree mirroring, observer propagation, and error handling verified
|
|
14
|
-
|
|
15
|
-
**Overall Quality Assessment**: The implementation is **production-ready** with excellent adherence to PRD specifications. All core functionality, decorators, observer patterns, and tree debugging features work as specified. The failing tests are **test bugs** (incorrectly written tests), not implementation bugs.
|
|
16
|
-
|
|
17
|
-
**Test Results**: 154 passing, 3 failing (all test bugs, not implementation bugs)
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Critical Issues (Must Fix)
|
|
22
|
-
|
|
23
|
-
**None Found**
|
|
24
|
-
|
|
25
|
-
No critical issues were identified that would prevent core functionality from working correctly.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Major Issues (Should Fix)
|
|
30
|
-
|
|
31
|
-
### Issue 1: Missing `treeUpdated` Event Emission in Status Changes
|
|
32
|
-
|
|
33
|
-
**Severity**: Major
|
|
34
|
-
**PRD Reference**: Section 11 (Tree Debugger API), Section 12.2 (Workflow Base Class Skeleton)
|
|
35
|
-
|
|
36
|
-
**Expected Behavior**:
|
|
37
|
-
According to PRD Section 12.2, the system should emit `treeUpdated` events and handle them appropriately:
|
|
38
|
-
```ts
|
|
39
|
-
if (event.type === 'treeUpdated') obs.onTreeChanged(this.node);
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
The PRD skeleton shows that `treeUpdated` events should trigger `onTreeChanged`. The implementation handles `treeUpdated` events if they occur, but never explicitly emits them.
|
|
43
|
-
|
|
44
|
-
**Actual Behavior**:
|
|
45
|
-
In `src/core/workflow.ts` lines 187-190:
|
|
46
|
-
```ts
|
|
47
|
-
if (event.type === 'treeUpdated' || event.type === 'childAttached') {
|
|
48
|
-
obs.onTreeChanged(this.getRoot().node);
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
This code handles `treeUpdated` events, but searching the codebase for `emitEvent({ type: 'treeUpdated'` yields **zero results**. The event type exists but is never actually created/emitted.
|
|
53
|
-
|
|
54
|
-
**Impact**:
|
|
55
|
-
- Tree debugger relies on `onTreeChanged` to rebuild its internal node map
|
|
56
|
-
- Currently only works because `childAttached` triggers `onTreeChanged`
|
|
57
|
-
- Any future tree structural changes without `childAttached` won't trigger updates
|
|
58
|
-
- The PRD specifically defines `treeUpdated` as a distinct event type
|
|
59
|
-
|
|
60
|
-
**Steps to Reproduce**:
|
|
61
|
-
1. Search codebase for `emitEvent({ type: 'treeUpdated'`
|
|
62
|
-
2. Zero results found
|
|
63
|
-
3. Check type definition in `src/types/events.ts` - `treeUpdated` exists but is unused
|
|
64
|
-
|
|
65
|
-
**Suggested Fix**:
|
|
66
|
-
Emit `treeUpdated` events at appropriate moments:
|
|
67
|
-
- After `setStatus()` is called
|
|
68
|
-
- After `snapshotState()` completes
|
|
69
|
-
- After child workflow execution completes
|
|
70
|
-
- When workflow state changes significantly
|
|
71
|
-
|
|
72
|
-
Example:
|
|
73
|
-
```ts
|
|
74
|
-
// In setStatus() method
|
|
75
|
-
public setStatus(status: WorkflowStatus): void {
|
|
76
|
-
this.status = status;
|
|
77
|
-
this.node.status = status;
|
|
78
|
-
this.emitEvent({ type: 'treeUpdated', root: this.getRoot().node });
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
### Issue 2: Incomplete State Snapshot in Functional Workflow Error Handler
|
|
85
|
-
|
|
86
|
-
**Severity**: Major
|
|
87
|
-
**PRD Reference**: Section 5.1 (WorkflowError interface), Section 12.2 (Workflow base class)
|
|
88
|
-
|
|
89
|
-
**Expected Behavior**:
|
|
90
|
-
According to PRD Section 5.1, `WorkflowError` must include:
|
|
91
|
-
```ts
|
|
92
|
-
state: SerializedWorkflowState; // a snapshot
|
|
93
|
-
logs: LogEntry[]; // logs from this node only
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Both fields must be populated with actual data for error introspection.
|
|
97
|
-
|
|
98
|
-
**Actual Behavior**:
|
|
99
|
-
In `src/core/workflow.ts` lines 286-297:
|
|
100
|
-
```ts
|
|
101
|
-
this.emitEvent({
|
|
102
|
-
type: 'error',
|
|
103
|
-
node: this.node,
|
|
104
|
-
error: {
|
|
105
|
-
message: error instanceof Error ? error.message : 'Unknown error',
|
|
106
|
-
original: error,
|
|
107
|
-
workflowId: this.id,
|
|
108
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
109
|
-
state: {}, // ← ALWAYS EMPTY OBJECT
|
|
110
|
-
logs: [], // ← ALWAYS EMPTY ARRAY
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
The functional workflow error handler creates empty `state` and `logs` instead of capturing the actual state and logs. This is inconsistent with the `@Step` decorator which properly captures state via `getObservedState(this)` (line 114 in `src/decorators/step.ts`).
|
|
116
|
-
|
|
117
|
-
**Impact**:
|
|
118
|
-
- Error introspection in functional workflows doesn't work as specified
|
|
119
|
-
- Cannot restart workflows based on captured state
|
|
120
|
-
- Debugging functional workflow failures provides no context
|
|
121
|
-
- Inconsistent behavior between class-based and functional workflows
|
|
122
|
-
|
|
123
|
-
**Steps to Reproduce**:
|
|
124
|
-
1. Create a functional workflow that throws an error
|
|
125
|
-
2. Catch the error and inspect the `WorkflowError` object
|
|
126
|
-
3. Note that `state` is `{}` and `logs` is `[]`
|
|
127
|
-
|
|
128
|
-
**Suggested Fix**:
|
|
129
|
-
```ts
|
|
130
|
-
this.emitEvent({
|
|
131
|
-
type: 'error',
|
|
132
|
-
node: this.node,
|
|
133
|
-
error: {
|
|
134
|
-
message: error instanceof Error ? error.message : 'Unknown error',
|
|
135
|
-
original: error,
|
|
136
|
-
workflowId: this.id,
|
|
137
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
138
|
-
state: getObservedState(this), // ← Capture actual state
|
|
139
|
-
logs: [...this.node.logs], // ← Capture actual logs
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
### Issue 3: Optional Multi-Error Merging Not Implemented
|
|
147
|
-
|
|
148
|
-
**Severity**: Major
|
|
149
|
-
**PRD Reference**: Section 10 (Optional Multi-Error Merging)
|
|
150
|
-
|
|
151
|
-
**Expected Behavior**:
|
|
152
|
-
PRD Section 10 defines:
|
|
153
|
-
```ts
|
|
154
|
-
export interface ErrorMergeStrategy {
|
|
155
|
-
enabled: boolean;
|
|
156
|
-
maxMergeDepth?: number;
|
|
157
|
-
combine?(errors: WorkflowError[]): WorkflowError;
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Default: **disabled** → first error wins (race is preserved).
|
|
162
|
-
|
|
163
|
-
**Actual Behavior**:
|
|
164
|
-
- Type `ErrorMergeStrategy` exists in `src/types/error-strategy.ts`
|
|
165
|
-
- The interface is defined but never used anywhere in the codebase
|
|
166
|
-
- No way to configure error merging behavior
|
|
167
|
-
- Concurrent tasks with `@Task({ concurrent: true })` - if multiple fail, only first error is captured
|
|
168
|
-
|
|
169
|
-
**Impact**:
|
|
170
|
-
- Cannot collect all errors from concurrent task failures
|
|
171
|
-
- Partial failure scenarios lose diagnostic information
|
|
172
|
-
- Feature specified in PRD but not accessible to users
|
|
173
|
-
|
|
174
|
-
**Steps to Reproduce**:
|
|
175
|
-
1. Search codebase for `ErrorMergeStrategy`
|
|
176
|
-
2. Only found in type definition
|
|
177
|
-
3. No configuration option, no implementation logic
|
|
178
|
-
|
|
179
|
-
**Suggested Fix**:
|
|
180
|
-
Implement error collection in concurrent task execution:
|
|
181
|
-
```ts
|
|
182
|
-
// In @Task decorator when concurrent: true
|
|
183
|
-
if (opts.concurrent && Array.isArray(result)) {
|
|
184
|
-
const results = await Promise.allSettled(runnable.map(w => w.run()));
|
|
185
|
-
const errors = results
|
|
186
|
-
.filter(r => r.status === 'rejected')
|
|
187
|
-
.map(r => r.reason);
|
|
188
|
-
|
|
189
|
-
if (errors.length > 0) {
|
|
190
|
-
// Use error merge strategy if enabled
|
|
191
|
-
// Otherwise throw first error
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
### Issue 4: No Cycle Detection in `getRoot()` and `getRootObservers()`
|
|
199
|
-
|
|
200
|
-
**Severity**: Major
|
|
201
|
-
**PRD Reference**: Section 3 (Architecture), Section 3.1 (WorkflowNode)
|
|
202
|
-
|
|
203
|
-
**Expected Behavior**:
|
|
204
|
-
The tree structure should be acyclic. A workflow should not be its own ancestor. The system should detect and prevent circular references.
|
|
205
|
-
|
|
206
|
-
**Actual Behavior**:
|
|
207
|
-
No validation exists to prevent circular relationships. If a circular reference is manually created (by setting `workflow.parent` directly, which is a public property), both `getRoot()` and `getRootObservers()` will infinite loop.
|
|
208
|
-
|
|
209
|
-
**Impact**:
|
|
210
|
-
- `getRoot()` would infinite loop on circular structure
|
|
211
|
-
- `getRootObservers()` would infinite loop on circular structure
|
|
212
|
-
- Tree rendering would fail
|
|
213
|
-
- Memory leaks from cycles
|
|
214
|
-
- Security concern: malicious code could create DoS
|
|
215
|
-
|
|
216
|
-
**Steps to Reproduce**:
|
|
217
|
-
```ts
|
|
218
|
-
const parent = new Workflow('Parent');
|
|
219
|
-
const child = new Workflow('Child', parent);
|
|
220
|
-
parent.parent = child; // Create circular reference
|
|
221
|
-
parent.getRoot(); // Infinite loop!
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
**Suggested Fix**:
|
|
225
|
-
Add cycle detection in `getRoot()` and `getRootObservers()`:
|
|
226
|
-
```ts
|
|
227
|
-
protected getRoot(): Workflow {
|
|
228
|
-
const visited = new Set<Workflow>();
|
|
229
|
-
let current: Workflow | null = this;
|
|
230
|
-
|
|
231
|
-
while (current) {
|
|
232
|
-
if (visited.has(current)) {
|
|
233
|
-
throw new Error('Circular parent-child relationship detected');
|
|
234
|
-
}
|
|
235
|
-
visited.add(current);
|
|
236
|
-
current = current.parent;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
return this;
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## Minor Issues (Nice to Fix)
|
|
246
|
-
|
|
247
|
-
### Issue 5: `@Task` Decorator Silently Ignores Non-Workflow Returns
|
|
248
|
-
|
|
249
|
-
**Severity**: Minor
|
|
250
|
-
**PRD Reference**: Section 8.2 (@Task Decorator)
|
|
251
|
-
|
|
252
|
-
**Expected Behavior**:
|
|
253
|
-
PRD Section 8.2 states:
|
|
254
|
-
```ts
|
|
255
|
-
if (!(child instanceof Workflow)) {
|
|
256
|
-
throw new Error(`@Task method "${taskName}" did not return a Workflow.`);
|
|
257
|
-
}
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
The PRD skeleton shows a thrown error when a non-Workflow is returned.
|
|
261
|
-
|
|
262
|
-
**Actual Behavior**:
|
|
263
|
-
In `src/decorators/task.ts` lines 59-70:
|
|
264
|
-
```ts
|
|
265
|
-
for (const workflow of workflows) {
|
|
266
|
-
if (workflow && typeof workflow === 'object' && 'id' in workflow) {
|
|
267
|
-
// ... silently skips invalid workflows
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
The implementation uses a loose type guard and silently skips invalid objects instead of throwing an error.
|
|
273
|
-
|
|
274
|
-
**Impact**:
|
|
275
|
-
- Silent failures - developer may not realize task is misconfigured
|
|
276
|
-
- Debugging difficulty when workflows don't attach
|
|
277
|
-
- Departure from PRD's explicit error handling
|
|
278
|
-
|
|
279
|
-
**Steps to Reproduce**:
|
|
280
|
-
1. Create a @Task method that returns a plain object `{id: 'test'}`
|
|
281
|
-
2. Observe no error is thrown
|
|
282
|
-
3. Child is not actually attached
|
|
283
|
-
|
|
284
|
-
**Suggested Fix**:
|
|
285
|
-
Either:
|
|
286
|
-
- Make validation stricter and throw as PRD specifies, OR
|
|
287
|
-
- Document this behavior as intentional (with rationale)
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
### Issue 6: Missing `trackTiming` Default Documentation
|
|
292
|
-
|
|
293
|
-
**Severity**: Minor
|
|
294
|
-
**PRD Reference**: Section 8.1 (@Step Decorator)
|
|
295
|
-
|
|
296
|
-
**Expected Behavior**:
|
|
297
|
-
PRD Section 8.1 shows `trackTiming?: boolean` as optional, implying a default behavior.
|
|
298
|
-
|
|
299
|
-
**Actual Behavior**:
|
|
300
|
-
In `src/decorators/step.ts` line 94:
|
|
301
|
-
```ts
|
|
302
|
-
if (opts.trackTiming !== false) { // ← Default is TRUE
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
The default is `true` (timing always tracked unless explicitly disabled). However, this is not documented and may be inconsistent with user expectations (usually optional features default to `false`).
|
|
306
|
-
|
|
307
|
-
**Impact**:
|
|
308
|
-
- All steps track timing by default, incurring overhead
|
|
309
|
-
- May be unexpected for performance-critical workflows
|
|
310
|
-
- Not clearly documented
|
|
311
|
-
|
|
312
|
-
**Steps to Reproduce**:
|
|
313
|
-
1. Use `@Step()` with no options
|
|
314
|
-
2. Check emitted events
|
|
315
|
-
3. `stepEnd` event with duration is always present
|
|
316
|
-
|
|
317
|
-
**Suggested Fix**:
|
|
318
|
-
Either:
|
|
319
|
-
- Change default to `false` (only track when requested), OR
|
|
320
|
-
- Document clearly that timing is tracked by default
|
|
321
|
-
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
### Issue 7: No Validation for Duplicate Child Attachment
|
|
325
|
-
|
|
326
|
-
**Severity**: Minor
|
|
327
|
-
**PRD Reference**: Section 3 (Architecture), Section 3.1 (WorkflowNode)
|
|
328
|
-
|
|
329
|
-
**Expected Behavior**:
|
|
330
|
-
A workflow should only be attached to a parent once. Duplicate attachments should be prevented or detected.
|
|
331
|
-
|
|
332
|
-
**Actual Behavior**:
|
|
333
|
-
`attachChild()` doesn't check if child is already attached to the parent. Could attach same child twice, creating duplicate entries.
|
|
334
|
-
|
|
335
|
-
**Impact**:
|
|
336
|
-
- Duplicate children in the children array
|
|
337
|
-
- Duplicate nodes in the node tree
|
|
338
|
-
- Inconsistent state
|
|
339
|
-
- Memory leaks from duplicates
|
|
340
|
-
|
|
341
|
-
**Steps to Reproduce**:
|
|
342
|
-
```ts
|
|
343
|
-
const parent = new Workflow('Parent');
|
|
344
|
-
const child = new Workflow('Child');
|
|
345
|
-
parent.attachChild(child);
|
|
346
|
-
parent.attachChild(child); // No error!
|
|
347
|
-
console.log(parent.children.length); // 2!
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
**Suggested Fix**:
|
|
351
|
-
Add duplicate detection in `attachChild()`:
|
|
352
|
-
```ts
|
|
353
|
-
public attachChild(child: Workflow): void {
|
|
354
|
-
if (this.children.includes(child)) {
|
|
355
|
-
throw new Error('Child already attached to this workflow');
|
|
356
|
-
}
|
|
357
|
-
this.children.push(child);
|
|
358
|
-
// ... rest of method
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
### Issue 8: `parentLogId` Not Fully Utilized
|
|
365
|
-
|
|
366
|
-
**Severity**: Minor
|
|
367
|
-
**PRD Reference**: Section 4.1 (LogEntry interface)
|
|
368
|
-
|
|
369
|
-
**Expected Behavior**:
|
|
370
|
-
PRD defines `parentLogId?: string` for hierarchical logging. This should enable log hierarchy visualization.
|
|
371
|
-
|
|
372
|
-
**Actual Behavior**:
|
|
373
|
-
The field exists in `LogEntry` and `WorkflowLogger.child()` creates it, but:
|
|
374
|
-
- No tests verify parent-child log relationships
|
|
375
|
-
- No tree debugger visualization of log hierarchy
|
|
376
|
-
- Not used in `toLogString()` output
|
|
377
|
-
|
|
378
|
-
**Impact**:
|
|
379
|
-
- Feature defined but not exposed
|
|
380
|
-
- Limited utility of hierarchical logging
|
|
381
|
-
- Users don't benefit from log hierarchy
|
|
382
|
-
|
|
383
|
-
**Steps to Reproduce**:
|
|
384
|
-
1. Use `logger.child(parentLogId)` to create child logger
|
|
385
|
-
2. Logs have `parentLogId` set
|
|
386
|
-
3. No way to view the hierarchy in output
|
|
387
|
-
|
|
388
|
-
**Suggested Fix**:
|
|
389
|
-
Either:
|
|
390
|
-
- Add hierarchical log visualization to tree debugger, OR
|
|
391
|
-
- Remove if not intended to be used
|
|
392
|
-
|
|
393
|
-
---
|
|
394
|
-
|
|
395
|
-
### Issue 9: Missing Step Node in Tree Structure
|
|
396
|
-
|
|
397
|
-
**Severity**: Minor
|
|
398
|
-
**PRD Reference**: Section 2 (Architecture diagram), Section 3 (Core Data Model)
|
|
399
|
-
|
|
400
|
-
**Expected Behavior**:
|
|
401
|
-
The PRD architecture shows:
|
|
402
|
-
```
|
|
403
|
-
Workflow
|
|
404
|
-
├─ Steps (decorated methods)
|
|
405
|
-
├─ Tasks (decorated methods)
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
This implies steps should be visible in the tree structure.
|
|
409
|
-
|
|
410
|
-
**Actual Behavior**:
|
|
411
|
-
Steps create `WorkflowNode` objects in the decorator (src/decorators/step.ts lines 56-65) but these step nodes are **not attached to the tree**. They exist only for the duration of step execution and are then lost.
|
|
412
|
-
|
|
413
|
-
**Impact**:
|
|
414
|
-
- Tree debugger doesn't show individual steps
|
|
415
|
-
- Can't see step hierarchy in visualization
|
|
416
|
-
- PRD architecture diagram is misleading
|
|
417
|
-
|
|
418
|
-
**Steps to Reproduce**:
|
|
419
|
-
1. Run workflow with multiple steps
|
|
420
|
-
2. Call `debugger.toTreeString()`
|
|
421
|
-
3. Only workflows visible, not steps
|
|
422
|
-
|
|
423
|
-
**Suggested Fix**:
|
|
424
|
-
Either:
|
|
425
|
-
- Attach step nodes as transient children to workflow node, OR
|
|
426
|
-
- Clarify in documentation that steps are events, not tree nodes
|
|
427
|
-
|
|
428
|
-
---
|
|
429
|
-
|
|
430
|
-
### Issue 10: Edge Case Test File Contains Test Bugs
|
|
431
|
-
|
|
432
|
-
**Severity**: Minor (Test Quality)
|
|
433
|
-
**PRD Reference**: N/A
|
|
434
|
-
|
|
435
|
-
**Expected Behavior**:
|
|
436
|
-
Test files should properly validate implementation behavior.
|
|
437
|
-
|
|
438
|
-
**Actual Behavior**:
|
|
439
|
-
The file `src/__tests__/unit/edge-cases.test.ts` contains 3 failing tests that are **test bugs**, not implementation bugs:
|
|
440
|
-
|
|
441
|
-
1. **"should handle observer that throws"** - The workflow's `run()` method has no return statement, so it returns `undefined`. The test expects `resolves.toBeDefined()` which fails for `undefined`.
|
|
442
|
-
|
|
443
|
-
2. **"should handle task returning non-Workflow object"** - Same issue, `run()` returns `undefined`.
|
|
444
|
-
|
|
445
|
-
3. **"should handle concurrent option with single workflow"** - Creates infinite recursion: the workflow's `run()` method calls a `@Task` method that creates a child with `this` as parent. The `@Task` with `concurrent: true` then calls `child.run()`, which calls the task method again, creating grandchildren infinitely.
|
|
446
|
-
|
|
447
|
-
**Impact**:
|
|
448
|
-
- Test suite shows failures that aren't actual bugs
|
|
449
|
-
- Misleading test results
|
|
450
|
-
- Wastes debugging time
|
|
451
|
-
|
|
452
|
-
**Steps to Reproduce**:
|
|
453
|
-
1. Run `npm test -- src/__tests__/unit/edge-cases.test.ts`
|
|
454
|
-
2. Observe 3 failing tests
|
|
455
|
-
3. Analyze test code to see they're incorrectly written
|
|
456
|
-
|
|
457
|
-
**Suggested Fix**:
|
|
458
|
-
Fix the test cases:
|
|
459
|
-
```ts
|
|
460
|
-
// Test 1 & 2: Add return value
|
|
461
|
-
async run() {
|
|
462
|
-
this.logger.info('test message');
|
|
463
|
-
return 'done'; // Add this
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
// Test 3: Don't call run() in child task, or use different workflow class
|
|
467
|
-
@Task({ concurrent: true })
|
|
468
|
-
async returnSingle() {
|
|
469
|
-
return [new ChildWorkflow('Child', this)]; // Use different class
|
|
470
|
-
}
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
---
|
|
474
|
-
|
|
475
|
-
## Testing Summary
|
|
476
|
-
|
|
477
|
-
### Tests Performed
|
|
478
|
-
|
|
479
|
-
**Automated Tests**: 157 tests, 154 passing, 3 failing (all test bugs)
|
|
480
|
-
- Unit tests: 11 test files, 128 tests (124 passing, 3 test bugs)
|
|
481
|
-
- Integration tests: 2 test files, 26 tests (all passing)
|
|
482
|
-
|
|
483
|
-
**Manual Analysis**:
|
|
484
|
-
- 46+ edge case scenarios analyzed
|
|
485
|
-
- PRD compliance checklist: 100% of core features implemented
|
|
486
|
-
- Type safety: Full TypeScript compilation with no errors
|
|
487
|
-
|
|
488
|
-
### Coverage Analysis
|
|
489
|
-
|
|
490
|
-
**Areas with Good Coverage**:
|
|
491
|
-
- ✅ Workflow lifecycle (idle → running → completed/failed)
|
|
492
|
-
- ✅ @Step decorator with all options
|
|
493
|
-
- ✅ @Task decorator with sequential execution
|
|
494
|
-
- ✅ @ObservedState decorator (redact, hidden options)
|
|
495
|
-
- ✅ Parent-child workflow attachment
|
|
496
|
-
- ✅ Observer pattern (onLog, onEvent, onStateUpdated, onTreeChanged)
|
|
497
|
-
- ✅ Tree debugger visualization
|
|
498
|
-
- ✅ Error wrapping in WorkflowError
|
|
499
|
-
- ✅ Event emission for all core types
|
|
500
|
-
- ✅ Functional workflow pattern
|
|
501
|
-
- ✅ Reflection system
|
|
502
|
-
- ✅ Caching system
|
|
503
|
-
- ✅ Introspection tools
|
|
504
|
-
- ✅ Observable error handling
|
|
505
|
-
- ✅ Logger error handling
|
|
506
|
-
|
|
507
|
-
**Areas Needing More Attention**:
|
|
508
|
-
- ⚠️ Concurrent task error handling (Issue 3)
|
|
509
|
-
- ⚠️ Tree update events (Issue 1)
|
|
510
|
-
- ⚠️ Functional workflow error state capture (Issue 2)
|
|
511
|
-
- ⚠️ Cycle detection (Issue 4)
|
|
512
|
-
- ⚠️ Duplicate attachment prevention (Issue 7)
|
|
513
|
-
- ⚠️ Step-level tree visualization (Issue 9)
|
|
514
|
-
- ⚠️ Hierarchical log visualization (Issue 8)
|
|
515
|
-
|
|
516
|
-
### Security & Safety
|
|
517
|
-
|
|
518
|
-
**No security vulnerabilities identified**:
|
|
519
|
-
- No command injection risks
|
|
520
|
-
- No XSS concerns (CLI tool, not web)
|
|
521
|
-
- Input validation adequate
|
|
522
|
-
- No unsafe type casting
|
|
523
|
-
- Observer errors are caught and logged
|
|
524
|
-
- Observable subscriber errors are caught and logged
|
|
525
|
-
|
|
526
|
-
**Potential Security Concerns**:
|
|
527
|
-
- ⚠️ No cycle detection - could be exploited for DoS (Issue 4)
|
|
528
|
-
- ⚠️ Public `parent` property allows manual circular reference creation
|
|
529
|
-
|
|
530
|
-
---
|
|
531
|
-
|
|
532
|
-
## Recommendations
|
|
533
|
-
|
|
534
|
-
### Immediate Actions (Optional)
|
|
535
|
-
1. **Fix Issue 2**: Functional workflow error state capture - high value, low effort
|
|
536
|
-
2. **Fix Issue 4**: Add cycle detection - prevents DoS, medium effort
|
|
537
|
-
3. **Fix Issue 10**: Fix edge-cases.test.ts test bugs - improves test reliability
|
|
538
|
-
4. **Fix Issue 1**: Add `treeUpdated` event emission - improves correctness
|
|
539
|
-
|
|
540
|
-
### Future Improvements
|
|
541
|
-
1. Implement error merge strategy for concurrent tasks (Issue 3)
|
|
542
|
-
2. Add step nodes to tree visualization (Issue 9)
|
|
543
|
-
3. Add hierarchical log viewing (Issue 8)
|
|
544
|
-
4. Add duplicate attachment detection (Issue 7)
|
|
545
|
-
5. Document `trackTiming` default behavior (Issue 6)
|
|
546
|
-
6. Make @Task validation stricter (Issue 5)
|
|
547
|
-
|
|
548
|
-
### Conclusion
|
|
549
|
-
|
|
550
|
-
The implementation is **production-ready** and fully meets the PRD requirements for core functionality. The issues identified are primarily:
|
|
551
|
-
- Minor deviations from PRD skeleton code
|
|
552
|
-
- Missing convenience features
|
|
553
|
-
- Documentation/behavior clarity issues
|
|
554
|
-
- Test quality issues
|
|
555
|
-
|
|
556
|
-
None of the issues prevent the system from functioning correctly for its intended use cases. The 10 identified issues provide a roadmap for incremental improvements.
|
|
557
|
-
|
|
558
|
-
**Note**: The 3 failing tests in the edge-cases test file are **test bugs**, not implementation bugs. These should be fixed to improve test suite reliability, but they don't reflect actual problems with the workflow engine implementation.
|