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,415 @@
1
+ name: "P1.M1.T2.S1 - Verify getObservedState Import in workflow-context.ts"
2
+ description: |
3
+
4
+ ---
5
+
6
+ ## Goal
7
+
8
+ **Feature Goal**: Verify that `getObservedState` is properly imported in `src/core/workflow-context.ts` and available for use in the `step()` and `replaceLastPromptResult()` error handlers.
9
+
10
+ **Deliverable**: Verified import statement at the top of `src/core/workflow-context.ts` enabling error state capture in WorkflowContext methods.
11
+
12
+ **Success Definition**: The `getObservedState` function is imported from `'../decorators/observed-state.js'` and available for use in error catch blocks to capture workflow state when errors occur in WorkflowContext operations.
13
+
14
+ ## User Persona (if applicable)
15
+
16
+ **Target User**: Developer maintaining the workflow system.
17
+
18
+ **Use Case**: When a WorkflowContext operation (step execution or prompt result replacement) throws an error, the error handlers need to capture the actual observed state of the workflow for debugging and introspection.
19
+
20
+ **User Journey**: The import statement is a prerequisite for the error handlers in `step()` and `replaceLastPromptResult()` to call `getObservedState(this.workflow)` and include the state snapshot in the error event payload.
21
+
22
+ **Pain Points Addressed**: Without this import, the error handlers cannot capture actual workflow state, breaking error introspection capabilities required by PRD #001 Section 5.1.
23
+
24
+ ## Why
25
+
26
+ - **Critical for Error Introspection**: PRD #001 Section 5.1 requires error events to include actual workflow state, not empty objects
27
+ - **Enables Debugging**: Developers need to inspect workflow state at the point of failure to diagnose issues
28
+ - **Consistent Pattern**: Follows the established `getObservedState(this.workflow)` pattern used in WorkflowContext
29
+ - **Prerequisite for S2/S3**: This import is required before the state capture can be implemented in the error handlers
30
+
31
+ ## What
32
+
33
+ Add or verify the import statement for `getObservedState` at the top of `src/core/workflow-context.ts`. This is a pure import addition task - no code logic changes required.
34
+
35
+ ### Success Criteria
36
+
37
+ - [ ] Import statement exists in `src/core/workflow-context.ts` around line 30
38
+ - [ ] Import follows the pattern: `import { getObservedState } from '../decorators/observed-state.js';`
39
+ - [ ] Import is positioned after type imports and before other regular imports
40
+ - [ ] Function is available for use in `step()` catch block (around line 155-162)
41
+ - [ ] Function is available for use in `replaceLastPromptResult()` catch block (around line 319-326)
42
+
43
+ ## All Needed Context
44
+
45
+ ### Context Completeness Check
46
+
47
+ **"No Prior Knowledge" Test**: If someone knew nothing about this codebase, would they have everything needed to implement this successfully? YES - This PRP provides exact file location, import pattern, line context, and verification commands.
48
+
49
+ ### Documentation & References
50
+
51
+ ```yaml
52
+ # MUST READ - Include these in your context window
53
+ - url: https://www.typescriptlang.org/docs/handbook/modules/theory.html
54
+ why: Understanding ES6 import syntax and module resolution
55
+ critical: Use named imports with `import { name } from 'path.js'` - always include .js extension
56
+
57
+ - url: https://www.typescriptlang.org/docs/handbook/decorators.html
58
+ why: Understanding decorator pattern context for getObservedState usage
59
+ critical: Decorators are runtime values, not types - use regular import not import type
60
+
61
+ - file: src/core/workflow-context.ts
62
+ why: The target file requiring the import statement
63
+ pattern: Type imports (lines 8-21), then regular imports (lines 22-30)
64
+ gotcha: Always use .js extension in relative imports even in .ts files (ES2022 module system)
65
+
66
+ - file: src/core/workflow-context.ts:30
67
+ why: Exact line where getObservedState import should be placed
68
+ pattern: `import { getObservedState } from '../decorators/observed-state.js';`
69
+ gotcha: THIS IMPORT ALREADY EXISTS - this task is for verification only
70
+
71
+ - file: src/decorators/observed-state.ts
72
+ why: Source file defining getObservedState function
73
+ pattern: Named export `export function getObservedState(obj: object): SerializedWorkflowState`
74
+ gotcha: Returns empty object {} if no observed fields found (WeakMap-based storage)
75
+
76
+ - file: src/decorators/step.ts:145-165
77
+ why: Reference pattern for getObservedState usage in error handling
78
+ pattern: `const snap = getObservedState(this as object);` then `state: snap` in error object
79
+ gotcha: The @Step decorator is the canonical example of error state capture
80
+
81
+ - file: src/core/workflow-context.ts:155-162
82
+ why: First error handler location (step() method) that will use getObservedState
83
+ pattern: `state: getObservedState(this.workflow), logs: [...this.node.logs]`
84
+ gotcha: Must use `this.workflow` not `this` - WorkflowContext wraps a Workflow instance
85
+
86
+ - file: src/core/workflow-context.ts:319-326
87
+ why: Second error handler location (replaceLastPromptResult() method) that will use getObservedState
88
+ pattern: Same pattern as first error handler
89
+ gotcha: Both error handlers need the same fix
90
+
91
+ - file: src/core/workflow.ts:11
92
+ why: Parallel implementation showing getObservedState import pattern for workflow files
93
+ pattern: `import { getObservedState } from '../decorators/observed-state.js';`
94
+ gotcha: Follow this exact pattern for consistency
95
+
96
+ - docfile: plan/bugfix/architecture/GAP_ANALYSIS_SUMMARY.md
97
+ why: Contains Issue #2 analysis describing empty state/logs bug
98
+ section: Issue #2: Empty Error State in Functional Workflows
99
+ gotcha: The GAP analysis indicates this is a "Real Gap" with "Low" fix effort
100
+ ```
101
+
102
+ ### Current Codebase Tree
103
+
104
+ ```bash
105
+ groundswell/
106
+ ├── src/
107
+ │ ├── core/
108
+ │ │ ├── workflow.ts # Reference for similar import pattern (line 11)
109
+ │ │ ├── workflow-context.ts # TARGET FILE - import goes here (line 30)
110
+ │ │ └── context.ts
111
+ │ ├── decorators/
112
+ │ │ ├── observed-state.ts # SOURCE FILE - getObservedState defined here
113
+ │ │ ├── step.ts # Reference pattern for usage
114
+ │ │ └── task.ts
115
+ │ ├── types/
116
+ │ │ ├── index.ts
117
+ │ │ └── workflow-context.ts
118
+ │ ├── utils/
119
+ │ │ └── id.ts
120
+ │ └── __tests__/
121
+ │ ├── unit/
122
+ │ │ └── context.test.ts # Tests for WorkflowContext functionality
123
+ │ └── integration/
124
+ ├── plan/
125
+ │ └── bugfix/
126
+ │ └── P1M1T2S1/
127
+ │ └── PRP.md # This file
128
+ └── vitest.config.ts
129
+ ```
130
+
131
+ ### Desired Codebase Tree (No Changes - File Structure Unchanged)
132
+
133
+ ```bash
134
+ # No structural changes - this is an import addition only
135
+ # The file src/core/workflow-context.ts already exists and is being modified
136
+ ```
137
+
138
+ ### Known Gotchas of Our Codebase & Library Quirks
139
+
140
+ ```typescript
141
+ // CRITICAL: TypeScript ES2022 module system requires .js extensions
142
+ // Even in .ts files, relative imports must use .js extension
143
+ // WRONG: import { getObservedState } from '../decorators/observed-state';
144
+ // CORRECT: import { getObservedState } from '../decorators/observed-state.js';
145
+
146
+ // CRITICAL: Import organization pattern in this codebase
147
+ // Type imports come first with "import type { ... }" (lines 8-21)
148
+ // Regular imports follow, grouped by functionality (lines 22-30)
149
+ // Decorator imports are mixed with other utility imports
150
+
151
+ // CRITICAL: getObservedState is a named export, not a default export
152
+ // Must use: import { getObservedState } from '...'
153
+ // Cannot use: import getObservedState from '...'
154
+
155
+ // IMPORTANT: This task is for VERIFICATION ONLY
156
+ // The import already exists in the file at line 30
157
+ // This PRP serves as validation documentation
158
+
159
+ // GOTCHA: getObservedState returns empty object {} if no @ObservedState decorators
160
+ // This is expected behavior - not an error
161
+ // Uses WeakMap-based storage keyed by class prototype
162
+
163
+ // CRITICAL: WorkflowContext uses this.workflow not this
164
+ // When calling getObservedState in WorkflowContext, use:
165
+ // getObservedState(this.workflow) NOT getObservedState(this)
166
+ // Because WorkflowContext wraps a Workflow instance
167
+
168
+ // GOTCHA: The related subtask P1.M1.T2.S2 and S3 have ALREADY been completed
169
+ // The step() error handler at line 155-162 already uses getObservedState(this.workflow)
170
+ // The replaceLastPromptResult() error handler at line 319-326 also uses it
171
+ // This means P1.M1.T2.S1 through S3 are all complete
172
+ ```
173
+
174
+ ## Implementation Blueprint
175
+
176
+ ### Data Models and Structure
177
+
178
+ No data model changes required. This is an import statement addition only.
179
+
180
+ ### Implementation Tasks (ordered by dependencies)
181
+
182
+ ```yaml
183
+ Task 1: VERIFY EXISTING IMPORT IN src/core/workflow-context.ts
184
+ - CHECK: Lines 8-30 for import statements section
185
+ - VERIFY: Line 30 contains `import { getObservedState } from '../decorators/observed-state.js';`
186
+ - CONFIRM: Import is positioned after type imports (lines 8-21)
187
+ - CONFIRM: Import is after other regular imports (lines 22-29) as last import
188
+ - NAMING: Named import `{ getObservedState }` - matches source export
189
+ - PLACEMENT: Top of file, after type imports, before usage
190
+
191
+ Task 2: VERIFY FUNCTION AVAILABILITY IN ERROR HANDLERS
192
+ - FIND: Usage of getObservedState in step() method (around line 155-162)
193
+ - VERIFY: Error handler contains `state: getObservedState(this.workflow),`
194
+ - VERIFY: Error handler contains `logs: [...this.node.logs] as LogEntry[],`
195
+ - FIND: Usage of getObservedState in replaceLastPromptResult() method (around line 319-326)
196
+ - VERIFY: Same pattern as step() error handler
197
+ - CONFIRM: No TypeScript errors related to undefined getObservedState
198
+
199
+ Task 3: RUN VALIDATION
200
+ - EXECUTE: Type checking with `npm run build` or `npx tsc --noEmit`
201
+ - VERIFY: No import errors for getObservedState
202
+ - EXECUTE: Linting with `npm run lint`
203
+ - VERIFY: No linting errors in workflow-context.ts
204
+ - EXECUTE: Tests with `npm test -- src/__tests__/unit/context.test.ts`
205
+ - VERIFY: All context tests pass
206
+
207
+ # NOTE: All tasks are VERIFICATION tasks
208
+ # The implementation has already been completed
209
+ # This PRP documents the completion and provides validation steps
210
+ ```
211
+
212
+ ### Implementation Patterns & Key Details
213
+
214
+ ```typescript
215
+ // Import statement pattern (src/core/workflow-context.ts:30)
216
+ import { getObservedState } from '../decorators/observed-state.js';
217
+
218
+ // Usage pattern in step() error handler (src/core/workflow-context.ts:155-162)
219
+ } catch (error) {
220
+ const context = this.createReflectionContext(stepFn);
221
+ this.emitEvent({
222
+ type: 'stepError',
223
+ node: this.workflow.node,
224
+ error: {
225
+ message: error instanceof Error ? error.message : 'Unknown error',
226
+ original: error,
227
+ workflowId: this.workflow.id,
228
+ stack: error instanceof Error ? error.stack : undefined,
229
+ state: getObservedState(this.workflow), // ← Uses imported function
230
+ logs: [...this.node.logs] as LogEntry[],
231
+ },
232
+ stepName: stepFn.name,
233
+ });
234
+ throw error;
235
+ }
236
+
237
+ // Usage pattern in replaceLastPromptResult() error handler (src/core/workflow-context.ts:319-326)
238
+ } catch (error) {
239
+ this.emitEvent({
240
+ type: 'stepError',
241
+ node: this.workflow.node,
242
+ error: {
243
+ message: error instanceof Error ? error.message : 'Unknown error',
244
+ original: error,
245
+ workflowId: this.workflow.id,
246
+ stack: error instanceof Error ? error.stack : undefined,
247
+ state: getObservedState(this.workflow), // ← Uses imported function
248
+ logs: [...this.node.logs] as LogEntry[],
249
+ },
250
+ });
251
+ throw error;
252
+ }
253
+
254
+ // Reference pattern from @Step decorator (src/decorators/step.ts:145-165)
255
+ const snap = getObservedState(this as object);
256
+
257
+ const workflowError: WorkflowError = {
258
+ message: error?.message ?? 'Unknown error',
259
+ original: err,
260
+ workflowId: wf.id,
261
+ stack: error?.stack,
262
+ state: snap, // State snapshot included in error
263
+ logs: [...wf.node.logs] as LogEntry[],
264
+ };
265
+ ```
266
+
267
+ ### Integration Points
268
+
269
+ ```yaml
270
+ NO NEW INTEGRATIONS:
271
+ - This task verifies an existing import statement only
272
+ - No new dependencies required
273
+ - No configuration changes needed
274
+ - No database changes needed
275
+ - No route changes needed
276
+
277
+ EXISTING INTEGRATIONS AFFECTED:
278
+ - step() error handler (already using getObservedState at line ~160)
279
+ - replaceLastPromptResult() error handler (already using getObservedState at line ~324)
280
+ - WorkflowContext.createReflectionContext() method (related to error handling)
281
+ ```
282
+
283
+ ## Validation Loop
284
+
285
+ ### Level 1: Syntax & Style (Immediate Feedback)
286
+
287
+ ```bash
288
+ # Run verification commands
289
+ npm run build # TypeScript compilation check
290
+ npm run lint # ESLint style check
291
+ npx tsc --noEmit # Type checking without emitting files
292
+
293
+ # Expected: Zero errors. If errors exist, READ output and fix before proceeding.
294
+ ```
295
+
296
+ ### Level 2: Unit Tests (Component Validation)
297
+
298
+ ```bash
299
+ # Test WorkflowContext functionality specifically
300
+ npm test -- src/__tests__/unit/context.test.ts
301
+
302
+ # Full test suite for regression check
303
+ npm test
304
+
305
+ # Expected: All tests pass
306
+ ```
307
+
308
+ ### Level 3: Integration Testing (System Validation)
309
+
310
+ ```bash
311
+ # No specific integration tests needed for import verification
312
+ # The standard test suite covers integration scenarios
313
+
314
+ npm test
315
+
316
+ # Expected: All integration tests pass
317
+ ```
318
+
319
+ ### Level 4: Manual Verification
320
+
321
+ ```bash
322
+ # 1. Visual inspection of the import
323
+ head -n 35 src/core/workflow-context.ts | tail -n 10
324
+
325
+ # Expected output should show around line 30:
326
+ # import { getObservedState } from '../decorators/observed-state.js';
327
+
328
+ # 2. Verify usage in error handlers
329
+ grep -n "getObservedState" src/core/workflow-context.ts
330
+
331
+ # Expected output should show:
332
+ # 30:import { getObservedState } from '../decorators/observed-state.js';
333
+ # ~160: state: getObservedState(this.workflow),
334
+ # ~324: state: getObservedState(this.workflow),
335
+
336
+ # 3. Verify no duplicate imports
337
+ grep -c "import.*getObservedState" src/core/workflow-context.ts
338
+
339
+ # Expected: 1 (single import, no duplicates)
340
+
341
+ # 4. Verify the import was added in git history
342
+ git log --oneline -5 -- src/core/workflow-context.ts
343
+
344
+ # Expected: Should show commit 84e63ed or 5f6ce19 that added the import
345
+ ```
346
+
347
+ ## Final Validation Checklist
348
+
349
+ ### Technical Validation
350
+
351
+ - [ ] All 4 validation levels completed successfully
352
+ - [ ] All tests pass: `npm test`
353
+ - [ ] No linting errors: `npm run lint`
354
+ - [ ] No type errors: `npm run build`
355
+ - [ ] Import statement exists at line 30 of src/core/workflow-context.ts
356
+ - [ ] No duplicate imports of getObservedState
357
+
358
+ ### Feature Validation
359
+
360
+ - [ ] Import follows codebase pattern: `import { getObservedState } from '../decorators/observed-state.js';`
361
+ - [ ] Import positioned correctly (after type imports, as last regular import)
362
+ - [ ] Function available in step() catch block
363
+ - [ ] Function available in replaceLastPromptResult() catch block
364
+ - [ ] Manual verification confirms single import at line 30
365
+
366
+ ### Code Quality Validation
367
+
368
+ - [ ] Follows existing codebase import organization pattern
369
+ - [ ] Uses .js extension in relative import path (ES2022 requirement)
370
+ - [ ] Named import matches source export in observed-state.ts
371
+ - [ ] No unused imports (verified by ESLint)
372
+ - [ ] Consistent with other decorator imports in codebase
373
+
374
+ ### Documentation & Deployment
375
+
376
+ - [ ] No new environment variables added
377
+ - [ ] No configuration changes required
378
+ - [ ] PRP documents that task was already complete (verification only)
379
+
380
+ ---
381
+
382
+ ## Anti-Patterns to Avoid
383
+
384
+ - ❌ Don't add duplicate imports - check line 30 first
385
+ - ❌ Don't use `import type` for getObservedState - it's a runtime function
386
+ - ❌ Don't forget the .js extension in the import path
387
+ - ❌ Don't use default import syntax - getObservedState is a named export
388
+ - ❌ Don't place import in the wrong location (must be after type imports)
389
+ - ❌ Don't skip verification - always run tests after changes
390
+ - ❌ Don't use `getObservedState(this)` in WorkflowContext - use `getObservedState(this.workflow)`
391
+
392
+ ---
393
+
394
+ ## Implementation Status
395
+
396
+ **CRITICAL NOTE**: This task has been **ALREADY COMPLETED**. The verification process confirms:
397
+
398
+ 1. ✅ Import exists at `src/core/workflow-context.ts:30`
399
+ 2. ✅ Usage in `step()` error handler at line ~160
400
+ 3. ✅ Usage in `replaceLastPromptResult()` error handler at line ~324
401
+ 4. ✅ Git commits `84e63ed` and `5f6ce19` contain the implementation
402
+ 5. ✅ Related subtasks P1.M1.T2.S2 and S3 are also complete
403
+
404
+ This PRP serves as **validation documentation** rather than implementation instructions. The work was completed in prior commits.
405
+
406
+ ## Confidence Score
407
+
408
+ **10/10** - Implementation is already complete and verified. The PRP provides comprehensive context for understanding the pattern and validating the existing implementation.
409
+
410
+ ## Related Work Items
411
+
412
+ - **P1.M1.T1.S1**: Add getObservedState import to workflow.ts - ✅ COMPLETE (similar pattern)
413
+ - **P1.M1.T2.S2**: Fix first error handler in step() method - ✅ COMPLETE (line ~160)
414
+ - **P1.M1.T2.S3**: Fix second error handler in replaceLastPromptResult() - ✅ COMPLETE (line ~324)
415
+ - **P1.M1.T2.S4**: Write test for WorkflowContext error state capture - ⏳ Researching (depends on S2/S3)