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,604 @@
1
+ # Groundswell Decorator Documentation Examples
2
+
3
+ **Purpose:** Concrete examples from the Groundswell codebase showing current vs recommended documentation patterns
4
+
5
+ ---
6
+
7
+ ## Example 1: @Step Decorator Documentation
8
+
9
+ ### Current Implementation
10
+
11
+ **File:** `/home/dustin/projects/groundswell/docs/workflow.md` (lines 114-163)
12
+
13
+ ```markdown
14
+ ### @Step
15
+
16
+ Wraps methods with event emission and error handling.
17
+
18
+ ```typescript
19
+ import { Step } from 'groundswell';
20
+
21
+ class MyWorkflow extends Workflow {
22
+ // Default - emits stepStart/stepEnd events
23
+ @Step()
24
+ async basicStep(): Promise<void> {}
25
+
26
+ // Custom name
27
+ @Step({ name: 'CustomStepName' })
28
+ async namedStep(): Promise<void> {}
29
+
30
+ // Capture state after completion
31
+ @Step({ snapshotState: true })
32
+ async snapshotStep(): Promise<void> {}
33
+
34
+ // Track execution duration
35
+ @Step({ trackTiming: true })
36
+ async timedStep(): Promise<void> {}
37
+
38
+ // Log start/end messages
39
+ @Step({ logStart: true, logFinish: true })
40
+ async loggedStep(): Promise<void> {}
41
+
42
+ // All options
43
+ @Step({
44
+ name: 'FullStep',
45
+ snapshotState: true,
46
+ trackTiming: true,
47
+ logStart: true,
48
+ logFinish: true,
49
+ })
50
+ async fullStep(): Promise<void> {}
51
+ }
52
+ ```
53
+
54
+ **Options:**
55
+
56
+ | Option | Type | Description |
57
+ |--------|------|-------------|
58
+ | `name` | `string` | Custom step name (defaults to method name) |
59
+ | `snapshotState` | `boolean` | Capture state snapshot after step completion |
60
+ | `trackTiming` | `boolean` | Track and emit step duration |
61
+ | `logStart` | `boolean` | Log message when step starts |
62
+ | `logFinish` | `boolean` | Log message when step completes |
63
+ ```
64
+
65
+ ### Recommended Improvement
66
+
67
+ ```markdown
68
+ ### @Step
69
+
70
+ Wraps methods with event emission and error handling.
71
+
72
+ #### Default Behavior
73
+
74
+ Without any options, `@Step()` emits `stepStart` and `stepEnd` events with automatic timing tracking.
75
+
76
+ ```typescript
77
+ class MyWorkflow extends Workflow {
78
+ @Step() // All defaults: trackTiming=true, snapshotState=false
79
+ async basicStep(): Promise<void> {}
80
+ }
81
+ ```
82
+
83
+ #### Configuration Options
84
+
85
+ | Option | Type | Default | Description |
86
+ |--------|------|---------|-------------|
87
+ | `name` | `string` | method name | Custom step name for logs and events |
88
+ | `snapshotState` | `boolean` | `false` | Capture state snapshot after step completion |
89
+ | `trackTiming` | `boolean` | `true` | Track and emit step duration in stepEnd event |
90
+ | `logStart` | `boolean` | `false` | Log info message when step starts |
91
+ | `logFinish` | `boolean` | `false` | Log info message when step completes |
92
+
93
+ #### Examples
94
+
95
+ **Custom Step Name**
96
+ ```typescript
97
+ @Step({ name: 'CustomStepName' })
98
+ async namedStep(): Promise<void> {}
99
+ ```
100
+
101
+ **Capture State Snapshot**
102
+ ```typescript
103
+ @Step({ snapshotState: true })
104
+ async snapshotStep(): Promise<void> {}
105
+ ```
106
+
107
+ **Enable Logging**
108
+ ```typescript
109
+ @Step({ logStart: true, logFinish: true })
110
+ async loggedStep(): Promise<void> {}
111
+ ```
112
+
113
+ **All Options Combined**
114
+ ```typescript
115
+ @Step({
116
+ name: 'FullStep',
117
+ snapshotState: true,
118
+ trackTiming: true,
119
+ logStart: true,
120
+ logFinish: true,
121
+ })
122
+ async fullStep(): Promise<void> {}
123
+ ```
124
+
125
+ #### Type Definition
126
+
127
+ ```typescript
128
+ interface StepOptions {
129
+ name?: string;
130
+ snapshotState?: boolean;
131
+ trackTiming?: boolean;
132
+ logStart?: boolean;
133
+ logFinish?: boolean;
134
+ }
135
+ ```
136
+ ```
137
+
138
+ ### Key Improvements
139
+
140
+ 1. **Added "Default" column** - Makes defaults immediately visible
141
+ 2. **Added "Default Behavior" section** - Explains what happens with no options
142
+ 3. **Restructured examples** - Grouped by feature instead of progressive
143
+ 4. **Added Type Definition** - Shows the TypeScript interface
144
+ 5. **Improved descriptions** - More detailed and consistent
145
+
146
+ ---
147
+
148
+ ## Example 2: @Task Decorator Documentation
149
+
150
+ ### Current Implementation
151
+
152
+ **File:** `/home/dustin/projects/groundswell/docs/workflow.md` (lines 164-207)
153
+
154
+ ```markdown
155
+ ### @Task
156
+
157
+ Wraps methods that return child workflows.
158
+
159
+ ```typescript
160
+ import { Task } from 'groundswell';
161
+
162
+ class ParentWorkflow extends Workflow {
163
+ // Basic - attaches returned workflow as child
164
+ @Task()
165
+ async createChild(): Promise<ChildWorkflow> {
166
+ return new ChildWorkflow('Child', this);
167
+ }
168
+
169
+ // Custom name
170
+ @Task({ name: 'SpawnWorker' })
171
+ async spawnWorker(): Promise<WorkerWorkflow> {
172
+ return new WorkerWorkflow('Worker', this);
173
+ }
174
+
175
+ // Concurrent - runs all returned workflows in parallel
176
+ @Task({ concurrent: true })
177
+ async createWorkers(): Promise<WorkerWorkflow[]> {
178
+ return [
179
+ new WorkerWorkflow('W1', this),
180
+ new WorkerWorkflow('W2', this),
181
+ new WorkerWorkflow('W3', this),
182
+ ];
183
+ }
184
+
185
+ async run(): Promise<void> {
186
+ const child = await this.createChild();
187
+ await child.run();
188
+ }
189
+ }
190
+ ```
191
+
192
+ **Options:**
193
+
194
+ | Option | Type | Description |
195
+ |--------|------|-------------|
196
+ | `name` | `string` | Custom task name |
197
+ | `concurrent` | `boolean` | Run returned workflows in parallel |
198
+ ```
199
+
200
+ ### Recommended Improvement
201
+
202
+ ```markdown
203
+ ### @Task
204
+
205
+ Wraps methods that return child workflows and automatically attaches them to the parent workflow.
206
+
207
+ #### Default Behavior
208
+
209
+ By default, `@Task()` attaches the returned workflow(s) as children of the parent workflow. Single workflows run sequentially; multiple workflows run in parallel when returned as an array.
210
+
211
+ ```typescript
212
+ class ParentWorkflow extends Workflow {
213
+ @Task() // Default: concurrent=false, uses method name
214
+ async createChild(): Promise<ChildWorkflow> {
215
+ return new ChildWorkflow('Child', this);
216
+ }
217
+
218
+ async run(): Promise<void> {
219
+ const child = await this.createChild();
220
+ await child.run();
221
+ }
222
+ }
223
+ ```
224
+
225
+ #### Configuration Options
226
+
227
+ | Option | Type | Default | Description |
228
+ |--------|------|---------|-------------|
229
+ | `name` | `string` | method name | Custom task name for logs and events |
230
+ | `concurrent` | `boolean` | `false` | Run returned workflows in parallel (requires array return type) |
231
+
232
+ #### Examples
233
+
234
+ **Custom Task Name**
235
+ ```typescript
236
+ @Task({ name: 'SpawnWorker' })
237
+ async spawnWorker(): Promise<WorkerWorkflow> {
238
+ return new WorkerWorkflow('Worker', this);
239
+ }
240
+ ```
241
+
242
+ **Concurrent Execution**
243
+ ```typescript
244
+ @Task({ concurrent: true })
245
+ async createWorkers(): Promise<WorkerWorkflow[]> {
246
+ return [
247
+ new WorkerWorkflow('W1', this),
248
+ new WorkerWorkflow('W2', this),
249
+ new WorkerWorkflow('W3', this),
250
+ ];
251
+ }
252
+ ```
253
+
254
+ #### Sequential vs Concurrent
255
+
256
+ ```typescript
257
+ // Sequential (default) - waits for each
258
+ @Task()
259
+ async createChild(): Promise<ChildWorkflow> {
260
+ return new ChildWorkflow('Child', this);
261
+ }
262
+
263
+ // Concurrent - runs all in parallel
264
+ @Task({ concurrent: true })
265
+ async createWorkers(): Promise<WorkerWorkflow[]> {
266
+ return [
267
+ new WorkerWorkflow('W1', this),
268
+ new WorkerWorkflow('W2', this),
269
+ ];
270
+ }
271
+ ```
272
+
273
+ #### Type Definition
274
+
275
+ ```typescript
276
+ interface TaskOptions {
277
+ name?: string;
278
+ concurrent?: boolean;
279
+ }
280
+ ```
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Example 3: @ObservedState Decorator Documentation
286
+
287
+ ### Current Implementation
288
+
289
+ **File:** `/home/dustin/projects/groundswell/docs/workflow.md` (lines 208-244)
290
+
291
+ ```markdown
292
+ ### @ObservedState
293
+
294
+ Marks fields for inclusion in state snapshots.
295
+
296
+ ```typescript
297
+ import { ObservedState, getObservedState } from 'groundswell';
298
+
299
+ class MyWorkflow extends Workflow {
300
+ // Included in snapshots
301
+ @ObservedState()
302
+ progress = 0;
303
+
304
+ // Shown as '***' in snapshots
305
+ @ObservedState({ redact: true })
306
+ apiKey = 'secret';
307
+
308
+ // Excluded from snapshots
309
+ @ObservedState({ hidden: true })
310
+ internalState = {};
311
+
312
+ async run(): Promise<void> {
313
+ this.progress = 50;
314
+
315
+ // Get current state snapshot
316
+ const state = getObservedState(this);
317
+ // { progress: 50, apiKey: '***' }
318
+ }
319
+ }
320
+ ```
321
+
322
+ **Options:**
323
+
324
+ | Option | Type | Description |
325
+ |--------|------|-------------|
326
+ | `hidden` | `boolean` | Exclude field from snapshots entirely |
327
+ | `redact` | `boolean` | Show value as `'***'` in snapshots |
328
+ ```
329
+
330
+ ### Recommended Improvement
331
+
332
+ ```markdown
333
+ ### @ObservedState
334
+
335
+ Marks fields for inclusion in state snapshots captured during workflow execution.
336
+
337
+ #### Default Behavior
338
+
339
+ Without options, `@ObservedState()` includes the field's value in all state snapshots.
340
+
341
+ ```typescript
342
+ class MyWorkflow extends Workflow {
343
+ @ObservedState() // Default: hidden=false, redact=false
344
+ progress = 0;
345
+
346
+ async run(): Promise<void> {
347
+ this.progress = 50;
348
+ const state = getObservedState(this);
349
+ // { progress: 50 }
350
+ }
351
+ }
352
+ ```
353
+
354
+ #### Configuration Options
355
+
356
+ | Option | Type | Default | Description |
357
+ |--------|------|---------|-------------|
358
+ | `hidden` | `boolean` | `false` | Exclude field from snapshots entirely |
359
+ | `redact` | `boolean` | `false` | Show value as `'***'` in snapshots (for secrets) |
360
+
361
+ #### Examples
362
+
363
+ **Regular Observed Field**
364
+ ```typescript
365
+ @ObservedState()
366
+ progress = 0;
367
+ ```
368
+
369
+ **Redacted Field (Secrets)**
370
+ ```typescript
371
+ @ObservedState({ redact: true })
372
+ apiKey = 'secret-key'; // Shows as '***' in snapshots
373
+ ```
374
+
375
+ **Hidden Field**
376
+ ```typescript
377
+ @ObservedState({ hidden: true })
378
+ internalState = {}; // Not included in snapshots
379
+ ```
380
+
381
+ #### Security Pattern
382
+
383
+ ```typescript
384
+ class SecureWorkflow extends Workflow {
385
+ @ObservedState()
386
+ publicData: string = 'visible';
387
+
388
+ @ObservedState({ redact: true })
389
+ apiKey: string = 'secret'; // Redacted in logs
390
+
391
+ @ObservedState({ redact: true })
392
+ password: string = 'password'; // Redacted in logs
393
+
394
+ @ObservedState({ hidden: true })
395
+ internalCounter: number = 0; // Never logged
396
+
397
+ async run(): Promise<void> {
398
+ const snapshot = getObservedState(this);
399
+ // {
400
+ // publicData: 'visible',
401
+ // apiKey: '***',
402
+ // password: '***'
403
+ // }
404
+ // Note: internalCounter is not present
405
+ }
406
+ }
407
+ ```
408
+
409
+ #### Type Definition
410
+
411
+ ```typescript
412
+ interface ObservedStateOptions {
413
+ hidden?: boolean;
414
+ redact?: boolean;
415
+ }
416
+ ```
417
+ ```
418
+
419
+ ---
420
+
421
+ ## Example 4: README Quick Start
422
+
423
+ ### Current Implementation
424
+
425
+ **File:** `/home/dustin/projects/groundswell/README.md` (lines 114-131)
426
+
427
+ ```typescript
428
+ ## Decorators
429
+
430
+ ```typescript
431
+ // Emit lifecycle events and track timing
432
+ @Step({ trackTiming: true, snapshotState: true })
433
+ async processData(): Promise<void> { }
434
+
435
+ // Spawn and manage child workflows
436
+ @Task({ concurrent: true })
437
+ async createWorkers(): Promise<WorkerWorkflow[]> { }
438
+
439
+ // Mark fields for state snapshots
440
+ @ObservedState()
441
+ progress: number = 0;
442
+
443
+ @ObservedState({ redact: true }) // Shown as '***'
444
+ apiKey: string = 'secret';
445
+ ```
446
+ ```
447
+
448
+ ### Recommended Addition
449
+
450
+ Add inline comments explaining defaults:
451
+
452
+ ```typescript
453
+ ## Decorators
454
+
455
+ ```typescript
456
+ // Basic step with automatic timing (default: trackTiming=true)
457
+ @Step()
458
+ async processData(): Promise<void> { }
459
+
460
+ // Capture state when step completes
461
+ @Step({ snapshotState: true })
462
+ async processData(): Promise<void> { }
463
+
464
+ // Spawn child workflows (default: sequential)
465
+ @Task()
466
+ async createChild(): Promise<ChildWorkflow> { }
467
+
468
+ // Spawn child workflows in parallel
469
+ @Task({ concurrent: true })
470
+ async createWorkers(): Promise<WorkerWorkflow[]> { }
471
+
472
+ // Include field in state snapshots
473
+ @ObservedState()
474
+ progress: number = 0;
475
+
476
+ // Redact sensitive values (shown as '***')
477
+ @ObservedState({ redact: true })
478
+ apiKey: string = 'secret';
479
+ ```
480
+
481
+ **See:** [Decorator Documentation](docs/workflow.md#decorators) for full options
482
+ ```
483
+
484
+ ---
485
+
486
+ ## Example 5: Executable Example File
487
+
488
+ ### Current Implementation
489
+
490
+ **File:** `/home/dustin/projects/groundswell/examples/examples/02-decorator-options.ts` (lines 1-20)
491
+
492
+ ```typescript
493
+ /**
494
+ * Example 2: Decorator Options
495
+ *
496
+ * Demonstrates all decorator configuration options:
497
+ *
498
+ * @Step options:
499
+ * - name: Custom step name (defaults to method name)
500
+ * - snapshotState: Capture state snapshot after step completion
501
+ * - trackTiming: Track and emit step duration
502
+ * - logStart: Log message at step start
503
+ * - logFinish: Log message at step end
504
+ *
505
+ * @Task options:
506
+ * - name: Custom task name
507
+ * - concurrent: Run returned workflows concurrently
508
+ *
509
+ * @ObservedState options:
510
+ * - hidden: Field not included in snapshots
511
+ * - redact: Value shown as '***' in snapshots
512
+ */
513
+ ```
514
+
515
+ ### Recommended Improvement
516
+
517
+ ```typescript
518
+ /**
519
+ * Example 2: Decorator Options
520
+ *
521
+ * Demonstrates all decorator configuration options with their defaults:
522
+ *
523
+ * @Step(options) - Wraps methods with event emission and error handling
524
+ * Options:
525
+ * - name: string (default: method name)
526
+ * Custom step name for logs and events
527
+ * - snapshotState: boolean (default: false)
528
+ * Capture state snapshot after step completion
529
+ * - trackTiming: boolean (default: true)
530
+ * Track and emit step duration
531
+ * - logStart: boolean (default: false)
532
+ * Log info message when step starts
533
+ * - logFinish: boolean (default: false)
534
+ * Log info message when step completes
535
+ *
536
+ * @Task(options) - Wraps methods that return child workflows
537
+ * Options:
538
+ * - name: string (default: method name)
539
+ * Custom task name for logs and events
540
+ * - concurrent: boolean (default: false)
541
+ * Run returned workflows in parallel
542
+ *
543
+ * @ObservedState(options) - Marks fields for state snapshots
544
+ * Options:
545
+ * - hidden: boolean (default: false)
546
+ * Exclude field from snapshots entirely
547
+ * - redact: boolean (default: false)
548
+ * Show value as '***' in snapshots (for secrets)
549
+ *
550
+ * @see docs/workflow.md for complete documentation
551
+ */
552
+ ```
553
+
554
+ ---
555
+
556
+ ## Implementation Checklist
557
+
558
+ Use this checklist when updating documentation:
559
+
560
+ ### For @Step Decorator
561
+
562
+ - [ ] Add "Default" column with `trackTiming: true`
563
+ - [ ] Add "Default Behavior" section explaining automatic timing
564
+ - [ ] Update examples to show default vs explicit `true`
565
+ - [ ] Add type definition section
566
+
567
+ ### For @Task Decorator
568
+
569
+ - [ ] Add "Default" column with `concurrent: false`
570
+ - [ ] Explain sequential vs concurrent behavior
571
+ - [ ] Show array return type requirement for concurrent
572
+ - [ ] Add type definition section
573
+
574
+ ### For @ObservedState Decorator
575
+
576
+ - [ ] Add "Default" column with `hidden: false, redact: false`
577
+ - [ ] Add security pattern example
578
+ - [ ] Explain difference between hidden and redact
579
+ - [ ] Add type definition section
580
+
581
+ ### General Improvements
582
+
583
+ - [ ] Ensure all code examples use consistent formatting
584
+ - [ ] Add cross-references between decorators
585
+ - [ ] Include "See Also" sections
586
+ - [ ] Add type definitions for all options interfaces
587
+ - [ ] Keep examples executable
588
+
589
+ ---
590
+
591
+ ## File Reference Summary
592
+
593
+ | File | Purpose | Key Sections |
594
+ |------|---------|--------------|
595
+ | `docs/workflow.md` | Main documentation | Lines 114-244 |
596
+ | `README.md` | Quick start | Lines 114-131 |
597
+ | `src/types/decorators.ts` | Type definitions | Lines 1-26 |
598
+ | `examples/02-decorator-options.ts` | Executable examples | Lines 1-20 |
599
+
600
+ ---
601
+
602
+ **Document Version:** 1.0
603
+ **Last Updated:** 2026-01-11
604
+ **Related Research:** `DECORATOR_DOCUMENTATION_BEST_PRACTICES.md`