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,518 +0,0 @@
1
- # Product Requirement Prompt (PRP): Default Error Merger Implementation
2
-
3
- **Work Item:** P1.M2.T2.S3 - Create default error merger implementation
4
-
5
- ---
6
-
7
- ## Goal
8
-
9
- **Feature Goal:** Extract and modularize the error merging logic from `src/decorators/task.ts` into a reusable utility function for concurrent workflow error aggregation.
10
-
11
- **Deliverable:** A standalone `mergeWorkflowErrors()` utility function exported from `src/utils/workflow-error-utils.ts` that aggregates multiple `WorkflowError` objects into a single merged error.
12
-
13
- **Success Definition:**
14
- 1. `mergeWorkflowErrors()` function is created and exported from `src/utils/workflow-error-utils.ts`
15
- 2. The function aggregates errors according to the specification in `plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md`
16
- 3. The existing `defaultErrorMerger` in `src/decorators/task.ts` is replaced with an import from the new utility
17
- 4. Tests pass validating the merge behavior
18
- 5. The function is exported from `src/utils/index.ts` and `src/index.ts` for public API access
19
-
20
- ## Why
21
-
22
- - **Maintainability:** Error merging logic currently lives inline in the Task decorator. Extracting it to a utility enables reuse and independent testing.
23
- - **Testability:** A standalone function is easier to unit test than inline decorator logic.
24
- - **API Completeness:** Users may want to merge errors programmatically for custom error handling scenarios.
25
- - **Consistency:** Other utilities (generateId, Observable) live in `src/utils/`, making this the correct home for error utilities.
26
- - **Previous Work:** The `defaultErrorMerger` function already exists in `src/decorators/task.ts` (lines 23-56) with a comment indicating it should be extracted in this subtask.
27
-
28
- ## What
29
-
30
- Create a `mergeWorkflowErrors()` utility function that:
31
-
32
- 1. **Accepts:** An array of `WorkflowError` objects, task name, parent workflow ID, and total children count
33
- 2. **Aggregates:**
34
- - Message: `"X of Y concurrent child workflows failed in task 'taskName'"`
35
- - All unique workflow IDs that failed
36
- - All logs from all errors (flattened)
37
- - First error's stack trace
38
- - First error's state snapshot
39
- - Original errors array in the `original` field with metadata
40
- 3. **Returns:** A single merged `WorkflowError` object
41
-
42
- ### Success Criteria
43
-
44
- - [ ] `mergeWorkflowErrors()` function created in `src/utils/workflow-error-utils.ts`
45
- - [ ] Function aggregates messages with count and task name
46
- - [ ] Function collects unique failed workflow IDs
47
- - [ ] Function flattens all logs arrays
48
- - [ ] Function uses first error's stack and state
49
- - [ ] Function includes original errors array in metadata
50
- - [ ] Function exported from `src/utils/index.ts`
51
- - [ ] Function exported from `src/index.ts`
52
- - [ ] `defaultErrorMerger` in `src/decorators/task.ts` replaced with import
53
- - [ ] Unit tests created and passing
54
- - [ ] Existing tests still pass (no regressions)
55
-
56
- ---
57
-
58
- ## All Needed Context
59
-
60
- ### Context Completeness Check
61
-
62
- **No Prior Knowledge Test:** If someone knew nothing about this codebase, they would have:
63
- - The exact `WorkflowError` interface structure
64
- - The exact `ErrorMergeStrategy` interface structure
65
- - The existing `defaultErrorMerger` implementation to reference
66
- - Test patterns used in the codebase
67
- - File locations and naming conventions
68
- - Export patterns from the main index
69
-
70
- ### Documentation & References
71
-
72
- ```yaml
73
- # MUST READ - Include these in your context window
74
- - file: /home/dustin/projects/groundswell/src/types/error.ts
75
- why: Defines WorkflowError interface with all required fields (message, original, workflowId, stack, state, logs)
76
- critical: The merge function must return a WorkflowError that matches this interface exactly
77
-
78
- - file: /home/dustin/projects/groundswell/src/types/error-strategy.ts
79
- why: Defines ErrorMergeStrategy interface for understanding the merge strategy pattern
80
- gotcha: The combine() function signature takes WorkflowError[] and returns WorkflowError
81
-
82
- - file: /home/dustin/projects/groundswell/src/decorators/task.ts (lines 18-56)
83
- why: Contains the existing defaultErrorMerger implementation that should be extracted
84
- pattern: Use this as the reference implementation - it already implements the required merge logic
85
- gotcha: The comment on line 21 explicitly states "This will be extracted to src/utils/error-merger.ts in P1.M2.T2.S3"
86
- critical: This is the source implementation - copy the logic structure exactly
87
-
88
- - file: /home/dustin/projects/groundswell/src/decorators/task.ts (lines 160-177)
89
- why: Shows how defaultErrorMerger is currently called - maintain this call signature
90
- pattern: defaultErrorMerger(errors, taskName, parentWorkflowId, totalChildren)
91
-
92
- - file: /home/dustin/projects/groundswell/src/utils/index.ts
93
- why: Shows the export pattern for utils - add mergeWorkflowErrors export here
94
- pattern: export { generateId } from './id.js'; - follow this pattern
95
-
96
- - file: /home/dustin/projects/groundswell/src/index.ts (lines 84-86)
97
- why: Shows how utils are re-exported from main index
98
- pattern: export { generateId } from './utils/id.js'; - follow this pattern
99
-
100
- - file: /home/dustin/projects/groundswell/src/types/logging.ts
101
- why: Defines LogEntry type which is used in WorkflowError.logs array
102
- gotcha: logs is LogEntry[] - use flatMap to flatten multiple log arrays
103
-
104
- - file: /home/dustin/projects/groundswell/src/types/snapshot.ts
105
- why: Defines SerializedWorkflowState type used in WorkflowError.state
106
- gotcha: state is Record<string, unknown> - use first error's state or empty object
107
-
108
- - file: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md (lines 207-217)
109
- why: Contains the recommended default merger implementation from architecture doc
110
- critical: This documents the intended merge behavior per the PRD specification
111
-
112
- - docfile: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md (lines 72-90)
113
- why: Documents Issue 3 about Missing Error Merge Strategy Implementation
114
- section: "### Issue 3: Missing Error Merge Strategy Implementation"
115
- ```
116
-
117
- ### Current Codebase Tree (relevant portions)
118
-
119
- ```bash
120
- src/
121
- ├── core/
122
- │ └── workflow.ts # Workflow class, error handling
123
- ├── decorators/
124
- │ ├── index.ts
125
- │ └── task.ts # Contains defaultErrorMerger (lines 23-56) - TO BE EXTRACTED
126
- ├── types/
127
- │ ├── index.ts # Exports WorkflowError, ErrorMergeStrategy
128
- │ ├── error.ts # WorkflowError interface
129
- │ ├── error-strategy.ts # ErrorMergeStrategy interface
130
- │ ├── logging.ts # LogEntry type
131
- │ └── snapshot.ts # SerializedWorkflowState type
132
- ├── utils/
133
- │ ├── id.ts # generateId utility
134
- │ ├── observable.ts # Observable utility
135
- │ └── index.ts # Exports from utils module
136
- └── index.ts # Main export file
137
- ```
138
-
139
- ### Desired Codebase Tree (files to be added)
140
-
141
- ```bash
142
- src/
143
- ├── utils/
144
- │ ├── workflow-error-utils.ts # NEW - mergeWorkflowErrors function
145
- │ └── index.ts # MODIFY - Add export for mergeWorkflowErrors
146
- ├── decorators/
147
- │ └── task.ts # MODIFY - Import mergeWorkflowErrors, remove inline defaultErrorMerger
148
- └── index.ts # MODIFY - Add re-export of mergeWorkflowErrors
149
- ```
150
-
151
- ### Known Gotchas of Our Codebase & Library Quirks
152
-
153
- ```typescript
154
- // CRITICAL: TypeScript ES modules - use .js extensions in imports
155
- // Even though source files are .ts, imports use .js extension
156
- // Example: import { WorkflowError } from './types/error.js';
157
-
158
- // CRITICAL: The existing defaultErrorMerger includes metadata in the 'original' field
159
- // This metadata (name, message, errors, totalChildren, failedChildren, failedWorkflowIds)
160
- // should be preserved in the extracted function
161
-
162
- // GOTCHA: WorkflowError.original is typed as 'unknown' - the metadata object
163
- // must be cast with 'as unknown' to satisfy the type checker
164
-
165
- // PATTERN: Use flatMap for flattening logs arrays
166
- // allLogs = errors.flatMap((e) => e.logs);
167
-
168
- // PATTERN: Use Set to get unique workflow IDs
169
- // failedWorkflowIds = [...new Set(errors.map((e) => e.workflowId))];
170
-
171
- // GOTCHA: stack and state are optional fields - use optional chaining
172
- // stack: errors[0]?.stack
173
- // state: errors[0]?.state || ({} as SerializedWorkflowState)
174
- ```
175
-
176
- ---
177
-
178
- ## Implementation Blueprint
179
-
180
- ### Data Models and Structure
181
-
182
- The `WorkflowError` interface is already defined in `src/types/error.ts`:
183
-
184
- ```typescript
185
- export interface WorkflowError {
186
- message: string; // Error message
187
- original: unknown; // Original thrown error (will contain metadata object)
188
- workflowId: string; // ID of workflow where error occurred
189
- stack?: string; // Stack trace if available
190
- state: SerializedWorkflowState; // State snapshot at time of error
191
- logs: LogEntry[]; // Logs from the failing workflow node
192
- }
193
- ```
194
-
195
- ### Implementation Tasks (ordered by dependencies)
196
-
197
- ```yaml
198
- Task 1: CREATE src/utils/workflow-error-utils.ts
199
- - IMPLEMENT: mergeWorkflowErrors function with exact signature from existing defaultErrorMerger
200
- - FUNCTION SIGNATURE: mergeWorkflowErrors(errors: WorkflowError[], taskName: string, parentWorkflowId: string, totalChildren: number): WorkflowError
201
- - COPY logic from: src/decorators/task.ts lines 23-56 (defaultErrorMerger function)
202
- - IMPORT types: WorkflowError from '../types/error.js', SerializedWorkflowState from '../types/snapshot.js'
203
- - MERGE LOGIC:
204
- - message: "${errors.length} of ${totalChildren} concurrent child workflows failed in task '${taskName}'"
205
- - failedWorkflowIds: [...new Set(errors.map((e) => e.workflowId))]
206
- - allLogs: errors.flatMap((e) => e.logs)
207
- - stack: errors[0]?.stack (first error's stack)
208
- - state: errors[0]?.state || ({} as SerializedWorkflowState) (first error's state)
209
- - original: metadata object with name, message, errors, totalChildren, failedChildren, failedWorkflowIds
210
- - NAMING: camelCase for function, snake_case for imports
211
- - PLACEMENT: New file in src/utils/
212
- - JSDOC: Add documentation explaining the merge behavior
213
-
214
- Task 2: MODIFY src/utils/index.ts
215
- - ADD export: export { mergeWorkflowErrors } from './workflow-error-utils.js';
216
- - PRESERVE: All existing exports (generateId, Observable)
217
- - PATTERN: Follow existing export pattern - one export per line
218
-
219
- Task 3: MODIFY src/decorators/task.ts
220
- - ADD import: import { mergeWorkflowErrors } from '../utils/workflow-error-utils.js';
221
- - REMOVE: defaultErrorMerger function definition (lines 18-56)
222
- - REPLACE: All references to 'defaultErrorMerger' with 'mergeWorkflowErrors'
223
- - FIND: Line 167 where defaultErrorMerger is called
224
- - PRESERVE: All other Task decorator logic unchanged
225
- - VERIFY: No other references to defaultErrorMerger exist
226
-
227
- Task 4: MODIFY src/index.ts
228
- - ADD export: export { mergeWorkflowErrors } from './utils/workflow-error-utils.js';
229
- - PLACEMENT: In the utilities section (after line 86, near generateId export)
230
- - PRESERVE: All existing exports
231
-
232
- Task 5: CREATE src/__tests__/unit/utils/workflow-error-utils.test.ts
233
- - IMPLEMENT: Unit tests for mergeWorkflowErrors function
234
- - TEST CASES:
235
- - Single error (returns error with count 1)
236
- - Multiple errors with unique workflow IDs
237
- - Multiple errors with duplicate workflow IDs
238
- - Empty errors array (edge case - should handle gracefully)
239
- - Logs aggregation (flatMap behavior)
240
- - Stack trace selection (first error's stack)
241
- - State selection (first error's state)
242
- - Metadata object structure in original field
243
- - FOLLOW pattern: src/__tests__/unit/decorators.test.ts (test structure and patterns)
244
- - NAMING: test files use *.test.ts suffix
245
- - FRAMEWORK: Vitest - use describe, it, expect from 'vitest'
246
- - PLACEMENT: Test file alongside the code it tests in src/__tests__/unit/utils/
247
-
248
- Task 6: VERIFY existing tests still pass
249
- - RUN: npm test (or uv run vitest run)
250
- - CHECK: All 344 existing tests still pass
251
- - NO regressions: The change is a refactoring - behavior should be identical
252
- ```
253
-
254
- ### Implementation Patterns & Key Details
255
-
256
- ```typescript
257
- // ============================================================================
258
- // CRITICAL: Function signature (must match defaultErrorMerger exactly)
259
- // ============================================================================
260
- /**
261
- * Merge multiple WorkflowError objects into a single aggregated error
262
- * This is the default merger used when errorMergeStrategy is enabled
263
- *
264
- * @param errors - Array of WorkflowError objects to merge
265
- * @param taskName - Name of the task that spawned the concurrent workflows
266
- * @param parentWorkflowId - ID of the parent workflow
267
- * @param totalChildren - Total number of child workflows that were spawned
268
- * @returns A merged WorkflowError containing aggregated information
269
- */
270
- export function mergeWorkflowErrors(
271
- errors: WorkflowError[],
272
- taskName: string,
273
- parentWorkflowId: string,
274
- totalChildren: number
275
- ): WorkflowError
276
-
277
- // ============================================================================
278
- // PATTERN: Message construction with count and task name
279
- // ============================================================================
280
- const message = `${errors.length} of ${totalChildren} concurrent child workflows failed in task '${taskName}'`;
281
-
282
- // ============================================================================
283
- // PATTERN: Unique workflow IDs using Set
284
- // ============================================================================
285
- const failedWorkflowIds = [...new Set(errors.map((e) => e.workflowId))];
286
-
287
- // ============================================================================
288
- // PATTERN: Flatten logs arrays using flatMap
289
- // ============================================================================
290
- const allLogs = errors.flatMap((e) => e.logs);
291
-
292
- // ============================================================================
293
- // PATTERN: First error's stack and state with optional chaining
294
- // ============================================================================
295
- stack: errors[0]?.stack,
296
- state: errors[0]?.state || ({} as SerializedWorkflowState),
297
-
298
- // ============================================================================
299
- // CRITICAL: Metadata object structure in 'original' field (as unknown cast)
300
- // ============================================================================
301
- original: {
302
- name: 'WorkflowAggregateError',
303
- message,
304
- errors,
305
- totalChildren,
306
- failedChildren: errors.length,
307
- failedWorkflowIds,
308
- } as unknown,
309
-
310
- // ============================================================================
311
- // IMPORT PATTERN: Use .js extensions for ES modules
312
- // ============================================================================
313
- import type { WorkflowError } from '../types/error.js';
314
- import type { SerializedWorkflowState } from '../types/snapshot.js';
315
- ```
316
-
317
- ### Integration Points
318
-
319
- ```yaml
320
- TASK_DECORATOR:
321
- - file: src/decorators/task.ts
322
- - remove: defaultErrorMerger function definition (lines 18-56)
323
- - add_import: import { mergeWorkflowErrors } from '../utils/workflow-error-utils.js';
324
- - replace_call: Line 167 - change defaultErrorMerger to mergeWorkflowErrors
325
-
326
- UTILS_EXPORTS:
327
- - file: src/utils/index.ts
328
- - add_export: export { mergeWorkflowErrors } from './workflow-error-utils.js';
329
-
330
- MAIN_EXPORT:
331
- - file: src/index.ts
332
- - add_export: export { mergeWorkflowErrors } from './utils/workflow-error-utils.js';
333
- - location: In utilities section (around line 86)
334
- ```
335
-
336
- ---
337
-
338
- ## Validation Loop
339
-
340
- ### Level 1: Syntax & Style (Immediate Feedback)
341
-
342
- ```bash
343
- # Run after each file creation - fix before proceeding
344
- npm run lint
345
-
346
- # This runs: tsc --noEmit (TypeScript type checking)
347
- # Expected: Zero type errors. If errors exist, READ output and fix before proceeding.
348
-
349
- # Manual checks after implementation:
350
- # 1. Verify .js extensions in all import statements
351
- # 2. Verify all types are imported from correct paths
352
- # 3. Verify function signature matches defaultErrorMerger
353
- ```
354
-
355
- ### Level 2: Unit Tests (Component Validation)
356
-
357
- ```bash
358
- # Test the new utility function specifically
359
- npm test -- src/__tests__/unit/utils/workflow-error-utils.test.ts
360
-
361
- # Full test suite for affected areas
362
- npm test -- src/__tests__/unit/decorators.test.ts
363
- npm test -- src/__tests__/unit/
364
-
365
- # Coverage validation
366
- npm test -- --coverage
367
-
368
- # Expected: All tests pass. If failing, debug root cause and fix implementation.
369
- ```
370
-
371
- ### Level 3: Integration Testing (System Validation)
372
-
373
- ```bash
374
- # Run the full test suite to verify no regressions
375
- npm test
376
-
377
- # Expected: All 344 existing tests pass plus new tests
378
- # This refactoring should NOT change any behavior - it's purely extraction
379
-
380
- # Test specific concurrent task scenarios
381
- npm test -- examples/examples/06-concurrent-tasks.ts
382
-
383
- # Test error handling examples
384
- npm test -- examples/examples/05-error-handling.ts
385
-
386
- # Expected: All concurrent task and error handling tests still work
387
- ```
388
-
389
- ### Level 4: Manual Validation
390
-
391
- ```bash
392
- # Run concurrent tasks example to verify error merging still works
393
- npm run start:concurrent
394
-
395
- # Run error handling example
396
- npm run start:errors
397
-
398
- # Expected: Both examples run successfully, errors are properly merged
399
- # when errorMergeStrategy is enabled
400
-
401
- # Check exports are working
402
- node -e "const { mergeWorkflowErrors } = require('./dist/index.js'); console.log('Export check:', typeof mergeWorkflowErrors);"
403
- # Expected: "Export check: function"
404
- ```
405
-
406
- ---
407
-
408
- ## Final Validation Checklist
409
-
410
- ### Technical Validation
411
-
412
- - [ ] All 4 validation levels completed successfully
413
- - [ ] All tests pass: `npm test` (344+ tests)
414
- - [ ] No type errors: `npm run lint` returns cleanly
415
- - [ ] Function signature matches defaultErrorMerger exactly
416
- - [ ] mergeWorkflowErrors exported from src/utils/index.ts
417
- - [ ] mergeWorkflowErrors re-exported from src/index.ts
418
- - [ ] defaultErrorMerger removed from src/decorators/task.ts
419
-
420
- ### Feature Validation
421
-
422
- - [ ] Message includes error count, total children, and task name
423
- - [ ] Unique workflow IDs collected correctly
424
- - [ ] Logs flattened using flatMap
425
- - [ ] First error's stack used
426
- - [ ] First error's state used (or empty object)
427
- - [ ] Metadata object in 'original' field with all required properties
428
- - [ ] Concurrent task error scenarios still work
429
- - [ ] Error merge strategy integration still works
430
-
431
- ### Code Quality Validation
432
-
433
- - [ ] Follows existing codebase patterns and naming conventions
434
- - [ ] File placement matches desired codebase tree structure
435
- - [ ] JSDoc comments added to the function
436
- - [ ] Imports use .js extensions for ES modules
437
- - [ ] No breaking changes to existing behavior
438
- - [ ] Tests cover happy path and edge cases
439
-
440
- ### Documentation & Deployment
441
-
442
- - [ ] Code is self-documenting with clear variable names
443
- - [ ] Function behavior documented in JSDoc
444
- - [ ] Comment in src/decorators/task.ts line 21 acknowledged/removed
445
-
446
- ---
447
-
448
- ## Anti-Patterns to Avoid
449
-
450
- - ❌ Don't change the merge logic - this is a pure extraction, behavior must be identical
451
- - ❌ Don't forget to add the export to src/utils/index.ts and src/index.ts
452
- - ❌ Don't use .ts extensions in imports - must use .js for ES modules
453
- - ❌ Don't skip the cast `as unknown` for the metadata object in `original` field
454
- - ❌ Don't forget to handle optional fields (stack, state) with optional chaining
455
- - ❌ Don't remove the metadata from the `original` field - it contains important context
456
- - ❌ Don't change the function signature - it must match defaultErrorMerger exactly
457
- - ❌ Don't forget to run full test suite - this is a refactoring, no behavior should change
458
- - ❌ Don't place the file anywhere other than src/utils/ - that's the established pattern
459
- - ❌ Don't create a new directory for error utilities - put it in existing utils/
460
-
461
- ---
462
-
463
- ## Confidence Score
464
-
465
- **8/10** - High confidence for one-pass implementation success
466
-
467
- **Reasoning:**
468
- - Existing implementation (defaultErrorMerger) provides exact reference
469
- - Clear file location and export patterns established in codebase
470
- - Well-defined types and interfaces
471
- - Comprehensive test patterns available
472
- - The only complexity is ensuring exact behavior preservation during extraction
473
-
474
- **Risk Factors:**
475
- - Must preserve exact behavior of defaultErrorMerger
476
- - Must handle TypeScript ES module import syntax correctly (.js extensions)
477
- - Must update all export locations (utils/index.ts and main index.ts)
478
-
479
- ---
480
-
481
- ## Additional Context from Research
482
-
483
- ### Existing Test Patterns Found
484
-
485
- From `src/__tests__/unit/decorators.test.ts`:
486
- ```typescript
487
- // Error testing pattern
488
- it('should wrap errors in WorkflowError', async () => {
489
- class FailingWorkflow extends Workflow {
490
- @Step()
491
- async failingStep(): Promise<void> {
492
- throw new Error('Step failed');
493
- }
494
- async run(): Promise<void> {
495
- await this.failingStep();
496
- }
497
- }
498
- const wf = new FailingWorkflow();
499
- await expect(wf.run()).rejects.toMatchObject({
500
- message: 'Step failed',
501
- workflowId: wf.id,
502
- });
503
- });
504
- ```
505
-
506
- ### Related Work Items (for context)
507
-
508
- - **P1.M2.T2.S1** (Complete): Added errorMergeStrategy to TaskOptions interface
509
- - **P1.M2.T2.S2** (Complete): Implemented error aggregation logic in @Task decorator
510
- - **P1.M2.T2.S4** (Pending): Add tests for ErrorMergeStrategy functionality
511
-
512
- This subtask (P1.M2.T2.S3) extracts the default merger for better modularity and testability.
513
-
514
- ### References
515
-
516
- - Error handling architecture: `plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md`
517
- - PRD snapshot: `plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md`
518
- - Existing implementation: `src/decorators/task.ts` lines 23-56