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,713 +0,0 @@
|
|
|
1
|
-
# PRP: Write Test for WorkflowContext Error State Capture
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## Goal
|
|
6
|
-
|
|
7
|
-
**Feature Goal**: Add a comprehensive test to `src/__tests__/unit/context.test.ts` that validates the `WorkflowContext.step()` error handler properly captures state (via `getObservedState(this.workflow)`) and logs (via `[...this.workflow.node.logs] as LogEntry[]`) when errors occur during step execution.
|
|
8
|
-
|
|
9
|
-
**Deliverable**: A new test case `should capture state and logs in step() error handler` added to the existing test suite in `src/__tests__/unit/context.test.ts` that validates error state/logs capture for `WorkflowContext.step()` method.
|
|
10
|
-
|
|
11
|
-
**Success Definition**: The test creates a Workflow with `@ObservedState` decorated fields, calls `ctx.step()` with a function that throws an error, and asserts that the error event's `state` property contains captured observed field values and `logs` property contains log entries.
|
|
12
|
-
|
|
13
|
-
## User Persona
|
|
14
|
-
|
|
15
|
-
**Target User**: Developer/QA Engineer who needs to verify that `WorkflowContext.step()` error handlers properly capture workflow state and logs for debugging purposes.
|
|
16
|
-
|
|
17
|
-
**Use Case**: When developing or testing workflows that use the functional `ctx.step()` API, developers need assurance that error events emitted from step failures contain complete execution context (state and logs) to diagnose failures and understand what happened before the error occurred.
|
|
18
|
-
|
|
19
|
-
**User Journey**:
|
|
20
|
-
1. Developer writes a workflow using the functional executor pattern with `ctx.step()` calls
|
|
21
|
-
2. Developer optionally decorates workflow class fields with `@ObservedState` for state tracking
|
|
22
|
-
3. Step execution may encounter errors during workflow run
|
|
23
|
-
4. Error event is emitted with `WorkflowError` object containing `state` and `logs`
|
|
24
|
-
5. Developer inspects `error.state` to see captured workflow state
|
|
25
|
-
6. Developer inspects `error.logs` to see execution history
|
|
26
|
-
|
|
27
|
-
**Pain Points Addressed**:
|
|
28
|
-
- Previously `error.state` was empty object `{}` for all step() errors
|
|
29
|
-
- Previously `error.logs` was empty array `[]` for all step() errors
|
|
30
|
-
- No test validation that `getObservedState(this.workflow)` actually captures decorated fields in step() error handler
|
|
31
|
-
- No test validation that `[...this.workflow.node.logs]` actually captures log entries in step() error handler
|
|
32
|
-
|
|
33
|
-
## Why
|
|
34
|
-
|
|
35
|
-
- **Bug Fix Validation**: Subtask P1.M1.T2.S4 requires a test to validate the fixes from P1.M1.T2.S2 (state capture in first error handler) and P1.M1.T2.S3 (state/logs capture in second error handler)
|
|
36
|
-
- **Regression Prevention**: Ensures future changes don't break error state/logs capture in `WorkflowContext.step()` method
|
|
37
|
-
- **Documentation**: Test serves as executable documentation of expected error behavior for the step() API
|
|
38
|
-
- **Completes P1.M1.T2**: This is the final subtask in the "Fix Empty State/Logs in WorkflowContext.step() Error Handler" task
|
|
39
|
-
- **Follows Test-Driven Bug Fix**: Implementation (S2, S3) is complete; this test validates the fix works correctly
|
|
40
|
-
- **Complements Existing Tests**: The existing test in `workflow.test.ts` (lines 132-207) validates state capture through the full workflow execution path; this new test focuses specifically on the `step()` error handler behavior
|
|
41
|
-
|
|
42
|
-
## What
|
|
43
|
-
|
|
44
|
-
Add a test to `src/__tests__/unit/context.test.ts` that:
|
|
45
|
-
1. Creates a Workflow class with `@ObservedState` decorated fields
|
|
46
|
-
2. Uses a functional executor that calls `ctx.step()` with a failing function
|
|
47
|
-
3. Captures error events via `WorkflowObserver`
|
|
48
|
-
4. Validates that the error event contains captured `state` (with @ObservedState field values)
|
|
49
|
-
5. Validates that the error event contains captured `logs` (as an array)
|
|
50
|
-
|
|
51
|
-
### Success Criteria
|
|
52
|
-
|
|
53
|
-
- [ ] New test case added to `src/__tests__/unit/context.test.ts`
|
|
54
|
-
- [ ] Test creates a Workflow class with `@ObservedState` fields
|
|
55
|
-
- [ ] Test uses functional executor pattern (not class-based run() method)
|
|
56
|
-
- [ ] Test calls `ctx.step()` with a function that throws
|
|
57
|
-
- [ ] Test asserts `error.state` contains captured observed field values
|
|
58
|
-
- [ ] Test asserts `error.logs` is an array (may be empty if no logs generated before error)
|
|
59
|
-
- [ ] Test follows existing test patterns in `workflow.test.ts`
|
|
60
|
-
- [ ] All tests pass after new test is added
|
|
61
|
-
|
|
62
|
-
## All Needed Context
|
|
63
|
-
|
|
64
|
-
### Context Completeness Check
|
|
65
|
-
|
|
66
|
-
_If someone knew nothing about this codebase, would they have everything needed to implement this successfully?_
|
|
67
|
-
|
|
68
|
-
**YES** - This PRP provides:
|
|
69
|
-
- Exact file location for adding the test (`src/__tests__/unit/context.test.ts`)
|
|
70
|
-
- Complete code snippets showing existing test patterns to follow from `workflow.test.ts`
|
|
71
|
-
- Reference patterns for `@ObservedState` usage from existing tests
|
|
72
|
-
- The exact implementation being tested (WorkflowContext.step() error handlers in workflow-context.ts)
|
|
73
|
-
- All required imports and test structure
|
|
74
|
-
- Known gotchas about functional vs class-based workflows
|
|
75
|
-
- Specific line numbers for error handlers being tested
|
|
76
|
-
|
|
77
|
-
### Documentation & References
|
|
78
|
-
|
|
79
|
-
```yaml
|
|
80
|
-
# MUST READ - Include these in your context window
|
|
81
|
-
- file: src/__tests__/unit/workflow.test.ts
|
|
82
|
-
why: PRIMARY REFERENCE - Contains the exact test pattern to follow
|
|
83
|
-
pattern: Lines 132-207 show "should capture @ObservedState fields in workflow error state"
|
|
84
|
-
critical: Shows complete test structure: observer setup, @ObservedState class, ctx.step() error trigger, assertions
|
|
85
|
-
line_range: 132-207
|
|
86
|
-
gotcha: This test already exists and validates step() error handler - P1.M1.T2.S4 may need to enhance or add a variant
|
|
87
|
-
|
|
88
|
-
- file: src/__tests__/unit/workflow.test.ts
|
|
89
|
-
why: Lines 82-130 show basic functional workflow error testing
|
|
90
|
-
pattern: Shows observer pattern, ctx.step() error trigger, basic error assertions
|
|
91
|
-
line_range: 82-130
|
|
92
|
-
critical: Lines 98-100 show ctx.step() usage with throwing function
|
|
93
|
-
|
|
94
|
-
- file: src/__tests__/unit/context.test.ts
|
|
95
|
-
why: TARGET FILE - Add new test case to this file
|
|
96
|
-
pattern: Current tests use vitest describe/it blocks, simple mock creation
|
|
97
|
-
line_range: 1-138
|
|
98
|
-
gotcha: Current tests target AgentExecutionContext, not WorkflowContext. Add new describe() block for WorkflowContext tests
|
|
99
|
-
critical: Consider adding a new describe('WorkflowContext', () => {...}) block to separate from AgentExecutionContext tests
|
|
100
|
-
|
|
101
|
-
- file: src/core/workflow-context.ts
|
|
102
|
-
why: Implementation being tested - WorkflowContext.step() error handlers
|
|
103
|
-
pattern: Lines 155-165 show first error handler in step() method
|
|
104
|
-
pattern: Lines 319-329 show second error handler in replaceLastPromptResult() method
|
|
105
|
-
line_range: 155-165, 319-329
|
|
106
|
-
critical: Line 161: `state: getObservedState(this.workflow)` - this is what the test validates
|
|
107
|
-
critical: Line 162: `logs: [...this.workflow.node.logs] as LogEntry[]` - this is what the test validates
|
|
108
|
-
|
|
109
|
-
- file: src/__tests__/unit/decorators.test.ts
|
|
110
|
-
why: Reference pattern for @ObservedState usage in tests
|
|
111
|
-
pattern: Lines 69-100 show StateTestWorkflow class with @ObservedState decorators
|
|
112
|
-
critical: Shows how to create class with @ObservedState(), @ObservedState({ redact: true }), @ObservedState({ hidden: true })
|
|
113
|
-
line_range: 69-100
|
|
114
|
-
|
|
115
|
-
- file: src/decorators/observed-state.ts
|
|
116
|
-
why: Understanding how getObservedState() works and what it returns
|
|
117
|
-
pattern: Lines 50-77 show getObservedState function implementation
|
|
118
|
-
critical: Returns empty object {} if no fields decorated with @ObservedState
|
|
119
|
-
line_range: 50-77
|
|
120
|
-
|
|
121
|
-
- file: src/types/error.ts
|
|
122
|
-
why: WorkflowError interface definition - structure of error object
|
|
123
|
-
pattern: WorkflowError interface with state and logs properties
|
|
124
|
-
gotcha: error.state is SerializedWorkflowState, error.logs is LogEntry[]
|
|
125
|
-
|
|
126
|
-
- file: src/types/logging.ts
|
|
127
|
-
why: LogEntry type definition - structure of log entries
|
|
128
|
-
pattern: LogEntry interface with id, workflowId, timestamp, level, message, data properties
|
|
129
|
-
|
|
130
|
-
- file: plan/bugfix/P1M1T1S4/PRP.md
|
|
131
|
-
why: Related PRP for functional workflow error state capture test
|
|
132
|
-
pattern: Similar structure and patterns, but for Workflow.runFunctional() instead of WorkflowContext.step()
|
|
133
|
-
critical: Use as template reference, but note the difference between runFunctional() and step() error handlers
|
|
134
|
-
|
|
135
|
-
- url: https://vitest.dev/guide/assertions.html
|
|
136
|
-
why: Vitest assertions documentation
|
|
137
|
-
critical: expect().toBeDefined(), expect().toBe(), expect().rejects.toThrow()
|
|
138
|
-
|
|
139
|
-
- url: https://vitest.dev/guide/expect.html
|
|
140
|
-
why: Vitest expect API for custom matchers
|
|
141
|
-
critical: expect.objectContaining() for partial object matching
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Current Codebase Tree
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
/home/dustin/projects/groundswell
|
|
148
|
-
├── dist/ # Compiled JavaScript (not modified)
|
|
149
|
-
├── docs/ # User documentation
|
|
150
|
-
├── examples/
|
|
151
|
-
│ └── examples/
|
|
152
|
-
│ └── 05-error-handling.ts # Error handling example
|
|
153
|
-
├── plan/
|
|
154
|
-
│ ├── architecture/ # Architecture documentation
|
|
155
|
-
│ ├── docs/
|
|
156
|
-
│ │ └── bugfix/
|
|
157
|
-
│ │ └── system_context.md
|
|
158
|
-
│ └── bugfix/
|
|
159
|
-
│ ├── P1M1T1S1/PRP.md
|
|
160
|
-
│ ├── P1M1T1S2/PRP.md
|
|
161
|
-
│ ├── P1M1T1S3/PRP.md
|
|
162
|
-
│ ├── P1M1T1S4/PRP.md
|
|
163
|
-
│ ├── P1M1T2S1/PRP.md
|
|
164
|
-
│ ├── P1M1T2S2/PRP.md
|
|
165
|
-
│ ├── P1M1T2S3/PRP.md
|
|
166
|
-
│ └── P1M1T2S4/ # THIS PRP LOCATION
|
|
167
|
-
├── src/
|
|
168
|
-
│ ├── __tests__/
|
|
169
|
-
│ │ ├── integration/
|
|
170
|
-
│ │ └── unit/
|
|
171
|
-
│ │ ├── workflow.test.ts # Reference test patterns
|
|
172
|
-
│ │ ├── decorators.test.ts # Reference for @ObservedState
|
|
173
|
-
│ │ └── context.test.ts # TARGET FILE - Add test here
|
|
174
|
-
│ ├── core/
|
|
175
|
-
│ │ ├── workflow.ts # Workflow class
|
|
176
|
-
│ │ ├── workflow-context.ts # Implementation being tested
|
|
177
|
-
│ │ └── context.ts # AgentExecutionContext (different module)
|
|
178
|
-
│ ├── decorators/
|
|
179
|
-
│ │ ├── step.ts
|
|
180
|
-
│ │ └── observed-state.ts # getObservedState function
|
|
181
|
-
│ └── types/
|
|
182
|
-
│ ├── workflow.ts
|
|
183
|
-
│ ├── logging.ts # LogEntry interface
|
|
184
|
-
│ ├── error.ts # WorkflowError interface
|
|
185
|
-
│ └── workflow-context.ts # WorkflowContext interface
|
|
186
|
-
├── package.json
|
|
187
|
-
├── vitest.config.ts
|
|
188
|
-
└── tsconfig.json
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Desired Codebase Tree (files to be added/modified)
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
# Modified: src/__tests__/unit/context.test.ts
|
|
195
|
-
# - Add new describe() block for WorkflowContext tests
|
|
196
|
-
# - Add test case "should capture state and logs in step() error handler"
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Known Gotchas of Our Codebase & Library Quirks
|
|
200
|
-
|
|
201
|
-
```typescript
|
|
202
|
-
// CRITICAL: AgentExecutionContext vs WorkflowContext
|
|
203
|
-
// context.test.ts currently tests AgentExecutionContext (from src/core/context.ts)
|
|
204
|
-
// This test should add a NEW describe() block for WorkflowContext (from src/core/workflow-context.ts)
|
|
205
|
-
// These are DIFFERENT modules - do not mix tests
|
|
206
|
-
|
|
207
|
-
// CRITICAL: WorkflowContext cannot be instantiated directly
|
|
208
|
-
// It is created internally by Workflow.createWorkflowContext()
|
|
209
|
-
// Tests must go through Workflow to access WorkflowContext behavior
|
|
210
|
-
// The ctx parameter in the functional executor IS the WorkflowContext
|
|
211
|
-
|
|
212
|
-
// CRITICAL: Existing test in workflow.test.ts (lines 132-207)
|
|
213
|
-
// This test ALREADY validates step() error state capture with @ObservedState
|
|
214
|
-
// P1.M1.T2.S4 test should either:
|
|
215
|
-
// 1. Enhance the existing test with more specific assertions
|
|
216
|
-
// 2. Add a focused variant test in context.test.ts as specified
|
|
217
|
-
// 3. Check if task intends for a DIFFERENT aspect of step() error handling
|
|
218
|
-
|
|
219
|
-
// CRITICAL: Functional vs Class-based workflows
|
|
220
|
-
// Functional workflows: new Workflow(config, async (ctx) => {...})
|
|
221
|
-
// - ctx parameter is WorkflowContext
|
|
222
|
-
// - Can still use @ObservedState on the Workflow class instance
|
|
223
|
-
// Class-based workflows: class MyWorkflow extends Workflow { async run() {...} }
|
|
224
|
-
// - Use this.step() or create ctx manually
|
|
225
|
-
// The test should use functional pattern to test WorkflowContext.step()
|
|
226
|
-
|
|
227
|
-
// CRITICAL: getObservedState(this.workflow) behavior
|
|
228
|
-
// Returns {} if no @ObservedState decorated fields exist
|
|
229
|
-
// Returns object with decorated field values if fields exist
|
|
230
|
-
// Applies redaction: @ObservedState({ redact: true }) fields become '***'
|
|
231
|
-
// Applies hiding: @ObservedState({ hidden: true }) fields are excluded
|
|
232
|
-
|
|
233
|
-
// CRITICAL: Error event capture pattern
|
|
234
|
-
// Must use observer to capture error events
|
|
235
|
-
// Filter events by type: events.filter((e) => e.type === 'error')
|
|
236
|
-
// Access error object: errorEvent.error.state, errorEvent.error.logs
|
|
237
|
-
|
|
238
|
-
// CRITICAL: Test file imports
|
|
239
|
-
// context.test.ts currently imports from core/context.js
|
|
240
|
-
// Need to add imports from main index.js for Workflow, WorkflowObserver, etc.
|
|
241
|
-
// Need to add imports for @ObservedState and getObservedState
|
|
242
|
-
|
|
243
|
-
// CRITICAL: Logs array may be empty
|
|
244
|
-
// If workflow doesn't generate logs before the error, error.logs will be []
|
|
245
|
-
// This is expected behavior - validate it's an array, not that it has entries
|
|
246
|
-
|
|
247
|
-
// CRITICAL: Two error handlers in WorkflowContext
|
|
248
|
-
// First: In step() method at lines 155-165
|
|
249
|
-
// Second: In replaceLastPromptResult() method at lines 319-329
|
|
250
|
-
// Both were fixed in P1.M1.T2.S2 and P1.M1.T2.S3
|
|
251
|
-
// Test should trigger step() error to validate first error handler
|
|
252
|
-
|
|
253
|
-
// CRITICAL: Test name collision
|
|
254
|
-
// workflow.test.ts has "should capture @ObservedState fields in workflow error state"
|
|
255
|
-
// Use a different, more specific name: "should capture state and logs in step() error handler"
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
## Implementation Blueprint
|
|
259
|
-
|
|
260
|
-
### Data Models and Structure
|
|
261
|
-
|
|
262
|
-
**Relevant Types** (for context):
|
|
263
|
-
```typescript
|
|
264
|
-
// From src/decorators/observed-state.ts
|
|
265
|
-
export function ObservedState(meta: StateFieldMetadata = {}) {
|
|
266
|
-
// Class field decorator - marks fields for state capture
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
export function getObservedState(obj: object): SerializedWorkflowState {
|
|
270
|
-
// Returns object with decorated field values
|
|
271
|
-
// Empty object {} if no decorated fields
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// From src/types/workflow.ts
|
|
275
|
-
export interface SerializedWorkflowState {
|
|
276
|
-
[key: string]: unknown;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
// From src/types/error.ts
|
|
280
|
-
export interface WorkflowError {
|
|
281
|
-
message: string;
|
|
282
|
-
original: unknown;
|
|
283
|
-
workflowId: string;
|
|
284
|
-
stack?: string;
|
|
285
|
-
state: SerializedWorkflowState; // <-- Captured by getObservedState(this.workflow)
|
|
286
|
-
logs: LogEntry[]; // <-- Captured by [...this.workflow.node.logs]
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// From src/types/logging.ts
|
|
290
|
-
export interface LogEntry {
|
|
291
|
-
id: string;
|
|
292
|
-
workflowId: string;
|
|
293
|
-
timestamp: number;
|
|
294
|
-
level: LogLevel;
|
|
295
|
-
message: string;
|
|
296
|
-
data?: unknown;
|
|
297
|
-
parentLogId?: string;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// From src/types/workflow-context.ts
|
|
301
|
-
export interface WorkflowContext {
|
|
302
|
-
step<T>(name: string, fn: () => Promise<T>): Promise<T>;
|
|
303
|
-
// ... other methods
|
|
304
|
-
}
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
### Implementation Tasks (ordered by dependencies)
|
|
308
|
-
|
|
309
|
-
```yaml
|
|
310
|
-
Task 1: ADD REQUIRED IMPORTS TO context.test.ts
|
|
311
|
-
- CHECK: Current imports at line 1-10
|
|
312
|
-
- ADD: Workflow class from main index
|
|
313
|
-
- ADD: WorkflowObserver interface from main index
|
|
314
|
-
- ADD: WorkflowEvent type from main index
|
|
315
|
-
- ADD: ObservedState decorator from main index
|
|
316
|
-
- PATTERN: Follow import pattern from workflow.test.ts line 2
|
|
317
|
-
- CURRENT: import { describe, it, expect } from 'vitest';
|
|
318
|
-
- CURRENT: import { getExecutionContext, requireExecutionContext, runInContext, ... } from '../../core/context.js';
|
|
319
|
-
- NEW: import { Workflow, WorkflowObserver, WorkflowEvent, ObservedState } from '../../index.js';
|
|
320
|
-
- PLACEMENT: Top of file, after vitest import, line 2
|
|
321
|
-
- DEPENDENCIES: None
|
|
322
|
-
|
|
323
|
-
Task 2: CREATE TEST WORKFLOW CLASS WITH @ObservedState FIELDS
|
|
324
|
-
- CREATE: StatefulTestWorkflow class inside new describe block
|
|
325
|
-
- IMPLEMENT: Multiple @ObservedState decorated fields
|
|
326
|
-
- INCLUDE: @ObservedState() for normal field (visible with value)
|
|
327
|
-
- INCLUDE: @ObservedState({ redact: true }) for redacted field (shows '***')
|
|
328
|
-
- INCLUDE: @ObservedState({ hidden: true }) for hidden field (not in state)
|
|
329
|
-
- PATTERN: Follow StateTestWorkflow from decorators.test.ts lines 70-81
|
|
330
|
-
- PATTERN: Follow StatefulWorkflowClass from workflow.test.ts lines 135-144
|
|
331
|
-
- PLACEMENT: Inside new describe('WorkflowContext', () => {...}) block
|
|
332
|
-
- DEPENDENCIES: Task 1
|
|
333
|
-
|
|
334
|
-
Task 3: WRITE TEST CASE FOR STEP() ERROR STATE CAPTURE
|
|
335
|
-
- CREATE: New describe() block for WorkflowContext tests
|
|
336
|
-
- CREATE: New it() block with descriptive name
|
|
337
|
-
- NAME: "should capture state and logs in step() error handler"
|
|
338
|
-
- ARRANGE: Create observer to capture error events
|
|
339
|
-
- ARRANGE: Create StatefulTestWorkflow class instance with functional executor
|
|
340
|
-
- ARRANGE: Modify @ObservedState fields on workflow instance
|
|
341
|
-
- ARRANGE: Attach observer to workflow
|
|
342
|
-
- ACT: Run workflow (which calls ctx.step() with throwing function)
|
|
343
|
-
- ASSERT: Verify error event was emitted
|
|
344
|
-
- ASSERT: Verify error.state contains observed field values
|
|
345
|
-
- ASSERT: Verify redacted field shows '***'
|
|
346
|
-
- ASSERT: Verify hidden field is NOT in state
|
|
347
|
-
- ASSERT: Verify error.logs is an array
|
|
348
|
-
- PATTERN: Follow workflow.test.ts lines 132-207 for complete test structure
|
|
349
|
-
- PLACEMENT: After existing AgentExecutionContext describe block, after line 138
|
|
350
|
-
- DEPENDENCIES: Task 2
|
|
351
|
-
|
|
352
|
-
Task 4: RUN TESTS TO VALIDATE
|
|
353
|
-
- RUN: npm test (or npm run test)
|
|
354
|
-
- VERIFY: New test passes
|
|
355
|
-
- VERIFY: All existing tests still pass (no regression)
|
|
356
|
-
- DEPENDENCIES: Task 3
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Implementation Patterns & Key Details
|
|
360
|
-
|
|
361
|
-
```typescript
|
|
362
|
-
// ============================================================
|
|
363
|
-
// IMPORTS TO ADD (Line 2 in context.test.ts)
|
|
364
|
-
// ============================================================
|
|
365
|
-
// CURRENT (lines 1-10):
|
|
366
|
-
import { describe, it, expect } from 'vitest';
|
|
367
|
-
import {
|
|
368
|
-
getExecutionContext,
|
|
369
|
-
requireExecutionContext,
|
|
370
|
-
runInContext,
|
|
371
|
-
runInContextSync,
|
|
372
|
-
hasExecutionContext,
|
|
373
|
-
createChildContext,
|
|
374
|
-
type AgentExecutionContext,
|
|
375
|
-
} from '../../core/context.js';
|
|
376
|
-
import type { WorkflowNode, WorkflowEvent } from '../../types/index.js';
|
|
377
|
-
|
|
378
|
-
// NEW (add after line 10):
|
|
379
|
-
import { Workflow, WorkflowObserver, ObservedState } from '../../index.js';
|
|
380
|
-
|
|
381
|
-
// ============================================================
|
|
382
|
-
// TEST WORKFLOW CLASS (add inside or before test)
|
|
383
|
-
// ============================================================
|
|
384
|
-
// Reference from workflow.test.ts lines 135-144
|
|
385
|
-
class StatefulTestWorkflow extends Workflow {
|
|
386
|
-
@ObservedState()
|
|
387
|
-
stepCount: number = 0;
|
|
388
|
-
|
|
389
|
-
@ObservedState({ redact: true })
|
|
390
|
-
apiKey: string = 'secret-key-123';
|
|
391
|
-
|
|
392
|
-
@ObservedState({ hidden: true })
|
|
393
|
-
internalCounter: number = 42;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
// ============================================================
|
|
397
|
-
// TEST CASE TEMPLATE
|
|
398
|
-
// ============================================================
|
|
399
|
-
// Reference from workflow.test.ts lines 132-207
|
|
400
|
-
describe('WorkflowContext', () => {
|
|
401
|
-
it('should capture state and logs in step() error handler', async () => {
|
|
402
|
-
// Arrange: Create observer to capture error events
|
|
403
|
-
const events: WorkflowEvent[] = [];
|
|
404
|
-
|
|
405
|
-
const observer: WorkflowObserver = {
|
|
406
|
-
onLog: () => {},
|
|
407
|
-
onEvent: (event) => events.push(event),
|
|
408
|
-
onStateUpdated: () => {},
|
|
409
|
-
onTreeChanged: () => {},
|
|
410
|
-
};
|
|
411
|
-
|
|
412
|
-
// Arrange: Create workflow with @ObservedState fields using functional executor
|
|
413
|
-
const workflow = new StatefulTestWorkflow(
|
|
414
|
-
{ name: 'StepErrorTest' },
|
|
415
|
-
async (ctx) => {
|
|
416
|
-
// Modify @ObservedState fields on the workflow instance
|
|
417
|
-
(workflow as any).stepCount = 5;
|
|
418
|
-
(workflow as any).apiKey = 'updated-key';
|
|
419
|
-
(workflow as any).internalCounter = 99;
|
|
420
|
-
|
|
421
|
-
// Execute a step that will fail - THIS TRIGGERS WorkflowContext.step() ERROR HANDLER
|
|
422
|
-
await ctx.step('failing-step', async () => {
|
|
423
|
-
throw new Error('Test error from step');
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
);
|
|
427
|
-
|
|
428
|
-
// Act: Attach observer and trigger error
|
|
429
|
-
workflow.addObserver(observer);
|
|
430
|
-
await expect(workflow.run()).rejects.toThrow('Test error from step');
|
|
431
|
-
|
|
432
|
-
// Assert: Verify error event was emitted
|
|
433
|
-
const errorEvents = events.filter((e) => e.type === 'error');
|
|
434
|
-
expect(errorEvents.length).toBeGreaterThanOrEqual(1);
|
|
435
|
-
|
|
436
|
-
// Assert: Verify error structure
|
|
437
|
-
const errorEvent = errorEvents[0];
|
|
438
|
-
expect(errorEvent.error).toBeDefined();
|
|
439
|
-
expect(errorEvent.error.message).toBe('Test error from step');
|
|
440
|
-
|
|
441
|
-
// Assert: Verify @ObservedState fields were captured in state
|
|
442
|
-
expect(errorEvent.error.state).toBeDefined();
|
|
443
|
-
expect(typeof errorEvent.error.state).toBe('object');
|
|
444
|
-
|
|
445
|
-
// Assert: Verify public field value is captured
|
|
446
|
-
expect(errorEvent.error.state.stepCount).toBe(5);
|
|
447
|
-
|
|
448
|
-
// Assert: Verify redacted field shows '***'
|
|
449
|
-
expect(errorEvent.error.state.apiKey).toBe('***');
|
|
450
|
-
|
|
451
|
-
// Assert: Verify hidden field is NOT in state
|
|
452
|
-
expect('internalCounter' in errorEvent.error.state).toBe(false);
|
|
453
|
-
|
|
454
|
-
// Assert: Verify logs array is present (may be empty)
|
|
455
|
-
expect(errorEvent.error.logs).toBeDefined();
|
|
456
|
-
expect(Array.isArray(errorEvent.error.logs)).toBe(true);
|
|
457
|
-
|
|
458
|
-
// Assert: Verify workflow status
|
|
459
|
-
expect(workflow.status).toBe('failed');
|
|
460
|
-
|
|
461
|
-
// Assert: Verify workflowId is captured
|
|
462
|
-
expect(errorEvent.error.workflowId).toBe(workflow.id);
|
|
463
|
-
});
|
|
464
|
-
});
|
|
465
|
-
|
|
466
|
-
// ============================================================
|
|
467
|
-
// ALTERNATIVE: Simpler test without field value changes
|
|
468
|
-
// ============================================================
|
|
469
|
-
it('should capture @ObservedState initial values in step() error', async () => {
|
|
470
|
-
const events: WorkflowEvent[] = [];
|
|
471
|
-
const observer: WorkflowObserver = {
|
|
472
|
-
onLog: () => {},
|
|
473
|
-
onEvent: (event) => events.push(event),
|
|
474
|
-
onStateUpdated: () => {},
|
|
475
|
-
onTreeChanged: () => {},
|
|
476
|
-
};
|
|
477
|
-
|
|
478
|
-
const workflow = new StatefulTestWorkflow(
|
|
479
|
-
{ name: 'InitialStateTest' },
|
|
480
|
-
async (ctx) => {
|
|
481
|
-
await ctx.step('failing-step', async () => {
|
|
482
|
-
throw new Error('Test error');
|
|
483
|
-
});
|
|
484
|
-
}
|
|
485
|
-
);
|
|
486
|
-
|
|
487
|
-
workflow.addObserver(observer);
|
|
488
|
-
await expect(workflow.run()).rejects.toThrow('Test error');
|
|
489
|
-
|
|
490
|
-
const errorEvents = events.filter((e) => e.type === 'error');
|
|
491
|
-
const errorEvent = errorEvents[0];
|
|
492
|
-
|
|
493
|
-
// Verify captured state (initial values)
|
|
494
|
-
expect(errorEvent.error.state.stepCount).toBe(0);
|
|
495
|
-
expect(errorEvent.error.state.apiKey).toBe('***');
|
|
496
|
-
expect('internalCounter' in errorEvent.error.state).toBe(false);
|
|
497
|
-
expect(Array.isArray(errorEvent.error.logs)).toBe(true);
|
|
498
|
-
});
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
### Integration Points
|
|
502
|
-
|
|
503
|
-
```yaml
|
|
504
|
-
TEST FILE:
|
|
505
|
-
- file: src/__tests__/unit/context.test.ts
|
|
506
|
-
- add_after: Line 138 (end of AgentExecutionContext describe block)
|
|
507
|
-
- add_import: Workflow, WorkflowObserver, WorkflowEvent, ObservedState to line 2
|
|
508
|
-
|
|
509
|
-
TEST RUNNER:
|
|
510
|
-
- command: npm test
|
|
511
|
-
- config: vitest.config.ts
|
|
512
|
-
- pattern: All *.test.ts files are auto-discovered
|
|
513
|
-
|
|
514
|
-
OBSERVER PATTERN:
|
|
515
|
-
- interface: WorkflowObserver from src/types/workflow.ts
|
|
516
|
-
- methods: onLog, onEvent, onStateUpdated, onTreeChanged
|
|
517
|
-
- usage: workflow.addObserver(observer)
|
|
518
|
-
|
|
519
|
-
ERROR EVENT STRUCTURE:
|
|
520
|
-
- type: 'error'
|
|
521
|
-
- node: WorkflowNode
|
|
522
|
-
- error: WorkflowError with state and logs properties
|
|
523
|
-
|
|
524
|
-
WORKFLOWCONTEXT:
|
|
525
|
-
- interface: WorkflowContext from src/types/workflow-context.ts
|
|
526
|
-
- implementation: WorkflowContextImpl from src/core/workflow-context.ts
|
|
527
|
-
- step() method: Lines 144-165 in workflow-context.ts
|
|
528
|
-
- error handler: Lines 155-165 in workflow-context.ts
|
|
529
|
-
```
|
|
530
|
-
|
|
531
|
-
## Validation Loop
|
|
532
|
-
|
|
533
|
-
### Level 1: Syntax & Style (Immediate Feedback)
|
|
534
|
-
|
|
535
|
-
```bash
|
|
536
|
-
# TypeScript compilation check
|
|
537
|
-
npm run build
|
|
538
|
-
# Expected: Zero compilation errors
|
|
539
|
-
# If errors exist, check import statements and class syntax
|
|
540
|
-
|
|
541
|
-
# Type checking
|
|
542
|
-
npx tsc --noEmit
|
|
543
|
-
# Expected: Zero type errors
|
|
544
|
-
|
|
545
|
-
# Linting (if configured)
|
|
546
|
-
npm run lint
|
|
547
|
-
# Expected: Zero linting errors
|
|
548
|
-
```
|
|
549
|
-
|
|
550
|
-
### Level 2: Unit Tests (Component Validation)
|
|
551
|
-
|
|
552
|
-
```bash
|
|
553
|
-
# Run specific test file
|
|
554
|
-
npm test src/__tests__/unit/context.test.ts
|
|
555
|
-
|
|
556
|
-
# Run specific test by name (after implementation)
|
|
557
|
-
npm test -t "should capture state and logs in step"
|
|
558
|
-
|
|
559
|
-
# Run full test suite
|
|
560
|
-
npm test
|
|
561
|
-
|
|
562
|
-
# Expected: All tests pass
|
|
563
|
-
# Specifically: New test "should capture state and logs in step() error handler" passes
|
|
564
|
-
# No regression in existing AgentExecutionContext tests
|
|
565
|
-
|
|
566
|
-
# Expected test output:
|
|
567
|
-
# ✓ src/__tests__/unit/context.test.ts (N)
|
|
568
|
-
# ✓ AgentExecutionContext
|
|
569
|
-
# ✓ should return undefined outside of context
|
|
570
|
-
# ✓ should throw when requiring context outside of context
|
|
571
|
-
# ✓ ... (existing tests)
|
|
572
|
-
# ✓ WorkflowContext
|
|
573
|
-
# ✓ should capture state and logs in step() error handler <-- NEW TEST
|
|
574
|
-
```
|
|
575
|
-
|
|
576
|
-
### Level 3: Integration Testing (System Validation)
|
|
577
|
-
|
|
578
|
-
```bash
|
|
579
|
-
# Verify test is properly integrated
|
|
580
|
-
grep -n "should capture state and logs in step" src/__tests__/unit/context.test.ts
|
|
581
|
-
# Expected: Shows line number of new test
|
|
582
|
-
|
|
583
|
-
# Verify imports are correct
|
|
584
|
-
grep -n "Workflow" src/__tests__/unit/context.test.ts
|
|
585
|
-
# Expected: Shows import statement and usage in test
|
|
586
|
-
|
|
587
|
-
# Run all context tests
|
|
588
|
-
npm test -- context
|
|
589
|
-
# Expected: All context-related tests pass
|
|
590
|
-
|
|
591
|
-
# Run all workflow tests to ensure no regression
|
|
592
|
-
npm test -- workflow
|
|
593
|
-
# Expected: All workflow tests pass (including existing step() error tests)
|
|
594
|
-
```
|
|
595
|
-
|
|
596
|
-
### Level 4: Domain-Specific Validation
|
|
597
|
-
|
|
598
|
-
```bash
|
|
599
|
-
# Manual verification - inspect test behavior
|
|
600
|
-
npm test -t "should capture state and logs in step" --reporter=verbose
|
|
601
|
-
|
|
602
|
-
# Expected verbose output shows:
|
|
603
|
-
# - Observer capturing error event
|
|
604
|
-
# - Error state containing stepCount: 5
|
|
605
|
-
# - Error state containing apiKey: '***'
|
|
606
|
-
# - Error state NOT containing internalCounter
|
|
607
|
-
# - Error logs being an array
|
|
608
|
-
|
|
609
|
-
# Verify test validates the fix from P1.M1.T2.S2 and P1.M1.T2.S3
|
|
610
|
-
grep -A 5 "state: getObservedState" src/core/workflow-context.ts
|
|
611
|
-
# Expected: Shows line 161 with state: getObservedState(this.workflow)
|
|
612
|
-
|
|
613
|
-
grep -A 5 "logs:.*this.workflow.node.logs" src/core/workflow-context.ts
|
|
614
|
-
# Expected: Shows line 162 with logs: [...this.workflow.node.logs] as LogEntry[]
|
|
615
|
-
|
|
616
|
-
# Verify error event is emitted from step() method
|
|
617
|
-
grep -B 5 -A 10 "type: 'error'" src/core/workflow-context.ts | head -30
|
|
618
|
-
# Expected: Shows error emission in step() method error handler
|
|
619
|
-
```
|
|
620
|
-
|
|
621
|
-
## Final Validation Checklist
|
|
622
|
-
|
|
623
|
-
### Technical Validation
|
|
624
|
-
|
|
625
|
-
- [ ] All 4 validation levels completed successfully
|
|
626
|
-
- [ ] All tests pass: `npm test`
|
|
627
|
-
- [ ] No TypeScript compilation errors: `npm run build`
|
|
628
|
-
- [ ] No type errors: `npx tsc --noEmit`
|
|
629
|
-
- [ ] New test case added to context.test.ts
|
|
630
|
-
- [ ] Required imports added (Workflow, WorkflowObserver, WorkflowEvent, ObservedState)
|
|
631
|
-
- [ ] New describe() block created for WorkflowContext tests
|
|
632
|
-
|
|
633
|
-
### Feature Validation
|
|
634
|
-
|
|
635
|
-
- [ ] Test creates Workflow class with @ObservedState fields
|
|
636
|
-
- [ ] Test uses functional executor pattern (async (ctx) => {...})
|
|
637
|
-
- [ ] Test calls ctx.step() with throwing function
|
|
638
|
-
- [ ] Test asserts error.state contains captured field values
|
|
639
|
-
- [ ] Test asserts redacted fields show '***'
|
|
640
|
-
- [ ] Test asserts hidden fields are excluded
|
|
641
|
-
- [ ] Test asserts error.logs is an array
|
|
642
|
-
- [ ] Test validates workflow status is 'failed'
|
|
643
|
-
- [ ] Test validates workflowId is captured
|
|
644
|
-
- [ ] Test follows existing test patterns
|
|
645
|
-
- [ ] No regression in existing tests
|
|
646
|
-
|
|
647
|
-
### Code Quality Validation
|
|
648
|
-
|
|
649
|
-
- [ ] Test name is descriptive and unique (no collision with workflow.test.ts tests)
|
|
650
|
-
- [ ] Test follows AAA pattern (Arrange, Act, Assert)
|
|
651
|
-
- [ ] Test uses observer pattern for event capture
|
|
652
|
-
- [ ] Test uses async/await properly
|
|
653
|
-
- [ ] Test has clear assertions with descriptive comments
|
|
654
|
-
- [ ] Test is self-contained (no external dependencies)
|
|
655
|
-
- [ ] Imports follow existing patterns
|
|
656
|
-
- [ ] New describe() block separates WorkflowContext from AgentExecutionContext tests
|
|
657
|
-
|
|
658
|
-
### Documentation & Deployment
|
|
659
|
-
|
|
660
|
-
- [ ] Test is self-documenting (descriptive variable names and comments)
|
|
661
|
-
- [ ] No environment variables needed for test
|
|
662
|
-
- [ ] Test can run independently
|
|
663
|
-
- [ ] Test file has proper imports
|
|
664
|
-
|
|
665
|
-
---
|
|
666
|
-
|
|
667
|
-
## Anti-Patterns to Avoid
|
|
668
|
-
|
|
669
|
-
- ❌ **Don't mix AgentExecutionContext and WorkflowContext tests** - Add a new describe() block
|
|
670
|
-
- ❌ **Don't test runFunctional() error handler** - That's P1.M1.T1.S4's job
|
|
671
|
-
- ❌ **Don't use class-based run() method** - Use functional executor to test ctx.step()
|
|
672
|
-
- ❌ **Don't create WorkflowContext directly** - It's created internally by Workflow
|
|
673
|
-
- ❌ **Don't use existing test name from workflow.test.ts** - Use "should capture state and logs in step() error handler"
|
|
674
|
-
- ❌ **Don't forget to add imports** - Workflow, WorkflowObserver, WorkflowEvent, ObservedState must be imported
|
|
675
|
-
- ❌ **Don't assume logs has entries** - Empty logs array is valid
|
|
676
|
-
- ❌ **Don't test hidden field presence** - Hidden fields should NOT be in state
|
|
677
|
-
- ❌ **Don't test redacted field value** - Redacted fields should be '***', not actual value
|
|
678
|
-
- ❌ **Don't skip observer pattern** - Must use observer to capture error events
|
|
679
|
-
- ❌ **Don't use sync execution** - run() is async, must use await
|
|
680
|
-
- ❌ **Don't modify existing AgentExecutionContext tests** - Add new tests in separate describe block
|
|
681
|
-
- ❌ **Don't duplicate existing test from workflow.test.ts** - Ensure this test adds unique value or is specifically required
|
|
682
|
-
|
|
683
|
-
---
|
|
684
|
-
|
|
685
|
-
## Confidence Score
|
|
686
|
-
|
|
687
|
-
**9/10** for one-pass implementation success likelihood
|
|
688
|
-
|
|
689
|
-
**Justification**:
|
|
690
|
-
- Clear file location and test structure specified
|
|
691
|
-
- Existing test patterns to follow (workflow.test.ts lines 132-207)
|
|
692
|
-
- Reference implementation for @ObservedState in decorators.test.ts
|
|
693
|
-
- Implementation being tested is complete and verified (P1.M1.T2.S2, P1.M1.T2.S3)
|
|
694
|
-
- Simple test addition - no complex logic or new files required
|
|
695
|
-
- All required imports and patterns documented
|
|
696
|
-
- Test runner (vitest) already configured and working
|
|
697
|
-
|
|
698
|
-
**Risk Factors**:
|
|
699
|
-
- Potential confusion with existing test in workflow.test.ts (lines 132-207) which tests similar functionality - mitigated by specifying different test name and location
|
|
700
|
-
- Confusion about AgentExecutionContext vs WorkflowContext - mitigated by explicit instruction to create new describe() block
|
|
701
|
-
- Missing imports - mitigated by explicit import instructions
|
|
702
|
-
|
|
703
|
-
**Mitigation**: PRP provides exact code snippets, line numbers, and patterns to follow. Clear distinction between AgentExecutionContext and WorkflowContext prevents confusion. Note that existing test in workflow.test.ts already validates this behavior - verify with project lead if this task is still needed or if existing test is sufficient.
|
|
704
|
-
|
|
705
|
-
---
|
|
706
|
-
|
|
707
|
-
## Related Work Items
|
|
708
|
-
|
|
709
|
-
- **P1.M1.T2.S1**: Add getObservedState import to workflow-context.ts - ✅ COMPLETE
|
|
710
|
-
- **P1.M1.T2.S2**: Fix first error handler in step() method (line 155-162) - ✅ COMPLETE (line 161)
|
|
711
|
-
- **P1.M1.T2.S3**: Fix second error handler in replaceLastPromptResult() method (line 319-326) - ✅ COMPLETE (line 327)
|
|
712
|
-
- **P1.M1.T2.S4**: Write test for WorkflowContext error state capture - ⏳ THIS TASK
|
|
713
|
-
- **P1.M1.T1**: Fix Empty State/Logs in Workflow.runFunctional() Error Handler - ✅ COMPLETE
|