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,401 +0,0 @@
|
|
|
1
|
-
# Logger child() Signature Analysis
|
|
2
|
-
|
|
3
|
-
## 1. PRD Specification
|
|
4
|
-
|
|
5
|
-
### Signature from PRD Section 12.1
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
child(meta: Partial<LogEntry>): WorkflowLogger {
|
|
9
|
-
return new WorkflowLogger(this.node, this.observers);
|
|
10
|
-
}
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
**Source**: PRD.md lines 303-305
|
|
14
|
-
|
|
15
|
-
### LogEntry Type Definition
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
export interface LogEntry {
|
|
19
|
-
/** Unique identifier for this log entry */
|
|
20
|
-
id: string;
|
|
21
|
-
/** ID of the workflow that created this log */
|
|
22
|
-
workflowId: string;
|
|
23
|
-
/** Unix timestamp in milliseconds */
|
|
24
|
-
timestamp: number;
|
|
25
|
-
/** Severity level */
|
|
26
|
-
level: LogLevel;
|
|
27
|
-
/** Log message */
|
|
28
|
-
message: string;
|
|
29
|
-
/** Optional structured data */
|
|
30
|
-
data?: unknown;
|
|
31
|
-
/** ID of parent log entry (for hierarchical logging) */
|
|
32
|
-
parentLogId?: string;
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Source**: src/types/logging.ts lines 9-24
|
|
37
|
-
|
|
38
|
-
### PRD Implementation Notes
|
|
39
|
-
|
|
40
|
-
The PRD skeleton shows that `meta: Partial<LogEntry>` is **accepted but NOT USED** in the implementation. The `child()` method simply returns a new `WorkflowLogger` with the same `node` and `observers`, ignoring the `meta` parameter entirely.
|
|
41
|
-
|
|
42
|
-
This suggests the parameter is for **future extensibility** - the PRD architect intended to allow passing metadata when creating child loggers, but the skeleton implementation was a stub.
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## 2. Current Implementation
|
|
47
|
-
|
|
48
|
-
### Actual Signature
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
child(parentLogId: string): WorkflowLogger
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Source**: src/core/logger.ts line 84
|
|
55
|
-
|
|
56
|
-
### Current Code
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
export class WorkflowLogger {
|
|
60
|
-
private readonly parentLogId?: string;
|
|
61
|
-
|
|
62
|
-
constructor(
|
|
63
|
-
private readonly node: WorkflowNode,
|
|
64
|
-
private readonly observers: WorkflowObserver[],
|
|
65
|
-
parentLogId?: string
|
|
66
|
-
) {
|
|
67
|
-
this.parentLogId = parentLogId;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Create a child logger that includes parentLogId
|
|
72
|
-
*/
|
|
73
|
-
child(parentLogId: string): WorkflowLogger {
|
|
74
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**Source**: src/core/logger.ts lines 8-16, 84-86
|
|
80
|
-
|
|
81
|
-
### Constructor Support for parentLogId
|
|
82
|
-
|
|
83
|
-
The current implementation **does support** hierarchical logging through the constructor:
|
|
84
|
-
|
|
85
|
-
1. `WorkflowLogger` stores `parentLogId` as a private field
|
|
86
|
-
2. The constructor accepts an optional `parentLogId` parameter
|
|
87
|
-
3. The `child()` method passes the `parentLogId` to the constructor
|
|
88
|
-
4. When logging, if `this.parentLogId` exists, it's added to the log entry:
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
// From src/core/logger.ts lines 45-48
|
|
92
|
-
if (this.parentLogId) {
|
|
93
|
-
entry.parentLogId = this.parentLogId;
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## 3. Signature Comparison
|
|
100
|
-
|
|
101
|
-
### Key Differences Table
|
|
102
|
-
|
|
103
|
-
| Aspect | PRD Spec | Current Implementation |
|
|
104
|
-
|--------|----------|----------------------|
|
|
105
|
-
| Parameter Type | `Partial<LogEntry>` | `string` |
|
|
106
|
-
| Parameter Name | `meta` | `parentLogId` |
|
|
107
|
-
| Flexibility | Can pass any LogEntry field | Only accepts parentLogId |
|
|
108
|
-
| PRD Skeleton Behavior | Ignores the meta parameter | Uses parentLogId to set hierarchy |
|
|
109
|
-
| Actual Implementation | N/A (skeleton only) | Passes parentLogId to constructor |
|
|
110
|
-
|
|
111
|
-
### Compatibility Matrix
|
|
112
|
-
|
|
113
|
-
| Call Pattern | Works with PRD Spec | Works with Current Implementation |
|
|
114
|
-
|--------------|-------------------|----------------------------------|
|
|
115
|
-
| `logger.child('parent-id')` | No (wrong type) | Yes |
|
|
116
|
-
| `logger.child({ parentLogId: 'parent-id' })` | Yes | No |
|
|
117
|
-
| `logger.child({})` | Yes | No |
|
|
118
|
-
| `logger.child({ id: 'custom-id', parentLogId: 'parent-id' })` | Yes | No |
|
|
119
|
-
|
|
120
|
-
**Result**: Complete incompatibility - the two signatures are mutually exclusive.
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## 4. Existing Usage Analysis
|
|
125
|
-
|
|
126
|
-
### Usage Site 1: deep-analysis.test.ts:61
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
const childLogger = this.logger.child('');
|
|
130
|
-
childLogger.info('Child log with empty parent');
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
**Context**: Testing empty parentLogId handling
|
|
134
|
-
|
|
135
|
-
**Expected Behavior**: Empty string is passed through, and because of the falsy check in the logger's `log()` method, `parentLogId` remains `undefined`.
|
|
136
|
-
|
|
137
|
-
**Impact**: BREAKING - will need migration
|
|
138
|
-
|
|
139
|
-
**Migration Path**:
|
|
140
|
-
```typescript
|
|
141
|
-
// Before
|
|
142
|
-
const childLogger = this.logger.child('');
|
|
143
|
-
|
|
144
|
-
// After
|
|
145
|
-
const childLogger = this.logger.child({ parentLogId: '' });
|
|
146
|
-
// Or for root logger behavior:
|
|
147
|
-
const childLogger = this.logger.child({});
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Usage Site 2: edge-case.test.ts:96
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const childLogger = this.logger.child('parent-id-123');
|
|
154
|
-
expect(childLogger).toBeDefined();
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Context**: Testing normal parentLogId passing and verifying child logger is created
|
|
158
|
-
|
|
159
|
-
**Expected Behavior**: Child logger stores `'parent-id-123'` as its parentLogId, which gets attached to all log entries from this child logger.
|
|
160
|
-
|
|
161
|
-
**Impact**: BREAKING - will need migration
|
|
162
|
-
|
|
163
|
-
**Migration Path**:
|
|
164
|
-
```typescript
|
|
165
|
-
// Before
|
|
166
|
-
const childLogger = this.logger.child('parent-id-123');
|
|
167
|
-
|
|
168
|
-
// After
|
|
169
|
-
const childLogger = this.logger.child({ parentLogId: 'parent-id-123' });
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### Usage Summary
|
|
173
|
-
|
|
174
|
-
- **Total Usage Sites**: 2 test files
|
|
175
|
-
- **Both Are Breaking Changes**: String parameter is incompatible with object parameter
|
|
176
|
-
- **Migration Required**: Both test files will need updates
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## 5. Partial<LogEntry> Field Analysis
|
|
181
|
-
|
|
182
|
-
### Fields That Make Sense for child()
|
|
183
|
-
|
|
184
|
-
| Field | Type | Relevance | Notes |
|
|
185
|
-
|-------|------|-----------|-------|
|
|
186
|
-
| `parentLogId` | `string` | **Primary** | Main use case - links child log entries to parent |
|
|
187
|
-
| `id` | `string` | Low | Could allow explicit child log ID, but logger generates IDs automatically |
|
|
188
|
-
| `workflowId` | `string` | Low | Could allow different workflow context, but logger uses `this.node.id` |
|
|
189
|
-
| `data` | `unknown` | Medium | Could attach metadata to child logger for inclusion in all logs |
|
|
190
|
-
| `level` | `LogLevel` | Medium | Could set default level for child logger |
|
|
191
|
-
|
|
192
|
-
### Fields That DON'T Make Sense
|
|
193
|
-
|
|
194
|
-
| Field | Type | Why It Doesn't Make Sense |
|
|
195
|
-
|-------|------|---------------------------|
|
|
196
|
-
| `timestamp` | `number` | Child logger generates timestamps when logging, not at creation |
|
|
197
|
-
| `message` | `string` | Logger doesn't have a default message - messages are provided per log call |
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
## 6. Recommended Implementation Approach
|
|
202
|
-
|
|
203
|
-
### Option 1: Strict PRD Compliance (Breaking Change)
|
|
204
|
-
|
|
205
|
-
```typescript
|
|
206
|
-
child(meta: Partial<LogEntry>): WorkflowLogger {
|
|
207
|
-
// Extract parentLogId from meta
|
|
208
|
-
const parentLogId = meta.parentLogId;
|
|
209
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
**Pros**:
|
|
214
|
-
- Matches PRD exactly
|
|
215
|
-
- Enables future extensibility for other meta fields
|
|
216
|
-
- More consistent with TypeScript patterns
|
|
217
|
-
|
|
218
|
-
**Cons**:
|
|
219
|
-
- Breaking change for 2 existing test files
|
|
220
|
-
- Requires user code migration
|
|
221
|
-
|
|
222
|
-
**Migration Required**:
|
|
223
|
-
```typescript
|
|
224
|
-
// All existing calls must change from:
|
|
225
|
-
logger.child('parent-id')
|
|
226
|
-
// To:
|
|
227
|
-
logger.child({ parentLogId: 'parent-id' })
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Option 2: Backward Compatible with Overload
|
|
231
|
-
|
|
232
|
-
```typescript
|
|
233
|
-
// Legacy signature for backward compatibility
|
|
234
|
-
child(parentLogId: string): WorkflowLogger;
|
|
235
|
-
// New PRD-compliant signature
|
|
236
|
-
child(meta: Partial<LogEntry>): WorkflowLogger;
|
|
237
|
-
|
|
238
|
-
child(input: string | Partial<LogEntry>): WorkflowLogger {
|
|
239
|
-
const parentLogId = typeof input === 'string'
|
|
240
|
-
? input
|
|
241
|
-
: input.parentLogId;
|
|
242
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**Pros**:
|
|
247
|
-
- No breaking change
|
|
248
|
-
- Supports both old and new patterns
|
|
249
|
-
- Smooth migration path
|
|
250
|
-
|
|
251
|
-
**Cons**:
|
|
252
|
-
- More complex implementation
|
|
253
|
-
- TypeScript type narrowing required at call sites
|
|
254
|
-
- Ambiguity: what if someone passes `{ parentLogId: '123' }` vs `'123'`?
|
|
255
|
-
|
|
256
|
-
### Option 3: Hybrid Approach with Default
|
|
257
|
-
|
|
258
|
-
```typescript
|
|
259
|
-
child(meta: Partial<LogEntry> = {}): WorkflowLogger {
|
|
260
|
-
const parentLogId = meta.parentLogId;
|
|
261
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
262
|
-
}
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
**Pros**:
|
|
266
|
-
- Default empty object makes `logger.child()` calls work
|
|
267
|
-
- Closer to PRD signature
|
|
268
|
-
|
|
269
|
-
**Cons**:
|
|
270
|
-
- Still breaking for string-based calls like `logger.child('parent-id')`
|
|
271
|
-
- Doesn't solve the incompatibility problem
|
|
272
|
-
|
|
273
|
-
### Recommendation: **Option 1 - Strict PRD Compliance**
|
|
274
|
-
|
|
275
|
-
**Rationale**:
|
|
276
|
-
|
|
277
|
-
1. **Codebase Pattern**: This project has a history of breaking changes when correcting PRD mismatches. See CHANGELOG.md for the `attachChild()` behavior change which also broke existing patterns.
|
|
278
|
-
|
|
279
|
-
2. **Limited Impact**: Only 2 test files are affected. The public API impact is minimal since this is primarily used internally.
|
|
280
|
-
|
|
281
|
-
3. **Future Extensibility**: The `Partial<LogEntry>` signature allows passing additional metadata (like `data`, `level`) in future enhancements without another breaking change.
|
|
282
|
-
|
|
283
|
-
4. **Type Safety**: The object-based signature is more self-documenting and type-safe than a string parameter.
|
|
284
|
-
|
|
285
|
-
5. **Consistency**: Aligning implementation with PRD specification is the correct architectural decision.
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## 7. Migration Strategy
|
|
290
|
-
|
|
291
|
-
### Code Changes Required
|
|
292
|
-
|
|
293
|
-
1. **Update src/core/logger.ts:84** - Change `child()` signature
|
|
294
|
-
2. **Update 2 test files** - Convert to object syntax
|
|
295
|
-
3. **Update documentation** - Document the new signature
|
|
296
|
-
|
|
297
|
-
### Test Migration Examples
|
|
298
|
-
|
|
299
|
-
#### Test File 1: src/__tests__/adversarial/deep-analysis.test.ts:61
|
|
300
|
-
|
|
301
|
-
```typescript
|
|
302
|
-
// Before
|
|
303
|
-
const childLogger = this.logger.child('');
|
|
304
|
-
childLogger.info('Child log with empty parent');
|
|
305
|
-
|
|
306
|
-
// After
|
|
307
|
-
const childLogger = this.logger.child({});
|
|
308
|
-
childLogger.info('Child log with empty parent');
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
#### Test File 2: src/__tests__/adversarial/edge-case.test.ts:96
|
|
312
|
-
|
|
313
|
-
```typescript
|
|
314
|
-
// Before
|
|
315
|
-
const childLogger = this.logger.child('parent-id-123');
|
|
316
|
-
expect(childLogger).toBeDefined();
|
|
317
|
-
|
|
318
|
-
// After
|
|
319
|
-
const childLogger = this.logger.child({ parentLogId: 'parent-id-123' });
|
|
320
|
-
expect(childLogger).toBeDefined();
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
### Implementation Template for P1.M1.T1.S2
|
|
324
|
-
|
|
325
|
-
```typescript
|
|
326
|
-
/**
|
|
327
|
-
* Create a child logger that includes parentLogId
|
|
328
|
-
* @param meta Partial log entry metadata (typically { parentLogId: string })
|
|
329
|
-
*/
|
|
330
|
-
child(meta: Partial<LogEntry> = {}): WorkflowLogger {
|
|
331
|
-
const parentLogId = meta.parentLogId;
|
|
332
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
333
|
-
}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
**Note**: The default parameter `{}` allows `logger.child()` to be called without arguments, creating a logger with no parentLogId (similar to current empty string behavior).
|
|
337
|
-
|
|
338
|
-
---
|
|
339
|
-
|
|
340
|
-
## 8. Related Files
|
|
341
|
-
|
|
342
|
-
| File | Lines | Purpose |
|
|
343
|
-
|------|-------|---------|
|
|
344
|
-
| PRD.md | 286-307 | PRD Section 12.1 WorkflowLogger specification |
|
|
345
|
-
| src/core/logger.ts | 8-16, 84-86 | Current WorkflowLogger implementation with child() |
|
|
346
|
-
| src/types/logging.ts | 9-24 | LogEntry interface definition |
|
|
347
|
-
| src/__tests__/adversarial/deep-analysis.test.ts | 61 | Usage site 1: empty string parentLogId |
|
|
348
|
-
| src/__tests__/adversarial/edge-case.test.ts | 96 | Usage site 2: normal parentLogId |
|
|
349
|
-
| src/types/reflection.ts | 110-117 | Partial<T> usage pattern reference |
|
|
350
|
-
|
|
351
|
-
### Partial<T> Pattern Reference from reflection.ts
|
|
352
|
-
|
|
353
|
-
```typescript
|
|
354
|
-
export function createReflectionConfig(
|
|
355
|
-
partial?: Partial<ReflectionConfig>
|
|
356
|
-
): ReflectionConfig {
|
|
357
|
-
return {
|
|
358
|
-
...DEFAULT_REFLECTION_CONFIG, // Spread defaults first
|
|
359
|
-
...partial, // Then override with provided values
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
**Pattern Note**: This shows the codebase uses spread operator for merging Partial objects. Similar pattern could be applied if child() needs to merge multiple metadata fields in the future.
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## Summary
|
|
369
|
-
|
|
370
|
-
### Core Issue
|
|
371
|
-
|
|
372
|
-
The `child()` method signature is **incompatible** between PRD specification and current implementation:
|
|
373
|
-
|
|
374
|
-
- **PRD**: `child(meta: Partial<LogEntry>)`
|
|
375
|
-
- **Actual**: `child(parentLogId: string)`
|
|
376
|
-
|
|
377
|
-
### Impact Assessment
|
|
378
|
-
|
|
379
|
-
- **Breaking Change**: Yes - string and object types are incompatible
|
|
380
|
-
- **Affected Files**: 2 test files (minimal impact)
|
|
381
|
-
- **Public API Impact**: Low - primarily internal usage
|
|
382
|
-
|
|
383
|
-
### Recommended Action
|
|
384
|
-
|
|
385
|
-
**Implement Option 1 (Strict PRD Compliance)** in the next subtask (P1.M1.T1.S2):
|
|
386
|
-
|
|
387
|
-
1. Update `src/core/logger.ts:84` to accept `Partial<LogEntry>`
|
|
388
|
-
2. Migrate the 2 test files to use object syntax
|
|
389
|
-
3. Add a default parameter `{}` to allow `logger.child()` calls without arguments
|
|
390
|
-
|
|
391
|
-
### Next Steps
|
|
392
|
-
|
|
393
|
-
1. **P1.M1.T1.S2** - Implement the signature change in `src/core/logger.ts`
|
|
394
|
-
2. **P1.M1.T1.S3** - Add tests for the new `child()` signature with `Partial<LogEntry>`
|
|
395
|
-
3. **P1.M1.T1.S4** - Verify all existing `child()` calls work after migration
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
**Document Version**: 1.0
|
|
400
|
-
**Generated**: 2026-01-12
|
|
401
|
-
**For**: P1.M1.T1.S2 - Update WorkflowLogger.child() to accept Partial<LogEntry>
|
package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# child() Implementation Research
|
|
2
|
-
|
|
3
|
-
## File Location
|
|
4
|
-
|
|
5
|
-
**Path**: `/home/dustin/projects/groundswell/src/core/logger.ts`
|
|
6
|
-
**Lines**: 81-94 (child() method)
|
|
7
|
-
|
|
8
|
-
## Current child() Method Implementation
|
|
9
|
-
|
|
10
|
-
```typescript
|
|
11
|
-
/**
|
|
12
|
-
* Create a child logger that includes parentLogId
|
|
13
|
-
* @param parentLogId - ID of the parent log entry (legacy API)
|
|
14
|
-
*/
|
|
15
|
-
child(parentLogId: string): WorkflowLogger;
|
|
16
|
-
/**
|
|
17
|
-
* Create a child logger with metadata
|
|
18
|
-
* @param meta - Partial log entry metadata (typically { parentLogId: string })
|
|
19
|
-
*/
|
|
20
|
-
child(meta: Partial<LogEntry>): WorkflowLogger;
|
|
21
|
-
child(input: string | Partial<LogEntry>): WorkflowLogger {
|
|
22
|
-
const parentLogId = typeof input === 'string' ? input : input.parentLogId;
|
|
23
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## LogEntry Type Definition
|
|
28
|
-
|
|
29
|
-
**Path**: `/home/dustin/projects/groundswell/src/types/logging.ts`
|
|
30
|
-
**Lines**: 9-24
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
export interface LogEntry {
|
|
34
|
-
id: string; // Unique identifier for this log entry
|
|
35
|
-
workflowId: string; // ID of the workflow that created this log
|
|
36
|
-
timestamp: number; // Unix timestamp in milliseconds
|
|
37
|
-
level: LogLevel; // Severity level
|
|
38
|
-
message: string; // Log message
|
|
39
|
-
data?: unknown; // Optional structured data
|
|
40
|
-
parentLogId?: string; // ID of parent log entry (for hierarchical logging)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## child() Method Behavior by Input Type
|
|
47
|
-
|
|
48
|
-
### Scenario 1: Partial<LogEntry> containing parentLogId
|
|
49
|
-
```typescript
|
|
50
|
-
// Input: { parentLogId: 'some-id' }
|
|
51
|
-
const childLogger = logger.child({ parentLogId: 'some-id' });
|
|
52
|
-
|
|
53
|
-
// Behavior:
|
|
54
|
-
// - Type guard returns false (not a string)
|
|
55
|
-
// - input.parentLogId is extracted ('some-id')
|
|
56
|
-
// - New WorkflowLogger created with parentLogId = 'some-id'
|
|
57
|
-
// - All log entries from this child will have parentLogId = 'some-id'
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Scenario 2: Partial<LogEntry> containing id (should use as parentLogId)
|
|
61
|
-
```typescript
|
|
62
|
-
// Input: { id: 'some-id' }
|
|
63
|
-
const childLogger = logger.child({ id: 'some-id' });
|
|
64
|
-
|
|
65
|
-
// Behavior:
|
|
66
|
-
// - Type guard returns false
|
|
67
|
-
// - input.parentLogId is undefined (object only has id)
|
|
68
|
-
// - New WorkflowLogger created with parentLogId = undefined
|
|
69
|
-
// - All log entries from this child will NOT have a parentLogId
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Scenario 3: String input (backward compatibility)
|
|
73
|
-
```typescript
|
|
74
|
-
// Input: 'parent-id-123'
|
|
75
|
-
const childLogger = logger.child('parent-id-123');
|
|
76
|
-
|
|
77
|
-
// Behavior:
|
|
78
|
-
// - Type guard returns true
|
|
79
|
-
// - input is assigned directly as parentLogId
|
|
80
|
-
// - New WorkflowLogger created with parentLogId = 'parent-id-123'
|
|
81
|
-
// - All log entries from this child will have parentLogId = 'parent-id-123'
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Scenario 4: Empty object (should generate parentLogId)
|
|
85
|
-
```typescript
|
|
86
|
-
// Input: {}
|
|
87
|
-
const childLogger = logger.child({});
|
|
88
|
-
|
|
89
|
-
// Behavior:
|
|
90
|
-
// - Type guard returns false
|
|
91
|
-
// - input.parentLogId is undefined (empty object has no properties)
|
|
92
|
-
// - New WorkflowLogger created with parentLogId = undefined
|
|
93
|
-
// - All log entries from this child will NOT have a parentLogId
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## How parentLogId is Set in Child Logger Entries
|
|
97
|
-
|
|
98
|
-
**Location**: `src/core/logger.ts` lines 45-48
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
// Add parent log ID if this is a child logger
|
|
102
|
-
if (this.parentLogId) {
|
|
103
|
-
entry.parentLogId = this.parentLogId;
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Process**:
|
|
108
|
-
1. When logging (lines 35-51), a new LogEntry is created with `generateId()`
|
|
109
|
-
2. If `this.parentLogId` exists (is truthy), it's added to the entry
|
|
110
|
-
3. The entry is then emitted to the node and observers
|
|
111
|
-
4. **Note**: Empty strings (`''`) are falsy, so `parentLogId: ''` becomes `undefined`
|
|
112
|
-
|
|
113
|
-
## Constructor Support
|
|
114
|
-
|
|
115
|
-
```typescript
|
|
116
|
-
// Line 8-16
|
|
117
|
-
export class WorkflowLogger {
|
|
118
|
-
private readonly parentLogId?: string;
|
|
119
|
-
|
|
120
|
-
constructor(
|
|
121
|
-
private node: WorkflowNode,
|
|
122
|
-
private observers: WorkflowObserver[],
|
|
123
|
-
parentLogId?: string
|
|
124
|
-
) {
|
|
125
|
-
this.parentLogId = parentLogId;
|
|
126
|
-
}
|
|
127
|
-
// ...
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Key Implementation Details
|
|
132
|
-
|
|
133
|
-
1. **Function Overloads**: Two overload signatures for backward compatibility
|
|
134
|
-
2. **Type Guard**: Uses `typeof input === 'string'` to narrow union type
|
|
135
|
-
3. **Falsy Handling**: Empty strings are treated as undefined due to falsy check in `log()` method
|
|
136
|
-
4. **PRD Compliance**: Matches PRD specification with backward-compatible overloads
|
|
137
|
-
5. **Future Extensibility**: Accepts additional fields in `Partial<LogEntry>` but only uses `parentLogId`
|
|
138
|
-
|
|
139
|
-
## Existing Usage Sites
|
|
140
|
-
|
|
141
|
-
1. **deep-analysis.test.ts:61**: `this.logger.child('')` - Tests empty string handling
|
|
142
|
-
2. **edge-case.test.ts:96**: `this.logger.child('parent-id-123')` - Tests normal parent ID
|
package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# Logger Test Patterns Research
|
|
2
|
-
|
|
3
|
-
## Codebase Test Pattern Analysis
|
|
4
|
-
|
|
5
|
-
### Existing Test Files Using Logger
|
|
6
|
-
|
|
7
|
-
| File | Lines | Pattern | Purpose |
|
|
8
|
-
|------|-------|---------|---------|
|
|
9
|
-
| src/__tests__/unit/workflow.test.ts | Basic logging | Observer pattern | Tests log emission to observers |
|
|
10
|
-
| src/__tests__/adversarial/deep-analysis.test.ts | 61 | `this.logger.child('')` | Tests empty parentLogId handling |
|
|
11
|
-
| src/__tests__/adversarial/edge-case.test.ts | 96 | `this.logger.child('parent-id-123')` | Tests normal parent ID passing |
|
|
12
|
-
|
|
13
|
-
### Vitest Configuration
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
// vitest.config.ts
|
|
17
|
-
export default defineConfig({
|
|
18
|
-
test: {
|
|
19
|
-
include: ['src/__tests__/**/*.test.ts'],
|
|
20
|
-
globals: true,
|
|
21
|
-
},
|
|
22
|
-
esbuild: {
|
|
23
|
-
target: 'node18',
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### Test Scripts
|
|
29
|
-
|
|
30
|
-
```json
|
|
31
|
-
// package.json
|
|
32
|
-
{
|
|
33
|
-
"test": "vitest run",
|
|
34
|
-
"test:watch": "vitest"
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Key Test Patterns
|
|
39
|
-
|
|
40
|
-
#### 1. Basic Logging Test Pattern
|
|
41
|
-
```typescript
|
|
42
|
-
it('should emit logs to observers', async () => {
|
|
43
|
-
const wf = new SimpleWorkflow();
|
|
44
|
-
const logs: LogEntry[] = [];
|
|
45
|
-
|
|
46
|
-
const observer: WorkflowObserver = {
|
|
47
|
-
onLog: (entry) => logs.push(entry),
|
|
48
|
-
onEvent: () => {},
|
|
49
|
-
onStateUpdated: () => {},
|
|
50
|
-
onTreeChanged: () => {},
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
wf.addObserver(observer);
|
|
54
|
-
await wf.run();
|
|
55
|
-
|
|
56
|
-
expect(logs.length).toBeGreaterThan(0);
|
|
57
|
-
expect(logs[0].message).toBe('Running simple workflow');
|
|
58
|
-
});
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
#### 2. Child Logger Test Pattern
|
|
62
|
-
```typescript
|
|
63
|
-
it('should handle logger.child() with empty parentLogId', async () => {
|
|
64
|
-
class TestWorkflow extends Workflow {
|
|
65
|
-
async run() {
|
|
66
|
-
const childLogger = this.logger.child('');
|
|
67
|
-
childLogger.info('Child log with empty parent');
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const workflow = new TestWorkflow();
|
|
72
|
-
await workflow.run();
|
|
73
|
-
|
|
74
|
-
expect(workflow.node.logs.length).toBe(1);
|
|
75
|
-
expect(workflow.node.logs[0].parentLogId).toBeUndefined();
|
|
76
|
-
});
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
#### 3. Mock Pattern for Console
|
|
80
|
-
```typescript
|
|
81
|
-
beforeEach(() => {
|
|
82
|
-
vi.spyOn(console, 'log').mockImplementation(() => {});
|
|
83
|
-
vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
afterEach(() => {
|
|
87
|
-
vi.restoreAllMocks();
|
|
88
|
-
});
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Test File Naming Conventions
|
|
92
|
-
|
|
93
|
-
- Unit tests: `[feature].test.ts` (e.g., `workflow.test.ts`)
|
|
94
|
-
- Adversarial tests: `[topic].test.ts` (e.g., `deep-analysis.test.ts`)
|
|
95
|
-
- Integration tests: `[scenario].test.ts`
|
|
96
|
-
|
|
97
|
-
### parentLogId Verification Pattern
|
|
98
|
-
```typescript
|
|
99
|
-
// Direct access to node logs
|
|
100
|
-
expect(workflow.node.logs.length).toBe(1);
|
|
101
|
-
expect(workflow.node.logs[0].parentLogId).toBeUndefined();
|
|
102
|
-
// OR
|
|
103
|
-
expect(workflow.node.logs[0].parentLogId).toBe('expected-id');
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Gaps Identified
|
|
107
|
-
|
|
108
|
-
1. **No dedicated logger test file** - Tests scattered across multiple files
|
|
109
|
-
2. **No comprehensive child() method tests** - Only one adversarial test exists
|
|
110
|
-
3. **No parent-child hierarchy tests** - Tests don't verify parentLogId propagation
|
|
111
|
-
4. **No logger method variants tested** - Only `info` method commonly tested
|
|
112
|
-
5. **No backward compatibility tests** - No tests covering multiple call patterns
|