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,520 +0,0 @@
|
|
|
1
|
-
# Product Requirement Prompt (PRP): Evaluate Use Cases for Public isDescendantOf API
|
|
2
|
-
|
|
3
|
-
**Work Item**: P1.M3.T4.S1 - Evaluate use cases for public isDescendantOf API
|
|
4
|
-
**PRD Reference**: Issue 9 - Steps Not in Tree Structure (Bug Report Note)
|
|
5
|
-
**Implementation Target**: src/core/workflow.ts:162-180
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Goal
|
|
10
|
-
|
|
11
|
-
**Feature Goal**: Research and document whether the `isDescendantOf()` method should be exposed as a public API, providing a clear recommendation with supporting evidence and rationale.
|
|
12
|
-
|
|
13
|
-
**Deliverable**: A comprehensive recommendation document (`RECOMMENDATION.md`) that includes:
|
|
14
|
-
1. Clear recommendation (make public vs keep private)
|
|
15
|
-
2. Rationale based on user needs and use cases
|
|
16
|
-
3. Security implications analysis
|
|
17
|
-
4. Industry comparison with other workflow engines
|
|
18
|
-
5. Implementation guidance if approved
|
|
19
|
-
|
|
20
|
-
**Success Definition**: The recommendation document enables P1.M3.T4.S2 to either implement the public API or document the rationale for keeping it private, with full confidence that all factors have been considered.
|
|
21
|
-
|
|
22
|
-
## User Persona
|
|
23
|
-
|
|
24
|
-
**Target User**: Developer implementing P1.M3.T4.S2 (public API implementation) and Technical Lead making the final decision
|
|
25
|
-
|
|
26
|
-
**Use Case**: Making an informed decision about exposing `isDescendantOf()` as a public API based on comprehensive research
|
|
27
|
-
|
|
28
|
-
**User Journey**:
|
|
29
|
-
1. Review current implementation and usage patterns
|
|
30
|
-
2. Understand user needs for ancestry checking
|
|
31
|
-
3. Evaluate security implications
|
|
32
|
-
4. Compare with industry practices
|
|
33
|
-
5. Make informed recommendation
|
|
34
|
-
6. Implement or document decision
|
|
35
|
-
|
|
36
|
-
**Pain Points Addressed**:
|
|
37
|
-
- Uncertainty about whether external ancestry checks are useful
|
|
38
|
-
- Lack of data on user needs for hierarchy navigation
|
|
39
|
-
- Security concerns about exposing workflow topology
|
|
40
|
-
- Need for industry context to inform decision
|
|
41
|
-
|
|
42
|
-
## Why
|
|
43
|
-
|
|
44
|
-
- **User Experience**: Introspection tools show users want to navigate workflow hierarchies
|
|
45
|
-
- **API Ergonomics**: `isDescendantOf()` provides a cleaner interface than manual tree traversal
|
|
46
|
-
- **Industry Alignment**: Need to understand whether this is standard practice or anti-pattern
|
|
47
|
-
- **Security**: Must evaluate information disclosure risks before exposing internal APIs
|
|
48
|
-
- **Architectural Intent**: Determine if this is an implementation detail or useful feature
|
|
49
|
-
|
|
50
|
-
## What
|
|
51
|
-
|
|
52
|
-
### Success Criteria
|
|
53
|
-
|
|
54
|
-
- [ ] Recommendation document created at `P1M3T4S1/RECOMMENDATION.md`
|
|
55
|
-
- [ ] Current implementation documented (src/core/workflow.ts:162-180)
|
|
56
|
-
- [ ] User needs and use cases catalogued from codebase analysis
|
|
57
|
-
- [ ] Security implications assessed with risk level
|
|
58
|
-
- [ ] Industry comparison completed with specific URLs and examples
|
|
59
|
-
- [ ] Clear recommendation provided with implementation guidance
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## All Needed Context
|
|
64
|
-
|
|
65
|
-
### Context Completeness Check
|
|
66
|
-
|
|
67
|
-
_This PRP passes the "No Prior Knowledge" test - someone unfamiliar with the codebase would have everything needed to complete this research task successfully._
|
|
68
|
-
|
|
69
|
-
### Documentation & References
|
|
70
|
-
|
|
71
|
-
```yaml
|
|
72
|
-
# MUST READ - Current Implementation
|
|
73
|
-
- file: src/core/workflow.ts
|
|
74
|
-
why: The isDescendantOf() implementation at lines 162-180, currently private
|
|
75
|
-
pattern: Private method using iterative traversal with visited Set for cycle detection
|
|
76
|
-
gotcha: Only used internally in attachChild() for circular reference prevention
|
|
77
|
-
|
|
78
|
-
# CRITICAL - Current Usage
|
|
79
|
-
- file: src/core/workflow.ts
|
|
80
|
-
why: Single usage site at line 293 in attachChild() method
|
|
81
|
-
pattern: Circular reference detection before attaching child workflows
|
|
82
|
-
gotcha: Throws descriptive error message explaining circular reference
|
|
83
|
-
|
|
84
|
-
# CRITICAL - Introspection Tools (User Needs Evidence)
|
|
85
|
-
- file: src/tools/introspection.ts
|
|
86
|
-
why: Public introspection tools showing user needs for hierarchy navigation
|
|
87
|
-
pattern: Tools like read_ancestor_chain, inspect_current_node provide hierarchy info
|
|
88
|
-
gotcha: These tools already expose MORE hierarchy information than isDescendantOf would
|
|
89
|
-
|
|
90
|
-
# CRITICAL - Examples Demonstrating User Needs
|
|
91
|
-
- file: examples/examples/10-introspection.ts
|
|
92
|
-
why: Demonstrates read_ancestor_chain tool with "What's above me?" use case
|
|
93
|
-
pattern: Users want to understand their position in workflow hierarchy
|
|
94
|
-
gotcha: Shows real-world need for ancestry checking
|
|
95
|
-
|
|
96
|
-
- file: examples/examples/03-parent-child.ts
|
|
97
|
-
why: Shows users accessing workflow hierarchy via children and node properties
|
|
98
|
-
pattern: Manual tree traversal to display workflow structure
|
|
99
|
-
gotcha: Users already doing manual ancestry checking via parent/children properties
|
|
100
|
-
|
|
101
|
-
# CRITICAL - Public Properties Already Exposing Hierarchy
|
|
102
|
-
- file: src/core/workflow.ts:49-52
|
|
103
|
-
why: The parent and children properties are already PUBLIC
|
|
104
|
-
pattern: public parent: Workflow | null; public children: Workflow[];
|
|
105
|
-
gotcha: Any code with Workflow reference can already traverse entire tree
|
|
106
|
-
|
|
107
|
-
# CRITICAL - WorkflowNode Interface
|
|
108
|
-
- file: src/types/workflow.ts:20-37
|
|
109
|
-
why: Defines what data is exposed via getNode() method
|
|
110
|
-
pattern: Contains parent, children, logs, events, stateSnapshot fields
|
|
111
|
-
gotcha: getNode() already exposes full tree structure with potentially sensitive data
|
|
112
|
-
|
|
113
|
-
# REFERENCE - Security Guide
|
|
114
|
-
- docfile: plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md
|
|
115
|
-
why: Comprehensive security analysis for introspection and hierarchy exposure
|
|
116
|
-
section: Threat models and mitigation patterns for topology information
|
|
117
|
-
gotcha: Groundswell is a library - security is application's responsibility
|
|
118
|
-
|
|
119
|
-
# REFERENCE - Bug Fix Context
|
|
120
|
-
- docfile: plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md
|
|
121
|
-
why: Issue #9 context about "Steps Not in Tree Structure"
|
|
122
|
-
section: Lines 101-105 describe Issue #9 as intentional design decision
|
|
123
|
-
gotcha: isDescendantOf note comes from bug report analysis
|
|
124
|
-
|
|
125
|
-
# EXTERNAL RESEARCH - Workflow Engines
|
|
126
|
-
- docfile: P1M3T4S1/research/external_workflow_engines_research.md
|
|
127
|
-
why: Comprehensive comparison of Airflow, Temporal, Prefect, Dagster, GitHub Actions, AWS Step Functions
|
|
128
|
-
section: API Exposure Matrix shows NO major system exposes public descendant checking
|
|
129
|
-
critical: Groundswell would be UNIQUE in exposing isDescendantOf() as public API
|
|
130
|
-
|
|
131
|
-
# EXTERNAL RESEARCH - Security Implications
|
|
132
|
-
- docfile: P1M3T4S1/research/security_implications_analysis.md
|
|
133
|
-
why: Detailed security analysis of information disclosure risks
|
|
134
|
-
section: Comparison with existing public APIs shows NO new information exposed
|
|
135
|
-
critical: parent/children already public, getNode() already exposes full tree
|
|
136
|
-
|
|
137
|
-
# DOCUMENTATION URLs
|
|
138
|
-
- url: https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html
|
|
139
|
-
why: Airflow's approach to task relationships (upstream/downstream terminology)
|
|
140
|
-
critical: Airflow uses get_upstream()/get_downstream() for immediate neighbors only
|
|
141
|
-
|
|
142
|
-
- url: https://docs.temporal.io/develop/python/child-workflows
|
|
143
|
-
why: Temporal's child workflow approach (parent/child terminology)
|
|
144
|
-
critical: Temporal does NOT expose public ancestry checking APIs
|
|
145
|
-
|
|
146
|
-
- url: https://docs.prefect.io/latest/concepts/dependencies/
|
|
147
|
-
why: Prefect's dependency model (upstream/downstream terminology)
|
|
148
|
-
critical: Prefect focuses on execution state, not topology queries
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Current Codebase Tree (relevant to isDescendantOf)
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
src/
|
|
155
|
-
├── core/
|
|
156
|
-
│ └── workflow.ts # isDescendantOf at line 162-180 (private)
|
|
157
|
-
│ # attachChild usage at line 293
|
|
158
|
-
│ # public parent/children properties at 49-52
|
|
159
|
-
├── types/
|
|
160
|
-
│ └── workflow.ts # WorkflowNode interface with parent/children
|
|
161
|
-
├── tools/
|
|
162
|
-
│ └── introspection.ts # Public introspection tools (read_ancestor_chain, etc.)
|
|
163
|
-
└── __tests__/
|
|
164
|
-
├── adversarial/
|
|
165
|
-
│ └── circular-reference.test.ts # Tests for isDescendantOf behavior
|
|
166
|
-
└── unit/
|
|
167
|
-
└── introspection-tools.test.ts # Tests for ancestry navigation tools
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Known Gotchas of Our Codebase
|
|
171
|
-
|
|
172
|
-
```typescript
|
|
173
|
-
// CRITICAL: isDescendantOf is private - changing to public is a breaking API change
|
|
174
|
-
// Must consider backward compatibility if any external code relies on privacy
|
|
175
|
-
|
|
176
|
-
// CRITICAL: Groundswell has NO built-in authentication or authorization
|
|
177
|
-
// Security is entirely the application's responsibility
|
|
178
|
-
|
|
179
|
-
// CRITICAL: parent and children properties are already PUBLIC
|
|
180
|
-
// isDescendantOf does NOT expose any new information
|
|
181
|
-
|
|
182
|
-
// CRITICAL: WorkflowNode includes potentially sensitive data:
|
|
183
|
-
// - logs (may contain debugging info)
|
|
184
|
-
// - events (may contain business logic)
|
|
185
|
-
// - stateSnapshot (may contain @ObservedState fields with secrets)
|
|
186
|
-
|
|
187
|
-
// CRITICAL: Introspection tools are already PUBLIC
|
|
188
|
-
// read_ancestor_chain exposes MORE info than isDescendantOf would
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## Implementation Blueprint
|
|
194
|
-
|
|
195
|
-
### Research Tasks (ordered by dependencies)
|
|
196
|
-
|
|
197
|
-
```yaml
|
|
198
|
-
Task 1: ANALYZE Current Implementation
|
|
199
|
-
- LOCATE: src/core/workflow.ts lines 162-180
|
|
200
|
-
- DOCUMENT: Exact implementation of isDescendantOf method
|
|
201
|
-
- IDENTIFY: Algorithm used (iterative traversal with visited Set)
|
|
202
|
-
- UNDERSTAND: Purpose (cycle detection in attachChild)
|
|
203
|
-
- OUTPUT: Implementation summary with code snippet
|
|
204
|
-
|
|
205
|
-
Task 2: INVENTORY Current Usage Patterns
|
|
206
|
-
- SEARCH: All call sites of isDescendantOf in codebase
|
|
207
|
-
- ANALYZE: How it's used (only in attachChild for circular reference detection)
|
|
208
|
-
- VERIFY: Error messages and edge cases
|
|
209
|
-
- CHECK: Test coverage for isDescendantOf behavior
|
|
210
|
-
- OUTPUT: Usage inventory with file locations and line numbers
|
|
211
|
-
|
|
212
|
-
Task 3: RESEARCH User Needs and Use Cases
|
|
213
|
-
- ANALYZE: Introspection tools (src/tools/introspection.ts)
|
|
214
|
-
- EXAMINE: Examples showing hierarchy navigation (examples/10-introspection.ts)
|
|
215
|
-
- SEARCH: Feature requests or issues asking for ancestry checking
|
|
216
|
-
- IDENTIFY: Patterns where users manually traverse parent chain
|
|
217
|
-
- OUTPUT: Use case inventory with specific examples
|
|
218
|
-
|
|
219
|
-
Task 4: COMPARE with Existing Public APIs
|
|
220
|
-
- ANALYZE: What information is already exposed (parent, children, getNode())
|
|
221
|
-
- COMPARE: isDescendantOf vs existing APIs in terms of information disclosure
|
|
222
|
-
- EVALUATE: Whether isDescendantOf adds new capabilities
|
|
223
|
-
- ASSESS: Impact on security posture
|
|
224
|
-
- OUTPUT: Comparison matrix with risk assessment
|
|
225
|
-
|
|
226
|
-
Task 5: RESEARCH Industry Practices
|
|
227
|
-
- INVESTIGATE: Apache Airflow, Temporal, Prefect, Dagster, GitHub Actions, AWS Step Functions
|
|
228
|
-
- DOCUMENT: How each system handles ancestry/descendant checking
|
|
229
|
-
- ANALYZE: Terminology patterns (parent/child vs upstream/downstream)
|
|
230
|
-
- IDENTIFY: Security patterns for topology exposure
|
|
231
|
-
- OUTPUT: Industry comparison with specific URLs and examples
|
|
232
|
-
|
|
233
|
-
Task 6: EVALUATE Security Implications
|
|
234
|
-
- ANALYZE: What information isDescendantOf reveals
|
|
235
|
-
- COMPARE: With existing public APIs (parent, children, getNode())
|
|
236
|
-
- ASSESS: Information disclosure risk level
|
|
237
|
-
- IDENTIFY: Attack vectors (topology extraction, business intelligence)
|
|
238
|
-
- REVIEW: Existing security documentation (introspection-security-guide.md)
|
|
239
|
-
- OUTPUT: Security assessment with risk level and mitigations
|
|
240
|
-
|
|
241
|
-
Task 7: MAKE Final Recommendation
|
|
242
|
-
- SYNTHESIZE: Findings from all research tasks
|
|
243
|
-
- EVALUATE: Pros and cons of making public vs keeping private
|
|
244
|
-
- DECIDE: Clear recommendation with supporting rationale
|
|
245
|
-
- PROVIDE: Implementation guidance if approved
|
|
246
|
-
- PROVIDE: Documentation rationale if not approved
|
|
247
|
-
- OUTPUT: RECOMMENDATION.md with clear decision and next steps
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
### Research Methodology & Key Questions
|
|
251
|
-
|
|
252
|
-
```typescript
|
|
253
|
-
// Question 1: What is isDescendantOf and how does it work?
|
|
254
|
-
// ANSWER: Private method checking if this workflow is a descendant of given ancestor
|
|
255
|
-
// IMPLEMENTATION: Iterative traversal up parent chain with visited Set for cycle detection
|
|
256
|
-
|
|
257
|
-
// Question 2: Where is it currently used?
|
|
258
|
-
// ANSWER: Only one place - attachChild() method at line 293
|
|
259
|
-
// PURPOSE: Prevent circular references by checking if child is an ancestor
|
|
260
|
-
|
|
261
|
-
// Question 3: Do users need this functionality?
|
|
262
|
-
// ANSWER: Evidence suggests YES - introspection tools show hierarchy navigation needs
|
|
263
|
-
// EVIDENCE:
|
|
264
|
-
// - read_ancestor_chain tool: "What's above me?"
|
|
265
|
-
// - inspect_current_node tool: Shows depth and parent info
|
|
266
|
-
// - Examples show manual tree traversal to display hierarchy
|
|
267
|
-
|
|
268
|
-
// Question 4: Does it expose new security risks?
|
|
269
|
-
// ANSWER: NO - parent and children are already public
|
|
270
|
-
// COMPARISON:
|
|
271
|
-
// - workflow.parent: Public (direct parent reference)
|
|
272
|
-
// - workflow.children: Public (all immediate children)
|
|
273
|
-
// - workflow.getNode(): Public (full tree with logs, events, state)
|
|
274
|
-
// - isDescendantOf(): Would provide convenience, not new information
|
|
275
|
-
|
|
276
|
-
// Question 5: What do other workflow engines do?
|
|
277
|
-
// ANSWER: NO major system exposes public ancestry checking API
|
|
278
|
-
// FINDINGS:
|
|
279
|
-
// - Airflow: get_upstream()/get_downstream() (immediate only)
|
|
280
|
-
// - Temporal: No public API
|
|
281
|
-
// - Prefect: No public API
|
|
282
|
-
// - Dagster: Indirect via AssetSelection
|
|
283
|
-
// - Groundswell: Would be UNIQUE in exposing this
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### Decision Framework
|
|
287
|
-
|
|
288
|
-
```yaml
|
|
289
|
-
EVALUATION CRITERIA:
|
|
290
|
-
User Value:
|
|
291
|
-
- High: Provides clean API for common hierarchy queries
|
|
292
|
-
- Evidence: Introspection tools show user need
|
|
293
|
-
- Score: 8/10
|
|
294
|
-
|
|
295
|
-
Security Risk:
|
|
296
|
-
- Low: No new information beyond existing public APIs
|
|
297
|
-
- parent/children already public
|
|
298
|
-
- Score: 2/10 (10 = highest risk)
|
|
299
|
-
|
|
300
|
-
Implementation Cost:
|
|
301
|
-
- Very Low: Just change private to public, add documentation
|
|
302
|
-
- Already battle-tested (25+ test cases)
|
|
303
|
-
- Score: 1/10 (10 = highest cost)
|
|
304
|
-
|
|
305
|
-
Industry Alignment:
|
|
306
|
-
- Neutral: No industry standard, but no anti-pattern either
|
|
307
|
-
- Would be differentiator (no major system has this)
|
|
308
|
-
- Score: 5/10
|
|
309
|
-
|
|
310
|
-
Maintenance Burden:
|
|
311
|
-
- Low: Simple method with minimal surface area
|
|
312
|
-
- Already stable and tested
|
|
313
|
-
- Score: 2/10
|
|
314
|
-
|
|
315
|
-
DECISION MATRIX:
|
|
316
|
-
KEEP PRIVATE:
|
|
317
|
-
Pros:
|
|
318
|
-
- Follows industry pattern (most systems keep this internal)
|
|
319
|
-
- Minimal API surface area
|
|
320
|
-
- No documentation burden
|
|
321
|
-
Cons:
|
|
322
|
-
- Users must manually traverse parent chain
|
|
323
|
-
- Less ergonomic API
|
|
324
|
-
|
|
325
|
-
MAKE PUBLIC:
|
|
326
|
-
Pros:
|
|
327
|
-
- Cleaner API for hierarchy queries
|
|
328
|
-
- Aligns with introspection tool philosophy
|
|
329
|
-
- Already battle-tested
|
|
330
|
-
- No new security risk
|
|
331
|
-
Cons:
|
|
332
|
-
- Larger API surface area
|
|
333
|
-
- Documentation required
|
|
334
|
-
- Different from industry (but not anti-pattern)
|
|
335
|
-
|
|
336
|
-
RECOMMENDATION: MAKE PUBLIC with safeguards
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### Integration Points
|
|
340
|
-
|
|
341
|
-
```yaml
|
|
342
|
-
CODE CHANGES (if approved):
|
|
343
|
-
- modify: src/core/workflow.ts
|
|
344
|
-
- change: Line 162 from `private isDescendantOf` to `public isDescendantOf`
|
|
345
|
-
- add: JSDoc documentation with security warning
|
|
346
|
-
- preserve: All existing functionality and tests
|
|
347
|
-
|
|
348
|
-
DOCUMENTATION CHANGES:
|
|
349
|
-
- add: Security warning about topology exposure
|
|
350
|
-
- update: API documentation with examples
|
|
351
|
-
- reference: Introspection tools as related functionality
|
|
352
|
-
|
|
353
|
-
SECURITY DOCUMENTATION:
|
|
354
|
-
- update: introspection-security-guide.md with isDescendantOf section
|
|
355
|
-
- document: Application-level access control requirements
|
|
356
|
-
- provide: Examples of safe usage patterns
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## Validation Loop
|
|
362
|
-
|
|
363
|
-
### Level 1: Research Completeness (Immediate Feedback)
|
|
364
|
-
|
|
365
|
-
```bash
|
|
366
|
-
# Verify all research tasks completed
|
|
367
|
-
echo "Checking research artifacts..."
|
|
368
|
-
ls -la P1M3T4S1/research/
|
|
369
|
-
|
|
370
|
-
# Expected files:
|
|
371
|
-
# - external_workflow_engines_research.md (comprehensive industry comparison)
|
|
372
|
-
# - security_implications_analysis.md (security risk assessment)
|
|
373
|
-
|
|
374
|
-
# Validate research covers all required areas:
|
|
375
|
-
# - Current implementation: YES (workflow.ts:162-180)
|
|
376
|
-
# - Usage patterns: YES (only attachChild at line 293)
|
|
377
|
-
# - User needs: YES (introspection tools, examples)
|
|
378
|
-
# - Security: YES (comparison with existing APIs)
|
|
379
|
-
# - Industry: YES (6 major systems analyzed)
|
|
380
|
-
|
|
381
|
-
# Expected: All research artifacts present and comprehensive
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
### Level 2: Decision Validation (Peer Review)
|
|
385
|
-
|
|
386
|
-
```bash
|
|
387
|
-
# Review recommendation document for:
|
|
388
|
-
cat P1M3T4S1/RECOMMENDATION.md
|
|
389
|
-
|
|
390
|
-
# Validate inclusion of:
|
|
391
|
-
# 1. Clear recommendation (public vs private)
|
|
392
|
-
# 2. Rationale with supporting evidence
|
|
393
|
-
# 3. Security assessment with risk level
|
|
394
|
-
# 4. Industry comparison summary
|
|
395
|
-
# 5. Implementation guidance or documentation rationale
|
|
396
|
-
|
|
397
|
-
# Expected: Recommendation is clear, well-supported, and actionable
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
### Level 3: Cross-Reference Validation
|
|
401
|
-
|
|
402
|
-
```bash
|
|
403
|
-
# Verify recommendation aligns with:
|
|
404
|
-
# - Bug fix task specification (bug_fix_tasks.json)
|
|
405
|
-
grep -A 5 "P1.M3.T4.S1" plan/001_d3bb02af4886/bug_fix_tasks.json
|
|
406
|
-
|
|
407
|
-
# - Security documentation
|
|
408
|
-
ls plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md
|
|
409
|
-
|
|
410
|
-
# - Related work items (P1.M3.T4.S2 implementation task)
|
|
411
|
-
# Verify S2 can use this recommendation for implementation
|
|
412
|
-
|
|
413
|
-
# Expected: Recommendation addresses all task requirements
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### Level 4: Implementation Readiness (If Approved)
|
|
417
|
-
|
|
418
|
-
```bash
|
|
419
|
-
# If recommending public API, validate:
|
|
420
|
-
# 1. Implementation location is clear (src/core/workflow.ts:162)
|
|
421
|
-
# 2. Code change is minimal (private -> public)
|
|
422
|
-
# 3. Documentation requirements are defined
|
|
423
|
-
# 4. Test coverage already exists (25+ test cases)
|
|
424
|
-
|
|
425
|
-
# Check existing test coverage
|
|
426
|
-
grep -r "isDescendantOf" src/__tests__/ --include="*.test.ts" | wc -l
|
|
427
|
-
|
|
428
|
-
# Expected: High confidence that S2 can implement without additional research
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
---
|
|
432
|
-
|
|
433
|
-
## Final Validation Checklist
|
|
434
|
-
|
|
435
|
-
### Research Validation
|
|
436
|
-
|
|
437
|
-
- [ ] Current implementation fully documented with code examples
|
|
438
|
-
- [ ] All usage sites identified and analyzed
|
|
439
|
-
- [ ] User needs catalogued with specific examples
|
|
440
|
-
- [ ] Security implications assessed with risk level
|
|
441
|
-
- [ ] Industry comparison completed with specific URLs
|
|
442
|
-
- [ ] Decision framework applied with scoring
|
|
443
|
-
|
|
444
|
-
### Recommendation Validation
|
|
445
|
-
|
|
446
|
-
- [ ] Clear recommendation provided (public or private)
|
|
447
|
-
- [ ] Rationale supported by research evidence
|
|
448
|
-
- [ ] Security implications addressed
|
|
449
|
-
- [ ] Implementation guidance included (if approved)
|
|
450
|
-
- [ ] Documentation rationale included (if not approved)
|
|
451
|
-
- [ ] Next steps clearly defined for P1.M3.T4.S2
|
|
452
|
-
|
|
453
|
-
### Documentation Validation
|
|
454
|
-
|
|
455
|
-
- [ ] RECOMMENDATION.md created at P1M3T4S1/RECOMMENDATION.md
|
|
456
|
-
- [ ] All research artifacts stored in P1M3T4S1/research/
|
|
457
|
-
- [ ] External research includes specific URLs
|
|
458
|
-
- [ ] Security analysis includes risk assessment
|
|
459
|
-
- [ ] Code snippets include file paths and line numbers
|
|
460
|
-
|
|
461
|
-
### Quality Validation
|
|
462
|
-
|
|
463
|
-
- [ ] Research passes "No Prior Knowledge" test
|
|
464
|
-
- [ ] Recommendation is actionable and unambiguous
|
|
465
|
-
- [ ] All sources cited with specific references
|
|
466
|
-
- [ ] Decision framework is transparent and reproducible
|
|
467
|
-
- [ ] Conflicts in evidence are acknowledged and addressed
|
|
468
|
-
|
|
469
|
-
---
|
|
470
|
-
|
|
471
|
-
## Anti-Patterns to Avoid
|
|
472
|
-
|
|
473
|
-
- **Don't** make recommendation without comprehensive research
|
|
474
|
-
- **Don't** ignore security implications (even if low risk)
|
|
475
|
-
- **Don't** overlook that parent/children are already public
|
|
476
|
-
- **Don't** forget about introspection tools (already expose hierarchy)
|
|
477
|
-
- **Don't** assume user needs without evidence from codebase
|
|
478
|
-
- **Don't** compare with industry without specific URLs and examples
|
|
479
|
-
- **Don't** provide ambiguous recommendation (must be clear: public or private)
|
|
480
|
-
- **Don't** skip implementation guidance (S2 needs to know exactly what to do)
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
## Appendix: Research Artifacts
|
|
485
|
-
|
|
486
|
-
### Generated Documents
|
|
487
|
-
|
|
488
|
-
```bash
|
|
489
|
-
P1M3T4S1/
|
|
490
|
-
├── PRP.md # This document
|
|
491
|
-
├── RECOMMENDATION.md # Final recommendation (TO BE CREATED)
|
|
492
|
-
└── research/
|
|
493
|
-
├── external_workflow_engines_research.md # Industry comparison (COMPLETED)
|
|
494
|
-
└── security_implications_analysis.md # Security assessment (COMPLETED)
|
|
495
|
-
```
|
|
496
|
-
|
|
497
|
-
### Key Findings Summary
|
|
498
|
-
|
|
499
|
-
**Current State:**
|
|
500
|
-
- `isDescendantOf()` is private at src/core/workflow.ts:162-180
|
|
501
|
-
- Only used in attachChild() for circular reference detection
|
|
502
|
-
- Battle-tested with 25+ test cases
|
|
503
|
-
|
|
504
|
-
**User Needs:**
|
|
505
|
-
- Introspection tools show hierarchy navigation is important
|
|
506
|
-
- Examples show users manually traversing parent chain
|
|
507
|
-
- read_ancestor_chain tool: "What's above me?"
|
|
508
|
-
|
|
509
|
-
**Security:**
|
|
510
|
-
- parent and children properties are already PUBLIC
|
|
511
|
-
- getNode() already exposes full tree structure
|
|
512
|
-
- isDescendantOf would NOT expose new information
|
|
513
|
-
- Risk level: LOW (same as current exposure)
|
|
514
|
-
|
|
515
|
-
**Industry:**
|
|
516
|
-
- NO major workflow engine exposes public ancestry checking
|
|
517
|
-
- Groundswell would be UNIQUE in this regard
|
|
518
|
-
- Not an anti-pattern, just different from industry
|
|
519
|
-
|
|
520
|
-
**Recommendation:** Make public with safeguards (see RECOMMENDATION.md for details)
|