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
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
import { Observable } from '../utils/observable.js';
|
|
2
|
+
import { writeFile, readFile } from 'fs/promises';
|
|
3
|
+
import { WorkflowEventReplayer } from './event-replayer.js';
|
|
4
|
+
/**
|
|
5
|
+
* Status symbols for tree visualization
|
|
6
|
+
*/
|
|
7
|
+
const STATUS_SYMBOLS = {
|
|
8
|
+
idle: '○',
|
|
9
|
+
running: '◐',
|
|
10
|
+
completed: '✓',
|
|
11
|
+
failed: '✗',
|
|
12
|
+
cancelled: '⊘',
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Tree debugger for real-time workflow visualization
|
|
16
|
+
* Implements WorkflowObserver to receive all events
|
|
17
|
+
*/
|
|
18
|
+
export class WorkflowTreeDebugger {
|
|
19
|
+
/** Root node of the workflow tree */
|
|
20
|
+
root;
|
|
21
|
+
/** Observable stream of workflow events */
|
|
22
|
+
events;
|
|
23
|
+
/** Node lookup map for quick access */
|
|
24
|
+
nodeMap = new Map();
|
|
25
|
+
/** Event history for persistence (only when persistEvents is true) */
|
|
26
|
+
eventHistory = [];
|
|
27
|
+
/** Whether to persist events to memory */
|
|
28
|
+
persistEvents = false;
|
|
29
|
+
/** Maximum event history size (optional, for memory management) */
|
|
30
|
+
maxEventHistorySize;
|
|
31
|
+
/**
|
|
32
|
+
* Create a tree debugger attached to a workflow
|
|
33
|
+
* @param workflow The root workflow to debug
|
|
34
|
+
* @param options Configuration options
|
|
35
|
+
* @param options.persistEvents Whether to accumulate event history (default: false)
|
|
36
|
+
* @param options.maxEventHistorySize Maximum number of events to keep (optional, FIFO eviction)
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // Without persistence (default)
|
|
41
|
+
* const debugger = new WorkflowTreeDebugger(workflow);
|
|
42
|
+
*
|
|
43
|
+
* // With persistence enabled
|
|
44
|
+
* const debugger = new WorkflowTreeDebugger(workflow, { persistEvents: true });
|
|
45
|
+
*
|
|
46
|
+
* // With persistence and size limit
|
|
47
|
+
* const debugger = new WorkflowTreeDebugger(workflow, {
|
|
48
|
+
* persistEvents: true,
|
|
49
|
+
* maxEventHistorySize: 10000,
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
constructor(workflow, options) {
|
|
54
|
+
this.root = workflow.getNode();
|
|
55
|
+
this.events = new Observable();
|
|
56
|
+
// Extract options with defaults
|
|
57
|
+
this.persistEvents = options?.persistEvents ?? false;
|
|
58
|
+
this.maxEventHistorySize = options?.maxEventHistorySize;
|
|
59
|
+
// Initialize event history if persistence enabled
|
|
60
|
+
if (this.persistEvents) {
|
|
61
|
+
this.eventHistory = [];
|
|
62
|
+
}
|
|
63
|
+
// Build initial node map
|
|
64
|
+
this.buildNodeMap(this.root);
|
|
65
|
+
// Register as observer on the workflow
|
|
66
|
+
workflow.addObserver(this);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Build node lookup map recursively
|
|
70
|
+
*/
|
|
71
|
+
buildNodeMap(node) {
|
|
72
|
+
this.nodeMap.set(node.id, node);
|
|
73
|
+
for (const child of node.children) {
|
|
74
|
+
this.buildNodeMap(child);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Remove entire subtree from node map using BFS traversal
|
|
79
|
+
* O(k) complexity where k = number of nodes in subtree
|
|
80
|
+
* Uses iterative BFS to avoid stack overflow on deep trees
|
|
81
|
+
*/
|
|
82
|
+
removeSubtreeNodes(nodeId) {
|
|
83
|
+
const node = this.nodeMap.get(nodeId);
|
|
84
|
+
if (!node)
|
|
85
|
+
return; // Already removed or never existed
|
|
86
|
+
// BFS traversal to collect all descendant IDs
|
|
87
|
+
const toRemove = [];
|
|
88
|
+
const queue = [node];
|
|
89
|
+
while (queue.length > 0) {
|
|
90
|
+
const current = queue.shift();
|
|
91
|
+
toRemove.push(current.id);
|
|
92
|
+
// Add children to queue for BFS traversal
|
|
93
|
+
queue.push(...current.children);
|
|
94
|
+
}
|
|
95
|
+
// Batch delete all collected keys (atomic update)
|
|
96
|
+
for (const id of toRemove) {
|
|
97
|
+
this.nodeMap.delete(id);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// WorkflowObserver implementation
|
|
101
|
+
onLog(_entry) {
|
|
102
|
+
// Events are forwarded through the event stream
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Handle workflow events from observer interface
|
|
106
|
+
* Captures events for history if persistence enabled, handles structural updates, forwards to stream
|
|
107
|
+
*
|
|
108
|
+
* @param event - The workflow event to handle
|
|
109
|
+
*/
|
|
110
|
+
onEvent(event) {
|
|
111
|
+
// Capture event for history if persistence enabled
|
|
112
|
+
if (this.persistEvents) {
|
|
113
|
+
// Handle max size limit (FIFO eviction)
|
|
114
|
+
if (this.maxEventHistorySize &&
|
|
115
|
+
this.eventHistory.length >= this.maxEventHistorySize) {
|
|
116
|
+
this.eventHistory.shift(); // Remove oldest event
|
|
117
|
+
}
|
|
118
|
+
this.eventHistory.push(event);
|
|
119
|
+
}
|
|
120
|
+
// Handle structural events with incremental updates
|
|
121
|
+
switch (event.type) {
|
|
122
|
+
case 'childAttached':
|
|
123
|
+
// Keep existing logic - already optimal O(k)
|
|
124
|
+
this.buildNodeMap(event.child);
|
|
125
|
+
break;
|
|
126
|
+
case 'childDetached':
|
|
127
|
+
// NEW: Incremental subtree removal
|
|
128
|
+
this.removeSubtreeNodes(event.childId);
|
|
129
|
+
break;
|
|
130
|
+
case 'treeUpdated':
|
|
131
|
+
// NEW: Update root reference only
|
|
132
|
+
this.root = event.root;
|
|
133
|
+
break;
|
|
134
|
+
default:
|
|
135
|
+
// Non-structural events - no map update needed
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
// Always forward to event stream (existing behavior)
|
|
139
|
+
this.events.next(event);
|
|
140
|
+
}
|
|
141
|
+
onStateUpdated(_node) {
|
|
142
|
+
// State updates are available through the node
|
|
143
|
+
}
|
|
144
|
+
onTreeChanged(root) {
|
|
145
|
+
// All tree changes now handled incrementally in onEvent()
|
|
146
|
+
// Just update root reference if different
|
|
147
|
+
if (this.root !== root) {
|
|
148
|
+
this.root = root;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Public API
|
|
152
|
+
/**
|
|
153
|
+
* Get the current tree root
|
|
154
|
+
*/
|
|
155
|
+
getTree() {
|
|
156
|
+
return this.root;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get a node by ID
|
|
160
|
+
*/
|
|
161
|
+
getNode(id) {
|
|
162
|
+
return this.nodeMap.get(id);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Render tree as ASCII string
|
|
166
|
+
* @param node Starting node (defaults to root)
|
|
167
|
+
*/
|
|
168
|
+
toTreeString(node) {
|
|
169
|
+
return this.renderTree(node ?? this.root, '', true, true);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Recursive tree rendering
|
|
173
|
+
*/
|
|
174
|
+
renderTree(node, prefix, isLast, isRoot) {
|
|
175
|
+
let result = '';
|
|
176
|
+
// Status symbol and color indicator
|
|
177
|
+
const statusSymbol = STATUS_SYMBOLS[node.status] || '?';
|
|
178
|
+
const nodeInfo = `${statusSymbol} ${node.name} [${node.status}]`;
|
|
179
|
+
if (isRoot) {
|
|
180
|
+
result += nodeInfo + '\n';
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
184
|
+
result += prefix + connector + nodeInfo + '\n';
|
|
185
|
+
}
|
|
186
|
+
// Render children
|
|
187
|
+
const childCount = node.children.length;
|
|
188
|
+
node.children.forEach((child, index) => {
|
|
189
|
+
const isLastChild = index === childCount - 1;
|
|
190
|
+
const childPrefix = isRoot ? '' : prefix + (isLast ? ' ' : '│ ');
|
|
191
|
+
result += this.renderTree(child, childPrefix, isLastChild, false);
|
|
192
|
+
});
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Render logs as formatted string
|
|
197
|
+
* @param node Starting node (defaults to root, includes descendants)
|
|
198
|
+
*/
|
|
199
|
+
toLogString(node) {
|
|
200
|
+
const logs = this.collectLogs(node ?? this.root);
|
|
201
|
+
// Sort by timestamp
|
|
202
|
+
logs.sort((a, b) => a.timestamp - b.timestamp);
|
|
203
|
+
return logs
|
|
204
|
+
.map((log) => {
|
|
205
|
+
const time = new Date(log.timestamp).toISOString();
|
|
206
|
+
const level = log.level.toUpperCase().padEnd(5);
|
|
207
|
+
const nodeRef = this.nodeMap.get(log.workflowId);
|
|
208
|
+
const nodeName = nodeRef?.name ?? log.workflowId;
|
|
209
|
+
return `[${time}] ${level} [${nodeName}] ${log.message}`;
|
|
210
|
+
})
|
|
211
|
+
.join('\n');
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Collect all logs from a node and its descendants
|
|
215
|
+
*/
|
|
216
|
+
collectLogs(node) {
|
|
217
|
+
const logs = [...node.logs];
|
|
218
|
+
for (const child of node.children) {
|
|
219
|
+
logs.push(...this.collectLogs(child));
|
|
220
|
+
}
|
|
221
|
+
return logs;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get summary statistics for the tree
|
|
225
|
+
*/
|
|
226
|
+
getStats() {
|
|
227
|
+
const stats = {
|
|
228
|
+
totalNodes: 0,
|
|
229
|
+
byStatus: {},
|
|
230
|
+
totalLogs: 0,
|
|
231
|
+
totalEvents: 0,
|
|
232
|
+
};
|
|
233
|
+
this.collectStats(this.root, stats);
|
|
234
|
+
return stats;
|
|
235
|
+
}
|
|
236
|
+
collectStats(node, stats) {
|
|
237
|
+
stats.totalNodes++;
|
|
238
|
+
stats.byStatus[node.status] = (stats.byStatus[node.status] || 0) + 1;
|
|
239
|
+
stats.totalLogs += node.logs.length;
|
|
240
|
+
stats.totalEvents += node.events.length;
|
|
241
|
+
for (const child of node.children) {
|
|
242
|
+
this.collectStats(child, stats);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// ============================================================
|
|
246
|
+
// Event Persistence API
|
|
247
|
+
// ============================================================
|
|
248
|
+
/**
|
|
249
|
+
* Get the accumulated event history
|
|
250
|
+
* Returns a copy to prevent external modification
|
|
251
|
+
*
|
|
252
|
+
* @returns Copy of event history array, or empty array if persistence disabled
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```typescript
|
|
256
|
+
* const debugger = new WorkflowTreeDebugger(workflow, { persistEvents: true });
|
|
257
|
+
* await workflow.run();
|
|
258
|
+
* const events = debugger.getEventHistory();
|
|
259
|
+
* console.log(`Captured ${events.length} events`);
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
getEventHistory() {
|
|
263
|
+
if (!this.persistEvents) {
|
|
264
|
+
return [];
|
|
265
|
+
}
|
|
266
|
+
// Return copy to prevent external modification
|
|
267
|
+
return [...this.eventHistory];
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Serialize a WorkflowEvent to JSON-safe format
|
|
271
|
+
* Extracts only primitive fields to avoid circular references in WorkflowNode objects
|
|
272
|
+
*
|
|
273
|
+
* **Strategy:**
|
|
274
|
+
* - Extract nodeId and nodeName from WorkflowNode references
|
|
275
|
+
* - Skip WorkflowNode.parent, WorkflowNode.children (circular refs)
|
|
276
|
+
* - Skip WorkflowError.original (could be circular)
|
|
277
|
+
* - Add timestamp for chronological ordering
|
|
278
|
+
*
|
|
279
|
+
* **Circular Reference Handling:**
|
|
280
|
+
* - WorkflowNode has bidirectional links (parent ↔ children)
|
|
281
|
+
* - WorkflowNode.events[] contains WorkflowEvents that reference WorkflowNodes
|
|
282
|
+
* - JSON.stringify would throw TypeError without selective extraction
|
|
283
|
+
*
|
|
284
|
+
* @param event - The workflow event to serialize
|
|
285
|
+
* @returns JSON-safe object with primitive fields only
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* const event: WorkflowEvent = {
|
|
290
|
+
* type: 'stateSnapshot',
|
|
291
|
+
* node: { id: 'wf-123', name: 'MyWorkflow', ... }
|
|
292
|
+
* };
|
|
293
|
+
* const serialized = serializeEvent(event);
|
|
294
|
+
* // { type: 'stateSnapshot', timestamp: 1234567890, nodeId: 'wf-123', nodeName: 'MyWorkflow', stateSnapshot: {...} }
|
|
295
|
+
* ```
|
|
296
|
+
*/
|
|
297
|
+
serializeEvent(event) {
|
|
298
|
+
const timestamp = Date.now();
|
|
299
|
+
switch (event.type) {
|
|
300
|
+
// Core events
|
|
301
|
+
case 'childAttached':
|
|
302
|
+
return {
|
|
303
|
+
type: event.type,
|
|
304
|
+
timestamp,
|
|
305
|
+
parentId: event.parentId,
|
|
306
|
+
childId: event.child.id,
|
|
307
|
+
childName: event.child.name,
|
|
308
|
+
childStatus: event.child.status,
|
|
309
|
+
};
|
|
310
|
+
case 'childDetached':
|
|
311
|
+
return {
|
|
312
|
+
type: event.type,
|
|
313
|
+
timestamp,
|
|
314
|
+
parentId: event.parentId,
|
|
315
|
+
childId: event.childId,
|
|
316
|
+
};
|
|
317
|
+
case 'stateSnapshot':
|
|
318
|
+
return {
|
|
319
|
+
type: event.type,
|
|
320
|
+
timestamp,
|
|
321
|
+
nodeId: event.node.id,
|
|
322
|
+
nodeName: event.node.name,
|
|
323
|
+
stateSnapshot: event.node.stateSnapshot,
|
|
324
|
+
};
|
|
325
|
+
case 'stepStart':
|
|
326
|
+
return {
|
|
327
|
+
type: event.type,
|
|
328
|
+
timestamp,
|
|
329
|
+
nodeId: event.node.id,
|
|
330
|
+
nodeName: event.node.name,
|
|
331
|
+
step: event.step,
|
|
332
|
+
};
|
|
333
|
+
case 'stepEnd':
|
|
334
|
+
return {
|
|
335
|
+
type: event.type,
|
|
336
|
+
timestamp,
|
|
337
|
+
nodeId: event.node.id,
|
|
338
|
+
nodeName: event.node.name,
|
|
339
|
+
step: event.step,
|
|
340
|
+
duration: event.duration,
|
|
341
|
+
};
|
|
342
|
+
case 'error':
|
|
343
|
+
return {
|
|
344
|
+
type: event.type,
|
|
345
|
+
timestamp,
|
|
346
|
+
nodeId: event.node.id,
|
|
347
|
+
nodeName: event.node.name,
|
|
348
|
+
error: {
|
|
349
|
+
message: event.error.message,
|
|
350
|
+
workflowId: event.error.workflowId,
|
|
351
|
+
state: event.error.state,
|
|
352
|
+
logs: event.error.logs,
|
|
353
|
+
stack: event.error.stack,
|
|
354
|
+
// Skip 'original' field - could be circular
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
case 'taskStart':
|
|
358
|
+
case 'taskEnd':
|
|
359
|
+
return {
|
|
360
|
+
type: event.type,
|
|
361
|
+
timestamp,
|
|
362
|
+
nodeId: event.node.id,
|
|
363
|
+
nodeName: event.node.name,
|
|
364
|
+
task: event.task,
|
|
365
|
+
};
|
|
366
|
+
case 'treeUpdated':
|
|
367
|
+
return {
|
|
368
|
+
type: event.type,
|
|
369
|
+
timestamp,
|
|
370
|
+
rootId: event.root.id,
|
|
371
|
+
rootName: event.root.name,
|
|
372
|
+
};
|
|
373
|
+
// Agent/Prompt events
|
|
374
|
+
case 'agentPromptStart':
|
|
375
|
+
return {
|
|
376
|
+
type: event.type,
|
|
377
|
+
timestamp,
|
|
378
|
+
agentId: event.agentId,
|
|
379
|
+
agentName: event.agentName,
|
|
380
|
+
promptId: event.promptId,
|
|
381
|
+
nodeId: event.node.id,
|
|
382
|
+
nodeName: event.node.name,
|
|
383
|
+
};
|
|
384
|
+
case 'agentPromptEnd':
|
|
385
|
+
return {
|
|
386
|
+
type: event.type,
|
|
387
|
+
timestamp,
|
|
388
|
+
agentId: event.agentId,
|
|
389
|
+
agentName: event.agentName,
|
|
390
|
+
promptId: event.promptId,
|
|
391
|
+
nodeId: event.node.id,
|
|
392
|
+
nodeName: event.node.name,
|
|
393
|
+
duration: event.duration,
|
|
394
|
+
tokenUsage: event.tokenUsage,
|
|
395
|
+
};
|
|
396
|
+
// Tool events
|
|
397
|
+
case 'toolInvocation':
|
|
398
|
+
return {
|
|
399
|
+
type: event.type,
|
|
400
|
+
timestamp,
|
|
401
|
+
toolName: event.toolName,
|
|
402
|
+
input: event.input,
|
|
403
|
+
output: event.output,
|
|
404
|
+
duration: event.duration,
|
|
405
|
+
nodeId: event.node.id,
|
|
406
|
+
nodeName: event.node.name,
|
|
407
|
+
};
|
|
408
|
+
// MCP events
|
|
409
|
+
case 'mcpEvent':
|
|
410
|
+
return {
|
|
411
|
+
type: event.type,
|
|
412
|
+
timestamp,
|
|
413
|
+
serverName: event.serverName,
|
|
414
|
+
event: event.event,
|
|
415
|
+
payload: event.payload,
|
|
416
|
+
nodeId: event.node.id,
|
|
417
|
+
nodeName: event.node.name,
|
|
418
|
+
};
|
|
419
|
+
// Reflection events
|
|
420
|
+
case 'reflectionStart':
|
|
421
|
+
return {
|
|
422
|
+
type: event.type,
|
|
423
|
+
timestamp,
|
|
424
|
+
level: event.level,
|
|
425
|
+
nodeId: event.node.id,
|
|
426
|
+
nodeName: event.node.name,
|
|
427
|
+
};
|
|
428
|
+
case 'reflectionEnd':
|
|
429
|
+
return {
|
|
430
|
+
type: event.type,
|
|
431
|
+
timestamp,
|
|
432
|
+
level: event.level,
|
|
433
|
+
success: event.success,
|
|
434
|
+
nodeId: event.node.id,
|
|
435
|
+
nodeName: event.node.name,
|
|
436
|
+
};
|
|
437
|
+
// Cache events
|
|
438
|
+
case 'cacheHit':
|
|
439
|
+
case 'cacheMiss':
|
|
440
|
+
return {
|
|
441
|
+
type: event.type,
|
|
442
|
+
timestamp,
|
|
443
|
+
key: event.key,
|
|
444
|
+
nodeId: event.node.id,
|
|
445
|
+
nodeName: event.node.name,
|
|
446
|
+
};
|
|
447
|
+
default:
|
|
448
|
+
// Should not happen with TypeScript discriminated union
|
|
449
|
+
// But handle gracefully for unknown event types
|
|
450
|
+
return {
|
|
451
|
+
type: event.type,
|
|
452
|
+
timestamp,
|
|
453
|
+
rawData: JSON.stringify(event),
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Save event history to a JSON file
|
|
459
|
+
* Serializes events to avoid circular references and writes to disk
|
|
460
|
+
*
|
|
461
|
+
* **Serialization Strategy:**
|
|
462
|
+
* - Uses serializeEvent() to extract primitive fields only
|
|
463
|
+
* - Avoids circular references in WorkflowNode objects
|
|
464
|
+
* - Adds timestamp for chronological ordering
|
|
465
|
+
*
|
|
466
|
+
* **Error Handling:**
|
|
467
|
+
* - Throws descriptive errors for file system issues
|
|
468
|
+
* - Does not modify internal event history on failure
|
|
469
|
+
*
|
|
470
|
+
* @param path - File path to write event history
|
|
471
|
+
* @throws {Error} If file cannot be written (permission denied, disk full, etc.)
|
|
472
|
+
* @throws {Error} If event persistence is not enabled
|
|
473
|
+
*
|
|
474
|
+
* @example
|
|
475
|
+
* ```typescript
|
|
476
|
+
* const debugger = new WorkflowTreeDebugger(workflow, { persistEvents: true });
|
|
477
|
+
* await workflow.run();
|
|
478
|
+
* await debugger.saveEventHistory('./workflow-execution.json');
|
|
479
|
+
* ```
|
|
480
|
+
*/
|
|
481
|
+
async saveEventHistory(path) {
|
|
482
|
+
if (!this.persistEvents) {
|
|
483
|
+
throw new Error('Event persistence is not enabled. Initialize with { persistEvents: true }');
|
|
484
|
+
}
|
|
485
|
+
try {
|
|
486
|
+
// Serialize all events
|
|
487
|
+
const serialized = this.eventHistory.map((event) => this.serializeEvent(event));
|
|
488
|
+
// Convert to JSON string
|
|
489
|
+
const json = JSON.stringify(serialized, null, 2);
|
|
490
|
+
// Write to file
|
|
491
|
+
await writeFile(path, json, 'utf-8');
|
|
492
|
+
}
|
|
493
|
+
catch (error) {
|
|
494
|
+
const err = error;
|
|
495
|
+
// Enhance error messages with context
|
|
496
|
+
if (err.code === 'ENOENT') {
|
|
497
|
+
throw new Error(`Cannot save event history: Directory does not exist: ${path}`);
|
|
498
|
+
}
|
|
499
|
+
if (err.code === 'EACCES') {
|
|
500
|
+
throw new Error(`Cannot save event history: Permission denied: ${path}`);
|
|
501
|
+
}
|
|
502
|
+
if (err.code === 'ENOSPC') {
|
|
503
|
+
throw new Error(`Cannot save event history: No space left on device`);
|
|
504
|
+
}
|
|
505
|
+
// Re-throw with context
|
|
506
|
+
throw new Error(`Failed to save event history to ${path}: ${err.message}`);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Load event history from a JSON file
|
|
511
|
+
* Static method that can be called without instantiating WorkflowTreeDebugger
|
|
512
|
+
*
|
|
513
|
+
* **Error Handling:**
|
|
514
|
+
* - Throws descriptive errors for file system issues
|
|
515
|
+
* - Throws descriptive errors for invalid JSON
|
|
516
|
+
*
|
|
517
|
+
* @param path - File path to read event history from
|
|
518
|
+
* @returns Parsed event array (unknown[] - caller should validate structure)
|
|
519
|
+
* @throws {Error} If file does not exist
|
|
520
|
+
* @throws {Error} If file cannot be read (permission denied, etc.)
|
|
521
|
+
* @throws {Error} If file contains invalid JSON
|
|
522
|
+
*
|
|
523
|
+
* @example
|
|
524
|
+
* ```typescript
|
|
525
|
+
* const events = await WorkflowTreeDebugger.loadEventHistory('./workflow-execution.json');
|
|
526
|
+
*
|
|
527
|
+
* // Use with WorkflowEventReplayer
|
|
528
|
+
* const replayer = new WorkflowEventReplayer();
|
|
529
|
+
* const tree = replayer.replay(events as WorkflowEvent[]);
|
|
530
|
+
* ```
|
|
531
|
+
*/
|
|
532
|
+
static async loadEventHistory(path) {
|
|
533
|
+
try {
|
|
534
|
+
// Read file
|
|
535
|
+
const content = await readFile(path, 'utf-8');
|
|
536
|
+
// Parse JSON
|
|
537
|
+
const parsed = JSON.parse(content);
|
|
538
|
+
// Validate it's an array
|
|
539
|
+
if (!Array.isArray(parsed)) {
|
|
540
|
+
throw new Error(`Invalid event history file: Expected array, got ${typeof parsed}`);
|
|
541
|
+
}
|
|
542
|
+
return parsed;
|
|
543
|
+
}
|
|
544
|
+
catch (error) {
|
|
545
|
+
const err = error;
|
|
546
|
+
// Handle file not found
|
|
547
|
+
if (err.code === 'ENOENT') {
|
|
548
|
+
throw new Error(`Event history file not found: ${path}`);
|
|
549
|
+
}
|
|
550
|
+
// Handle permission denied
|
|
551
|
+
if (err.code === 'EACCES') {
|
|
552
|
+
throw new Error(`Permission denied reading file: ${path}`);
|
|
553
|
+
}
|
|
554
|
+
// Handle invalid JSON
|
|
555
|
+
if (err instanceof SyntaxError) {
|
|
556
|
+
throw new Error(`Invalid JSON in event history file: ${path}\n${err.message}`);
|
|
557
|
+
}
|
|
558
|
+
// Re-throw with context
|
|
559
|
+
throw new Error(`Failed to load event history from ${path}: ${err.message}`);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Replay workflow execution from saved event history file.
|
|
564
|
+
*
|
|
565
|
+
* This is a convenience method that combines loadEventHistory and
|
|
566
|
+
* WorkflowEventReplayer.replay() for one-call restoration of workflow trees.
|
|
567
|
+
*
|
|
568
|
+
* **Use Case**: Time-travel debugging - reconstruct workflow tree from saved events
|
|
569
|
+
* to inspect execution after completion without requiring the live workflow instance.
|
|
570
|
+
*
|
|
571
|
+
* **Workflow**:
|
|
572
|
+
* 1. Load events from file using loadEventHistory()
|
|
573
|
+
* 2. Create WorkflowEventReplayer instance
|
|
574
|
+
* 3. Replay events and return reconstructed tree
|
|
575
|
+
*
|
|
576
|
+
* **Error Handling**:
|
|
577
|
+
* - Throws descriptive errors for file operations (delegated to loadEventHistory)
|
|
578
|
+
* - Wraps replay errors with file path context
|
|
579
|
+
*
|
|
580
|
+
* **Returns**: Read-only WorkflowNode tree (no live workflow attached)
|
|
581
|
+
*
|
|
582
|
+
* @param path - File path to saved event history JSON file
|
|
583
|
+
* @returns Reconstructed workflow tree root node
|
|
584
|
+
* @throws {Error} If file cannot be read or parsed
|
|
585
|
+
* @throws {Error} If events cannot be replayed (empty events, no root established)
|
|
586
|
+
*
|
|
587
|
+
* @example
|
|
588
|
+
* ```typescript
|
|
589
|
+
* // Save event history during execution
|
|
590
|
+
* const debugger = new WorkflowTreeDebugger(workflow, { persistEvents: true });
|
|
591
|
+
* await workflow.run();
|
|
592
|
+
* await debugger.saveEventHistory('./workflow-events.json');
|
|
593
|
+
*
|
|
594
|
+
* // Later, replay the events to reconstruct the tree
|
|
595
|
+
* const tree = await WorkflowTreeDebugger.replay('./workflow-events.json');
|
|
596
|
+
* console.log(`Restored tree with ${tree.children.length} children`);
|
|
597
|
+
*
|
|
598
|
+
* // Use debugger instance to inspect the reconstructed tree
|
|
599
|
+
* const debugInstance = new WorkflowTreeDebugger({ getNode: () => tree });
|
|
600
|
+
* console.log(debugInstance.toTreeString(tree));
|
|
601
|
+
* console.log(debugInstance.getStats());
|
|
602
|
+
* ```
|
|
603
|
+
*/
|
|
604
|
+
static async replay(path) {
|
|
605
|
+
// Load events from file using existing static method
|
|
606
|
+
const events = await WorkflowTreeDebugger.loadEventHistory(path);
|
|
607
|
+
// Create replayer instance
|
|
608
|
+
const replayer = new WorkflowEventReplayer();
|
|
609
|
+
// Replay events with type assertion (loadEventHistory returns unknown[])
|
|
610
|
+
// GOTCHA: Wrap in try-catch to enhance error messages with file path context
|
|
611
|
+
try {
|
|
612
|
+
return replayer.replay(events);
|
|
613
|
+
}
|
|
614
|
+
catch (error) {
|
|
615
|
+
const err = error;
|
|
616
|
+
throw new Error(`Failed to replay events from ${path}: ${err.message}`);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
//# sourceMappingURL=tree-debugger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-debugger.js","sourceRoot":"","sources":["../../src/debugger/tree-debugger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|