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,435 @@
1
+ # Console.error Call Inventory
2
+
3
+ ## Executive Summary
4
+
5
+ - **Total console.error calls found**: 8
6
+ - **Observer-related**: 6 (to be replaced in P1.M3.T1.S2)
7
+ - **Other purpose**: 2 (validation errors to preserve)
8
+
9
+ ## Observer-Related Console.error Calls
10
+
11
+ ### 1. src/core/logger.ts:27
12
+
13
+ **Method**: `WorkflowLogger.emit()`
14
+
15
+ **Error Type**: Observer onLog callback error
16
+
17
+ **Context**: Emitting log entries to observers
18
+
19
+ ```typescript
20
+ private emit(entry: LogEntry): void {
21
+ this.node.logs.push(entry);
22
+ for (const obs of this.observers) {
23
+ try {
24
+ obs.onLog(entry);
25
+ } catch (err) {
26
+ console.error('Observer onLog error:', err);
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ **Categorization**: Observer-related - **REPLACE** in P1.M3.T1.S2
33
+
34
+ **Replacement Pattern**: `this.logger.error('Observer onLog error', { error: err })`
35
+
36
+ **Note**: WorkflowLogger class has access to its own emit() method, but this is a recursive case. The replacement should call `this.log('error', 'Observer onLog error', { error: err })` to use the internal logging mechanism without infinite recursion.
37
+
38
+ ---
39
+
40
+ ### 2. src/core/workflow.ts:376
41
+
42
+ **Method**: `Workflow.emitEvent()`
43
+
44
+ **Error Type**: Observer onEvent callback error
45
+
46
+ **Context**: Emitting workflow events to root observers
47
+
48
+ ```typescript
49
+ public emitEvent(event: WorkflowEvent): void {
50
+ this.node.events.push(event);
51
+
52
+ const observers = this.getRootObservers();
53
+ for (const obs of observers) {
54
+ try {
55
+ obs.onEvent(event);
56
+
57
+ // Also notify tree changed for tree update events
58
+ if (event.type === 'treeUpdated' || event.type === 'childAttached' || event.type === 'childDetached') {
59
+ obs.onTreeChanged(this.getRoot().node);
60
+ }
61
+ } catch (err) {
62
+ console.error('Observer onEvent error:', err);
63
+ }
64
+ }
65
+ }
66
+ ```
67
+
68
+ **Categorization**: Observer-related - **REPLACE** in P1.M3.T1.S2
69
+
70
+ **Replacement Pattern**: `this.logger.error('Observer onEvent error', { error: err, eventType: event.type })`
71
+
72
+ ---
73
+
74
+ ### 3. src/core/workflow.ts:394
75
+
76
+ **Method**: `Workflow.snapshotState()`
77
+
78
+ **Error Type**: Observer onStateUpdated callback error
79
+
80
+ **Context**: Notifying observers of state snapshot updates
81
+
82
+ ```typescript
83
+ public snapshotState(): void {
84
+ const snapshot = getObservedState(this);
85
+ this.node.stateSnapshot = snapshot;
86
+
87
+ // Notify observers
88
+ const observers = this.getRootObservers();
89
+ for (const obs of observers) {
90
+ try {
91
+ obs.onStateUpdated(this.node);
92
+ } catch (err) {
93
+ console.error('Observer onStateUpdated error:', err);
94
+ }
95
+ }
96
+
97
+ // Emit snapshot event
98
+ this.emitEvent({
99
+ type: 'stateSnapshot',
100
+ node: this.node,
101
+ });
102
+
103
+ // Emit treeUpdated event to trigger tree debugger rebuild
104
+ this.emitEvent({ type: 'treeUpdated', root: this.getRoot().node });
105
+ }
106
+ ```
107
+
108
+ **Categorization**: Observer-related - **REPLACE** in P1.M3.T1.S2
109
+
110
+ **Replacement Pattern**: `this.logger.error('Observer onStateUpdated error', { error: err, nodeId: this.node.id })`
111
+
112
+ ---
113
+
114
+ ### 4. src/utils/observable.ts:39
115
+
116
+ **Method**: `Observable.next()`
117
+
118
+ **Error Type**: Subscriber next callback error
119
+
120
+ **Context**: Emitting values to subscribers
121
+
122
+ ```typescript
123
+ next(value: T): void {
124
+ for (const subscriber of this.subscribers) {
125
+ try {
126
+ subscriber.next?.(value);
127
+ } catch (err) {
128
+ console.error('Observable subscriber error:', err);
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
134
+ **Categorization**: Observer-related - **REPLACE** in P1.M3.T1.S2
135
+
136
+ **Replacement Pattern**: Will need logger injection pattern (Observable class does not have WorkflowLogger access)
137
+
138
+ **Implementation Notes**:
139
+ - Observable<T> is a standalone utility class
140
+ - No access to WorkflowLogger
141
+ - Will need constructor injection or fallback pattern
142
+ - See Implementation Notes for P1.M3.T1.S2 section below
143
+
144
+ ---
145
+
146
+ ### 5. src/utils/observable.ts:52
147
+
148
+ **Method**: `Observable.error()`
149
+
150
+ **Error Type**: Subscriber error handler failure
151
+
152
+ **Context**: Signaling errors to subscribers
153
+
154
+ ```typescript
155
+ error(err: unknown): void {
156
+ for (const subscriber of this.subscribers) {
157
+ try {
158
+ subscriber.error?.(err);
159
+ } catch (e) {
160
+ console.error('Observable error handler failed:', e);
161
+ }
162
+ }
163
+ }
164
+ ```
165
+
166
+ **Categorization**: Observer-related - **REPLACE** in P1.M3.T1.S2
167
+
168
+ **Replacement Pattern**: Same logger injection pattern as observable.ts:39
169
+
170
+ ---
171
+
172
+ ### 6. src/utils/observable.ts:65
173
+
174
+ **Method**: `Observable.complete()`
175
+
176
+ **Error Type**: Subscriber complete callback failure
177
+
178
+ **Context**: Signaling completion to subscribers
179
+
180
+ ```typescript
181
+ complete(): void {
182
+ for (const subscriber of this.subscribers) {
183
+ try {
184
+ subscriber.complete?.();
185
+ } catch (err) {
186
+ console.error('Observable complete handler failed:', err);
187
+ }
188
+ }
189
+ this.subscribers.clear();
190
+ }
191
+ ```
192
+
193
+ **Categorization**: Observer-related - **REPLACE** in P1.M3.T1.S2
194
+
195
+ **Replacement Pattern**: Same logger injection pattern as observable.ts:39
196
+
197
+ ---
198
+
199
+ ## Other Purpose Console.error Calls
200
+
201
+ ### 1. src/core/workflow.ts:277
202
+
203
+ **Method**: `Workflow.attachChild()`
204
+
205
+ **Error Type**: Validation error - child already has parent
206
+
207
+ **Context**: Structural validation before throwing exception
208
+
209
+ ```typescript
210
+ // Check if child already has a different parent
211
+ if (child.parent !== null && child.parent !== this) {
212
+ const errorMessage =
213
+ `Child '${child.node.name}' already has a parent '${child.parent.node.name}'. ` +
214
+ `A workflow can only have one parent. ` +
215
+ `Use detachChild() on '${child.parent.node.name}' first if you need to reparent.`;
216
+ console.error(errorMessage);
217
+ throw new Error(errorMessage);
218
+ }
219
+ ```
220
+
221
+ **Categorization**: Other purpose - **DO NOT REPLACE**
222
+
223
+ **Rationale**: Validation error that immediately throws. The console.error provides immediate visibility before the stack trace. This is a structural invariant violation, not an observer callback error.
224
+
225
+ ---
226
+
227
+ ### 2. src/core/workflow.ts:286
228
+
229
+ **Method**: `Workflow.attachChild()`
230
+
231
+ **Error Type**: Validation error - circular reference detection
232
+
233
+ **Context**: Cycle detection before throwing exception
234
+
235
+ ```typescript
236
+ // Check if child is an ancestor (would create circular reference)
237
+ if (this.isDescendantOf(child)) {
238
+ const errorMessage =
239
+ `Cannot attach child '${child.node.name}' - it is an ancestor of '${this.node.name}'. ` +
240
+ `This would create a circular reference.`;
241
+ console.error(errorMessage);
242
+ throw new Error(errorMessage);
243
+ }
244
+ ```
245
+
246
+ **Categorization**: Other purpose - **DO NOT REPLACE**
247
+
248
+ **Rationale**: Validation error that immediately throws. The console.error provides immediate visibility before the stack trace. This is a structural invariant violation (circular reference), not an observer callback error.
249
+
250
+ ---
251
+
252
+ ## Replacement Recommendations
253
+
254
+ ### Observer-Related Calls (Replace with logger.error)
255
+
256
+ | File | Line | Observer Type | Current Call |
257
+ |------|------|---------------|--------------|
258
+ | src/core/logger.ts | 27 | WorkflowObserver.onLog | `console.error('Observer onLog error:', err)` |
259
+ | src/core/workflow.ts | 376 | WorkflowObserver.onEvent | `console.error('Observer onEvent error:', err)` |
260
+ | src/core/workflow.ts | 394 | WorkflowObserver.onStateUpdated | `console.error('Observer onStateUpdated error:', err)` |
261
+ | src/utils/observable.ts | 39 | Observer.next | `console.error('Observable subscriber error:', err)` |
262
+ | src/utils/observable.ts | 52 | Observer.error | `console.error('Observable error handler failed:', e)` |
263
+ | src/utils/observable.ts | 65 | Observer.complete | `console.error('Observable complete handler failed:', err)` |
264
+
265
+ ### Validation Errors (Preserve as console.error)
266
+
267
+ | File | Line | Purpose | Reason |
268
+ |------|------|---------|--------|
269
+ | src/core/workflow.ts | 277 | Child already has parent validation | Structural validation before throw |
270
+ | src/core/workflow.ts | 286 | Circular reference detection | Structural validation before throw |
271
+
272
+ ---
273
+
274
+ ## Implementation Notes for P1.M3.T1.S2
275
+
276
+ ### 1. Workflow Class Calls (Direct Access)
277
+
278
+ **Files**: src/core/workflow.ts:376, src/core/workflow.ts:394
279
+
280
+ - Workflow class has `this.logger` property available
281
+ - Use: `this.logger.error('Observer onEvent error', { error: err, eventType: event.type })`
282
+
283
+ ### 2. WorkflowLogger Recursive Case
284
+
285
+ **File**: src/core/logger.ts:27
286
+
287
+ - WorkflowLogger cannot call `this.log()` from within `emit()` as it would create recursion
288
+ - Recommended approach: Create a separate internal error logging path
289
+ - Options:
290
+ - Use `this.node.logs.push()` directly with error entry (bypass emit)
291
+ - Add a `private emitWithoutObserverNotification()` method
292
+ - Call `this.log()` with a flag to skip observer notification
293
+
294
+ ### 3. Observable Class Logger Injection Pattern
295
+
296
+ **Files**: src/utils/observable.ts:39, 52, 65
297
+
298
+ - Observable<T> is a standalone utility class with no WorkflowLogger access
299
+ - Recommended pattern: Constructor injection with optional fallback
300
+
301
+ ```typescript
302
+ // Recommended implementation for Observable class
303
+ export interface ObservableLogger {
304
+ error(message: string, data?: unknown): void;
305
+ }
306
+
307
+ export class Observable<T> {
308
+ private subscribers: Set<Observer<T>> = new Set();
309
+ private logger?: ObservableLogger;
310
+
311
+ constructor(logger?: ObservableLogger) {
312
+ this.logger = logger;
313
+ }
314
+
315
+ private logError(message: string, error: unknown): void {
316
+ if (this.logger) {
317
+ this.logger.error(message, { error });
318
+ } else {
319
+ // Fallback to console.error if no logger provided
320
+ console.error(message, error);
321
+ }
322
+ }
323
+
324
+ next(value: T): void {
325
+ for (const subscriber of this.subscribers) {
326
+ try {
327
+ subscriber.next?.(value);
328
+ } catch (err) {
329
+ this.logError('Observable subscriber error', err);
330
+ }
331
+ }
332
+ }
333
+
334
+ // Similar pattern for error() and complete() methods
335
+ }
336
+ ```
337
+
338
+ ### 4. Key Implementation Principles
339
+
340
+ 1. **Preserve error isolation**: Observer errors should never crash workflows
341
+ 2. **Add context**: Include error details, observer type, event type
342
+ 3. **Maintain backward compatibility**: Observable class should work without logger
343
+ 4. **Follow existing patterns**: Match WorkflowLogger.error() signature: `error(message: string, data?: unknown): void`
344
+
345
+ ### 5. Testing Considerations
346
+
347
+ After replacement in P1.M3.T1.S2:
348
+ - Verify observer errors are logged to WorkflowLogger (not console)
349
+ - Verify observer errors don't crash workflows (error isolation preserved)
350
+ - Verify log entries contain proper error context
351
+ - Verify Observable class works with and without logger injection
352
+ - Verify validation errors still use console.error (unchanged)
353
+
354
+ ---
355
+
356
+ ## Observer Interface Reference
357
+
358
+ ```typescript
359
+ // WorkflowObserver interface (src/types/observer.ts)
360
+ export interface WorkflowObserver {
361
+ onLog(entry: LogEntry): void; // Error at src/core/logger.ts:27
362
+ onEvent(event: WorkflowEvent): void; // Error at src/core/workflow.ts:376
363
+ onStateUpdated(node: WorkflowNode): void; // Error at src/core/workflow.ts:394
364
+ onTreeChanged(root: WorkflowNode): void; // No error handling (safe implementation)
365
+ }
366
+
367
+ // Observer interface for Observable class (src/utils/observable.ts)
368
+ export interface Observer<T> {
369
+ next?: (value: T) => void; // Error at src/utils/observable.ts:39
370
+ error?: (error: unknown) => void; // Error at src/utils/observable.ts:52
371
+ complete?: () => void; // Error at src/utils/observable.ts:65
372
+ }
373
+ ```
374
+
375
+ ---
376
+
377
+ ## Search Methodology
378
+
379
+ **Command Used**:
380
+ ```bash
381
+ grep -rn "console\.error" src/ --exclude-dir=__tests__
382
+ ```
383
+
384
+ **Excluded Files**:
385
+ - Test files in `src/__tests__/` directory
386
+ - Test assertions using `expect(console.error).toHaveBeenCalled()`
387
+ - Comments referencing console.error
388
+
389
+ **Production Code Files Analyzed**:
390
+ - src/core/logger.ts
391
+ - src/core/workflow.ts
392
+ - src/utils/observable.ts
393
+
394
+ ---
395
+
396
+ ## Validation Performed
397
+
398
+ ### Level 1: Search Completeness
399
+ - [x] Grep search for 'console.error' executed in src/ directory
400
+ - [x] Test files excluded from search results
401
+ - [x] 8 console.error calls found (matches expected)
402
+
403
+ ### Level 2: Categorization Accuracy
404
+ - [x] Observer calls identified (6 calls in try-catch around observer/subscriber callbacks)
405
+ - [x] Validation errors identified (2 calls before throw statements)
406
+ - [x] All categorizations match code context
407
+
408
+ ### Level 3: Document Quality
409
+ - [x] All console.error calls documented with file path and line number
410
+ - [x] Each call includes the containing method/function name
411
+ - [x] Categorization (observer-related vs other) is clearly stated
412
+ - [x] Code snippets show the surrounding context (try-catch, throw, etc.)
413
+ - [x] Replacement recommendations section provides clear guidance
414
+ - [x] Non-observer calls include rationale for preservation
415
+
416
+ ### Level 4: Handoff Readiness
417
+ - [x] All file references include exact paths and line numbers
418
+ - [x] Next task (P1.M3.T1.S2) can proceed with only this document
419
+ - [x] Implementation notes provide specific patterns for each context
420
+ - [x] Observable logger injection pattern documented
421
+ - [x] No additional research required for implementation
422
+
423
+ ---
424
+
425
+ ## Summary
426
+
427
+ This inventory provides complete information for P1.M3.T1.S2 to replace observer error console.error calls with logger.error(). The key findings are:
428
+
429
+ 1. **6 observer-related console.error calls** need replacement
430
+ 2. **2 validation error console.error calls** should be preserved
431
+ 3. **Workflow class calls** can directly use `this.logger.error()`
432
+ 4. **WorkflowLogger recursive case** needs special handling to avoid infinite recursion
433
+ 5. **Observable class** needs logger injection pattern with fallback
434
+
435
+ The next task (P1.M3.T1.S2) can proceed using only this document and the existing codebase.