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,499 +0,0 @@
|
|
|
1
|
-
# PRP: Write Complex Circular Reference Tests
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## Goal
|
|
6
|
-
|
|
7
|
-
**Feature Goal**: Create a comprehensive test file for circular reference detection at various depths (immediate child, grandchild, great-grandchild) to validate that `isDescendantOf()` correctly prevents cycles through the entire ancestor chain.
|
|
8
|
-
|
|
9
|
-
**Deliverable**: New test file `src/__tests__/adversarial/complex-circular-reference.test.ts` with three test cases covering different cycle depths.
|
|
10
|
-
|
|
11
|
-
**Success Definition**:
|
|
12
|
-
- All three test cases pass when run with `npm run test`
|
|
13
|
-
- Each test validates that `attachChild()` throws an error containing 'circular', 'cycle', or 'ancestor' (case-insensitive)
|
|
14
|
-
- Tests follow the existing adversarial test patterns (AAA structure, console mocking, TDD documentation)
|
|
15
|
-
- Tests are properly documented with inline comments explaining the cycle detection mechanism
|
|
16
|
-
|
|
17
|
-
## User Persona (if applicable)
|
|
18
|
-
|
|
19
|
-
**Target User**: Developer implementing the Workflow class tree integrity validation.
|
|
20
|
-
|
|
21
|
-
**Use Case**: Validating that circular reference detection works correctly across various ancestor depths in the workflow tree.
|
|
22
|
-
|
|
23
|
-
**User Journey**:
|
|
24
|
-
1. Developer writes code to attach a workflow as a child
|
|
25
|
-
2. If the child is an ancestor (at any depth), `attachChild()` must throw an error
|
|
26
|
-
3. These tests verify the error is thrown for immediate parent (depth 1), grandparent (depth 2), and great-grandparent (depth 3)
|
|
27
|
-
|
|
28
|
-
**Pain Points Addressed**:
|
|
29
|
-
- Detects subtle bugs where cycle detection only works for immediate parent but not deeper ancestors
|
|
30
|
-
- Prevents infinite loops in tree traversal methods like `getRoot()` and `getRootObservers()`
|
|
31
|
-
- Validates defensive programming against manual parent mutation
|
|
32
|
-
|
|
33
|
-
## Why
|
|
34
|
-
|
|
35
|
-
- **Security**: Circular references cause infinite loops in tree traversal, leading to DoS vulnerabilities
|
|
36
|
-
- **Data Integrity**: Cycles break the tree invariant, causing incorrect behavior in observer propagation and state management
|
|
37
|
-
- **Bug Prevention**: Existing tests in `circular-reference.test.ts` only test depth 1 (immediate parent) and depth 2 (ancestor). This adds depth 3 coverage
|
|
38
|
-
- **Pattern Compliance**: Fulfills Pattern 8 from `plan/bugfix/architecture/implementation_patterns.md` which requires testing cycles at various depths
|
|
39
|
-
|
|
40
|
-
## What
|
|
41
|
-
|
|
42
|
-
Create a new test file `src/__tests__/adversarial/complex-circular-reference.test.ts` with three test cases:
|
|
43
|
-
|
|
44
|
-
1. **Immediate Circular Reference**: `child.attachChild(parent)` - depth 1 cycle
|
|
45
|
-
2. **Two-Level Circular Reference**: `child2.attachChild(root)` where root → child1 → child2 - depth 2 cycle
|
|
46
|
-
3. **Three-Level Circular Reference**: `child3.attachChild(root)` where root → child1 → child2 → child3 - depth 3 cycle
|
|
47
|
-
|
|
48
|
-
Each test must:
|
|
49
|
-
- Create a 4-level hierarchy (root, child1, child2, child3)
|
|
50
|
-
- Attempt to create a circular reference by attaching an ancestor as a child
|
|
51
|
-
- Assert that an error is thrown with message matching `/circular|cycle|ancestor/i`
|
|
52
|
-
|
|
53
|
-
### Success Criteria
|
|
54
|
-
|
|
55
|
-
- [ ] Test file created at `src/__tests__/adversarial/complex-circular-reference.test.ts`
|
|
56
|
-
- [ ] All three test cases for different cycle depths are implemented
|
|
57
|
-
- [ ] All tests pass with `npm run test`
|
|
58
|
-
- [ ] Tests follow existing patterns from `circular-reference.test.ts` and `deep-hierarchy-stress.test.ts`
|
|
59
|
-
- [ ] Proper documentation comments explain each test scenario
|
|
60
|
-
|
|
61
|
-
## All Needed Context
|
|
62
|
-
|
|
63
|
-
### Context Completeness Check
|
|
64
|
-
|
|
65
|
-
_Before writing this PRP, validate: "If someone knew nothing about this codebase, would they have everything needed to implement this successfully?"_
|
|
66
|
-
|
|
67
|
-
**YES** - This PRP provides:
|
|
68
|
-
- Exact file paths and code patterns to follow
|
|
69
|
-
- Complete `isDescendantOf()` implementation for reference
|
|
70
|
-
- Existing test file examples with identical patterns
|
|
71
|
-
- Vitest configuration and test commands
|
|
72
|
-
- Console mocking pattern from existing tests
|
|
73
|
-
|
|
74
|
-
### Documentation & References
|
|
75
|
-
|
|
76
|
-
```yaml
|
|
77
|
-
# MUST READ - Critical implementation files
|
|
78
|
-
|
|
79
|
-
- file: /home/dustin/projects/groundswell/src/core/workflow.ts
|
|
80
|
-
why: Contains isDescendantOf() implementation and attachChild() circular reference check
|
|
81
|
-
pattern: Lines 150-168 (isDescendantOf method), lines 232-238 (circular reference check in attachChild)
|
|
82
|
-
gotcha: isDescendantOf() starts from this.parent, not this - prevents self-reference false positive
|
|
83
|
-
|
|
84
|
-
- file: /home/dustin/projects/groundswell/src/__tests__/adversarial/circular-reference.test.ts
|
|
85
|
-
why: Pattern template for circular reference tests - same AAA structure, console mocking, error assertions
|
|
86
|
-
pattern: Lines 20-26 (SimpleWorkflow class), 33-45 (console mocking pattern), 58-71 (immediate cycle test), 84-100 (ancestor cycle test)
|
|
87
|
-
gotcha: Must use `vi.restoreAllMocks()` in afterEach to prevent test pollution
|
|
88
|
-
|
|
89
|
-
- file: /home/dustin/projects/groundswell/src/__tests__/adversarial/deep-hierarchy-stress.test.ts
|
|
90
|
-
why: Pattern for building multi-level hierarchies and testing protected/private methods
|
|
91
|
-
pattern: Lines 20-26 (SimpleWorkflow class), 94-109 (building deep hierarchy with loop), 104 (casting to any for protected method access)
|
|
92
|
-
gotcha: getRoot() and isDescendantOf() are not public - cast to `any` for testing
|
|
93
|
-
|
|
94
|
-
- file: /home/dustin/projects/groundswell/plan/docs/bugfix-architecture/implementation_patterns.md
|
|
95
|
-
why: Pattern 8 defines the requirement for testing cycles at various depths
|
|
96
|
-
section: Pattern 8 - Adversarial Testing (see complex circular reference test example)
|
|
97
|
-
gotcha: Tests should cover immediate child, grandchild, and great-grandchild scenarios
|
|
98
|
-
|
|
99
|
-
- file: /home/dustin/projects/groundswell/vitest.config.ts
|
|
100
|
-
why: Confirms test file location pattern and vitest configuration
|
|
101
|
-
pattern: Line 5 - test glob pattern is `src/__tests__/**/*.test.ts`
|
|
102
|
-
gotcha: All test files must end in `.test.ts` to be discovered by vitest
|
|
103
|
-
|
|
104
|
-
- url: https://vitest.dev/api/expect.html#tothrow
|
|
105
|
-
why: Official vitest documentation for toThrow() assertion patterns
|
|
106
|
-
critical: Supports regex patterns like `/circular|cycle|ancestor/i` for flexible error matching
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Current Codebase tree (relevant sections)
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
src/
|
|
113
|
-
├── core/
|
|
114
|
-
│ └── workflow.ts # Workflow class with isDescendantOf() and attachChild()
|
|
115
|
-
└── __tests__/
|
|
116
|
-
└── adversarial/
|
|
117
|
-
├── circular-reference.test.ts # Existing basic cycle tests (depth 1, 2)
|
|
118
|
-
├── deep-hierarchy-stress.test.ts # Deep hierarchy tests (1000+ levels)
|
|
119
|
-
└── complex-circular-reference.test.ts # TO BE CREATED - multi-depth cycle tests
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Desired Codebase tree with files to be added
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
src/
|
|
126
|
-
├── core/
|
|
127
|
-
│ └── workflow.ts # NO CHANGE - isDescendantOf() already implemented
|
|
128
|
-
└── __tests__/
|
|
129
|
-
└── adversarial/
|
|
130
|
-
├── circular-reference.test.ts # EXISTING - basic cycle tests
|
|
131
|
-
├── deep-hierarchy-stress.test.ts # EXISTING - deep hierarchy tests
|
|
132
|
-
└── complex-circular-reference.test.ts # NEW FILE - depth 1, 2, 3 cycle tests
|
|
133
|
-
# Responsibility: Validate isDescendantOf() detects cycles at various ancestor depths
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### Known Gotchas of our codebase & Library Quirks
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
// CRITICAL: Constructor auto-attaches child when parent is provided
|
|
140
|
-
// Pattern: workflow.ts:113-116
|
|
141
|
-
const child = new Workflow('Child', parent);
|
|
142
|
-
// This internally calls parent.attachChild(child) automatically
|
|
143
|
-
|
|
144
|
-
// CRITICAL: isDescendantOf() starts from this.parent, not this
|
|
145
|
-
// Implementation: workflow.ts:152
|
|
146
|
-
let current: Workflow | null = this.parent; // NOT this!
|
|
147
|
-
// This prevents self-reference false positive: root.isDescendantOf(root) === false
|
|
148
|
-
|
|
149
|
-
// CRITICAL: isDescendantOf() and getRoot() are private/protected
|
|
150
|
-
// Must cast to `any` in tests to access them:
|
|
151
|
-
(root as any).isDescendantOf(child);
|
|
152
|
-
(deepest as any).getRoot();
|
|
153
|
-
|
|
154
|
-
// CRITICAL: Always use vi.restoreAllMocks() in afterEach
|
|
155
|
-
// Pattern: circular-reference.test.ts:43-45
|
|
156
|
-
afterEach(() => {
|
|
157
|
-
vi.restoreAllMocks(); // Prevents test pollution
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
// CRITICAL: Error message regex must be case-insensitive
|
|
161
|
-
// attachChild throws: "it is an ancestor of" (lowercase 'ancestor')
|
|
162
|
-
// Use: /circular|cycle|ancestor/i (note the 'i' flag for case-insensitive)
|
|
163
|
-
|
|
164
|
-
// CRITICAL: Workflow constructor auto-attaches - DON'T manually call attachChild
|
|
165
|
-
// WRONG: const child = new Workflow('Child'); parent.attachChild(child);
|
|
166
|
-
// RIGHT: const child = new Workflow('Child', parent); // Auto-attaches
|
|
167
|
-
|
|
168
|
-
// CRITICAL: When building hierarchies, track the last child
|
|
169
|
-
// Pattern: deep-hierarchy-stress.test.ts:94-101
|
|
170
|
-
let current: any = root;
|
|
171
|
-
for (let i = 0; i < DEPTH; i++) {
|
|
172
|
-
current = new SimpleWorkflow(`Child-${i}`, current);
|
|
173
|
-
}
|
|
174
|
-
// After loop, `current` is the deepest child
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## Implementation Blueprint
|
|
178
|
-
|
|
179
|
-
### Data models and structure
|
|
180
|
-
|
|
181
|
-
No data models needed - tests only use existing Workflow class.
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
// Test helper class (same pattern used in all adversarial tests)
|
|
185
|
-
class SimpleWorkflow extends Workflow {
|
|
186
|
-
async run(): Promise<string> {
|
|
187
|
-
this.setStatus('running');
|
|
188
|
-
this.setStatus('completed');
|
|
189
|
-
return 'done';
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### Implementation Tasks (ordered by dependencies)
|
|
195
|
-
|
|
196
|
-
```yaml
|
|
197
|
-
Task 1: CREATE src/__tests__/adversarial/complex-circular-reference.test.ts
|
|
198
|
-
- IMPLEMENT: Three test cases for cycle detection at depths 1, 2, 3
|
|
199
|
-
- FOLLOW pattern: src/__tests__/adversarial/circular-reference.test.ts (AAA structure, console mocking)
|
|
200
|
-
- NAMING: describe() = "Adversarial: Complex Circular Reference Detection"
|
|
201
|
-
- PLACEMENT: src/__tests__/adversarial/ directory
|
|
202
|
-
|
|
203
|
-
Task 2: IMPLEMENT Test 1 - Immediate Circular Reference (depth 1)
|
|
204
|
-
- CREATE: 2-level hierarchy (root, child1)
|
|
205
|
-
- ATTEMPT: child1.attachChild(root)
|
|
206
|
-
- ASSERT: Error thrown with /circular|cycle|ancestor/i
|
|
207
|
-
- FOLLOW pattern: circular-reference.test.ts:58-71
|
|
208
|
-
- DOCUMENT: "immediate cycle" in test description
|
|
209
|
-
|
|
210
|
-
Task 3: IMPLEMENT Test 2 - Two-Level Circular Reference (depth 2)
|
|
211
|
-
- CREATE: 3-level hierarchy (root, child1, child2)
|
|
212
|
-
- ATTEMPT: child2.attachChild(root)
|
|
213
|
-
- ASSERT: Error thrown with /circular|cycle|ancestor/i
|
|
214
|
-
- FOLLOW pattern: circular-reference.test.ts:84-100 (ancestor test)
|
|
215
|
-
- DOCUMENT: "2-level cycle" in test description
|
|
216
|
-
|
|
217
|
-
Task 4: IMPLEMENT Test 3 - Three-Level Circular Reference (depth 3)
|
|
218
|
-
- CREATE: 4-level hierarchy (root, child1, child2, child3)
|
|
219
|
-
- ATTEMPT: child3.attachChild(root)
|
|
220
|
-
- ASSERT: Error thrown with /circular|cycle|ancestor/i
|
|
221
|
-
- FOLLOW pattern: deep-hierarchy-stress.test.ts:94-109 (hierarchy building)
|
|
222
|
-
- DOCUMENT: "3-level cycle" in test description - NEW coverage not in existing tests
|
|
223
|
-
|
|
224
|
-
Task 5: VERIFY all tests pass
|
|
225
|
-
- RUN: npm run test -- complex-circular-reference
|
|
226
|
-
- EXPECT: All 3 tests pass
|
|
227
|
-
- VALIDATE: Error messages are informative
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Implementation Patterns & Key Details
|
|
231
|
-
|
|
232
|
-
```typescript
|
|
233
|
-
// ============================================
|
|
234
|
-
// PATTERN 1: File Header Documentation
|
|
235
|
-
// ============================================
|
|
236
|
-
/**
|
|
237
|
-
* Complex Circular Reference Tests
|
|
238
|
-
*
|
|
239
|
-
* These tests validate that isDescendantOf() correctly detects circular
|
|
240
|
-
* references at various depths in the workflow tree.
|
|
241
|
-
*
|
|
242
|
-
* Test Cases:
|
|
243
|
-
* 1. Immediate circular reference (depth 1): child.attachChild(parent)
|
|
244
|
-
* 2. Two-level circular reference (depth 2): grandchild.attachChild(root)
|
|
245
|
-
* 3. Three-level circular reference (depth 3): great-grandchild.attachChild(root)
|
|
246
|
-
*
|
|
247
|
-
* Pattern from: plan/docs/bugfix-architecture/implementation_patterns.md Pattern 8
|
|
248
|
-
* Related: plan/bugfix/P1M3T1S3/PRP.md
|
|
249
|
-
*/
|
|
250
|
-
|
|
251
|
-
// ============================================
|
|
252
|
-
// PATTERN 2: Test Helper Class
|
|
253
|
-
// ============================================
|
|
254
|
-
class SimpleWorkflow extends Workflow {
|
|
255
|
-
async run(): Promise<string> {
|
|
256
|
-
this.setStatus('running');
|
|
257
|
-
this.setStatus('completed');
|
|
258
|
-
return 'done';
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
// FOLLOW: circular-reference.test.ts:20-26
|
|
262
|
-
|
|
263
|
-
// ============================================
|
|
264
|
-
// PATTERN 3: Console Mocking Setup
|
|
265
|
-
// ============================================
|
|
266
|
-
describe('Adversarial: Complex Circular Reference Detection', () => {
|
|
267
|
-
beforeEach(() => {
|
|
268
|
-
vi.spyOn(console, 'log').mockImplementation(() => {});
|
|
269
|
-
vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
270
|
-
vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
afterEach(() => {
|
|
274
|
-
vi.restoreAllMocks(); // CRITICAL: Always restore mocks
|
|
275
|
-
});
|
|
276
|
-
// FOLLOW: circular-reference.test.ts:33-45
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
// ============================================
|
|
280
|
-
// PATTERN 4: Test Case Structure (AAA)
|
|
281
|
-
// ============================================
|
|
282
|
-
it('should throw when attaching immediate parent as child (depth 1)', () => {
|
|
283
|
-
// ========== ARRANGE ==========
|
|
284
|
-
const parent = new SimpleWorkflow('Parent');
|
|
285
|
-
const child = new SimpleWorkflow('Child', parent);
|
|
286
|
-
|
|
287
|
-
// Verify initial state
|
|
288
|
-
expect(child.parent).toBe(parent);
|
|
289
|
-
expect(parent.children).toContain(child);
|
|
290
|
-
|
|
291
|
-
// ========== ACT & ASSERT ==========
|
|
292
|
-
expect(() => child.attachChild(parent)).toThrow(/circular|cycle|ancestor/i);
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
// ============================================
|
|
296
|
-
// PATTERN 5: Multi-Level Hierarchy Building
|
|
297
|
-
// ============================================
|
|
298
|
-
// For depth 3 test (4 levels: root, child1, child2, child3)
|
|
299
|
-
const root = new SimpleWorkflow('Root');
|
|
300
|
-
const child1 = new SimpleWorkflow('Child1', root); // root -> child1
|
|
301
|
-
const child2 = new SimpleWorkflow('Child2', child1); // root -> child1 -> child2
|
|
302
|
-
const child3 = new SimpleWorkflow('Child3', child2); // root -> child1 -> child2 -> child3
|
|
303
|
-
|
|
304
|
-
// Verify hierarchy
|
|
305
|
-
expect(child3.parent).toBe(child2);
|
|
306
|
-
expect(child2.parent).toBe(child1);
|
|
307
|
-
expect(child1.parent).toBe(root);
|
|
308
|
-
|
|
309
|
-
// Attempt cycle: child3.attachChild(root)
|
|
310
|
-
expect(() => child3.attachChild(root)).toThrow(/circular|cycle|ancestor/i);
|
|
311
|
-
|
|
312
|
-
// FOLLOW: deep-hierarchy-stress.test.ts:94-109
|
|
313
|
-
|
|
314
|
-
// ============================================
|
|
315
|
-
// PATTERN 6: Error Message Validation
|
|
316
|
-
// ============================================
|
|
317
|
-
// The attachChild() method throws specific error messages:
|
|
318
|
-
// workflow.ts:234-235: "it is an ancestor of '...'. This would create a circular reference."
|
|
319
|
-
//
|
|
320
|
-
// Use regex pattern matching for flexibility:
|
|
321
|
-
expect(() => child.attachChild(parent)).toThrow(/circular|cycle|ancestor/i);
|
|
322
|
-
// The 'i' flag makes it case-insensitive
|
|
323
|
-
|
|
324
|
-
// GOTCHA: Error message uses "ancestor" (lowercase), not "Ancestor"
|
|
325
|
-
// Gotcha source: workflow.ts:234
|
|
326
|
-
|
|
327
|
-
// ============================================
|
|
328
|
-
// PATTERN 7: Constructor Auto-Attachment
|
|
329
|
-
// ============================================
|
|
330
|
-
// CRITICAL: When parent is passed to constructor, attachChild() is called automatically
|
|
331
|
-
// Implementation: workflow.ts:114-116
|
|
332
|
-
if (this.parent) {
|
|
333
|
-
this.parent.attachChild(this);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
// CORRECT USAGE:
|
|
337
|
-
const child = new SimpleWorkflow('Child', parent); // Auto-attaches
|
|
338
|
-
|
|
339
|
-
// WRONG USAGE (don't do this):
|
|
340
|
-
const child = new SimpleWorkflow('Child');
|
|
341
|
-
parent.attachChild(child); // Redundant, constructor already did it
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
### Integration Points
|
|
345
|
-
|
|
346
|
-
```yaml
|
|
347
|
-
TEST_FRAMEWORK:
|
|
348
|
-
- runner: vitest (configured in vitest.config.ts)
|
|
349
|
-
- glob: src/__tests__/**/*.test.ts
|
|
350
|
-
- command: npm run test -- [filename]
|
|
351
|
-
|
|
352
|
-
IMPORTS:
|
|
353
|
-
- from: 'vitest'
|
|
354
|
-
imports: describe, it, expect, beforeEach, afterEach, vi
|
|
355
|
-
- from: '../../index.js'
|
|
356
|
-
import: Workflow class
|
|
357
|
-
|
|
358
|
-
NO_CHANGES_NEEDED:
|
|
359
|
-
- workflow.ts: isDescendantOf() already implemented at lines 150-168
|
|
360
|
-
- workflow.ts: attachChild() circular reference check already at lines 232-238
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
## Validation Loop
|
|
364
|
-
|
|
365
|
-
### Level 1: Syntax & Style (Immediate Feedback)
|
|
366
|
-
|
|
367
|
-
```bash
|
|
368
|
-
# Run after file creation - fix before proceeding
|
|
369
|
-
npm run test -- complex-circular-reference # Run just the new test file
|
|
370
|
-
|
|
371
|
-
# Expected: Tests should PASS (isDescendantOf is already implemented)
|
|
372
|
-
# If tests FAIL, read output and fix test implementation
|
|
373
|
-
|
|
374
|
-
# Full test suite validation (ensure no regressions)
|
|
375
|
-
npm run test
|
|
376
|
-
|
|
377
|
-
# Expected: All tests pass
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
### Level 2: Unit Tests (Component Validation)
|
|
381
|
-
|
|
382
|
-
```bash
|
|
383
|
-
# Run specific test file
|
|
384
|
-
npm run test -- complex-circular-reference
|
|
385
|
-
|
|
386
|
-
# Expected output:
|
|
387
|
-
# ✓ src/__tests__/adversarial/complex-circular-reference.test.ts (3)
|
|
388
|
-
# ✓ Adversarial: Complex Circular Reference Detection (3)
|
|
389
|
-
# ✓ should throw when attaching immediate parent as child (depth 1)
|
|
390
|
-
# ✓ should throw when attaching grandparent as child (depth 2)
|
|
391
|
-
# ✓ should throw when attaching great-grandparent as child (depth 3)
|
|
392
|
-
|
|
393
|
-
# Full adversarial test suite
|
|
394
|
-
npm run test -- adversarial
|
|
395
|
-
|
|
396
|
-
# Expected: All adversarial tests pass
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
### Level 3: Integration Testing (System Validation)
|
|
400
|
-
|
|
401
|
-
```bash
|
|
402
|
-
# Verify test file is discovered by vitest glob pattern
|
|
403
|
-
npm run test -- --reporter=verbose 2>&1 | grep complex-circular-reference
|
|
404
|
-
|
|
405
|
-
# Expected: Test file is found and executed
|
|
406
|
-
|
|
407
|
-
# Verify no regressions in existing circular reference tests
|
|
408
|
-
npm run test -- circular-reference
|
|
409
|
-
|
|
410
|
-
# Expected: Existing tests still pass
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### Level 4: Creative & Domain-Specific Validation
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
# Vitest coverage (if coverage is configured)
|
|
417
|
-
npm run test -- --coverage
|
|
418
|
-
|
|
419
|
-
# Expected: New lines covered in isDescendantOf() method
|
|
420
|
-
|
|
421
|
-
# Performance test - ensure tests run quickly
|
|
422
|
-
time npm run test -- complex-circular-reference
|
|
423
|
-
|
|
424
|
-
# Expected: Tests complete in < 1 second (simple operations)
|
|
425
|
-
|
|
426
|
-
# Validate error messages are informative
|
|
427
|
-
npm run test -- complex-circular-reference 2>&1 | grep -i "ancestor\|circular"
|
|
428
|
-
|
|
429
|
-
# Expected: Error messages contain clear descriptions
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
## Final Validation Checklist
|
|
433
|
-
|
|
434
|
-
### Technical Validation
|
|
435
|
-
|
|
436
|
-
- [ ] Test file created at `src/__tests__/adversarial/complex-circular-reference.test.ts`
|
|
437
|
-
- [ ] All three test cases pass: `npm run test -- complex-circular-reference`
|
|
438
|
-
- [ ] No regressions: `npm run test` passes completely
|
|
439
|
-
- [ ] Console properly mocked (check for no console output in test results)
|
|
440
|
-
- [ ] Error assertions use correct regex pattern: `/circular|cycle|ancestor/i`
|
|
441
|
-
|
|
442
|
-
### Feature Validation
|
|
443
|
-
|
|
444
|
-
- [ ] Test 1 validates depth 1 cycle (immediate parent)
|
|
445
|
-
- [ ] Test 2 validates depth 2 cycle (grandparent)
|
|
446
|
-
- [ ] Test 3 validates depth 3 cycle (great-grandparent)
|
|
447
|
-
- [ ] All tests properly verify initial hierarchy state before attempting cycle
|
|
448
|
-
- [ ] Tests follow AAA pattern (Arrange, Act, Assert)
|
|
449
|
-
|
|
450
|
-
### Code Quality Validation
|
|
451
|
-
|
|
452
|
-
- [ ] File header documentation includes Pattern 8 reference
|
|
453
|
-
- [ ] Test descriptions clearly indicate cycle depth
|
|
454
|
-
- [ ] Inline comments explain the cycle being tested
|
|
455
|
-
- [ ] Console mocking follows existing pattern with vi.restoreAllMocks()
|
|
456
|
-
- [ ] SimpleWorkflow class included (no external dependencies)
|
|
457
|
-
|
|
458
|
-
### Documentation & Deployment
|
|
459
|
-
|
|
460
|
-
- [ ] PRP path saved at plan/bugfix/P1M3T1S3/PRP.md
|
|
461
|
-
- [ ] Test file follows naming convention: `*-circular-reference.test.ts`
|
|
462
|
-
- [ ] Test file located in correct directory: `src/__tests__/adversarial/`
|
|
463
|
-
- [ ] Related test files referenced in documentation
|
|
464
|
-
|
|
465
|
-
---
|
|
466
|
-
|
|
467
|
-
## Anti-Patterns to Avoid
|
|
468
|
-
|
|
469
|
-
- **Don't** manually call `attachChild()` when constructor already does it - just pass parent to constructor
|
|
470
|
-
- **Don't** forget `vi.restoreAllMocks()` in afterEach - causes test pollution
|
|
471
|
-
- **Don't** use exact string match for error assertions - use regex `/circular|cycle|ancestor/i`
|
|
472
|
-
- **Don't** forget to verify initial state before testing the cycle
|
|
473
|
-
- **Don't** create tests that are too similar to existing `circular-reference.test.ts` - this file adds depth 3 coverage
|
|
474
|
-
- **Don't** skip the `i` flag on regex - error messages use specific casing
|
|
475
|
-
- **Don't** use recursion to build hierarchies in tests - use iteration (avoids test-side stack overflow)
|
|
476
|
-
- **Don't** test `isDescendantOf()` directly without casting to `any` - it's private
|
|
477
|
-
|
|
478
|
-
## Test Specification Summary
|
|
479
|
-
|
|
480
|
-
| Test Name | Hierarchy Depth | Cycle Attempt | Expected Error |
|
|
481
|
-
|-----------|----------------|---------------|----------------|
|
|
482
|
-
| Immediate Circular Reference (depth 1) | 2 (root, child1) | child1.attachChild(root) | /circular\|cycle\|ancestor/i |
|
|
483
|
-
| Two-Level Circular Reference (depth 2) | 3 (root, child1, child2) | child2.attachChild(root) | /circular\|cycle\|ancestor/i |
|
|
484
|
-
| Three-Level Circular Reference (depth 3) | 4 (root, child1, child2, child3) | child3.attachChild(root) | /circular\|cycle\|ancestor/i |
|
|
485
|
-
|
|
486
|
-
## Success Metrics
|
|
487
|
-
|
|
488
|
-
**Confidence Score**: 10/10 for one-pass implementation success
|
|
489
|
-
|
|
490
|
-
**Validation**: The PRP provides complete context including:
|
|
491
|
-
- Exact file paths and line numbers for all references
|
|
492
|
-
- Complete code examples for all patterns
|
|
493
|
-
- Existing test files with identical patterns to follow
|
|
494
|
-
- isDescendantOf() implementation for reference
|
|
495
|
-
- Vitest configuration and test commands
|
|
496
|
-
- Console mocking pattern with gotchas documented
|
|
497
|
-
- Constructor auto-attachment behavior explained
|
|
498
|
-
|
|
499
|
-
An AI agent unfamiliar with this codebase can implement this successfully using only the PRP content and codebase access.
|