groundswell 0.0.2 → 1.0.0
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/LICENSE +21 -0
- package/README.md +26 -9
- package/dist/cache/cache-key.d.ts +86 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +204 -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 +203 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +833 -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 +127 -0
- package/dist/core/mcp-handler.d.ts.map +1 -0
- package/dist/core/mcp-handler.js +323 -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 +61 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +358 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workflow.d.ts +543 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +986 -0
- package/dist/core/workflow.js.map +1 -0
- package/dist/debugger/event-replayer.d.ts +422 -0
- package/dist/debugger/event-replayer.d.ts.map +1 -0
- package/dist/debugger/event-replayer.js +639 -0
- package/dist/debugger/event-replayer.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 +240 -0
- package/dist/debugger/tree-debugger.d.ts.map +1 -0
- package/dist/debugger/tree-debugger.js +620 -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 +192 -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/harnesses/claude-code-harness.d.ts +391 -0
- package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
- package/dist/harnesses/claude-code-harness.js +1076 -0
- package/dist/harnesses/claude-code-harness.js.map +1 -0
- package/dist/harnesses/harness-registry.d.ts +440 -0
- package/dist/harnesses/harness-registry.d.ts.map +1 -0
- package/dist/harnesses/harness-registry.js +543 -0
- package/dist/harnesses/harness-registry.js.map +1 -0
- package/dist/harnesses/index.d.ts +12 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +11 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/pi-harness.d.ts +219 -0
- package/dist/harnesses/pi-harness.d.ts.map +1 -0
- package/dist/harnesses/pi-harness.js +676 -0
- package/dist/harnesses/pi-harness.js.map +1 -0
- package/dist/harnesses/pi-schema-converter.d.ts +24 -0
- package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
- package/dist/harnesses/pi-schema-converter.js +81 -0
- package/dist/harnesses/pi-schema-converter.js.map +1 -0
- package/dist/harnesses/register-defaults.d.ts +24 -0
- package/dist/harnesses/register-defaults.d.ts.map +1 -0
- package/dist/harnesses/register-defaults.js +40 -0
- package/dist/harnesses/register-defaults.js.map +1 -0
- package/dist/harnesses/session-store.d.ts +201 -0
- package/dist/harnesses/session-store.d.ts.map +1 -0
- package/dist/harnesses/session-store.js +254 -0
- package/dist/harnesses/session-store.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -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 +344 -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 +1317 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +423 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/decorators.d.ts +40 -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 +113 -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/harnesses.d.ts +474 -0
- package/dist/types/harnesses.d.ts.map +1 -0
- package/dist/types/harnesses.js +2 -0
- package/dist/types/harnesses.js.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -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/providers.d.ts +691 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +14 -0
- package/dist/types/providers.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/restart.d.ts +132 -0
- package/dist/types/restart.d.ts.map +1 -0
- package/dist/types/restart.js +2 -0
- package/dist/types/restart.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/streaming.d.ts +194 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +67 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/workflow-context.d.ts +275 -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/agent-validation.d.ts +88 -0
- package/dist/utils/agent-validation.d.ts.map +1 -0
- package/dist/utils/agent-validation.js +87 -0
- package/dist/utils/agent-validation.js.map +1 -0
- package/dist/utils/delay.d.ts +7 -0
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +9 -0
- package/dist/utils/delay.js.map +1 -0
- package/dist/utils/harness-config.d.ts +180 -0
- package/dist/utils/harness-config.d.ts.map +1 -0
- package/dist/utils/harness-config.js +311 -0
- package/dist/utils/harness-config.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/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-spec.d.ts +110 -0
- package/dist/utils/model-spec.d.ts.map +1 -0
- package/dist/utils/model-spec.js +149 -0
- package/dist/utils/model-spec.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/provider-config.d.ts +10 -0
- package/dist/utils/provider-config.d.ts.map +1 -0
- package/dist/utils/provider-config.js +10 -0
- package/dist/utils/provider-config.js.map +1 -0
- package/dist/utils/restart-analysis.d.ts +202 -0
- package/dist/utils/restart-analysis.d.ts.map +1 -0
- package/dist/utils/restart-analysis.js +426 -0
- package/dist/utils/restart-analysis.js.map +1 -0
- package/dist/utils/session-serialization.d.ts +118 -0
- package/dist/utils/session-serialization.d.ts.map +1 -0
- package/dist/utils/session-serialization.js +217 -0
- package/dist/utils/session-serialization.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 +34 -5
- 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/CHANGELOG.md +0 -188
- 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/index.ts +0 -18
- 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/index.ts +0 -4
- 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,378 +0,0 @@
|
|
|
1
|
-
# PRP: Fix First Error Handler in WorkflowContext.step() Method (P1.M1.T2.S2)
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## Goal
|
|
6
|
-
|
|
7
|
-
**Feature Goal**: Update the first error handler in the `WorkflowContext.step()` method (lines 155-162) to capture actual workflow state and logs instead of empty objects/arrays.
|
|
8
|
-
|
|
9
|
-
**Deliverable**: Modified `src/core/workflow-context.ts` with error handler that properly captures state using `getObservedState(this.workflow)` and logs using `[...this.workflow.node.logs] as LogEntry[]`.
|
|
10
|
-
|
|
11
|
-
**Success Definition**:
|
|
12
|
-
- Error handler at lines 161-162 no longer uses empty `state: {}` and `logs: []`
|
|
13
|
-
- Error events contain actual workflow state from `getObservedState(this.workflow)`
|
|
14
|
-
- Error events contain actual log entries from `this.workflow.node.logs`
|
|
15
|
-
- All existing tests continue to pass
|
|
16
|
-
- New behavior matches the pattern established in `Workflow.runFunctional()` error handler
|
|
17
|
-
|
|
18
|
-
## Why
|
|
19
|
-
|
|
20
|
-
This fix ensures that when a step fails within a functional workflow, the error event contains meaningful debugging information:
|
|
21
|
-
- **State capture**: Enables workflow restart and introspection by capturing the actual workflow state at failure point
|
|
22
|
-
- **Logs capture**: Provides full debugging context with all log entries up to the point of failure
|
|
23
|
-
- **Consistency**: Matches the pattern already implemented in `Workflow.runFunctional()` (completed in P1.M1.T1.S2/S3)
|
|
24
|
-
- **Depends on**: P1.M1.T2.S1 (already complete) which added the `getObservedState` import
|
|
25
|
-
|
|
26
|
-
## What
|
|
27
|
-
|
|
28
|
-
Modify the error handler in `WorkflowContextImpl.step()` method to replace empty state/logs with actual captured values.
|
|
29
|
-
|
|
30
|
-
### Current Code (Lines 155-164)
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
error: {
|
|
34
|
-
message: error instanceof Error ? error.message : 'Unknown error',
|
|
35
|
-
original: error,
|
|
36
|
-
workflowId: this.workflowId,
|
|
37
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
38
|
-
state: {}, // <- EMPTY: Replace with getObservedState(this.workflow)
|
|
39
|
-
logs: [], // <- EMPTY: Replace with [...this.workflow.node.logs] as LogEntry[]
|
|
40
|
-
},
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Target Code
|
|
44
|
-
|
|
45
|
-
```typescript
|
|
46
|
-
error: {
|
|
47
|
-
message: error instanceof Error ? error.message : 'Unknown error',
|
|
48
|
-
original: error,
|
|
49
|
-
workflowId: this.workflowId,
|
|
50
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
51
|
-
state: getObservedState(this.workflow),
|
|
52
|
-
logs: [...this.workflow.node.logs] as LogEntry[],
|
|
53
|
-
},
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Success Criteria
|
|
57
|
-
|
|
58
|
-
- [ ] Line 161: `state: {}` replaced with `state: getObservedState(this.workflow)`
|
|
59
|
-
- [ ] Line 162: `logs: []` replaced with `logs: [...this.workflow.node.logs] as LogEntry[]`
|
|
60
|
-
- [ ] Import statement for `getObservedState` already exists at line 29 (from P1.M1.T2.S1)
|
|
61
|
-
- [ ] Type assertion `as LogEntry[]` is applied to logs array
|
|
62
|
-
- [ ] Spread operator `[...]` is used to create shallow copy of logs array
|
|
63
|
-
- [ ] All tests pass: `npm test`
|
|
64
|
-
|
|
65
|
-
## All Needed Context
|
|
66
|
-
|
|
67
|
-
### Context Completeness Check
|
|
68
|
-
|
|
69
|
-
**"No Prior Knowledge" test**: If someone knew nothing about this codebase, they would need to know:
|
|
70
|
-
- Where the error handler is located (exact line numbers)
|
|
71
|
-
- What `this.workflow` refers to (it's a `WorkflowLike` object, not `this`)
|
|
72
|
-
- What `getObservedState` expects as parameter (an object with observed state decorators)
|
|
73
|
-
- How to capture logs from the workflow node
|
|
74
|
-
- The pattern to follow (from completed P1.M1.T1.S2/S3)
|
|
75
|
-
- Testing patterns for validation
|
|
76
|
-
|
|
77
|
-
All of this context is provided below.
|
|
78
|
-
|
|
79
|
-
### Documentation & References
|
|
80
|
-
|
|
81
|
-
```yaml
|
|
82
|
-
# MUST READ - Critical pattern from completed bug fix
|
|
83
|
-
- file: src/core/workflow.ts
|
|
84
|
-
why: Contains the completed fix for runFunctional() error handler (P1.M1.T1.S2/S3) - this is the pattern to follow
|
|
85
|
-
pattern: Error handler at lines 286-297 shows exact pattern for state/logs capture
|
|
86
|
-
lines: 286-297
|
|
87
|
-
gotcha: Workflow uses `this` for getObservedState, but WorkflowContext uses `this.workflow`
|
|
88
|
-
|
|
89
|
-
- file: src/core/workflow-context.ts
|
|
90
|
-
why: The file to modify - contains the step() method with the buggy error handler
|
|
91
|
-
pattern: Lines 155-162 contain the error handler to fix
|
|
92
|
-
gotcha: `this.workflow` is a WorkflowLike interface, not a Workflow instance
|
|
93
|
-
|
|
94
|
-
- file: src/decorators/observed-state.ts
|
|
95
|
-
why: Defines getObservedState function - need to understand its signature
|
|
96
|
-
pattern: Function signature: `function getObservedState(obj: object): SerializedWorkflowState`
|
|
97
|
-
critical: Must pass `this.workflow` (the WorkflowLike object) not `this` (the WorkflowContext)
|
|
98
|
-
|
|
99
|
-
- file: src/types/workflow.ts
|
|
100
|
-
why: Defines WorkflowNode interface with logs array structure
|
|
101
|
-
pattern: WorkflowNode.logs is of type LogEntry[]
|
|
102
|
-
critical: Logs must be captured from `this.workflow.node.logs`
|
|
103
|
-
|
|
104
|
-
- file: src/types/logging.ts
|
|
105
|
-
why: Defines LogEntry interface structure
|
|
106
|
-
pattern: LogEntry has id, workflowId, timestamp, level, message, data, parentLogId
|
|
107
|
-
|
|
108
|
-
- file: src/__tests__/unit/workflow.test.ts
|
|
109
|
-
why: Contains test for functional workflow error state capture (P1.M1.T1.S4)
|
|
110
|
-
pattern: Lines 82-130 show how to test error state/logs capture
|
|
111
|
-
critical: Use this pattern when writing tests for P1.M1.T2.S4
|
|
112
|
-
|
|
113
|
-
- file: plan_bugfix/P1M1T2S1/PRP.md
|
|
114
|
-
why: Contains context from previous subtask (getObservedState import)
|
|
115
|
-
pattern: Import statement was added at line 29
|
|
116
|
-
critical: getObservedState import is already present, no need to add it again
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Current Codebase Tree
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
src/
|
|
123
|
-
├── core/
|
|
124
|
-
│ ├── workflow-context.ts # <- FILE TO MODIFY (error handler at lines 155-162)
|
|
125
|
-
│ ├── workflow.ts # <- REFERENCE: Completed fix at lines 286-297
|
|
126
|
-
│ └── ...
|
|
127
|
-
├── decorators/
|
|
128
|
-
│ ├── observed-state.ts # <- REFERENCE: getObservedState function definition
|
|
129
|
-
│ └── ...
|
|
130
|
-
├── types/
|
|
131
|
-
│ ├── workflow.ts # <- REFERENCE: WorkflowNode interface
|
|
132
|
-
│ ├── logging.ts # <- REFERENCE: LogEntry interface
|
|
133
|
-
│ └── ...
|
|
134
|
-
└── __tests__/
|
|
135
|
-
└── unit/
|
|
136
|
-
└── workflow.test.ts # <- REFERENCE: Test pattern for error state capture
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Known Gotchas of Codebase & Library Quirks
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
// CRITICAL: WorkflowContext uses `this.workflow` NOT `this`
|
|
143
|
-
// In Workflow class: getObservedState(this) <- refers to Workflow instance
|
|
144
|
-
// In WorkflowContext: getObservedState(this.workflow) <- refers to WorkflowLike object
|
|
145
|
-
|
|
146
|
-
// CRITICAL: Logs are on this.workflow.node, not this.node
|
|
147
|
-
// this.workflow is WorkflowLike interface with a `node` property
|
|
148
|
-
// this.workflow.node is the WorkflowNode containing the logs array
|
|
149
|
-
|
|
150
|
-
// CRITICAL: Must use spread operator to create shallow copy of logs
|
|
151
|
-
// Pattern: [...this.workflow.node.logs] as LogEntry[]
|
|
152
|
-
// This prevents the captured logs from being modified by subsequent workflow execution
|
|
153
|
-
|
|
154
|
-
// CRITICAL: getObservedState import already exists from P1.M1.T2.S1
|
|
155
|
-
// Line 29: import { getObservedState } from '../decorators/observed-state.js';
|
|
156
|
-
// Do NOT add another import statement
|
|
157
|
-
|
|
158
|
-
// CRITICAL: Type assertion required for logs
|
|
159
|
-
// The logs array must be cast as LogEntry[] for type safety
|
|
160
|
-
// Pattern: [...this.workflow.node.logs] as LogEntry[]
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Implementation Blueprint
|
|
164
|
-
|
|
165
|
-
### Data Models and Structure
|
|
166
|
-
|
|
167
|
-
No new data models needed. This fix uses existing types:
|
|
168
|
-
- `SerializedWorkflowState` - return type of `getObservedState()`
|
|
169
|
-
- `LogEntry[]` - type for logs array
|
|
170
|
-
- `WorkflowLike` - interface for `this.workflow`
|
|
171
|
-
- `WorkflowNode` - interface for `this.workflow.node`
|
|
172
|
-
|
|
173
|
-
### Implementation Tasks
|
|
174
|
-
|
|
175
|
-
```yaml
|
|
176
|
-
Task 1: MODIFY src/core/workflow-context.ts - Error Handler Fix
|
|
177
|
-
- LOCATION: Lines 161-162 in the step() method error handler
|
|
178
|
-
- REPLACE: `state: {}` with `state: getObservedState(this.workflow)`
|
|
179
|
-
- REPLACE: `logs: []` with `logs: [...this.workflow.node.logs] as LogEntry[]`
|
|
180
|
-
- PRESERVE: All other error properties (message, original, workflowId, stack)
|
|
181
|
-
- PRESERVE: Import statement at line 29 (already added in P1.M1.T2.S1)
|
|
182
|
-
- VALIDATION: getObservedState receives `this.workflow` not `this`
|
|
183
|
-
- VALIDATION: Logs captured from `this.workflow.node.logs`
|
|
184
|
-
- VALIDATION: Type assertion `as LogEntry[]` is present
|
|
185
|
-
|
|
186
|
-
Task 2: VALIDATION - Run Tests
|
|
187
|
-
- COMMAND: npm test
|
|
188
|
-
- EXPECTED: All tests pass
|
|
189
|
-
- VERIFICATION: No new test failures introduced
|
|
190
|
-
- COVERAGE: Existing workflow-context tests continue to pass
|
|
191
|
-
|
|
192
|
-
Task 3: OPTIONAL - Manual Verification
|
|
193
|
-
- CREATE: Test workflow that fails in a step
|
|
194
|
-
- VERIFY: Error event contains actual state (not empty object)
|
|
195
|
-
- VERIFY: Error event contains actual logs (not empty array)
|
|
196
|
-
- PATTERN: Follow test pattern from src/__tests__/unit/workflow.test.ts lines 82-130
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Implementation Patterns & Key Details
|
|
200
|
-
|
|
201
|
-
```typescript
|
|
202
|
-
// CURRENT CODE (Lines 155-164)
|
|
203
|
-
this.workflow.emitEvent({
|
|
204
|
-
type: 'error',
|
|
205
|
-
node: stepNode,
|
|
206
|
-
error: {
|
|
207
|
-
message: error instanceof Error ? error.message : 'Unknown error',
|
|
208
|
-
original: error,
|
|
209
|
-
workflowId: this.workflowId,
|
|
210
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
211
|
-
state: {}, // <- BUG: Empty state
|
|
212
|
-
logs: [], // <- BUG: Empty logs
|
|
213
|
-
},
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
// TARGET CODE
|
|
217
|
-
this.workflow.emitEvent({
|
|
218
|
-
type: 'error',
|
|
219
|
-
node: stepNode,
|
|
220
|
-
error: {
|
|
221
|
-
message: error instanceof Error ? error.message : 'Unknown error',
|
|
222
|
-
original: error,
|
|
223
|
-
workflowId: this.workflowId,
|
|
224
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
225
|
-
state: getObservedState(this.workflow), // <- FIX: Capture actual state
|
|
226
|
-
logs: [...this.workflow.node.logs] as LogEntry[], // <- FIX: Capture actual logs
|
|
227
|
-
},
|
|
228
|
-
});
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### Integration Points
|
|
232
|
-
|
|
233
|
-
```yaml
|
|
234
|
-
NO NEW INTEGRATIONS:
|
|
235
|
-
- This is a pure bug fix with no new dependencies
|
|
236
|
-
- Uses existing getObservedState import (added in P1.M1.T2.S1)
|
|
237
|
-
- Uses existing WorkflowLike and WorkflowNode interfaces
|
|
238
|
-
- Uses existing LogEntry type
|
|
239
|
-
|
|
240
|
-
CONSISTENCY WITH EXISTING CODE:
|
|
241
|
-
- Pattern follows src/core/workflow.ts lines 286-297 (completed P1.M1.T1.S2/S3)
|
|
242
|
-
- Same type assertion pattern: `as LogEntry[]`
|
|
243
|
-
- Same spread operator pattern: `[...]`
|
|
244
|
-
- Same getObservedState usage pattern (with different context object)
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
## Validation Loop
|
|
248
|
-
|
|
249
|
-
### Level 1: Syntax & Style (Immediate Feedback)
|
|
250
|
-
|
|
251
|
-
```bash
|
|
252
|
-
# Run TypeScript compilation check
|
|
253
|
-
npm run build
|
|
254
|
-
|
|
255
|
-
# Run linter (if configured)
|
|
256
|
-
npm run lint
|
|
257
|
-
|
|
258
|
-
# Expected: Zero compilation errors, zero linting errors
|
|
259
|
-
# If errors exist, READ output and fix before proceeding
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Level 2: Unit Tests (Component Validation)
|
|
263
|
-
|
|
264
|
-
```bash
|
|
265
|
-
# Run all tests
|
|
266
|
-
npm test
|
|
267
|
-
|
|
268
|
-
# Run specific test file for workflow context
|
|
269
|
-
npx vitest run src/__tests__/unit/context.test.ts
|
|
270
|
-
|
|
271
|
-
# Run with verbose output for debugging
|
|
272
|
-
npm test -- --reporter=verbose
|
|
273
|
-
|
|
274
|
-
# Expected: All tests pass. The test from P1.M1.T1.S4 validates error state capture
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
### Level 3: Integration Testing (System Validation)
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
# The existing test at src/__tests__/unit/workflow.test.ts lines 82-130
|
|
281
|
-
# validates functional workflow error state capture.
|
|
282
|
-
# After this fix, the step() error handler should behave similarly.
|
|
283
|
-
|
|
284
|
-
# Run integration tests
|
|
285
|
-
npm test -- src/__tests__/integration/
|
|
286
|
-
|
|
287
|
-
# Expected: All integration tests pass, error events contain state/logs
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
### Level 4: Manual Verification (Optional)
|
|
291
|
-
|
|
292
|
-
```typescript
|
|
293
|
-
// Create a test script to verify the fix:
|
|
294
|
-
import { Workflow } from './src/index.js';
|
|
295
|
-
|
|
296
|
-
const workflow = new Workflow<void>(
|
|
297
|
-
{ name: 'TestErrorHandler' },
|
|
298
|
-
async (ctx) => {
|
|
299
|
-
await ctx.step('failing-step', async () => {
|
|
300
|
-
throw new Error('Test error');
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
);
|
|
304
|
-
|
|
305
|
-
const events = [];
|
|
306
|
-
workflow.addObserver({
|
|
307
|
-
onLog: () => {},
|
|
308
|
-
onEvent: (event) => events.push(event),
|
|
309
|
-
onStateUpdated: () => {},
|
|
310
|
-
onTreeChanged: () => {},
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
await workflow.run().catch(() => {});
|
|
314
|
-
|
|
315
|
-
const errorEvent = events.find(e => e.type === 'error');
|
|
316
|
-
console.log('State:', errorEvent.error.state); // Should NOT be empty
|
|
317
|
-
console.log('Logs:', errorEvent.error.logs); // Should NOT be empty
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
## Final Validation Checklist
|
|
321
|
-
|
|
322
|
-
### Technical Validation
|
|
323
|
-
|
|
324
|
-
- [ ] Line 161 modified: `state: getObservedState(this.workflow)`
|
|
325
|
-
- [ ] Line 162 modified: `logs: [...this.workflow.node.logs] as LogEntry[]`
|
|
326
|
-
- [ ] No duplicate import statement added (already exists from P1.M1.T2.S1)
|
|
327
|
-
- [ ] TypeScript compilation succeeds: `npm run build`
|
|
328
|
-
- [ ] All tests pass: `npm test`
|
|
329
|
-
- [ ] No new linting errors
|
|
330
|
-
|
|
331
|
-
### Feature Validation
|
|
332
|
-
|
|
333
|
-
- [ ] Error handler captures actual state from workflow
|
|
334
|
-
- [ ] Error handler captures actual logs from workflow node
|
|
335
|
-
- [ ] Pattern matches the completed fix in workflow.ts (lines 286-297)
|
|
336
|
-
- [ ] Type assertion `as LogEntry[]` is present
|
|
337
|
-
- [ ] Spread operator `[...]` creates shallow copy of logs
|
|
338
|
-
|
|
339
|
-
### Code Quality Validation
|
|
340
|
-
|
|
341
|
-
- [ ] Follows existing codebase patterns for error handling
|
|
342
|
-
- [ ] Maintains consistency with P1.M1.T1.S2/S3 fix pattern
|
|
343
|
-
- [ ] No modifications to other parts of the file
|
|
344
|
-
- [ ] No modifications to test files (tests will be added in P1.M1.T2.S4)
|
|
345
|
-
|
|
346
|
-
### Documentation & Deployment
|
|
347
|
-
|
|
348
|
-
- [ ] Code is self-documenting with clear variable references
|
|
349
|
-
- [ ] No new environment variables or configuration needed
|
|
350
|
-
- [ ] No breaking changes to public API
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
## Anti-Patterns to Avoid
|
|
355
|
-
|
|
356
|
-
- ❌ Don't add `getObservedState` import again (already exists from P1.M1.T2.S1 at line 29)
|
|
357
|
-
- ❌ Don't use `this` for getObservedState (must use `this.workflow`)
|
|
358
|
-
- ❌ Don't capture logs from `this.node` (must use `this.workflow.node.logs`)
|
|
359
|
-
- ❌ Don't omit the `as LogEntry[]` type assertion
|
|
360
|
-
- ❌ Don't omit the spread operator `[...]` for logs
|
|
361
|
-
- ❌ Don't modify any other parts of the error handler
|
|
362
|
-
- ❌ Don't add tests in this subtask (tests will be added in P1.M1.T2.S4)
|
|
363
|
-
- ❌ Don't modify the second error handler in replaceLastPromptResult() (that's P1.M1.T2.S3)
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
|
|
367
|
-
## Success Metrics
|
|
368
|
-
|
|
369
|
-
**Confidence Score**: 10/10 for one-pass implementation success
|
|
370
|
-
|
|
371
|
-
**Reasoning**:
|
|
372
|
-
1. The fix is a simple 2-line change following an established pattern
|
|
373
|
-
2. All dependencies are already in place (getObservedState import from P1.M1.T2.S1)
|
|
374
|
-
3. The pattern to follow is well-documented in workflow.ts (completed fix)
|
|
375
|
-
4. Clear line numbers and exact replacement targets provided
|
|
376
|
-
5. No new dependencies or complex logic introduced
|
|
377
|
-
|
|
378
|
-
**Validation**: The completed PRP enables an AI agent unfamiliar with the codebase to implement this fix successfully using only the PRP content and codebase access.
|