groundswell 0.0.1 → 0.0.2

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.
Files changed (242) hide show
  1. package/.claude/commands/subtask-planning/prp-base-create.md +120 -0
  2. package/.claude/commands/subtask-planning/prp-base-execute.md +65 -0
  3. package/.claude/commands/task-breakdown.md +94 -0
  4. package/.claude/system_prompts/task-breakdown.md +1 -0
  5. package/CHANGELOG.md +188 -0
  6. package/PRD.md +543 -0
  7. package/README.md +99 -5
  8. package/examples/README.md +15 -1
  9. package/examples/examples/11-reparenting-workflows.ts +269 -0
  10. package/examples/index.ts +4 -0
  11. package/package-lock.json +2398 -0
  12. package/package.json +3 -1
  13. package/plan/001_d3bb02af4886/TEST_RESULTS.md +259 -0
  14. package/plan/001_d3bb02af4886/bug_fix_tasks.json +484 -0
  15. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +488 -0
  16. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +581 -0
  17. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +687 -0
  18. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +492 -0
  19. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +932 -0
  20. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +1109 -0
  21. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +802 -0
  22. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +603 -0
  23. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +564 -0
  24. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +518 -0
  25. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +1252 -0
  26. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +364 -0
  27. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +114 -0
  28. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +205 -0
  29. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +199 -0
  30. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +134 -0
  31. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +495 -0
  32. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +435 -0
  33. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +506 -0
  34. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +612 -0
  35. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +558 -0
  36. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +788 -0
  37. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +460 -0
  38. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +454 -0
  39. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +520 -0
  40. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +417 -0
  41. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +760 -0
  42. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +245 -0
  43. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +792 -0
  44. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +535 -0
  45. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +190 -0
  46. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +654 -0
  47. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +227 -0
  48. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +345 -0
  49. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +193 -0
  50. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +1323 -0
  51. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +1011 -0
  52. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +927 -0
  53. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +505 -0
  54. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +401 -0
  55. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +142 -0
  56. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +112 -0
  57. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +159 -0
  58. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +549 -0
  59. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +368 -0
  60. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +172 -0
  61. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +175 -0
  62. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +696 -0
  63. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +860 -0
  64. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +1066 -0
  65. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +1103 -0
  66. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +789 -0
  67. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +1098 -0
  68. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +1037 -0
  69. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +916 -0
  70. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +1045 -0
  71. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +890 -0
  72. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +822 -0
  73. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +668 -0
  74. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +706 -0
  75. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +265 -0
  76. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +655 -0
  77. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +1103 -0
  78. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +426 -0
  79. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +506 -0
  80. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +114 -0
  81. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +316 -0
  82. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +754 -0
  83. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +612 -0
  84. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +719 -0
  85. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +215 -0
  86. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +765 -0
  87. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +718 -0
  88. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +149 -0
  89. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +470 -0
  90. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +332 -0
  91. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +167 -0
  92. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +265 -0
  93. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +273 -0
  94. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +760 -0
  95. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +434 -0
  96. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +717 -0
  97. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +472 -0
  98. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +125 -0
  99. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +301 -0
  100. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +1170 -0
  101. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +940 -0
  102. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +151 -0
  103. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +650 -0
  104. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +259 -0
  105. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +457 -0
  106. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +346 -0
  107. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +311 -0
  108. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +1565 -0
  109. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +288 -0
  110. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +741 -0
  111. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +652 -0
  112. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +527 -0
  113. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +415 -0
  114. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +378 -0
  115. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +713 -0
  116. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +370 -0
  117. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +499 -0
  118. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +230 -0
  119. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +1134 -0
  120. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +179 -0
  121. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +629 -0
  122. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +214 -0
  123. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +629 -0
  124. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +529 -0
  125. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +142 -0
  126. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +304 -0
  127. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +558 -0
  128. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +256 -0
  129. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +346 -0
  130. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +415 -0
  131. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +489 -0
  132. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +218 -0
  133. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +380 -0
  134. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +1923 -0
  135. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +319 -0
  136. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +115 -0
  137. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +134 -0
  138. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +153 -0
  139. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +132 -0
  140. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +716 -0
  141. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +186 -0
  142. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +604 -0
  143. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +213 -0
  144. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +30 -0
  145. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +56 -0
  146. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +53 -0
  147. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +49 -0
  148. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +958 -0
  149. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +339 -0
  150. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +305 -0
  151. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +433 -0
  152. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +1574 -0
  153. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +1014 -0
  154. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +376 -0
  155. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +1507 -0
  156. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +949 -0
  157. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +619 -0
  158. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +723 -0
  159. package/plan/{research → 001_d3bb02af4886/docs/research/general}/introspection-security-guide.md +56 -0
  160. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +460 -0
  161. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +324 -0
  162. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +175 -0
  163. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +499 -0
  164. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +163 -0
  165. package/plan/bugfix/BUG_FIX_SUMMARY.md +961 -0
  166. package/src/__tests__/adversarial/attachChild-performance.test.ts +216 -0
  167. package/src/__tests__/adversarial/circular-reference.test.ts +101 -0
  168. package/src/__tests__/adversarial/complex-circular-reference.test.ts +139 -0
  169. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +571 -0
  170. package/src/__tests__/adversarial/deep-analysis.test.ts +729 -0
  171. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +213 -0
  172. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +448 -0
  173. package/src/__tests__/adversarial/edge-case.test.ts +703 -0
  174. package/src/__tests__/adversarial/error-merge-strategy.test.ts +760 -0
  175. package/src/__tests__/adversarial/incremental-performance.test.ts +140 -0
  176. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +457 -0
  177. package/src/__tests__/adversarial/observer-propagation.test.ts +487 -0
  178. package/src/__tests__/adversarial/parent-validation.test.ts +143 -0
  179. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +611 -0
  180. package/src/__tests__/adversarial/prd-compliance.test.ts +731 -0
  181. package/src/__tests__/compatibility/backward-compatibility.test.ts +1572 -0
  182. package/src/__tests__/helpers/index.ts +18 -0
  183. package/src/__tests__/helpers/tree-verification.ts +257 -0
  184. package/src/__tests__/integration/bidirectional-consistency.test.ts +847 -0
  185. package/src/__tests__/integration/observer-logging.test.ts +643 -0
  186. package/src/__tests__/integration/tree-mirroring.test.ts +37 -0
  187. package/src/__tests__/integration/workflow-reparenting.test.ts +303 -0
  188. package/src/__tests__/unit/context.test.ts +79 -0
  189. package/src/__tests__/unit/logger.test.ts +293 -0
  190. package/src/__tests__/unit/observable.test.ts +321 -0
  191. package/src/__tests__/unit/tree-debugger-incremental.test.ts +170 -0
  192. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +209 -0
  193. package/src/__tests__/unit/workflow-detachChild.test.ts +100 -0
  194. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +153 -0
  195. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +180 -0
  196. package/src/__tests__/unit/workflow.test.ts +277 -1
  197. package/src/core/agent.ts +21 -1
  198. package/src/core/logger.ts +27 -2
  199. package/src/core/workflow-context.ts +6 -4
  200. package/src/core/workflow.ts +252 -14
  201. package/src/debugger/tree-debugger.ts +52 -7
  202. package/src/decorators/task.ts +65 -2
  203. package/src/index.ts +4 -2
  204. package/src/types/decorators.ts +8 -1
  205. package/src/types/events.ts +1 -0
  206. package/src/utils/index.ts +1 -0
  207. package/src/utils/observable.ts +32 -3
  208. package/src/utils/workflow-error-utils.ts +56 -0
  209. package/tsconfig.json +1 -1
  210. package/llms_full.txt +0 -5890
  211. package/tasks.json +0 -0
  212. /package/plan/{backlog.json → 001_d3bb02af4886/backlog.json} +0 -0
  213. /package/plan/{P1P2/PRP.md → 001_d3bb02af4886/docs/PRP/P1P2-PRP.md} +0 -0
  214. /package/plan/{P3P4/PRP.md → 001_d3bb02af4886/docs/PRP/P3P4-PRP.md} +0 -0
  215. /package/plan/{P4P5/PRP.md → 001_d3bb02af4886/docs/PRP/P4P5-PRP.md} +0 -0
  216. /package/plan/{architecture → 001_d3bb02af4886/docs/architecture}/external_deps.md +0 -0
  217. /package/plan/{architecture → 001_d3bb02af4886/docs/architecture}/system_context.md +0 -0
  218. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_BEST_PRACTICES.md +0 -0
  219. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_CODE_PATTERNS.md +0 -0
  220. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_INTEGRATION_GUIDE.md +0 -0
  221. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_RESEARCH_INDEX.md +0 -0
  222. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/REFLECTION_INDEX.md +0 -0
  223. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/REFLECTION_RESEARCH_REPORT.md +0 -0
  224. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/RESEARCH_SUMMARY.md +0 -0
  225. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/anthropic-sdk.md +0 -0
  226. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/async-local-storage.md +0 -0
  227. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-code-patterns.md +0 -0
  228. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-decision-matrix.md +0 -0
  229. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-implementation-guide.md +0 -0
  230. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-integration-guide.md +0 -0
  231. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-patterns.md +0 -0
  232. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-quick-reference.md +0 -0
  233. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/zod-schema.md +0 -0
  234. /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/caching-lru.md +0 -0
  235. /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/introspection-tools.md +0 -0
  236. /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/reflection-patterns.md +0 -0
  237. /package/plan/{P4P5/research → 001_d3bb02af4886/docs/research/P4P5}/RESEARCH_SUMMARY.md +0 -0
  238. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/INTROSPECTION_RESEARCH_SUMMARY.md +0 -0
  239. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/README-INTROSPECTION.md +0 -0
  240. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/agent-introspection-patterns.md +0 -0
  241. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/introspection-tool-examples.md +0 -0
  242. /package/{PRPs/PRDs/001-hierarchical-workflow-engine.md → plan/001_d3bb02af4886/prd_snapshot.md} +0 -0
@@ -0,0 +1,378 @@
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.