groundswell 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -9
  3. package/dist/cache/cache-key.d.ts +86 -0
  4. package/dist/cache/cache-key.d.ts.map +1 -0
  5. package/dist/cache/cache-key.js +204 -0
  6. package/dist/cache/cache-key.js.map +1 -0
  7. package/dist/cache/cache.d.ts +104 -0
  8. package/dist/cache/cache.d.ts.map +1 -0
  9. package/dist/cache/cache.js +179 -0
  10. package/dist/cache/cache.js.map +1 -0
  11. package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
  12. package/dist/cache/index.d.ts.map +1 -0
  13. package/dist/cache/index.js +6 -0
  14. package/dist/cache/index.js.map +1 -0
  15. package/dist/core/agent.d.ts +203 -0
  16. package/dist/core/agent.d.ts.map +1 -0
  17. package/dist/core/agent.js +833 -0
  18. package/dist/core/agent.js.map +1 -0
  19. package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
  20. package/dist/core/context.d.ts.map +1 -0
  21. package/dist/core/context.js +80 -0
  22. package/dist/core/context.js.map +1 -0
  23. package/dist/core/event-tree.d.ts +72 -0
  24. package/dist/core/event-tree.d.ts.map +1 -0
  25. package/dist/core/event-tree.js +211 -0
  26. package/dist/core/event-tree.js.map +1 -0
  27. package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
  28. package/dist/core/factory.d.ts.map +1 -0
  29. package/dist/core/factory.js +110 -0
  30. package/dist/core/factory.js.map +1 -0
  31. package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/index.js +9 -0
  34. package/dist/core/index.js.map +1 -0
  35. package/dist/core/logger.d.ts +50 -0
  36. package/dist/core/logger.d.ts.map +1 -0
  37. package/dist/core/logger.js +91 -0
  38. package/dist/core/logger.js.map +1 -0
  39. package/dist/core/mcp-handler.d.ts +127 -0
  40. package/dist/core/mcp-handler.d.ts.map +1 -0
  41. package/dist/core/mcp-handler.js +323 -0
  42. package/dist/core/mcp-handler.js.map +1 -0
  43. package/dist/core/prompt.d.ts +80 -0
  44. package/dist/core/prompt.d.ts.map +1 -0
  45. package/dist/core/prompt.js +120 -0
  46. package/dist/core/prompt.js.map +1 -0
  47. package/dist/core/workflow-context.d.ts +61 -0
  48. package/dist/core/workflow-context.d.ts.map +1 -0
  49. package/dist/core/workflow-context.js +358 -0
  50. package/dist/core/workflow-context.js.map +1 -0
  51. package/dist/core/workflow.d.ts +543 -0
  52. package/dist/core/workflow.d.ts.map +1 -0
  53. package/dist/core/workflow.js +986 -0
  54. package/dist/core/workflow.js.map +1 -0
  55. package/dist/debugger/event-replayer.d.ts +422 -0
  56. package/dist/debugger/event-replayer.d.ts.map +1 -0
  57. package/dist/debugger/event-replayer.js +639 -0
  58. package/dist/debugger/event-replayer.js.map +1 -0
  59. package/dist/debugger/index.d.ts +2 -0
  60. package/dist/debugger/index.d.ts.map +1 -0
  61. package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
  62. package/dist/debugger/index.js.map +1 -0
  63. package/dist/debugger/tree-debugger.d.ts +240 -0
  64. package/dist/debugger/tree-debugger.d.ts.map +1 -0
  65. package/dist/debugger/tree-debugger.js +620 -0
  66. package/dist/debugger/tree-debugger.js.map +1 -0
  67. package/dist/decorators/index.d.ts +4 -0
  68. package/dist/decorators/index.d.ts.map +1 -0
  69. package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
  70. package/dist/decorators/index.js.map +1 -0
  71. package/dist/decorators/observed-state.d.ts +32 -0
  72. package/dist/decorators/observed-state.d.ts.map +1 -0
  73. package/dist/decorators/observed-state.js +79 -0
  74. package/dist/decorators/observed-state.js.map +1 -0
  75. package/dist/decorators/step.d.ts +15 -0
  76. package/dist/decorators/step.d.ts.map +1 -0
  77. package/dist/decorators/step.js +192 -0
  78. package/dist/decorators/step.js.map +1 -0
  79. package/dist/decorators/task.d.ts +50 -0
  80. package/dist/decorators/task.d.ts.map +1 -0
  81. package/dist/decorators/task.js +118 -0
  82. package/dist/decorators/task.js.map +1 -0
  83. package/dist/examples/index.d.ts +3 -0
  84. package/dist/examples/index.d.ts.map +1 -0
  85. package/{src/examples/index.ts → dist/examples/index.js} +1 -0
  86. package/dist/examples/index.js.map +1 -0
  87. package/dist/examples/tdd-orchestrator.d.ts +15 -0
  88. package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
  89. package/dist/examples/tdd-orchestrator.js +121 -0
  90. package/dist/examples/tdd-orchestrator.js.map +1 -0
  91. package/dist/examples/test-cycle-workflow.d.ts +14 -0
  92. package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
  93. package/dist/examples/test-cycle-workflow.js +116 -0
  94. package/dist/examples/test-cycle-workflow.js.map +1 -0
  95. package/dist/harnesses/claude-code-harness.d.ts +391 -0
  96. package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
  97. package/dist/harnesses/claude-code-harness.js +1076 -0
  98. package/dist/harnesses/claude-code-harness.js.map +1 -0
  99. package/dist/harnesses/harness-registry.d.ts +440 -0
  100. package/dist/harnesses/harness-registry.d.ts.map +1 -0
  101. package/dist/harnesses/harness-registry.js +543 -0
  102. package/dist/harnesses/harness-registry.js.map +1 -0
  103. package/dist/harnesses/index.d.ts +12 -0
  104. package/dist/harnesses/index.d.ts.map +1 -0
  105. package/dist/harnesses/index.js +11 -0
  106. package/dist/harnesses/index.js.map +1 -0
  107. package/dist/harnesses/pi-harness.d.ts +219 -0
  108. package/dist/harnesses/pi-harness.d.ts.map +1 -0
  109. package/dist/harnesses/pi-harness.js +676 -0
  110. package/dist/harnesses/pi-harness.js.map +1 -0
  111. package/dist/harnesses/pi-schema-converter.d.ts +24 -0
  112. package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
  113. package/dist/harnesses/pi-schema-converter.js +81 -0
  114. package/dist/harnesses/pi-schema-converter.js.map +1 -0
  115. package/dist/harnesses/register-defaults.d.ts +24 -0
  116. package/dist/harnesses/register-defaults.d.ts.map +1 -0
  117. package/dist/harnesses/register-defaults.js +40 -0
  118. package/dist/harnesses/register-defaults.js.map +1 -0
  119. package/dist/harnesses/session-store.d.ts +201 -0
  120. package/dist/harnesses/session-store.d.ts.map +1 -0
  121. package/dist/harnesses/session-store.js +254 -0
  122. package/dist/harnesses/session-store.js.map +1 -0
  123. package/dist/index.d.ts +37 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +57 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/reflection/index.d.ts +5 -0
  128. package/dist/reflection/index.d.ts.map +1 -0
  129. package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
  130. package/dist/reflection/index.js.map +1 -0
  131. package/dist/reflection/reflection.d.ts +84 -0
  132. package/dist/reflection/reflection.d.ts.map +1 -0
  133. package/dist/reflection/reflection.js +344 -0
  134. package/dist/reflection/reflection.js.map +1 -0
  135. package/dist/tools/index.d.ts +6 -0
  136. package/dist/tools/index.d.ts.map +1 -0
  137. package/dist/tools/index.js +11 -0
  138. package/dist/tools/index.js.map +1 -0
  139. package/dist/tools/introspection.d.ts +165 -0
  140. package/dist/tools/introspection.d.ts.map +1 -0
  141. package/dist/tools/introspection.js +324 -0
  142. package/dist/tools/introspection.js.map +1 -0
  143. package/dist/types/agent.d.ts +1317 -0
  144. package/dist/types/agent.d.ts.map +1 -0
  145. package/dist/types/agent.js +423 -0
  146. package/dist/types/agent.js.map +1 -0
  147. package/dist/types/decorators.d.ts +40 -0
  148. package/dist/types/decorators.d.ts.map +1 -0
  149. package/dist/types/decorators.js +2 -0
  150. package/dist/types/decorators.js.map +1 -0
  151. package/dist/types/error-strategy.d.ts +13 -0
  152. package/dist/types/error-strategy.d.ts.map +1 -0
  153. package/dist/types/error-strategy.js +2 -0
  154. package/dist/types/error-strategy.js.map +1 -0
  155. package/dist/types/error.d.ts +20 -0
  156. package/dist/types/error.d.ts.map +1 -0
  157. package/dist/types/error.js +2 -0
  158. package/dist/types/error.js.map +1 -0
  159. package/dist/types/events.d.ts +113 -0
  160. package/dist/types/events.d.ts.map +1 -0
  161. package/dist/types/events.js +2 -0
  162. package/dist/types/events.js.map +1 -0
  163. package/dist/types/harnesses.d.ts +474 -0
  164. package/dist/types/harnesses.d.ts.map +1 -0
  165. package/dist/types/harnesses.js +2 -0
  166. package/dist/types/harnesses.js.map +1 -0
  167. package/dist/types/index.d.ts +23 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +8 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/types/logging.d.ts +24 -0
  172. package/dist/types/logging.d.ts.map +1 -0
  173. package/dist/types/logging.js +2 -0
  174. package/dist/types/logging.js.map +1 -0
  175. package/dist/types/observer.d.ts +18 -0
  176. package/dist/types/observer.d.ts.map +1 -0
  177. package/dist/types/observer.js +2 -0
  178. package/dist/types/observer.js.map +1 -0
  179. package/dist/types/prompt.d.ts +31 -0
  180. package/dist/types/prompt.d.ts.map +1 -0
  181. package/dist/types/prompt.js +6 -0
  182. package/dist/types/prompt.js.map +1 -0
  183. package/dist/types/providers.d.ts +691 -0
  184. package/dist/types/providers.d.ts.map +1 -0
  185. package/dist/types/providers.js +14 -0
  186. package/dist/types/providers.js.map +1 -0
  187. package/dist/types/reflection.d.ts +96 -0
  188. package/dist/types/reflection.d.ts.map +1 -0
  189. package/dist/types/reflection.js +24 -0
  190. package/dist/types/reflection.js.map +1 -0
  191. package/dist/types/restart.d.ts +132 -0
  192. package/dist/types/restart.d.ts.map +1 -0
  193. package/dist/types/restart.js +2 -0
  194. package/dist/types/restart.js.map +1 -0
  195. package/dist/types/sdk-primitives.d.ts +118 -0
  196. package/dist/types/sdk-primitives.d.ts.map +1 -0
  197. package/dist/types/sdk-primitives.js +6 -0
  198. package/dist/types/sdk-primitives.js.map +1 -0
  199. package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
  200. package/dist/types/snapshot.d.ts.map +1 -0
  201. package/dist/types/snapshot.js +2 -0
  202. package/dist/types/snapshot.js.map +1 -0
  203. package/dist/types/streaming.d.ts +194 -0
  204. package/dist/types/streaming.d.ts.map +1 -0
  205. package/dist/types/streaming.js +67 -0
  206. package/dist/types/streaming.js.map +1 -0
  207. package/dist/types/workflow-context.d.ts +275 -0
  208. package/dist/types/workflow-context.d.ts.map +1 -0
  209. package/dist/types/workflow-context.js +8 -0
  210. package/dist/types/workflow-context.js.map +1 -0
  211. package/dist/types/workflow.d.ts +30 -0
  212. package/dist/types/workflow.d.ts.map +1 -0
  213. package/dist/types/workflow.js +2 -0
  214. package/dist/types/workflow.js.map +1 -0
  215. package/dist/utils/agent-validation.d.ts +88 -0
  216. package/dist/utils/agent-validation.d.ts.map +1 -0
  217. package/dist/utils/agent-validation.js +87 -0
  218. package/dist/utils/agent-validation.js.map +1 -0
  219. package/dist/utils/delay.d.ts +7 -0
  220. package/dist/utils/delay.d.ts.map +1 -0
  221. package/dist/utils/delay.js +9 -0
  222. package/dist/utils/delay.js.map +1 -0
  223. package/dist/utils/harness-config.d.ts +180 -0
  224. package/dist/utils/harness-config.d.ts.map +1 -0
  225. package/dist/utils/harness-config.js +311 -0
  226. package/dist/utils/harness-config.js.map +1 -0
  227. package/dist/utils/id.d.ts +6 -0
  228. package/dist/utils/id.d.ts.map +1 -0
  229. package/dist/utils/id.js +12 -0
  230. package/dist/utils/id.js.map +1 -0
  231. package/dist/utils/index.d.ts +13 -0
  232. package/dist/utils/index.d.ts.map +1 -0
  233. package/dist/utils/index.js +11 -0
  234. package/dist/utils/index.js.map +1 -0
  235. package/dist/utils/model-spec.d.ts +110 -0
  236. package/dist/utils/model-spec.d.ts.map +1 -0
  237. package/dist/utils/model-spec.js +149 -0
  238. package/dist/utils/model-spec.js.map +1 -0
  239. package/dist/utils/observable.d.ts +54 -0
  240. package/dist/utils/observable.d.ts.map +1 -0
  241. package/dist/utils/observable.js +82 -0
  242. package/dist/utils/observable.js.map +1 -0
  243. package/dist/utils/provider-config.d.ts +10 -0
  244. package/dist/utils/provider-config.d.ts.map +1 -0
  245. package/dist/utils/provider-config.js +10 -0
  246. package/dist/utils/provider-config.js.map +1 -0
  247. package/dist/utils/restart-analysis.d.ts +202 -0
  248. package/dist/utils/restart-analysis.d.ts.map +1 -0
  249. package/dist/utils/restart-analysis.js +426 -0
  250. package/dist/utils/restart-analysis.js.map +1 -0
  251. package/dist/utils/session-serialization.d.ts +118 -0
  252. package/dist/utils/session-serialization.d.ts.map +1 -0
  253. package/dist/utils/session-serialization.js +217 -0
  254. package/dist/utils/session-serialization.js.map +1 -0
  255. package/dist/utils/workflow-error-utils.d.ts +22 -0
  256. package/dist/utils/workflow-error-utils.d.ts.map +1 -0
  257. package/dist/utils/workflow-error-utils.js +45 -0
  258. package/dist/utils/workflow-error-utils.js.map +1 -0
  259. package/package.json +34 -5
  260. package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
  261. package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
  262. package/.claude/commands/task-breakdown.md +0 -94
  263. package/.claude/settings.local.json +0 -9
  264. package/.claude/system_prompts/task-breakdown.md +0 -101
  265. package/CHANGELOG.md +0 -188
  266. package/PRD.md +0 -543
  267. package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
  268. package/PRPs/PRDs/002-agent-prompt.md +0 -390
  269. package/PRPs/PRDs/003-agent-prompt.md +0 -943
  270. package/PRPs/PRDs/004-agent-prompt.md +0 -1136
  271. package/PRPs/PRDs/tasks-001.json +0 -492
  272. package/PRPs/README.md +0 -83
  273. package/PRPs/templates/prp_base.md +0 -222
  274. package/docs/agent.md +0 -422
  275. package/docs/prompt.md +0 -419
  276. package/docs/workflow.md +0 -600
  277. package/examples/README.md +0 -258
  278. package/examples/examples/01-basic-workflow.ts +0 -100
  279. package/examples/examples/02-decorator-options.ts +0 -217
  280. package/examples/examples/03-parent-child.ts +0 -241
  281. package/examples/examples/04-observers-debugger.ts +0 -340
  282. package/examples/examples/05-error-handling.ts +0 -387
  283. package/examples/examples/06-concurrent-tasks.ts +0 -352
  284. package/examples/examples/07-agent-loops.ts +0 -432
  285. package/examples/examples/08-sdk-features.ts +0 -667
  286. package/examples/examples/09-reflection.ts +0 -573
  287. package/examples/examples/10-introspection.ts +0 -550
  288. package/examples/examples/11-reparenting-workflows.ts +0 -269
  289. package/examples/index.ts +0 -147
  290. package/examples/utils/helpers.ts +0 -57
  291. package/package-lock.json +0 -2398
  292. package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
  293. package/plan/001_d3bb02af4886/backlog.json +0 -867
  294. package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
  295. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
  296. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
  297. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
  298. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
  299. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
  300. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
  301. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
  302. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
  303. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
  304. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
  305. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
  306. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
  307. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
  308. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
  309. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
  310. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
  311. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
  312. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
  313. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
  314. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
  315. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
  316. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
  317. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
  318. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
  319. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
  320. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
  321. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
  322. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
  323. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
  324. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
  325. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
  326. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
  327. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
  328. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
  329. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
  330. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
  331. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
  332. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
  333. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
  334. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
  335. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
  336. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
  337. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
  338. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
  339. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
  340. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
  341. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
  342. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
  343. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
  344. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
  345. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
  346. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
  347. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
  348. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
  349. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
  350. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
  351. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
  352. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
  353. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
  354. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
  355. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
  356. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
  357. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
  358. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
  359. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
  360. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
  361. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
  362. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
  363. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
  364. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
  365. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
  366. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
  367. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
  368. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
  369. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
  370. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
  371. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
  372. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
  373. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
  374. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
  375. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
  376. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
  377. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
  378. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
  379. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
  380. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
  381. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
  382. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
  383. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
  384. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
  385. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
  386. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
  387. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
  388. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
  389. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
  390. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
  391. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
  392. package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
  393. package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
  394. package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
  395. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
  396. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
  397. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
  398. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
  399. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
  400. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
  401. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
  402. package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
  403. package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
  404. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
  405. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
  406. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
  407. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
  408. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
  409. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
  410. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
  411. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
  412. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
  413. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
  414. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
  415. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
  416. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
  417. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
  418. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
  419. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
  420. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
  421. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
  422. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
  423. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
  424. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
  425. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
  426. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
  427. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
  428. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
  429. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
  430. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
  431. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
  432. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
  433. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
  434. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
  435. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
  436. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
  437. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
  438. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
  439. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
  440. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
  441. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
  442. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
  443. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
  444. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
  445. package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
  446. package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
  447. package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
  448. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
  449. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
  450. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
  451. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
  452. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
  453. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
  454. package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
  455. package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
  456. package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
  457. package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
  458. package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
  459. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
  460. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
  461. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
  462. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
  463. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
  464. package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
  465. package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
  466. package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
  467. package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
  468. package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
  469. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
  470. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
  471. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
  472. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
  473. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
  474. package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
  475. package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
  476. package/scripts/generate-llms-full.ts +0 -206
  477. package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
  478. package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
  479. package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
  480. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
  481. package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
  482. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
  483. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
  484. package/src/__tests__/adversarial/edge-case.test.ts +0 -703
  485. package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
  486. package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
  487. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
  488. package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
  489. package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
  490. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
  491. package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
  492. package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
  493. package/src/__tests__/helpers/index.ts +0 -18
  494. package/src/__tests__/helpers/tree-verification.ts +0 -257
  495. package/src/__tests__/integration/agent-workflow.test.ts +0 -256
  496. package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
  497. package/src/__tests__/integration/observer-logging.test.ts +0 -643
  498. package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
  499. package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
  500. package/src/__tests__/unit/agent.test.ts +0 -169
  501. package/src/__tests__/unit/cache-key.test.ts +0 -182
  502. package/src/__tests__/unit/cache.test.ts +0 -172
  503. package/src/__tests__/unit/context.test.ts +0 -217
  504. package/src/__tests__/unit/decorators.test.ts +0 -100
  505. package/src/__tests__/unit/introspection-tools.test.ts +0 -277
  506. package/src/__tests__/unit/logger.test.ts +0 -293
  507. package/src/__tests__/unit/observable.test.ts +0 -321
  508. package/src/__tests__/unit/prompt.test.ts +0 -135
  509. package/src/__tests__/unit/reflection.test.ts +0 -210
  510. package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
  511. package/src/__tests__/unit/tree-debugger.test.ts +0 -85
  512. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
  513. package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
  514. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
  515. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
  516. package/src/__tests__/unit/workflow.test.ts +0 -357
  517. package/src/cache/cache-key.ts +0 -244
  518. package/src/cache/cache.ts +0 -236
  519. package/src/core/agent.ts +0 -593
  520. package/src/core/event-tree.ts +0 -260
  521. package/src/core/logger.ts +0 -112
  522. package/src/core/mcp-handler.ts +0 -184
  523. package/src/core/prompt.ts +0 -150
  524. package/src/core/workflow-context.ts +0 -351
  525. package/src/core/workflow.ts +0 -540
  526. package/src/debugger/tree-debugger.ts +0 -255
  527. package/src/decorators/observed-state.ts +0 -95
  528. package/src/decorators/step.ts +0 -139
  529. package/src/decorators/task.ts +0 -159
  530. package/src/examples/tdd-orchestrator.ts +0 -65
  531. package/src/examples/test-cycle-workflow.ts +0 -64
  532. package/src/index.ts +0 -142
  533. package/src/reflection/reflection.ts +0 -407
  534. package/src/tools/index.ts +0 -36
  535. package/src/tools/introspection.ts +0 -464
  536. package/src/types/agent.ts +0 -90
  537. package/src/types/decorators.ts +0 -32
  538. package/src/types/error-strategy.ts +0 -13
  539. package/src/types/error.ts +0 -20
  540. package/src/types/events.ts +0 -75
  541. package/src/types/index.ts +0 -55
  542. package/src/types/logging.ts +0 -24
  543. package/src/types/observer.ts +0 -18
  544. package/src/types/prompt.ts +0 -40
  545. package/src/types/reflection.ts +0 -117
  546. package/src/types/sdk-primitives.ts +0 -128
  547. package/src/types/workflow-context.ts +0 -163
  548. package/src/types/workflow.ts +0 -37
  549. package/src/utils/id.ts +0 -11
  550. package/src/utils/index.ts +0 -4
  551. package/src/utils/observable.ts +0 -106
  552. package/src/utils/workflow-error-utils.ts +0 -56
  553. package/tsconfig.json +0 -22
  554. package/vitest.config.ts +0 -16
@@ -1,346 +0,0 @@
1
- # Bug Fix Research Summary - Hierarchical Workflow Engine
2
-
3
- **Date:** 2025-01-12
4
- **Project:** Hierarchical Workflow Engine Bug Fixes
5
- **Document:** Bug Fix Requirements (Creative PRD Validation Testing)
6
-
7
- ---
8
-
9
- ## Executive Summary
10
-
11
- This document summarizes the research phase for the Hierarchical Workflow Engine bug fix project. All 9 bugs identified during PRD validation testing have been analyzed, validated against the codebase, and decomposed into atomic implementation tasks.
12
-
13
- ### Key Findings
14
-
15
- - **All 9 bug report claims VALIDATED** - Code exists exactly as stated in the bug report
16
- - **344 existing tests** - 100% pass rate maintained throughout bug fixes
17
- - **4 Phases, 4 Milestones, 11 Tasks, 46 Subtasks** - Complete implementation plan created
18
- - **Backward compatibility prioritized** - All fixes maintain existing API contracts where possible
19
-
20
- ---
21
-
22
- ## Research Artifacts Created
23
-
24
- ### Architecture Documentation
25
-
26
- Three comprehensive architecture documents were created in `plan/bugfix/architecture/`:
27
-
28
- #### 1. codebase_structure.md (14KB)
29
- **Purpose:** Complete codebase mapping and bug claim validation
30
-
31
- **Contents:**
32
- - Directory structure overview
33
- - Key files and responsibilities
34
- - Validation of all 7 bug report claims with evidence
35
- - Decorator system pattern analysis
36
- - Error class hierarchy
37
- - Observer pattern implementation
38
- - Logger architecture details
39
- - Dual tree architecture explanation
40
- - Event type catalog
41
- - Testing strategy overview
42
- - Dependencies list
43
-
44
- **Key Validation:** Confirmed all bug report claims are accurate with line numbers and code snippets.
45
-
46
- #### 2. error_handling_patterns.md (9.6KB)
47
- **Purpose:** Deep analysis of error handling architecture and Promise.all usage
48
-
49
- **Contents:**
50
- - WorkflowError interface structure
51
- - All Promise.all usage locations (3 found)
52
- - Step-by-step error propagation flow
53
- - Why ErrorMergeStrategy exists but isn't used (4 reasons)
54
- - Recommended Promise.allSettled implementation pattern
55
- - Production-ready code examples
56
- - Usage examples for error aggregation
57
- - Additional findings (error events, state capture, recovery patterns, testing coverage)
58
-
59
- **Key Finding:** ErrorMergeStrategy is defined but completely unused - requires TaskOptions extension and Promise.allSettled implementation.
60
-
61
- #### 3. concurrent_execution_best_practices.md (47KB)
62
- **Purpose:** Research on production workflow engine patterns and best practices
63
-
64
- **Contents:**
65
- - Promise.all vs Promise.allSettled technical comparison
66
- - Production patterns from Temporal.io, AWS Step Functions, Cadence, Apache Airflow
67
- - 4 error aggregation strategies with analysis
68
- - Decision framework for fail-fast vs complete-all
69
- - Strategy selection matrix (10 real-world scenarios)
70
- - Groundswell-specific recommendations with code examples
71
- - 4-phase implementation roadmap
72
- - Complete code examples for WorkflowAggregateError
73
-
74
- **Key Recommendation:** Default to 'complete-all' strategy for observability, maintain 'fail-fast' as initial default for backward compatibility.
75
-
76
- ---
77
-
78
- ## Bug Fix Task Breakdown
79
-
80
- ### File: `./bug_fix_tasks.json` (36KB, 436 lines)
81
-
82
- **Structure:**
83
- ```json
84
- {
85
- "backlog": [
86
- {
87
- "type": "Phase",
88
- "id": "P1",
89
- "title": "Bug Fixes - Hierarchical Workflow Engine",
90
- "status": "Ready",
91
- "milestones": [
92
- { "type": "Milestone", "id": "P1.M1", ... }, // Critical Fixes
93
- { "type": "Milestone", "id": "P1.M2", ... }, // Major Fixes
94
- { "type": "Milestone", "id": "P1.M3", ... }, // Minor Fixes
95
- { "type": "Milestone", "id": "P1.M4", ... } // Validation
96
- ]
97
- }
98
- ]
99
- }
100
- ```
101
-
102
- ### Milestone Breakdown
103
-
104
- #### P1.M1: Critical Fixes - Signature Mismatches (1 Task, 4 Subtasks)
105
- **Focus:** WorkflowLogger.child() signature mismatch
106
-
107
- **Task:** Fix WorkflowLogger.child() Signature Mismatch
108
- - S1: Research PRD specification (1 SP)
109
- - S2: Update signature to accept Partial<LogEntry> (2 SP)
110
- - S3: Add tests for new signature (2 SP)
111
- - S4: Verify backward compatibility (1 SP)
112
-
113
- **Story Points:** 6
114
-
115
- **Key Deliverable:** child() accepts Partial<LogEntry> while maintaining backward compatibility with string argument.
116
-
117
- ---
118
-
119
- #### P1.M2: Major Fixes - Concurrent Execution & Error Handling (3 Tasks, 11 Subtasks)
120
- **Focus:** Promise.all replacement and ErrorMergeStrategy implementation
121
-
122
- **Task 1:** Replace Promise.all with Promise.allSettled
123
- - S1: Analyze current implementation (1 SP)
124
- - S2: Implement Promise.allSettled (2 SP)
125
- - S3: Add concurrent failure tests (2 SP)
126
- - S4: Run full test suite (1 SP)
127
-
128
- **Task 2:** Implement ErrorMergeStrategy Support
129
- - S1: Add to TaskOptions interface (1 SP)
130
- - S2: Implement aggregation logic (2 SP)
131
- - S3: Create default merger (1 SP)
132
- - S4: Add tests (2 SP)
133
-
134
- **Task 3:** Document trackTiming Default
135
- - S1: Locate PRD section (1 SP)
136
- - S2: Update documentation (1 SP)
137
-
138
- **Story Points:** 14
139
-
140
- **Key Deliverable:** Concurrent tasks use Promise.allSettled with opt-in error aggregation via ErrorMergeStrategy.
141
-
142
- ---
143
-
144
- #### P1.M3: Minor Fixes - Logging & Performance (4 Tasks, 11 Subtasks)
145
- **Focus:** Observer error handling, performance optimizations, validation
146
-
147
- **Task 1:** Replace console.error with Logger
148
- - S1: Find all console.error calls (1 SP)
149
- - S2: Replace with logger.error (2 SP)
150
- - S3: Add tests (1 SP)
151
-
152
- **Task 2:** Optimize Tree Debugger Node Map
153
- - S1: Analyze onTreeChanged (1 SP)
154
- - S2: Implement incremental updates (2 SP)
155
- - S3: Add benchmarks (1 SP)
156
-
157
- **Task 3:** Add Workflow Name Validation
158
- - S1: Determine requirements (1 SP)
159
- - S2: Implement validation (1 SP)
160
- - S3: Add tests (1 SP)
161
-
162
- **Task 4:** Consider Exposing isDescendantOf
163
- - S1: Evaluate use cases (1 SP)
164
- - S2: Implement if approved (1 SP)
165
- - S3: Add tests (1 SP)
166
-
167
- **Story Points:** 14
168
-
169
- **Key Deliverable:** Observer errors use logger, tree debugger has incremental updates, optional name validation.
170
-
171
- ---
172
-
173
- #### P1.M4: Validation & Documentation (3 Tasks, 7 Subtasks)
174
- **Focus:** Testing, documentation, and backward compatibility
175
-
176
- **Task 1:** Run Full Test Suite
177
- - S1: Execute tests (1 SP)
178
- - S2: Fix failures (2 SP)
179
-
180
- **Task 2:** Create Bug Fix Summary
181
- - S1: Document fixes (2 SP)
182
- - S2: Update changelog (1 SP)
183
-
184
- **Task 3:** Verify Backward Compatibility
185
- - S1: Audit breaking changes (1 SP)
186
- - S2: Add compatibility tests (2 SP)
187
-
188
- **Story Points:** 9
189
-
190
- **Key Deliverable:** All tests pass, complete documentation, backward compatibility verified.
191
-
192
- ---
193
-
194
- ## Total Project Metrics
195
-
196
- - **Total Story Points:** 43
197
- - **Estimated Effort:** ~2-3 weeks (1 developer)
198
- - **Critical Issues:** 1 fixed
199
- - **Major Issues:** 3 fixed
200
- - **Minor Issues:** 5 fixed (2 evaluated, may not implement)
201
- - **Test Coverage:** 344+ existing tests maintained
202
- - **Documentation:** 3 architecture docs (70KB) + task breakdown (36KB)
203
-
204
- ---
205
-
206
- ## Risk Assessment
207
-
208
- ### High Risk Items
209
- 1. **WorkflowLogger.child() signature change** - Public API change, requires careful backward compatibility
210
- 2. **Promise.all to Promise.allSettled** - Changes concurrent execution semantics, may break existing error handling expectations
211
-
212
- ### Medium Risk Items
213
- 1. **ErrorMergeStrategy implementation** - New feature added to existing codebase, requires thorough testing
214
- 2. **Observer error handling** - Changes internal error flow, may affect debugging workflows
215
-
216
- ### Low Risk Items
217
- 1. **Documentation updates** - No code changes
218
- 2. **Performance optimizations** - Implementation detail, doesn't change behavior
219
- 3. **Validation additions** - Only affects previously invalid inputs
220
-
221
- ---
222
-
223
- ## Migration Considerations
224
-
225
- ### Breaking Changes
226
- 1. **WorkflowLogger.child() signature**
227
- - Old: `child(parentLogId: string)`
228
- - New: `child(meta: Partial<LogEntry>)`
229
- - Migration: String argument still works (backward compatible), but users should migrate to Partial<LogEntry> for new features
230
-
231
- ### Non-Breaking Changes
232
- 1. **Promise.allSettled** - Behavior change but API unchanged
233
- 2. **ErrorMergeStrategy** - Opt-in new feature
234
- 3. **Observer error logging** - Internal implementation detail
235
- 4. **Tree debugger optimization** - Performance improvement, behavior unchanged
236
-
237
- ---
238
-
239
- ## Testing Strategy
240
-
241
- ### Existing Tests
242
- - **344 tests** - All must continue passing
243
- - **100% pass rate** - Quality gate for completion
244
- - **Adversarial tests** - Edge case coverage already exists
245
-
246
- ### New Tests Required
247
- 1. **WorkflowLogger.child()** - 4 test scenarios
248
- 2. **Concurrent failures** - 4 test scenarios
249
- 3. **ErrorMergeStrategy** - 3 test scenarios
250
- 4. **Observer error logging** - 2 test scenarios
251
- 5. **Tree debugger performance** - Benchmark tests
252
- 6. **Name validation** - 3 test scenarios (if implemented)
253
- 7. **Backward compatibility** - Migration path tests
254
-
255
- ### Test Execution
256
- ```bash
257
- # Run all tests
258
- npm test
259
-
260
- # Run specific test suites
261
- npm test -- logger
262
- npm test -- concurrent
263
- npm test -- error-merge
264
- ```
265
-
266
- ---
267
-
268
- ## Implementation Order Recommendation
269
-
270
- ### Phase 1: Critical Fixes (Week 1, Days 1-2)
271
- 1. Fix WorkflowLogger.child() signature
272
- 2. Verify backward compatibility
273
- 3. Update PRD documentation for trackTiming
274
-
275
- ### Phase 2: Major Fixes (Week 1, Days 3-5)
276
- 1. Implement Promise.allSettled
277
- 2. Add ErrorMergeStrategy support
278
- 3. Test concurrent execution scenarios
279
-
280
- ### Phase 3: Minor Fixes (Week 2, Days 1-3)
281
- 1. Replace console.error with logger
282
- 2. Optimize tree debugger
283
- 3. Evaluate name validation and isDescendantOf
284
-
285
- ### Phase 4: Validation (Week 2, Days 4-5)
286
- 1. Full test suite execution
287
- 2. Documentation and changelog
288
- 3. Backward compatibility verification
289
-
290
- ---
291
-
292
- ## Success Criteria
293
-
294
- ### Must Have (Blocking)
295
- - ✅ All 344 existing tests pass
296
- - ✅ All critical bugs fixed (child() signature)
297
- - ✅ All major bugs fixed (Promise.allSettled, ErrorMergeStrategy)
298
- - ✅ No regressions introduced
299
- - ✅ Backward compatibility maintained
300
-
301
- ### Should Have (Important)
302
- - ✅ Observer errors use logger
303
- - ✅ Tree debugger performance optimized
304
- - ✅ Complete documentation and changelog
305
- - ✅ Comprehensive test coverage for new features
306
-
307
- ### Could Have (Nice to Have)
308
- - ⚠️ Workflow name validation (decision pending)
309
- - ⚠️ Public isDescendantOf API (decision pending)
310
-
311
- ---
312
-
313
- ## Next Steps
314
-
315
- 1. **Review this research summary** with stakeholders
316
- 2. **Approve task breakdown** in `bug_fix_tasks.json`
317
- 3. **Begin implementation** starting with P1.M1 (Critical Fixes)
318
- 4. **Track progress** using task IDs (e.g., P1.M1.T1.S1)
319
- 5. **Update research docs** if implementation reveals new information
320
-
321
- ---
322
-
323
- ## Appendix: File Locations
324
-
325
- ### Research Documents
326
- - `plan/bugfix/architecture/codebase_structure.md` - Codebase mapping
327
- - `plan/bugfix/architecture/error_handling_patterns.md` - Error analysis
328
- - `plan/bugfix/architecture/concurrent_execution_best_practices.md` - Best practices
329
- - `plan/bugfix/RESEARCH_SUMMARY.md` - This document
330
-
331
- ### Implementation Artifacts
332
- - `./bug_fix_tasks.json` - Complete task breakdown (USE THIS FILE)
333
-
334
- ### Source Files Referenced
335
- - `src/core/logger.ts:84` - child() method
336
- - `src/decorators/task.ts:112` - Promise.all usage
337
- - `src/types/error-strategy.ts` - ErrorMergeStrategy interface
338
- - `src/decorators/step.ts:94` - trackTiming default
339
- - `src/core/workflow.ts:376,124-139` - Observer errors and getRootObservers
340
- - `src/debugger/tree-debugger.ts:80-84` - Tree rebuild logic
341
-
342
- ---
343
-
344
- **Document Status:** ✅ Complete
345
- **Ready for Implementation:** ✅ Yes
346
- **Task Breakdown Available:** ✅ Yes (`./bug_fix_tasks.json`)
@@ -1,311 +0,0 @@
1
- # Codebase Structure Analysis - Hierarchical Workflow Engine
2
-
3
- ## 1. Directory Structure Overview
4
-
5
- ```
6
- /home/dustin/projects/groundswell/
7
- ├── src/
8
- │ ├── core/ # Core workflow engine
9
- │ │ ├── workflow.ts # Main Workflow class
10
- │ │ ├── logger.ts # WorkflowLogger
11
- │ │ ├── agent.ts # Agent class
12
- │ │ ├── prompt.ts # Prompt class
13
- │ │ ├── context.ts # Execution context
14
- │ │ ├── workflow-context.ts
15
- │ │ ├── event-tree.ts # Event tree implementation
16
- │ │ ├── factory.ts # Factory functions
17
- │ │ └── mcp-handler.ts # MCP (Model Context Protocol) handler
18
- │ ├── decorators/ # Decorator implementations
19
- │ │ ├── step.ts # @Step decorator
20
- │ │ ├── task.ts # @Task decorator
21
- │ │ └── observed-state.ts # @ObservedState decorator
22
- │ ├── types/ # TypeScript type definitions
23
- │ │ ├── workflow.ts # WorkflowNode, WorkflowStatus
24
- │ │ ├── error.ts # WorkflowError interface
25
- │ │ ├── error-strategy.ts # ErrorMergeStrategy
26
- │ │ ├── observer.ts # WorkflowObserver interface
27
- │ │ ├── events.ts # WorkflowEvent discriminated union
28
- │ │ ├── logging.ts # LogEntry, LogLevel
29
- │ │ ├── decorators.ts # StepOptions, TaskOptions
30
- │ │ └── index.ts # Type exports
31
- │ ├── debugger/ # Debugging tools
32
- │ │ └── tree-debugger.ts # WorkflowTreeDebugger
33
- │ ├── cache/ # Caching system
34
- │ │ ├── cache.ts # LLMCache
35
- │ │ └── cache-key.ts # Cache key generation
36
- │ ├── reflection/ # Reflection system
37
- │ │ └── reflection.ts # ReflectionManager
38
- │ ├── tools/ # Introspection tools
39
- │ │ └── introspection.ts
40
- │ ├── utils/ # Utilities
41
- │ │ ├── id.ts # generateId()
42
- │ │ └── observable.ts # Observable class
43
- │ ├── __tests__/ # Test suites
44
- │ │ ├── unit/
45
- │ │ ├── integration/
46
- │ │ └── adversarial/ # Edge case and stress tests
47
- │ └── index.ts # Main exports
48
- ├── examples/ # Example workflows
49
- ├── docs/ # Documentation
50
- └── package.json # Project configuration
51
- ```
52
-
53
- ## 2. Key Files and Their Responsibilities
54
-
55
- | File | Responsibility |
56
- |------|----------------|
57
- | `src/core/workflow.ts` | Main Workflow class supporting both class-based (subclass with run()) and functional (executor) patterns. Manages parent-child relationships, observers, event emission, and tree structure validation. |
58
- | `src/core/logger.ts` | WorkflowLogger class that emits log entries to workflow nodes and observers with hierarchical logging support via child() method. |
59
- | `src/decorators/step.ts` | @Step decorator that wraps methods to emit stepStart/stepEnd events, track timing, handle errors, and optionally snapshot state. |
60
- | `src/decorators/task.ts` | @Task decorator that wraps methods returning child workflows, automatically attaches them, and supports concurrent execution. |
61
- | `src/decorators/observed-state.ts` | @ObservedState decorator for marking fields to include in state snapshots with support for redaction and hiding. |
62
- | `src/debugger/tree-debugger.ts` | WorkflowTreeDebugger observer that builds node lookup maps and renders ASCII tree visualizations. |
63
- | `src/types/error.ts` | WorkflowError interface containing message, original error, workflowId, stack, state snapshot, and logs. |
64
- | `src/types/error-strategy.ts` | ErrorMergeStrategy interface for merging multiple errors from concurrent operations. |
65
- | `src/types/observer.ts` | WorkflowObserver interface defining onLog, onEvent, onStateUpdated, and onTreeChanged methods. |
66
- | `src/utils/observable.ts` | Lightweight Observable implementation for event streaming with subscription management. |
67
- | `src/utils/id.ts` | generateId() utility using crypto.randomUUID with timestamp fallback. |
68
-
69
- ## 3. Bug Report Claim Validation
70
-
71
- | Claim | Location | Status | Evidence |
72
- |-------|----------|--------|----------|
73
- | **WorkflowLogger.child() signature** | `src/core/logger.ts:84` | ✅ **CONFIRMED** | Line 84: `child(parentLogId: string): WorkflowLogger {` - Returns new WorkflowLogger with parentLogId passed to constructor |
74
- | **Concurrent task execution** | `src/decorators/task.ts:112` | ✅ **CONFIRMED** | Line 112: `await Promise.all(runnable.map((w) => w.run()));` - Executes runnable workflows in parallel when `opts.concurrent` is true |
75
- | **ErrorMergeStrategy definition** | `src/types/error-strategy.ts` | ✅ **CONFIRMED** | File exists with interface defining `enabled: boolean`, `maxMergeDepth?: number`, and `combine?(errors: WorkflowError[]): WorkflowError` |
76
- | **trackTiming default** | `src/decorators/step.ts:94` | ✅ **CONFIRMED** | Line 94: `if (opts.trackTiming !== false)` - Default is true (timing tracked unless explicitly disabled) |
77
- | **Observer error handling** | `src/core/workflow.ts:376` | ✅ **CONFIRMED** | Lines 367-377: Observer callbacks wrapped in try-catch with `console.error('Observer onEvent error:', err);` at line 376 |
78
- | **getRootObservers method** | `src/core/workflow.ts:124-139` | ✅ **CONFIRMED** | Lines 124-139: Private method traversing parent chain with cycle detection using visited Set |
79
- | **Tree debugger node map** | `src/debugger/tree-debugger.ts:80-84` | ✅ **CONFIRMED** | Lines 80-84: onTreeChanged() clears nodeMap and calls buildNodeMap(root); buildNodeMap() at line 54 uses `this.nodeMap.set(node.id, node);` |
80
-
81
- **All 7 bug report claims are VALID and the code exists exactly as stated.**
82
-
83
- ## 4. Decorator System Pattern
84
-
85
- The codebase uses **standard ECMAScript Stage 3 Decorators** (not legacy TypeScript decorators).
86
-
87
- ### Pattern Structure
88
-
89
- All decorators follow this pattern:
90
- ```typescript
91
- export function DecoratorName(opts: Options = {}) {
92
- return function <This, Args extends unknown[], Return>(
93
- originalMethod: (this: This, ...args: Args) => Promise<Return>,
94
- context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Promise<Return>>
95
- ) {
96
- // CRITICAL: Use regular function, not arrow function
97
- async function wrapper(this: This, ...args: Args): Promise<Return> {
98
- // Cast to WorkflowLike for accessing workflow properties
99
- const wf = this as unknown as WorkflowLike;
100
-
101
- // Pre-processing (emit events, capture start time)
102
-
103
- const result = await originalMethod.call(this, ...args);
104
-
105
- // Post-processing (emit events, attach children, etc.)
106
-
107
- return result;
108
- }
109
-
110
- return wrapper;
111
- };
112
- }
113
- ```
114
-
115
- ### Key Design Decisions
116
-
117
- 1. **Regular function over arrow functions** - Preserves `this` binding for instance access
118
- 2. **WorkflowLike interface casting** - Enables duck-typing for workflow-like objects
119
- 3. **Lenient validation** - Non-workflow returns are silently skipped rather than throwing
120
- 4. **Event emission pattern** - All decorators emit events via `wf.emitEvent()`
121
-
122
- ## 5. Error Class Hierarchy
123
-
124
- ```
125
- WorkflowError (interface)
126
- ├── message: string
127
- ├── original: unknown // Original thrown error
128
- ├── workflowId: string // ID where error occurred
129
- ├── stack?: string // Stack trace if available
130
- ├── state: SerializedWorkflowState // State snapshot at error time
131
- └── logs: LogEntry[] // Logs from failing node
132
-
133
- ErrorMergeStrategy (interface)
134
- ├── enabled: boolean // Enable error merging (default: false)
135
- ├── maxMergeDepth?: number // Maximum depth to merge errors
136
- └── combine?(errors: WorkflowError[]): WorkflowError // Custom combiner
137
- ```
138
-
139
- Error handling flow:
140
- 1. Errors caught in decorator wrappers (@Step, @Task)
141
- 2. Enriched with workflow context (state, logs, workflowId)
142
- 3. Emitted as 'error' events to observers
143
- 4. Re-thrown for upstream handling
144
-
145
- ## 6. Observer Pattern Implementation
146
-
147
- ### Observer Interface
148
-
149
- ```typescript
150
- interface WorkflowObserver {
151
- onLog(entry: LogEntry): void;
152
- onEvent(event: WorkflowEvent): void;
153
- onStateUpdated(node: WorkflowNode): void;
154
- onTreeChanged(root: WorkflowNode): void;
155
- }
156
- ```
157
-
158
- ### Observer Management
159
-
160
- - **Registration**: `workflow.addObserver(observer)` - Only allowed on root workflows
161
- - **Storage**: Private `observers: WorkflowObserver[]` array on root workflow
162
- - **Propagation**: Child workflows access root observers via `getRootObservers()` method
163
- - **Error isolation**: All observer callbacks wrapped in try-catch to prevent observer failures from affecting workflow execution
164
-
165
- ### Event Flow
166
-
167
- ```
168
- Workflow.emitEvent()
169
- ├── Push to node.events array
170
- ├── Get observers via getRootObservers()
171
- └── For each observer:
172
- ├── Call onEvent(event)
173
- ├── Call onTreeChanged(root) if tree update event
174
- └── Catch and log errors (console.error)
175
- ```
176
-
177
- ### Key Implementation Details
178
-
179
- 1. **Root-only observers**: Observers can only be added to root workflows (throws error if parent exists)
180
- 2. **Cycle-safe traversal**: `getRootObservers()` uses visited Set to detect circular parent-child relationships
181
- 3. **Lazy initialization**: Logger created with root observers in constructor
182
- 4. **Multiple observer types**: WorkflowTreeDebugger, custom observers can be attached
183
-
184
- ## 7. Logger Architecture
185
-
186
- ### WorkflowLogger Class
187
-
188
- ```typescript
189
- class WorkflowLogger {
190
- private readonly parentLogId?: string;
191
-
192
- constructor(
193
- private readonly node: WorkflowNode,
194
- private readonly observers: WorkflowObserver[],
195
- parentLogId?: string
196
- )
197
-
198
- // Logging methods
199
- debug(message: string, data?: unknown): void
200
- info(message: string, data?: unknown): void
201
- warn(message: string, data?: unknown): void
202
- error(message: string, data?: unknown): void
203
-
204
- // Hierarchical logging
205
- child(parentLogId: string): WorkflowLogger
206
- }
207
- ```
208
-
209
- ### Log Entry Structure
210
-
211
- ```typescript
212
- interface LogEntry {
213
- id: string; // Unique identifier
214
- workflowId: string; // Workflow that created log
215
- timestamp: number; // Unix timestamp in ms
216
- level: LogLevel; // 'debug' | 'info' | 'warn' | 'error'
217
- message: string; // Log message
218
- data?: unknown; // Optional structured data
219
- parentLogId?: string; // Parent log ID for hierarchy
220
- }
221
- ```
222
-
223
- ### Logging Flow
224
-
225
- 1. Log method called → `log(level, message, data)`
226
- 2. LogEntry created with metadata and parentLogId if child logger
227
- 3. Entry pushed to `node.logs` array
228
- 4. All observers notified via `obs.onLog(entry)`
229
- 5. Observer errors caught and logged to console
230
-
231
- ### Key Features
232
-
233
- - **Hierarchical logging**: `child()` method creates logger with parentLogId reference
234
- - **Observer broadcast**: All log entries sent to all root observers
235
- - **Error isolation**: Observer onLog errors don't stop logging
236
- - **Timestamp tracking**: Automatic timestamp generation
237
-
238
- ## 8. Additional Architecture Patterns
239
-
240
- ### Dual Tree Architecture
241
-
242
- The codebase maintains **two synchronized tree structures**:
243
-
244
- 1. **Workflow Tree**: `workflow.children` array (Workflow class instances)
245
- 2. **Node Tree**: `node.children` array (WorkflowNode data structures)
246
-
247
- This 1:1 mirror is maintained in:
248
- - `attachChild()`: Adds to both trees and sets parent references
249
- - `detachChild()`: Removes from both trees and clears parent references
250
-
251
- ### Cycle Detection
252
-
253
- Three methods use visited Set pattern for cycle detection:
254
-
255
- 1. `getRootObservers()` - Lines 124-139
256
- 2. `isDescendantOf()` - Lines 151-169 (private helper for attachChild validation)
257
- 3. `getRoot()` - Lines 175-190
258
-
259
- All throw `'Circular parent-child relationship detected'` if cycle found.
260
-
261
- ### Event Types
262
-
263
- The discriminated union includes 17+ event types:
264
- - Core: childAttached, childDetached, stateSnapshot, stepStart, stepEnd, error, taskStart, taskEnd, treeUpdated
265
- - Agent: agentPromptStart, agentPromptEnd
266
- - Tools: toolInvocation, mcpEvent
267
- - Reflection: reflectionStart, reflectionEnd
268
- - Cache: cacheHit, cacheMiss
269
-
270
- ## 9. Testing Strategy
271
-
272
- The test suite is organized into:
273
-
274
- - **Unit tests**: Individual component testing
275
- - **Integration tests**: Multi-component workflows
276
- - **Adversarial tests**: Edge cases, circular references, deep hierarchies, PRD compliance
277
-
278
- Test coverage includes:
279
- - Decorator behavior
280
- - Tree mirroring (workflow/node tree consistency)
281
- - Reparenting workflows
282
- - Observer propagation
283
- - attachChild/detachChild validation
284
- - Circular reference detection
285
- - Performance benchmarks (attachChild performance)
286
-
287
- ## 10. Dependencies
288
-
289
- **Core Runtime**:
290
- - `@anthropic-ai/sdk` ^0.71.1 - Anthropic Claude API
291
- - `zod` ^3.23.0 - Schema validation
292
- - `lru-cache` ^10.4.3 - LLM response caching
293
-
294
- **Development**:
295
- - `typescript` ^5.2.0 - Stage 3 decorators support
296
- - `vitest` ^1.0.0 - Testing framework
297
- - `tsx` ^4.21.0 - TypeScript execution
298
-
299
- ## Summary
300
-
301
- The Hierarchical Workflow Engine is a well-architected TypeScript library that provides:
302
-
303
- 1. **Validated bug report claims** - All 7 claims confirmed accurate
304
- 2. **Modern decorator pattern** - ECMAScript Stage 3 decorators with proper `this` preservation
305
- 3. **Robust observer system** - Root-based observer management with error isolation
306
- 4. **Dual tree architecture** - Synchronized workflow and node trees with cycle detection
307
- 5. **Rich error context** - WorkflowError includes state snapshots and logs
308
- 6. **Hierarchical logging** - Parent-child log relationships via child() method
309
- 7. **Comprehensive tooling** - Debugger, caching, reflection, and introspection
310
-
311
- The codebase demonstrates strong engineering practices with clear separation of concerns, extensive type safety, and thorough test coverage including adversarial test cases.