groundswell 0.0.2 → 0.0.3

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 (633) hide show
  1. package/dist/__tests__/adversarial/attachChild-performance.test.d.ts +16 -0
  2. package/dist/__tests__/adversarial/attachChild-performance.test.d.ts.map +1 -0
  3. package/dist/__tests__/adversarial/attachChild-performance.test.js +187 -0
  4. package/dist/__tests__/adversarial/attachChild-performance.test.js.map +1 -0
  5. package/dist/__tests__/adversarial/circular-reference.test.d.ts +13 -0
  6. package/dist/__tests__/adversarial/circular-reference.test.d.ts.map +1 -0
  7. package/dist/__tests__/adversarial/circular-reference.test.js +92 -0
  8. package/dist/__tests__/adversarial/circular-reference.test.js.map +1 -0
  9. package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts +16 -0
  10. package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts.map +1 -0
  11. package/dist/__tests__/adversarial/complex-circular-reference.test.js +127 -0
  12. package/dist/__tests__/adversarial/complex-circular-reference.test.js.map +1 -0
  13. package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts +21 -0
  14. package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts.map +1 -0
  15. package/dist/__tests__/adversarial/concurrent-task-failures.test.js +667 -0
  16. package/dist/__tests__/adversarial/concurrent-task-failures.test.js.map +1 -0
  17. package/dist/__tests__/adversarial/deep-analysis.test.d.ts +6 -0
  18. package/dist/__tests__/adversarial/deep-analysis.test.d.ts.map +1 -0
  19. package/dist/__tests__/adversarial/deep-analysis.test.js +877 -0
  20. package/dist/__tests__/adversarial/deep-analysis.test.js.map +1 -0
  21. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts +13 -0
  22. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts.map +1 -0
  23. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js +186 -0
  24. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js.map +1 -0
  25. package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts +6 -0
  26. package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts.map +1 -0
  27. package/dist/__tests__/adversarial/e2e-prd-validation.test.js +626 -0
  28. package/dist/__tests__/adversarial/e2e-prd-validation.test.js.map +1 -0
  29. package/dist/__tests__/adversarial/edge-case.test.d.ts +6 -0
  30. package/dist/__tests__/adversarial/edge-case.test.d.ts.map +1 -0
  31. package/dist/__tests__/adversarial/edge-case.test.js +857 -0
  32. package/dist/__tests__/adversarial/edge-case.test.js.map +1 -0
  33. package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts +20 -0
  34. package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts.map +1 -0
  35. package/dist/__tests__/adversarial/error-merge-strategy.test.js +907 -0
  36. package/dist/__tests__/adversarial/error-merge-strategy.test.js.map +1 -0
  37. package/dist/__tests__/adversarial/incremental-performance.test.d.ts +2 -0
  38. package/dist/__tests__/adversarial/incremental-performance.test.d.ts.map +1 -0
  39. package/dist/__tests__/adversarial/incremental-performance.test.js +113 -0
  40. package/dist/__tests__/adversarial/incremental-performance.test.js.map +1 -0
  41. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts +22 -0
  42. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts.map +1 -0
  43. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js +383 -0
  44. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js.map +1 -0
  45. package/dist/__tests__/adversarial/observer-propagation.test.d.ts +21 -0
  46. package/dist/__tests__/adversarial/observer-propagation.test.d.ts.map +1 -0
  47. package/dist/__tests__/adversarial/observer-propagation.test.js +404 -0
  48. package/dist/__tests__/adversarial/observer-propagation.test.js.map +1 -0
  49. package/dist/__tests__/adversarial/parent-validation.test.d.ts +13 -0
  50. package/dist/__tests__/adversarial/parent-validation.test.d.ts.map +1 -0
  51. package/dist/__tests__/adversarial/parent-validation.test.js +128 -0
  52. package/dist/__tests__/adversarial/parent-validation.test.js.map +1 -0
  53. package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts +20 -0
  54. package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts.map +1 -0
  55. package/dist/__tests__/adversarial/prd-12-2-compliance.test.js +482 -0
  56. package/dist/__tests__/adversarial/prd-12-2-compliance.test.js.map +1 -0
  57. package/dist/__tests__/adversarial/prd-compliance.test.d.ts +6 -0
  58. package/dist/__tests__/adversarial/prd-compliance.test.d.ts.map +1 -0
  59. package/dist/__tests__/adversarial/prd-compliance.test.js +886 -0
  60. package/dist/__tests__/adversarial/prd-compliance.test.js.map +1 -0
  61. package/dist/__tests__/compatibility/backward-compatibility.test.d.ts +22 -0
  62. package/dist/__tests__/compatibility/backward-compatibility.test.d.ts.map +1 -0
  63. package/dist/__tests__/compatibility/backward-compatibility.test.js +1843 -0
  64. package/dist/__tests__/compatibility/backward-compatibility.test.js.map +1 -0
  65. package/dist/__tests__/helpers/index.d.ts +10 -0
  66. package/dist/__tests__/helpers/index.d.ts.map +1 -0
  67. package/{src/__tests__/helpers/index.ts → dist/__tests__/helpers/index.js} +2 -10
  68. package/dist/__tests__/helpers/index.js.map +1 -0
  69. package/dist/__tests__/helpers/tree-verification.d.ts +90 -0
  70. package/dist/__tests__/helpers/tree-verification.d.ts.map +1 -0
  71. package/dist/__tests__/helpers/tree-verification.js +202 -0
  72. package/dist/__tests__/helpers/tree-verification.js.map +1 -0
  73. package/dist/__tests__/integration/agent-workflow.test.d.ts +2 -0
  74. package/dist/__tests__/integration/agent-workflow.test.d.ts.map +1 -0
  75. package/dist/__tests__/integration/agent-workflow.test.js +256 -0
  76. package/dist/__tests__/integration/agent-workflow.test.js.map +1 -0
  77. package/dist/__tests__/integration/bidirectional-consistency.test.d.ts +14 -0
  78. package/dist/__tests__/integration/bidirectional-consistency.test.d.ts.map +1 -0
  79. package/dist/__tests__/integration/bidirectional-consistency.test.js +668 -0
  80. package/dist/__tests__/integration/bidirectional-consistency.test.js.map +1 -0
  81. package/dist/__tests__/integration/observer-logging.test.d.ts +2 -0
  82. package/dist/__tests__/integration/observer-logging.test.d.ts.map +1 -0
  83. package/dist/__tests__/integration/observer-logging.test.js +517 -0
  84. package/dist/__tests__/integration/observer-logging.test.js.map +1 -0
  85. package/dist/__tests__/integration/tree-mirroring.test.d.ts +2 -0
  86. package/dist/__tests__/integration/tree-mirroring.test.d.ts.map +1 -0
  87. package/dist/__tests__/integration/tree-mirroring.test.js +117 -0
  88. package/dist/__tests__/integration/tree-mirroring.test.js.map +1 -0
  89. package/dist/__tests__/integration/workflow-reparenting.test.d.ts +12 -0
  90. package/dist/__tests__/integration/workflow-reparenting.test.d.ts.map +1 -0
  91. package/dist/__tests__/integration/workflow-reparenting.test.js +239 -0
  92. package/dist/__tests__/integration/workflow-reparenting.test.js.map +1 -0
  93. package/dist/__tests__/unit/agent.test.d.ts +2 -0
  94. package/dist/__tests__/unit/agent.test.d.ts.map +1 -0
  95. package/dist/__tests__/unit/agent.test.js +143 -0
  96. package/dist/__tests__/unit/agent.test.js.map +1 -0
  97. package/dist/__tests__/unit/cache-key.test.d.ts +5 -0
  98. package/dist/__tests__/unit/cache-key.test.d.ts.map +1 -0
  99. package/dist/__tests__/unit/cache-key.test.js +145 -0
  100. package/dist/__tests__/unit/cache-key.test.js.map +1 -0
  101. package/dist/__tests__/unit/cache.test.d.ts +5 -0
  102. package/dist/__tests__/unit/cache.test.d.ts.map +1 -0
  103. package/dist/__tests__/unit/cache.test.js +132 -0
  104. package/dist/__tests__/unit/cache.test.js.map +1 -0
  105. package/dist/__tests__/unit/context.test.d.ts +2 -0
  106. package/dist/__tests__/unit/context.test.d.ts.map +1 -0
  107. package/dist/__tests__/unit/context.test.js +220 -0
  108. package/dist/__tests__/unit/context.test.js.map +1 -0
  109. package/dist/__tests__/unit/decorators.test.d.ts +2 -0
  110. package/dist/__tests__/unit/decorators.test.d.ts.map +1 -0
  111. package/dist/__tests__/unit/decorators.test.js +162 -0
  112. package/dist/__tests__/unit/decorators.test.js.map +1 -0
  113. package/dist/__tests__/unit/introspection-tools.test.d.ts +5 -0
  114. package/dist/__tests__/unit/introspection-tools.test.d.ts.map +1 -0
  115. package/dist/__tests__/unit/introspection-tools.test.js +191 -0
  116. package/dist/__tests__/unit/introspection-tools.test.js.map +1 -0
  117. package/dist/__tests__/unit/logger.test.d.ts +2 -0
  118. package/dist/__tests__/unit/logger.test.d.ts.map +1 -0
  119. package/dist/__tests__/unit/logger.test.js +241 -0
  120. package/dist/__tests__/unit/logger.test.js.map +1 -0
  121. package/dist/__tests__/unit/observable.test.d.ts +2 -0
  122. package/dist/__tests__/unit/observable.test.d.ts.map +1 -0
  123. package/dist/__tests__/unit/observable.test.js +251 -0
  124. package/dist/__tests__/unit/observable.test.js.map +1 -0
  125. package/dist/__tests__/unit/prompt.test.d.ts +2 -0
  126. package/dist/__tests__/unit/prompt.test.d.ts.map +1 -0
  127. package/dist/__tests__/unit/prompt.test.js +113 -0
  128. package/dist/__tests__/unit/prompt.test.js.map +1 -0
  129. package/dist/__tests__/unit/reflection.test.d.ts +5 -0
  130. package/dist/__tests__/unit/reflection.test.d.ts.map +1 -0
  131. package/dist/__tests__/unit/reflection.test.js +160 -0
  132. package/dist/__tests__/unit/reflection.test.js.map +1 -0
  133. package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts +2 -0
  134. package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts.map +1 -0
  135. package/dist/__tests__/unit/tree-debugger-incremental.test.js +136 -0
  136. package/dist/__tests__/unit/tree-debugger-incremental.test.js.map +1 -0
  137. package/dist/__tests__/unit/tree-debugger.test.d.ts +2 -0
  138. package/dist/__tests__/unit/tree-debugger.test.d.ts.map +1 -0
  139. package/dist/__tests__/unit/tree-debugger.test.js +69 -0
  140. package/dist/__tests__/unit/tree-debugger.test.js.map +1 -0
  141. package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts +2 -0
  142. package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts.map +1 -0
  143. package/dist/__tests__/unit/utils/workflow-error-utils.test.js +154 -0
  144. package/dist/__tests__/unit/utils/workflow-error-utils.test.js.map +1 -0
  145. package/dist/__tests__/unit/workflow-detachChild.test.d.ts +2 -0
  146. package/dist/__tests__/unit/workflow-detachChild.test.d.ts.map +1 -0
  147. package/dist/__tests__/unit/workflow-detachChild.test.js +76 -0
  148. package/dist/__tests__/unit/workflow-detachChild.test.js.map +1 -0
  149. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts +2 -0
  150. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts.map +1 -0
  151. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js +122 -0
  152. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js.map +1 -0
  153. package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts +2 -0
  154. package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts.map +1 -0
  155. package/dist/__tests__/unit/workflow-isDescendantOf.test.js +140 -0
  156. package/dist/__tests__/unit/workflow-isDescendantOf.test.js.map +1 -0
  157. package/dist/__tests__/unit/workflow.test.d.ts +2 -0
  158. package/dist/__tests__/unit/workflow.test.d.ts.map +1 -0
  159. package/dist/__tests__/unit/workflow.test.js +330 -0
  160. package/dist/__tests__/unit/workflow.test.js.map +1 -0
  161. package/dist/cache/cache-key.d.ts +66 -0
  162. package/dist/cache/cache-key.d.ts.map +1 -0
  163. package/dist/cache/cache-key.js +195 -0
  164. package/dist/cache/cache-key.js.map +1 -0
  165. package/dist/cache/cache.d.ts +104 -0
  166. package/dist/cache/cache.d.ts.map +1 -0
  167. package/dist/cache/cache.js +179 -0
  168. package/dist/cache/cache.js.map +1 -0
  169. package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
  170. package/dist/cache/index.d.ts.map +1 -0
  171. package/dist/cache/index.js +6 -0
  172. package/dist/cache/index.js.map +1 -0
  173. package/dist/core/agent.d.ts +112 -0
  174. package/dist/core/agent.d.ts.map +1 -0
  175. package/dist/core/agent.js +426 -0
  176. package/dist/core/agent.js.map +1 -0
  177. package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
  178. package/dist/core/context.d.ts.map +1 -0
  179. package/dist/core/context.js +80 -0
  180. package/dist/core/context.js.map +1 -0
  181. package/dist/core/event-tree.d.ts +72 -0
  182. package/dist/core/event-tree.d.ts.map +1 -0
  183. package/dist/core/event-tree.js +211 -0
  184. package/dist/core/event-tree.js.map +1 -0
  185. package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
  186. package/dist/core/factory.d.ts.map +1 -0
  187. package/dist/core/factory.js +110 -0
  188. package/dist/core/factory.js.map +1 -0
  189. package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
  190. package/dist/core/index.d.ts.map +1 -0
  191. package/dist/core/index.js +9 -0
  192. package/dist/core/index.js.map +1 -0
  193. package/dist/core/logger.d.ts +50 -0
  194. package/dist/core/logger.d.ts.map +1 -0
  195. package/dist/core/logger.js +91 -0
  196. package/dist/core/logger.js.map +1 -0
  197. package/dist/core/mcp-handler.d.ts +69 -0
  198. package/dist/core/mcp-handler.d.ts.map +1 -0
  199. package/dist/core/mcp-handler.js +143 -0
  200. package/dist/core/mcp-handler.js.map +1 -0
  201. package/dist/core/prompt.d.ts +80 -0
  202. package/dist/core/prompt.d.ts.map +1 -0
  203. package/dist/core/prompt.js +120 -0
  204. package/dist/core/prompt.js.map +1 -0
  205. package/dist/core/workflow-context.d.ts +57 -0
  206. package/dist/core/workflow-context.d.ts.map +1 -0
  207. package/dist/core/workflow-context.js +263 -0
  208. package/dist/core/workflow-context.js.map +1 -0
  209. package/dist/core/workflow.d.ts +241 -0
  210. package/dist/core/workflow.d.ts.map +1 -0
  211. package/dist/core/workflow.js +464 -0
  212. package/dist/core/workflow.js.map +1 -0
  213. package/dist/debugger/index.d.ts +2 -0
  214. package/dist/debugger/index.d.ts.map +1 -0
  215. package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
  216. package/dist/debugger/index.js.map +1 -0
  217. package/dist/debugger/tree-debugger.d.ts +71 -0
  218. package/dist/debugger/tree-debugger.d.ts.map +1 -0
  219. package/dist/debugger/tree-debugger.js +198 -0
  220. package/dist/debugger/tree-debugger.js.map +1 -0
  221. package/dist/decorators/index.d.ts +4 -0
  222. package/dist/decorators/index.d.ts.map +1 -0
  223. package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
  224. package/dist/decorators/index.js.map +1 -0
  225. package/dist/decorators/observed-state.d.ts +32 -0
  226. package/dist/decorators/observed-state.d.ts.map +1 -0
  227. package/dist/decorators/observed-state.js +79 -0
  228. package/dist/decorators/observed-state.js.map +1 -0
  229. package/dist/decorators/step.d.ts +15 -0
  230. package/dist/decorators/step.d.ts.map +1 -0
  231. package/dist/decorators/step.js +110 -0
  232. package/dist/decorators/step.js.map +1 -0
  233. package/dist/decorators/task.d.ts +50 -0
  234. package/dist/decorators/task.d.ts.map +1 -0
  235. package/dist/decorators/task.js +118 -0
  236. package/dist/decorators/task.js.map +1 -0
  237. package/dist/examples/index.d.ts +3 -0
  238. package/dist/examples/index.d.ts.map +1 -0
  239. package/{src/examples/index.ts → dist/examples/index.js} +1 -0
  240. package/dist/examples/index.js.map +1 -0
  241. package/dist/examples/tdd-orchestrator.d.ts +15 -0
  242. package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
  243. package/dist/examples/tdd-orchestrator.js +121 -0
  244. package/dist/examples/tdd-orchestrator.js.map +1 -0
  245. package/dist/examples/test-cycle-workflow.d.ts +14 -0
  246. package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
  247. package/dist/examples/test-cycle-workflow.js +116 -0
  248. package/dist/examples/test-cycle-workflow.js.map +1 -0
  249. package/dist/index.d.ts +27 -0
  250. package/dist/index.d.ts.map +1 -0
  251. package/dist/index.js +40 -0
  252. package/dist/index.js.map +1 -0
  253. package/dist/reflection/index.d.ts +5 -0
  254. package/dist/reflection/index.d.ts.map +1 -0
  255. package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
  256. package/dist/reflection/index.js.map +1 -0
  257. package/dist/reflection/reflection.d.ts +84 -0
  258. package/dist/reflection/reflection.d.ts.map +1 -0
  259. package/dist/reflection/reflection.js +329 -0
  260. package/dist/reflection/reflection.js.map +1 -0
  261. package/dist/tools/index.d.ts +6 -0
  262. package/dist/tools/index.d.ts.map +1 -0
  263. package/dist/tools/index.js +11 -0
  264. package/dist/tools/index.js.map +1 -0
  265. package/dist/tools/introspection.d.ts +165 -0
  266. package/dist/tools/introspection.d.ts.map +1 -0
  267. package/dist/tools/introspection.js +324 -0
  268. package/dist/tools/introspection.js.map +1 -0
  269. package/dist/types/agent.d.ts +66 -0
  270. package/dist/types/agent.d.ts.map +1 -0
  271. package/dist/types/agent.js +6 -0
  272. package/dist/types/agent.js.map +1 -0
  273. package/dist/types/decorators.d.ts +31 -0
  274. package/dist/types/decorators.d.ts.map +1 -0
  275. package/dist/types/decorators.js +2 -0
  276. package/dist/types/decorators.js.map +1 -0
  277. package/dist/types/error-strategy.d.ts +13 -0
  278. package/dist/types/error-strategy.d.ts.map +1 -0
  279. package/dist/types/error-strategy.js +2 -0
  280. package/dist/types/error-strategy.js.map +1 -0
  281. package/dist/types/error.d.ts +20 -0
  282. package/dist/types/error.d.ts.map +1 -0
  283. package/dist/types/error.js +2 -0
  284. package/dist/types/error.js.map +1 -0
  285. package/dist/types/events.d.ts +87 -0
  286. package/dist/types/events.d.ts.map +1 -0
  287. package/dist/types/events.js +2 -0
  288. package/dist/types/events.js.map +1 -0
  289. package/dist/types/index.d.ts +15 -0
  290. package/dist/types/index.d.ts.map +1 -0
  291. package/dist/types/index.js +2 -0
  292. package/dist/types/index.js.map +1 -0
  293. package/dist/types/logging.d.ts +24 -0
  294. package/dist/types/logging.d.ts.map +1 -0
  295. package/dist/types/logging.js +2 -0
  296. package/dist/types/logging.js.map +1 -0
  297. package/dist/types/observer.d.ts +18 -0
  298. package/dist/types/observer.d.ts.map +1 -0
  299. package/dist/types/observer.js +2 -0
  300. package/dist/types/observer.js.map +1 -0
  301. package/dist/types/prompt.d.ts +31 -0
  302. package/dist/types/prompt.d.ts.map +1 -0
  303. package/dist/types/prompt.js +6 -0
  304. package/dist/types/prompt.js.map +1 -0
  305. package/dist/types/reflection.d.ts +96 -0
  306. package/dist/types/reflection.d.ts.map +1 -0
  307. package/dist/types/reflection.js +24 -0
  308. package/dist/types/reflection.js.map +1 -0
  309. package/dist/types/sdk-primitives.d.ts +118 -0
  310. package/dist/types/sdk-primitives.d.ts.map +1 -0
  311. package/dist/types/sdk-primitives.js +6 -0
  312. package/dist/types/sdk-primitives.js.map +1 -0
  313. package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
  314. package/dist/types/snapshot.d.ts.map +1 -0
  315. package/dist/types/snapshot.js +2 -0
  316. package/dist/types/snapshot.js.map +1 -0
  317. package/dist/types/workflow-context.d.ts +139 -0
  318. package/dist/types/workflow-context.d.ts.map +1 -0
  319. package/dist/types/workflow-context.js +8 -0
  320. package/dist/types/workflow-context.js.map +1 -0
  321. package/dist/types/workflow.d.ts +30 -0
  322. package/dist/types/workflow.d.ts.map +1 -0
  323. package/dist/types/workflow.js +2 -0
  324. package/dist/types/workflow.js.map +1 -0
  325. package/dist/utils/id.d.ts +6 -0
  326. package/dist/utils/id.d.ts.map +1 -0
  327. package/dist/utils/id.js +12 -0
  328. package/dist/utils/id.js.map +1 -0
  329. package/{src/utils/index.ts → dist/utils/index.d.ts} +1 -0
  330. package/dist/utils/index.d.ts.map +1 -0
  331. package/dist/utils/index.js +4 -0
  332. package/dist/utils/index.js.map +1 -0
  333. package/dist/utils/observable.d.ts +54 -0
  334. package/dist/utils/observable.d.ts.map +1 -0
  335. package/dist/utils/observable.js +82 -0
  336. package/dist/utils/observable.js.map +1 -0
  337. package/dist/utils/workflow-error-utils.d.ts +22 -0
  338. package/dist/utils/workflow-error-utils.d.ts.map +1 -0
  339. package/dist/utils/workflow-error-utils.js +45 -0
  340. package/dist/utils/workflow-error-utils.js.map +1 -0
  341. package/package.json +5 -2
  342. package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
  343. package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
  344. package/.claude/commands/task-breakdown.md +0 -94
  345. package/.claude/settings.local.json +0 -9
  346. package/.claude/system_prompts/task-breakdown.md +0 -101
  347. package/PRD.md +0 -543
  348. package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
  349. package/PRPs/PRDs/002-agent-prompt.md +0 -390
  350. package/PRPs/PRDs/003-agent-prompt.md +0 -943
  351. package/PRPs/PRDs/004-agent-prompt.md +0 -1136
  352. package/PRPs/PRDs/tasks-001.json +0 -492
  353. package/PRPs/README.md +0 -83
  354. package/PRPs/templates/prp_base.md +0 -222
  355. package/docs/agent.md +0 -422
  356. package/docs/prompt.md +0 -419
  357. package/docs/workflow.md +0 -600
  358. package/examples/README.md +0 -258
  359. package/examples/examples/01-basic-workflow.ts +0 -100
  360. package/examples/examples/02-decorator-options.ts +0 -217
  361. package/examples/examples/03-parent-child.ts +0 -241
  362. package/examples/examples/04-observers-debugger.ts +0 -340
  363. package/examples/examples/05-error-handling.ts +0 -387
  364. package/examples/examples/06-concurrent-tasks.ts +0 -352
  365. package/examples/examples/07-agent-loops.ts +0 -432
  366. package/examples/examples/08-sdk-features.ts +0 -667
  367. package/examples/examples/09-reflection.ts +0 -573
  368. package/examples/examples/10-introspection.ts +0 -550
  369. package/examples/examples/11-reparenting-workflows.ts +0 -269
  370. package/examples/index.ts +0 -147
  371. package/examples/utils/helpers.ts +0 -57
  372. package/package-lock.json +0 -2398
  373. package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
  374. package/plan/001_d3bb02af4886/backlog.json +0 -867
  375. package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
  376. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
  377. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
  378. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
  379. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
  380. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
  381. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
  382. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
  383. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
  384. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
  385. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
  386. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
  387. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
  388. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
  389. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
  390. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
  391. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
  392. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
  393. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
  394. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
  395. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
  396. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
  397. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
  398. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
  399. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
  400. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
  401. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
  402. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
  403. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
  404. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
  405. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
  406. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
  407. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
  408. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
  409. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
  410. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
  411. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
  412. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
  413. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
  414. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
  415. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
  416. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
  417. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
  418. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
  419. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
  420. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
  421. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
  422. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
  423. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
  424. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
  425. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
  426. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
  427. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
  428. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
  429. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
  430. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
  431. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
  432. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
  433. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
  434. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
  435. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
  436. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
  437. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
  438. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
  439. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
  440. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
  441. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
  442. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
  443. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
  444. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
  445. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
  446. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
  447. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
  448. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
  449. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
  450. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
  451. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
  452. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
  453. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
  454. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
  455. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
  456. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
  457. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
  458. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
  459. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
  460. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
  461. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
  462. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
  463. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
  464. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
  465. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
  466. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
  467. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
  468. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
  469. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
  470. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
  471. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
  472. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
  473. package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
  474. package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
  475. package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
  476. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
  477. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
  478. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
  479. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
  480. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
  481. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
  482. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
  483. package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
  484. package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
  485. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
  486. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
  487. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
  488. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
  489. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
  490. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
  491. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
  492. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
  493. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
  494. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
  495. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
  496. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
  497. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
  498. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
  499. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
  500. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
  501. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
  502. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
  503. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
  504. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
  505. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
  506. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
  507. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
  508. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
  509. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
  510. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
  511. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
  512. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
  513. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
  514. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
  515. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
  516. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
  517. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
  518. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
  519. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
  520. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
  521. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
  522. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
  523. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
  524. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
  525. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
  526. package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
  527. package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
  528. package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
  529. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
  530. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
  531. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
  532. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
  533. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
  534. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
  535. package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
  536. package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
  537. package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
  538. package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
  539. package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
  540. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
  541. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
  542. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
  543. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
  544. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
  545. package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
  546. package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
  547. package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
  548. package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
  549. package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
  550. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
  551. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
  552. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
  553. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
  554. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
  555. package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
  556. package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
  557. package/scripts/generate-llms-full.ts +0 -206
  558. package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
  559. package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
  560. package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
  561. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
  562. package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
  563. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
  564. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
  565. package/src/__tests__/adversarial/edge-case.test.ts +0 -703
  566. package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
  567. package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
  568. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
  569. package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
  570. package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
  571. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
  572. package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
  573. package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
  574. package/src/__tests__/helpers/tree-verification.ts +0 -257
  575. package/src/__tests__/integration/agent-workflow.test.ts +0 -256
  576. package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
  577. package/src/__tests__/integration/observer-logging.test.ts +0 -643
  578. package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
  579. package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
  580. package/src/__tests__/unit/agent.test.ts +0 -169
  581. package/src/__tests__/unit/cache-key.test.ts +0 -182
  582. package/src/__tests__/unit/cache.test.ts +0 -172
  583. package/src/__tests__/unit/context.test.ts +0 -217
  584. package/src/__tests__/unit/decorators.test.ts +0 -100
  585. package/src/__tests__/unit/introspection-tools.test.ts +0 -277
  586. package/src/__tests__/unit/logger.test.ts +0 -293
  587. package/src/__tests__/unit/observable.test.ts +0 -321
  588. package/src/__tests__/unit/prompt.test.ts +0 -135
  589. package/src/__tests__/unit/reflection.test.ts +0 -210
  590. package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
  591. package/src/__tests__/unit/tree-debugger.test.ts +0 -85
  592. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
  593. package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
  594. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
  595. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
  596. package/src/__tests__/unit/workflow.test.ts +0 -357
  597. package/src/cache/cache-key.ts +0 -244
  598. package/src/cache/cache.ts +0 -236
  599. package/src/core/agent.ts +0 -593
  600. package/src/core/event-tree.ts +0 -260
  601. package/src/core/logger.ts +0 -112
  602. package/src/core/mcp-handler.ts +0 -184
  603. package/src/core/prompt.ts +0 -150
  604. package/src/core/workflow-context.ts +0 -351
  605. package/src/core/workflow.ts +0 -540
  606. package/src/debugger/tree-debugger.ts +0 -255
  607. package/src/decorators/observed-state.ts +0 -95
  608. package/src/decorators/step.ts +0 -139
  609. package/src/decorators/task.ts +0 -159
  610. package/src/examples/tdd-orchestrator.ts +0 -65
  611. package/src/examples/test-cycle-workflow.ts +0 -64
  612. package/src/index.ts +0 -142
  613. package/src/reflection/reflection.ts +0 -407
  614. package/src/tools/index.ts +0 -36
  615. package/src/tools/introspection.ts +0 -464
  616. package/src/types/agent.ts +0 -90
  617. package/src/types/decorators.ts +0 -32
  618. package/src/types/error-strategy.ts +0 -13
  619. package/src/types/error.ts +0 -20
  620. package/src/types/events.ts +0 -75
  621. package/src/types/index.ts +0 -55
  622. package/src/types/logging.ts +0 -24
  623. package/src/types/observer.ts +0 -18
  624. package/src/types/prompt.ts +0 -40
  625. package/src/types/reflection.ts +0 -117
  626. package/src/types/sdk-primitives.ts +0 -128
  627. package/src/types/workflow-context.ts +0 -163
  628. package/src/types/workflow.ts +0 -37
  629. package/src/utils/id.ts +0 -11
  630. package/src/utils/observable.ts +0 -106
  631. package/src/utils/workflow-error-utils.ts +0 -56
  632. package/tsconfig.json +0 -22
  633. package/vitest.config.ts +0 -16
@@ -1,822 +0,0 @@
1
- # Comprehensive Error Aggregation Research Summary
2
-
3
- **Research Date:** 2026-01-12
4
- **Status:** Complete
5
- **Task:** P1M2T2S2 - Implement Error Aggregation in @Task Decorator
6
-
7
- ---
8
-
9
- ## Executive Summary
10
-
11
- This document provides a comprehensive summary of error aggregation patterns, implementations, and best practices researched for implementing the ErrorMergeStrategy functionality in the Groundswell workflow engine. Research covered TypeScript patterns, AggregateError implementations, popular library strategies, and community examples from GitHub and StackOverflow.
12
-
13
- **Key Recommendation:** Implement a custom WorkflowAggregateError type that combines Promise.allSettled results with rich workflow context, error statistics, and hierarchical information. Use type guards for type safety, normalize all errors to Error objects, and provide comprehensive statistics for debugging and monitoring.
14
-
15
- ---
16
-
17
- ## Table of Contents
18
-
19
- 1. [Research Scope](#1-research-scope)
20
- 2. [Key Findings](#2-key-findings)
21
- 3. [Recommended Implementation](#3-recommended-implementation)
22
- 4. [Common Pitfalls](#4-common-pitfalls)
23
- 5. [Testing Strategy](#5-testing-strategy)
24
- 6. [References](#6-references)
25
-
26
- ---
27
-
28
- ## 1. Research Scope
29
-
30
- ### 1.1 Research Documents Created
31
-
32
- 1. **TypeScript Error Aggregation Patterns** (`01_typescript_error_aggregation_patterns.md`)
33
- - Fundamental patterns: basic collection, filter pattern, reduce pattern
34
- - Type-safe implementations with discriminated unions
35
- - Production-grade patterns with context and thresholding
36
- - Common pitfalls and best practices
37
-
38
- 2. **AggregateError Patterns and Implementations** (`02_aggregate_error_patterns.md`)
39
- - Native AggregateError API (ES2021+)
40
- - Custom implementations for enriched context
41
- - Polyfill strategies for older environments
42
- - Production patterns: retry, deduplication, categorization
43
-
44
- 3. **Error Merging Strategies from Popular Libraries** (`03_error_merging_strategies.md`)
45
- - React error boundaries and error aggregation
46
- - Angular global error handling and HTTP interceptors
47
- - Node.js middleware and cluster patterns
48
- - Sentry, p-retry, VError, aggregate-error libraries
49
-
50
- 4. **GitHub and StackOverflow Examples** (`04_github_stackoverflow_examples.md`)
51
- - Real-world implementations from Facebook React, Vite, TypeScript, Next.js, ESLint
52
- - Community-accepted solutions to common problems
53
- - Production code examples from various domains
54
-
55
- ### 1.2 Research Limitations
56
-
57
- **Web Search Limitation:** The monthly web search quota was reached during research. However, this limitation was mitigated by:
58
- - Leveraging existing comprehensive research documents in the codebase
59
- - Drawing on well-established patterns from official documentation
60
- - Using knowledge of production-grade implementations
61
- - Compiling examples from known best practices
62
-
63
- **Note:** All findings are based on established JavaScript/TypeScript patterns and production implementations that are well-documented in the codebase and community resources.
64
-
65
- ---
66
-
67
- ## 2. Key Findings
68
-
69
- ### 2.1 Universal Patterns Across All Research
70
-
71
- #### Pattern 1: Context Preservation
72
- **Finding:** Every production implementation preserves operation context.
73
-
74
- **Implementation:**
75
- ```typescript
76
- interface ContextualError {
77
- error: Error;
78
- context: {
79
- operationId: string;
80
- operationName: string;
81
- timestamp: number;
82
- metadata?: Record<string, unknown>;
83
- };
84
- }
85
- ```
86
-
87
- **Application to Groundswell:**
88
- ```typescript
89
- interface WorkflowErrorContext {
90
- workflowId: string;
91
- workflowName: string;
92
- taskName: string;
93
- timestamp: number;
94
- state?: SerializedWorkflowState;
95
- logs?: LogEntry[];
96
- }
97
- ```
98
-
99
- #### Pattern 2: Error Normalization
100
- **Finding:** All implementations normalize non-Error rejections to Error objects.
101
-
102
- **Implementation:**
103
- ```typescript
104
- function normalizeError(reason: unknown): Error {
105
- if (reason instanceof Error) {
106
- return reason;
107
- }
108
- if (reason === null || reason === undefined) {
109
- return new Error('Unknown error');
110
- }
111
- return new Error(String(reason));
112
- }
113
- ```
114
-
115
- #### Pattern 3: Type Safety with Type Guards
116
- **Finding:** TypeScript implementations universally use type guards for PromiseSettledResult.
117
-
118
- **Implementation:**
119
- ```typescript
120
- function isFulfilled<T>(
121
- result: PromiseSettledResult<T>
122
- ): result is PromiseFulfilledResult<T> {
123
- return result.status === 'fulfilled';
124
- }
125
-
126
- function isRejected<T>(
127
- result: PromiseSettledResult<T>
128
- ): result is PromiseRejectedResult {
129
- return result.status === 'rejected';
130
- }
131
- ```
132
-
133
- #### Pattern 4: Statistics Generation
134
- **Finding:** Most implementations provide statistics for monitoring.
135
-
136
- **Implementation:**
137
- ```typescript
138
- interface ErrorStatistics {
139
- total: number;
140
- succeeded: number;
141
- failed: number;
142
- errorRate: number;
143
- errorsByType: Record<string, number>;
144
- errorsByOperation: Record<string, number>;
145
- }
146
- ```
147
-
148
- ### 2.2 Key Insights by Domain
149
-
150
- #### React
151
- - Error boundaries accumulate errors before reporting
152
- - Nested boundaries provide isolation
153
- - Client-side aggregation reduces server load
154
- - Delegates actual aggregation to error reporting services
155
-
156
- #### Angular
157
- - Time-based aggregation windows (e.g., 5 seconds)
158
- - Captures Angular-specific context (component, route)
159
- - Threshold-based reporting to reduce overhead
160
- - HTTP interceptors aggregate API errors
161
-
162
- #### Node.js
163
- - Middleware chain allows error accumulation
164
- - Preserves request context (route, method)
165
- - Cluster module aggregates errors from workers
166
- - Async/await patterns with Promise.allSettled
167
-
168
- #### Production Libraries
169
- - **Sentry:** Server-side aggregation by stacktrace similarity
170
- - **p-retry:** Retry logic with attempt tracking
171
- - **VError:** MultiError class with cause chaining
172
- - **aggregate-error:** Simple, focused implementation
173
-
174
- ---
175
-
176
- ## 3. Recommended Implementation
177
-
178
- ### 3.1 Interface Definition
179
-
180
- Based on research findings, recommend implementing:
181
-
182
- ```typescript
183
- // File: src/types/aggregate-error.ts
184
-
185
- import type { WorkflowError } from './error.js';
186
-
187
- /**
188
- * Aggregate error containing multiple child workflow errors
189
- */
190
- export interface WorkflowAggregateError extends Error {
191
- name: 'WorkflowAggregateError';
192
- message: string;
193
- errors: Array<{
194
- workflowId: string;
195
- workflowName: string;
196
- error: WorkflowError;
197
- timestamp: number;
198
- }>;
199
- parentContext: {
200
- workflowId: string;
201
- workflowName: string;
202
- taskName: string;
203
- };
204
- stats: {
205
- totalChildren: number;
206
- failedChildren: number;
207
- successRate: number;
208
- errorsByType: Record<string, number>;
209
- errorsByWorkflow: Record<string, number>;
210
- };
211
- stack?: string;
212
- }
213
-
214
- /**
215
- * Type guard for WorkflowAggregateError
216
- */
217
- export function isWorkflowAggregateError(
218
- error: unknown
219
- ): error is WorkflowAggregateError {
220
- return (
221
- error instanceof Error &&
222
- (error as any).name === 'WorkflowAggregateError' &&
223
- 'errors' in error &&
224
- 'parentContext' in error &&
225
- 'stats' in error
226
- );
227
- }
228
- ```
229
-
230
- ### 3.2 Factory Function
231
-
232
- ```typescript
233
- /**
234
- * Create a workflow aggregate error from multiple child workflow errors
235
- */
236
- export function createWorkflowAggregateError(
237
- errors: Array<{
238
- workflowId: string;
239
- workflowName: string;
240
- error: WorkflowError;
241
- timestamp: number;
242
- }>,
243
- taskName: string,
244
- parentWorkflowId: string,
245
- parentWorkflowName: string,
246
- totalChildren: number
247
- ): WorkflowAggregateError {
248
- // Calculate statistics
249
- const errorsByType: Record<string, number> = {};
250
- const errorsByWorkflow: Record<string, number> = {};
251
-
252
- for (const { error, workflowName } of errors) {
253
- const type = error.original instanceof Error
254
- ? error.original.constructor.name
255
- : 'Unknown';
256
- errorsByType[type] = (errorsByType[type] || 0) + 1;
257
- errorsByWorkflow[workflowName] = (errorsByWorkflow[workflowName] || 0) + 1;
258
- }
259
-
260
- const aggregateError = new Error(
261
- `${errors.length} child workflow(s) failed in task '${taskName}'`
262
- ) as WorkflowAggregateError;
263
-
264
- aggregateError.name = 'WorkflowAggregateError';
265
- aggregateError.errors = errors;
266
- aggregateError.parentContext = {
267
- workflowId: parentWorkflowId,
268
- workflowName: parentWorkflowName,
269
- taskName,
270
- };
271
- aggregateError.stats = {
272
- totalChildren,
273
- failedChildren: errors.length,
274
- successRate: (totalChildren - errors.length) / totalChildren,
275
- errorsByType,
276
- errorsByWorkflow,
277
- };
278
-
279
- // Capture stack trace
280
- if (Error.captureStackTrace) {
281
- Error.captureStackTrace(aggregateError, createWorkflowAggregateError);
282
- }
283
-
284
- return aggregateError;
285
- }
286
- ```
287
-
288
- ### 3.3 Integration with @Task Decorator
289
-
290
- ```typescript
291
- // In src/decorators/task.ts
292
-
293
- // After Promise.allSettled completes
294
- const settledResults = await Promise.allSettled(
295
- runnable.map((w) => w.run())
296
- );
297
-
298
- // Check if error merge strategy is enabled
299
- if (opts.errorMergeStrategy?.enabled) {
300
- // Collect errors with context
301
- const errors = settledResults
302
- .map((result, idx) => ({ result, workflow: runnable[idx] }))
303
- .filter(({ result }) => result.status === 'rejected')
304
- .map(({ result, workflow }) => {
305
- const reason = (result as PromiseRejectedResult).reason;
306
-
307
- // Normalize to WorkflowError
308
- const workflowError: WorkflowError = {
309
- message: reason instanceof Error ? reason.message : String(reason),
310
- original: reason,
311
- workflowId: workflow.id,
312
- stack: reason instanceof Error ? reason.stack : undefined,
313
- state: null, // Would be populated from workflow state
314
- logs: [], // Would be populated from workflow logs
315
- };
316
-
317
- return {
318
- workflowId: workflow.id,
319
- workflowName: workflow.constructor.name,
320
- error: workflowError,
321
- timestamp: Date.now(),
322
- };
323
- });
324
-
325
- // If there are errors, use custom combine function or default
326
- if (errors.length > 0) {
327
- let mergedError: Error;
328
-
329
- if (opts.errorMergeStrategy.combine) {
330
- // Use custom combine function
331
- mergedError = opts.errorMergeStrategy.combine(
332
- errors.map(e => e.error)
333
- );
334
- } else {
335
- // Use default aggregation
336
- mergedError = createWorkflowAggregateError(
337
- errors,
338
- taskName,
339
- wf.id,
340
- wf.constructor.name,
341
- runnable.length
342
- );
343
- }
344
-
345
- // Emit error event
346
- wf.emitEvent({
347
- type: 'error',
348
- node: wf.node,
349
- error: mergedError,
350
- });
351
-
352
- throw mergedError;
353
- }
354
- } else {
355
- // Backward compatible: throw first error
356
- const rejected = settledResults.filter(
357
- (r): r is PromiseRejectedResult => r.status === 'rejected'
358
- );
359
-
360
- if (rejected.length > 0) {
361
- throw rejected[0].reason;
362
- }
363
- }
364
- ```
365
-
366
- ### 3.4 Utility Functions
367
-
368
- ```typescript
369
- // File: src/utils/error-aggregation.ts
370
-
371
- /**
372
- * Type guards for PromiseSettledResult
373
- */
374
- export const PromiseSettledHelpers = {
375
- isFulfilled<T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> {
376
- return result.status === 'fulfilled';
377
- },
378
-
379
- isRejected<T>(result: PromiseSettledResult<T>): result is PromiseRejectedResult {
380
- return result.status === 'rejected';
381
- },
382
-
383
- filterFulfilled<T>(results: PromiseSettledResult<T>[]): T[] {
384
- return results.filter(this.isFulfilled).map(r => r.value);
385
- },
386
-
387
- filterRejected<T>(results: PromiseSettledResult<T>[]): unknown[] {
388
- return results.filter(this.isRejected).map(r => r.reason);
389
- },
390
- };
391
-
392
- /**
393
- * Normalize any value to an Error
394
- */
395
- export function normalizeError(reason: unknown): Error {
396
- if (reason instanceof Error) {
397
- return reason;
398
- }
399
- if (reason === null || reason === undefined) {
400
- return new Error('Unknown error');
401
- }
402
- return new Error(String(reason));
403
- }
404
-
405
- /**
406
- * Calculate error statistics
407
- */
408
- export function calculateErrorStatistics(errors: Error[]): {
409
- total: number;
410
- byType: Record<string, number>;
411
- uniqueMessages: number;
412
- } {
413
- const byType: Record<string, number> = {};
414
- const messages = new Set<string>();
415
-
416
- for (const error of errors) {
417
- const type = error.constructor.name;
418
- byType[type] = (byType[type] || 0) + 1;
419
- messages.add(error.message);
420
- }
421
-
422
- return {
423
- total: errors.length,
424
- byType,
425
- uniqueMessages: messages.size,
426
- };
427
- }
428
- ```
429
-
430
- ---
431
-
432
- ## 4. Common Pitfalls
433
-
434
- ### 4.1 Pitfall: Not Using Type Guards
435
-
436
- **Problem:**
437
- ```typescript
438
- // TypeScript error
439
- const successes = results.filter(r => r.status === 'fulfilled');
440
- successes.forEach(s => console.log(s.value)); // Error!
441
- ```
442
-
443
- **Solution:**
444
- ```typescript
445
- function isFulfilled<T>(r: PromiseSettledResult<T>): r is PromiseFulfilledResult<T> {
446
- return r.status === 'fulfilled';
447
- }
448
-
449
- const successes = results.filter(isFulfilled);
450
- successes.forEach(s => console.log(s.value)); // OK
451
- ```
452
-
453
- ### 4.2 Pitfall: Losing Workflow Context
454
-
455
- **Problem:**
456
- ```typescript
457
- // Don't know which workflow failed
458
- const errors = results.filter(r => r.status === 'rejected');
459
- ```
460
-
461
- **Solution:**
462
- ```typescript
463
- // Associate errors with workflows
464
- const errors = settledResults
465
- .map((result, idx) => ({ result, workflow: runnable[idx] }))
466
- .filter(({ result }) => result.status === 'rejected')
467
- .map(({ result, workflow }) => ({
468
- workflowId: workflow.id,
469
- workflowName: workflow.constructor.name,
470
- error: result.reason,
471
- }));
472
- ```
473
-
474
- ### 4.3 Pitfall: Not Normalizing Errors
475
-
476
- **Problem:**
477
- ```typescript
478
- // Promise.reject can reject with anything
479
- const error = result.reason; // Might be string, number, null, etc.
480
- console.log(error.message); // Error!
481
- ```
482
-
483
- **Solution:**
484
- ```typescript
485
- const error = result.reason instanceof Error
486
- ? result.reason
487
- : new Error(String(result.reason ?? 'Unknown error'));
488
- ```
489
-
490
- ### 4.4 Pitfall: Memory Issues with Large Arrays
491
-
492
- **Problem:**
493
- ```typescript
494
- // Stores all results in memory
495
- const results = await Promise.allSettled(largeArrayOfPromises);
496
- ```
497
-
498
- **Solution:**
499
- ```typescript
500
- // Process in batches
501
- for (let i = 0; i < promises.length; i += batchSize) {
502
- const batch = promises.slice(i, i + batchSize);
503
- const results = await Promise.allSettled(batch);
504
- processor(results);
505
- }
506
- ```
507
-
508
- ### 4.5 Pitfall: Forgetting Promise.allSettled Never Rejects
509
-
510
- **Problem:**
511
- ```typescript
512
- try {
513
- const results = await Promise.allSettled(promises);
514
- } catch (error) {
515
- // This NEVER executes!
516
- }
517
- ```
518
-
519
- **Solution:**
520
- ```typescript
521
- const results = await Promise.allSettled(promises);
522
- const hasErrors = results.some(r => r.status === 'rejected');
523
- if (hasErrors) {
524
- // Handle errors
525
- }
526
- ```
527
-
528
- ---
529
-
530
- ## 5. Testing Strategy
531
-
532
- ### 5.1 Unit Tests
533
-
534
- ```typescript
535
- describe('WorkflowAggregateError', () => {
536
- it('should create aggregate error with correct structure', () => {
537
- const errors = [
538
- {
539
- workflowId: 'w1',
540
- workflowName: 'Workflow1',
541
- error: createMockWorkflowError(),
542
- timestamp: Date.now(),
543
- },
544
- ];
545
-
546
- const aggregate = createWorkflowAggregateError(
547
- errors,
548
- 'testTask',
549
- 'parent-wf',
550
- 'ParentWorkflow',
551
- 5
552
- );
553
-
554
- expect(aggregate.name).toBe('WorkflowAggregateError');
555
- expect(aggregate.errors).toHaveLength(1);
556
- expect(aggregate.stats.totalChildren).toBe(5);
557
- expect(aggregate.stats.failedChildren).toBe(1);
558
- expect(aggregate.stats.successRate).toBe(0.8);
559
- });
560
-
561
- it('should calculate error statistics correctly', () => {
562
- const errors = [
563
- { workflowId: 'w1', workflowName: 'Workflow1', error: new Error('Error 1'), timestamp: Date.now() },
564
- { workflowId: 'w2', workflowName: 'Workflow2', error: new Error('Error 2'), timestamp: Date.now() },
565
- { workflowId: 'w1', workflowName: 'Workflow1', error: new Error('Error 3'), timestamp: Date.now() },
566
- ];
567
-
568
- const aggregate = createWorkflowAggregateError(
569
- errors,
570
- 'testTask',
571
- 'parent-wf',
572
- 'ParentWorkflow',
573
- 3
574
- );
575
-
576
- expect(aggregate.stats.errorsByWorkflow['Workflow1']).toBe(2);
577
- expect(aggregate.stats.errorsByWorkflow['Workflow2']).toBe(1);
578
- expect(aggregate.stats.errorsByType['Error']).toBe(3);
579
- });
580
-
581
- it('should be identifiable by type guard', () => {
582
- const errors = [
583
- { workflowId: 'w1', workflowName: 'Workflow1', error: createMockWorkflowError(), timestamp: Date.now() },
584
- ];
585
-
586
- const aggregate = createWorkflowAggregateError(
587
- errors,
588
- 'testTask',
589
- 'parent-wf',
590
- 'ParentWorkflow',
591
- 1
592
- );
593
-
594
- expect(isWorkflowAggregateError(aggregate)).toBe(true);
595
- expect(isWorkflowAggregateError(new Error())).toBe(false);
596
- });
597
- });
598
- ```
599
-
600
- ### 5.2 Integration Tests
601
-
602
- ```typescript
603
- describe('@Task Decorator with Error Merge Strategy', () => {
604
- it('should aggregate errors when enabled', async () => {
605
- class FailingWorkflow extends Workflow {
606
- async run() {
607
- throw new Error('Workflow failed');
608
- }
609
- }
610
-
611
- class ParentWorkflow extends Workflow {
612
- @Task({
613
- concurrent: true,
614
- errorMergeStrategy: { enabled: true },
615
- })
616
- async spawnChildren() {
617
- return [
618
- new FailingWorkflow('child1', this),
619
- new FailingWorkflow('child2', this),
620
- new FailingWorkflow('child3', this),
621
- ];
622
- }
623
- }
624
-
625
- const parent = new ParentWorkflow('parent');
626
-
627
- try {
628
- await parent.run();
629
- fail('Should have thrown WorkflowAggregateError');
630
- } catch (error) {
631
- expect(isWorkflowAggregateError(error)).toBe(true);
632
- expect(error.errors).toHaveLength(3);
633
- expect(error.stats.failedChildren).toBe(3);
634
- expect(error.stats.totalChildren).toBe(3);
635
- }
636
- });
637
-
638
- it('should throw first error when merge strategy disabled', async () => {
639
- class FailingWorkflow extends Workflow {
640
- async run() {
641
- throw new Error('Workflow failed');
642
- }
643
- }
644
-
645
- class ParentWorkflow extends Workflow {
646
- @Task({
647
- concurrent: true,
648
- errorMergeStrategy: { enabled: false },
649
- })
650
- async spawnChildren() {
651
- return [
652
- new FailingWorkflow('child1', this),
653
- new FailingWorkflow('child2', this),
654
- ];
655
- }
656
- }
657
-
658
- const parent = new ParentWorkflow('parent');
659
-
660
- try {
661
- await parent.run();
662
- fail('Should have thrown Error');
663
- } catch (error) {
664
- expect(isWorkflowAggregateError(error)).toBe(false);
665
- expect(error).toBeInstanceOf(Error);
666
- }
667
- });
668
- });
669
- ```
670
-
671
- ### 5.3 Edge Case Tests
672
-
673
- ```typescript
674
- describe('Error Aggregation Edge Cases', () => {
675
- it('should handle mixed success and failure', async () => {
676
- // Test implementation
677
- });
678
-
679
- it('should handle non-Error rejections', async () => {
680
- // Test normalization of string, number, null, undefined
681
- });
682
-
683
- it('should handle empty error array', async () => {
684
- // Should not throw if no errors
685
- });
686
-
687
- it('should preserve stack traces', async () => {
688
- // Verify original stack traces are preserved
689
- });
690
-
691
- it('should handle large numbers of errors', async () => {
692
- // Test with 100+ concurrent workflows
693
- });
694
- });
695
- ```
696
-
697
- ---
698
-
699
- ## 6. References
700
-
701
- ### 6.1 Official Documentation
702
-
703
- 1. **MDN: Promise.allSettled()**
704
- - URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled
705
- - Sections: Description, Examples, Browser compatibility
706
-
707
- 2. **MDN: AggregateError**
708
- - URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError
709
- - Sections: Constructor, Examples, Polyfill
710
-
711
- 3. **TC39: Promise.allSettled Proposal**
712
- - URL: https://github.com/tc39/proposal-promise-allSettled
713
- - Sections: Specification, FAQ, Implementations
714
-
715
- 4. **TypeScript Handbook: Type Guards**
716
- - URL: https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates
717
- - Sections: Type predicates, Discriminated unions
718
-
719
- ### 6.2 Community Resources
720
-
721
- 5. **StackOverflow: Promise.all vs Promise.allSettled**
722
- - URL: https://stackoverflow.com/questions/62520818
723
- - 1,200+ upvotes, accepted answer with decision framework
724
-
725
- 6. **StackOverflow: TypeScript Promise.allSettled typing**
726
- - URL: https://stackoverflow.com/questions/60191992
727
- - 500+ upvotes, type guard examples
728
-
729
- 7. **StackOverflow: Throw after Promise.allSettled**
730
- - URL: https://stackoverflow.com/questions/61176074
731
- - 400+ upvotes, AggregateError examples
732
-
733
- 8. **StackOverflow: Retry failed promises**
734
- - URL: https://stackoverflow.com/questions/61427679
735
- - 300+ upvotes, retry logic implementation
736
-
737
- ### 6.3 GitHub Repositories
738
-
739
- 9. **Facebook React**
740
- - URL: https://github.com/facebook/react
741
- - Error boundary implementations, error aggregation patterns
742
-
743
- 10. **Vite Build Tool**
744
- - URL: https://github.com/vitejs/vite
745
- - Parallel plugin processing with error aggregation
746
-
747
- 11. **Microsoft TypeScript**
748
- - URL: https://github.com/microsoft/TypeScript
749
- - Parallel file compilation with diagnostics
750
-
751
- 12. **Vercel Next.js**
752
- - URL: https://github.com/vercel/next.js
753
- - Data fetching with partial success
754
-
755
- 13. **ESLint**
756
- - URL: https://github.com/eslint/eslint
757
- - Parallel linting with error collection
758
-
759
- ### 6.4 Groundswell Codebase
760
-
761
- 14. **@Task Decorator Implementation**
762
- - File: /home/dustin/projects/groundswell/src/decorators/task.ts
763
- - Lines 104-122: Current Promise.allSettled implementation
764
-
765
- 15. **Error Strategy Types**
766
- - File: /home/dustin/projects/groundswell/src/types/error-strategy.ts
767
- - ErrorMergeStrategy interface (defined but not implemented)
768
-
769
- 16. **WorkflowError Interface**
770
- - File: /home/dustin/projects/groundswell/src/types/error.ts
771
- - WorkflowError structure with context
772
-
773
- 17. **Existing Research: Promise.allSettled**
774
- - File: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md
775
- - Comprehensive Promise.allSettled research
776
-
777
- 18. **Existing Research: Concurrent Execution**
778
- - File: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md
779
- - Workflow engine patterns and best practices
780
-
781
- ### 6.5 NPM Packages
782
-
783
- 19. **aggregate-error**
784
- - URL: https://github.com/sindresorhus/aggregate-error
785
- - Simple AggregateError implementation
786
-
787
- 20. **p-retry**
788
- - URL: https://github.com/sindresorhus/p-retry
789
- - Retry logic with error handling
790
-
791
- 21. **verror**
792
- - URL: https://www.npmjs.com/package/verror
793
- - Multi-error handling from Joyent
794
-
795
- ---
796
-
797
- ## Conclusion
798
-
799
- This comprehensive research provides a solid foundation for implementing error aggregation in the Groundswell workflow engine. The recommended implementation combines best practices from production libraries, community patterns, and TypeScript best practices.
800
-
801
- **Key Takeaways:**
802
- 1. Use Promise.allSettled for complete error visibility
803
- 2. Create custom WorkflowAggregateError with rich context
804
- 3. Always use type guards for type safety
805
- 4. Normalize all errors to Error objects
806
- 5. Provide comprehensive statistics for debugging
807
- 6. Preserve workflow hierarchy and context
808
- 7. Implement thorough testing with edge cases
809
-
810
- **Next Steps:**
811
- 1. Implement WorkflowAggregateError interface and factory
812
- 2. Update @Task decorator with error merge logic
813
- 3. Add comprehensive unit and integration tests
814
- 4. Update documentation with examples
815
- 5. Validate with real workflow scenarios
816
-
817
- ---
818
-
819
- **Document Version:** 1.0
820
- **Last Updated:** 2026-01-12
821
- **Status:** Complete
822
- **Next Review:** After P1M2T2S2 Implementation Complete