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,696 +0,0 @@
1
- # PRP: P1.M2.T1.S2 - Implement Promise.allSettled with Error Collection
2
-
3
- **Document Version:** 1.0
4
- **Creation Date:** 2026-01-12
5
- **Target:** Subtask P1.M2.T1.S2 - Replace Promise.all with Promise.allSettled in @Task decorator
6
- **Primary File:** `src/decorators/task.ts` (line 112)
7
-
8
- ---
9
-
10
- ## Goal
11
-
12
- **Feature Goal**: Replace `Promise.all()` with `Promise.allSettled()` in the @Task decorator's concurrent execution path (src/decorators/task.ts:112) to enable collection of all concurrent workflow errors while maintaining backward compatibility by throwing the first error when no error merge strategy is configured.
13
-
14
- **Deliverable**: Updated @Task decorator that:
15
- 1. Uses `Promise.allSettled()` instead of `Promise.all()` for concurrent task execution
16
- 2. Collects all `PromiseRejectedResult` errors from concurrent workflows
17
- 3. Maintains backward compatibility by throwing the first error (fail-fast behavior) when no error merge strategy is configured
18
- 4. Preserves all existing event emissions and workflow attachment behaviors
19
-
20
- **Success Definition**:
21
- - Line 112 in `src/decorators/task.ts` uses `Promise.allSettled()` instead of `Promise.all()`
22
- - Errors from all failed concurrent workflows are collected into an array
23
- - Backward compatibility is maintained: first error is thrown by default (no behavior change for existing code)
24
- - All existing tests continue to pass without modification
25
- - The change enables P1.M2.T2 (ErrorMergeStrategy implementation) in future work
26
-
27
- ---
28
-
29
- ## All Needed Context
30
-
31
- ### Context Completeness Check
32
-
33
- **"No Prior Knowledge" Test**: If someone knew nothing about this codebase, would they have everything needed to implement this successfully?
34
-
35
- **Answer**: YES - This PRP provides:
36
- - Exact file location with line number (src/decorators/task.ts:112)
37
- - Complete current implementation code snippet
38
- - Required code changes with before/after comparison
39
- - Type definitions for all interfaces used
40
- - Error handling patterns to follow
41
- - Test patterns for validation
42
- - External research documentation with URLs
43
-
44
- ### Documentation & References
45
-
46
- ```yaml
47
- # MUST READ - Current Implementation
48
- - file: src/decorators/task.ts
49
- lines: 104-114
50
- why: Contains the Promise.all implementation that must be replaced
51
- pattern: Concurrent workflow execution with runnable filtering
52
- gotcha: Promise.all fails fast on first error; Promise.allSettled never rejects
53
-
54
- - file: src/decorators/task.ts
55
- lines: 1-129 (full file)
56
- why: Complete @Task decorator context including child attachment logic
57
- pattern: Task decorator wrapper function with event emission
58
-
59
- - file: plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md
60
- why: S1 analysis document with complete Promise.all implementation details
61
- section: "5. Promise.allSettled Migration Requirements"
62
- critical: Contains exact migration requirements and code changes needed
63
-
64
- - file: plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md
65
- why: Internal guidance on Promise.allSettled usage patterns
66
- section: "Recommended Error Collection Patterns"
67
- critical: Specifies using Promise.allSettled for complete-all error strategy
68
-
69
- # TYPE DEFINITIONS - Required for implementation
70
- - file: src/types/error-strategy.ts
71
- why: Defines ErrorMergeStrategy interface (future use in P1.M2.T2)
72
- pattern: Interface with enabled, maxMergeDepth, and combine() function
73
- note: NOT used in this task - collected errors stored in array for future use
74
-
75
- - file: src/types/decorators.ts
76
- why: Defines TaskOptions interface for @Task decorator configuration
77
- pattern: Options interface with name and concurrent properties
78
-
79
- - file: src/types/error.ts
80
- why: Defines WorkflowError interface structure for error handling
81
- pattern: Interface with message, original, workflowId, stack, state, logs
82
-
83
- - file: src/types/events.ts
84
- why: Defines WorkflowEvent type including error events
85
- pattern: Union type with { type: 'error', node, error }
86
-
87
- # EXTERNAL RESEARCH - Promise.allSettled best practices
88
- - url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled
89
- why: Official documentation for Promise.allSettled() method
90
- section: #description
91
- critical: Promise.allSettled NEVER rejects - always resolves with status array
92
-
93
- - url: https://www.typescriptlang.org/docs/handbook/2/types-from-types.html#promise-types
94
- why: TypeScript Promise types including PromiseSettledResult
95
- section: Promise Types
96
- critical: Type guards required for discriminated unions
97
-
98
- - docfile: plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md
99
- why: Comprehensive Promise.allSettled implementation patterns
100
- section: "2. Promise.allSettled() Error Collection Patterns"
101
- critical: Type guard patterns, error filtering, aggregation examples
102
-
103
- - docfile: plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md
104
- why: Quick reference for Promise.allSettled implementation
105
- section: "Groundswell Implementation"
106
- critical: Specific code examples for this codebase
107
-
108
- # TEST PATTERNS - Follow for validation
109
- - file: src/__tests__/adversarial/edge-case.test.ts
110
- lines: 366-430
111
- why: Contains concurrent task execution tests with mixed success/failure
112
- pattern: Testing concurrent workflows with errors
113
-
114
- - file: src/__tests__/adversarial/prd-compliance.test.ts
115
- lines: 421-460
116
- why: Tests concurrent execution with multiple child workflows
117
- pattern: Execution order tracking for verifying concurrency
118
-
119
- - file: vitest.config.ts
120
- why: Test runner configuration
121
- command: npm test or npm run test:watch
122
-
123
- # STEP DECORATOR - Error wrapping context
124
- - file: src/decorators/step.ts
125
- lines: 109-134
126
- why: Shows how WorkflowError objects are created and error events emitted
127
- pattern: Error capture with getObservedState(), event emission
128
- critical: Each failing workflow already emits error event - don't duplicate
129
- ```
130
-
131
- ### Current Codebase Tree
132
-
133
- ```bash
134
- /home/dustin/projects/groundswell
135
- ├── src/
136
- │ ├── decorators/
137
- │ │ ├── index.ts # Exports Task decorator
138
- │ │ ├── step.ts # @Step decorator with error wrapping (lines 109-134)
139
- │ │ └── task.ts # PRIMARY: Promise.all at line 112 - TARGET FILE
140
- │ ├── types/
141
- │ │ ├── index.ts # Re-exports all types
142
- │ │ ├── decorators.ts # TaskOptions interface
143
- │ │ ├── error-strategy.ts # ErrorMergeStrategy interface (unused in this task)
144
- │ │ ├── error.ts # WorkflowError interface
145
- │ │ └── events.ts # WorkflowEvent union type
146
- │ ├── utils/
147
- │ │ ├── id.ts # ID generation utilities
148
- │ │ ├── index.ts # Exports utils
149
- │ │ └── observable.ts # Observable utilities
150
- │ └── __tests__/
151
- │ ├── adversarial/
152
- │ │ ├── edge-case.test.ts # Concurrent error tests (lines 366-430)
153
- │ │ ├── prd-compliance.test.ts # Concurrent execution tests (lines 421-460)
154
- │ │ └── deep-analysis.test.ts # Promise.all usage in tests
155
- │ └── unit/
156
- │ └── decorators.test.ts # General decorator tests
157
- ├── plan/
158
- │ └── 001_d3bb02af4886/
159
- │ ├── bugfix/
160
- │ │ ├── 001_e8e04329daf3/
161
- │ │ │ ├── P1M2T1S1/
162
- │ │ │ │ └── PRP.md # S1 analysis PRP (completed)
163
- │ │ │ └── P1M2T1S2/
164
- │ │ │ └── PRP.md # THIS FILE
165
- │ │ └── architecture/
166
- │ │ ├── promise_all_analysis.md # S1 analysis output
167
- │ │ ├── concurrent_execution_best_practices.md
168
- │ │ └── error_handling_patterns.md
169
- │ └── docs/
170
- │ └── research/
171
- │ ├── PROMISE_ALLSETTLED_RESEARCH.md
172
- │ └── PROMISE_ALLSETTLED_QUICK_REF.md
173
- └── vitest.config.ts # Test configuration
174
- ```
175
-
176
- ### Desired Codebase Tree (Changes for This Task)
177
-
178
- ```bash
179
- # MODIFIED FILES:
180
- src/decorators/task.ts # Replace Promise.all with Promise.allSettled at line 112
181
-
182
- # NO NEW FILES for this task
183
- # Type utilities will be added in P1.M2.T2.S1 (ErrorMergeStrategy support)
184
- # This task only replaces Promise.all with Promise.allSettled
185
- ```
186
-
187
- ### Known Gotchas of Our Codebase & Library Quirks
188
-
189
- ```typescript
190
- // CRITICAL GOTCHA #1: Promise.allSettled NEVER rejects
191
- // Unlike Promise.all which rejects on first error, Promise.allSettled ALWAYS resolves
192
- // You MUST manually check for errors in the results array
193
- // BAD: try { await Promise.allSettled(...) } catch (e) { /* NEVER EXECUTES */ }
194
- // GOOD: const results = await Promise.allSettled(...);
195
- // const errors = results.filter(r => r.status === 'rejected');
196
- // if (errors.length > 0) throw errors[0].reason;
197
-
198
- // CRITICAL GOTCHA #2: Type guards REQUIRED for TypeScript
199
- // PromiseSettledResult is a discriminated union
200
- // BAD: results.forEach(r => { if (r.status === 'fulfilled') console.log(r.value); });
201
- // TypeScript error: Property 'value' does not exist on type 'PromiseSettledResult<unknown>'
202
- // GOOD: const isFulfilled = <T>(r: PromiseSettledResult<T>): r is PromiseFulfilledResult<T> =>
203
- // r.status === 'fulfilled';
204
- // results.filter(isFulfilled).forEach(r => console.log(r.value));
205
-
206
- // CRITICAL GOTCHA #3: Child attachment happens BEFORE concurrent execution
207
- // Lines 91-102: children are attached before Promise.allSettled runs
208
- // Parent-child relationships exist regardless of execution success
209
- // Failed workflows remain attached to parent
210
-
211
- // CRITICAL GOTCHA #4: Error events already emitted by @Step decorator
212
- // src/decorators/step.ts:126-130 emits error events for each failed workflow
213
- // DO NOT emit additional error events in @Task decorator
214
- // Observers already see individual workflow errors
215
-
216
- // CRITICAL GOTCHA #5: WorkflowError.original is `unknown`, not `Error`
217
- // When collecting errors, don't assume Error interface
218
- // BAD: errors.forEach(e => console.log(e.original.stack));
219
- // GOOD: if (error.original instanceof Error) console.log(error.original.stack);
220
-
221
- // CRITICAL GOTCHA #6: Backward compatibility REQUIRED
222
- // Default behavior must remain fail-fast (throw first error)
223
- // Only collect errors for future P1.M2.T2 (ErrorMergeStrategy) use
224
- // DO NOT change behavior of existing code
225
-
226
- // CRITICAL GOTCHA #7: Runnable filter uses type guard pattern
227
- // The filter (w): w is WorkflowClass narrows type in filter callback
228
- // After filtering, runnable items have run() method guaranteed
229
-
230
- // CRITICAL GOTCHA #8: No duplicate prevention in runnable filter
231
- // Same workflow instance could appear twice if returned twice
232
- // Not our concern - user code responsibility
233
- ```
234
-
235
- ---
236
-
237
- ## Implementation Blueprint
238
-
239
- ### Data Models and Structure
240
-
241
- **No new data models for this task** - this task only replaces Promise.all with Promise.allSettled.
242
-
243
- **Type guards needed (inline in task.ts for now, extracted to utils in P1.M2.T2.S1):**
244
-
245
- ```typescript
246
- // Type guard for PromiseRejectedResult
247
- const isRejected = (result: PromiseSettledResult<unknown>): result is PromiseRejectedResult =>
248
- result.status === 'rejected';
249
- ```
250
-
251
- **Note:** Full utility file `src/utils/promise-utils.ts` will be created in P1.M2.T2.S1 when implementing ErrorMergeStrategy support.
252
-
253
- ### Implementation Tasks (ordered by dependencies)
254
-
255
- ```yaml
256
- Task 1: MODIFY src/decorators/task.ts - Import type for Promise.allSettled
257
- - ADD: No new imports needed - Promise.allSettled is built-in
258
- - UNDERSTAND: PromiseSettledResult<T>, PromiseFulfilledResult<T>, PromiseRejectedResult are global types
259
- - DEPENDENCIES: None
260
-
261
- Task 2: MODIFY src/decorators/task.ts - Replace Promise.all with Promise.allSettled (lines 111-113)
262
- - CURRENT CODE:
263
- await Promise.all(runnable.map((w) => w.run()));
264
-
265
- - REPLACE WITH:
266
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
267
-
268
- - DEPENDENCIES: Task 1
269
-
270
- Task 3: MODIFY src/decorators/task.ts - Add error collection after Promise.allSettled (after line 112)
271
- - ADD: Filter for rejected results
272
- - ADD: Extract error reasons from rejected promises
273
- - ADD: Throw first error for backward compatibility
274
-
275
- - IMPLEMENTATION:
276
- // Filter for rejected results
277
- const rejected = results.filter(
278
- (r): r is PromiseRejectedResult => r.status === 'rejected'
279
- );
280
-
281
- // Throw first error for backward compatibility (fail-fast behavior)
282
- if (rejected.length > 0) {
283
- throw rejected[0].reason;
284
- }
285
-
286
- - DEPENDENCIES: Task 2
287
-
288
- Task 4: VERIFY existing tests still pass
289
- - RUN: npm test
290
- - VERIFY: All existing tests pass without modification
291
- - VERIFY: Backward compatibility maintained (first error thrown)
292
- - DEPENDENCIES: Task 3
293
-
294
- Task 5: RUN specific concurrent execution tests
295
- - RUN: npm test -- src/__tests__/adversarial/edge-case.test.ts
296
- - RUN: npm test -- src/__tests__/adversarial/prd-compliance.test.ts
297
- - VERIFY: Concurrent execution tests still pass
298
- - DEPENDENCIES: Task 4
299
-
300
- Task 6: (OPTIONAL) Add inline comment for future P1.M2.T2 enhancement
301
- - ADD: Comment indicating collected errors are available for future aggregation
302
- - FORMAT: // P1.M2.T2: Collected errors available for ErrorMergeStrategy implementation
303
- - DEPENDENCIES: Task 3
304
- ```
305
-
306
- ### Implementation Patterns & Key Details
307
-
308
- ```typescript
309
- // ============================================
310
- // PATTERN 1: Promise.allSettled with Error Collection
311
- // Location: src/decorators/task.ts lines 111-120
312
- // ============================================
313
-
314
- // BEFORE (current):
315
- if (runnable.length > 0) {
316
- await Promise.all(runnable.map((w) => w.run()));
317
- }
318
-
319
- // AFTER (target):
320
- if (runnable.length > 0) {
321
- // Use Promise.allSettled to collect all results (success and failure)
322
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
323
-
324
- // Filter for rejected promises
325
- const rejected = results.filter(
326
- (r): r is PromiseRejectedResult => r.status === 'rejected'
327
- );
328
-
329
- // Throw first error for backward compatibility (fail-fast behavior)
330
- // P1.M2.T2: All collected errors available via rejected array for ErrorMergeStrategy
331
- if (rejected.length > 0) {
332
- throw rejected[0].reason;
333
- }
334
- }
335
-
336
- // KEY INSIGHTS:
337
- // - Promise.allSettled returns PromiseSettledResult<unknown>[] (never rejects)
338
- // - Type guard (r): r is PromiseRejectedResult narrows type for filter
339
- // - Throwing first reason maintains exact same behavior as Promise.all
340
- // - rejected array preserved for future P1.M2.T2 error aggregation
341
- // - No other behavior changes: events already emitted, children already attached
342
-
343
- // ============================================
344
- // PATTERN 2: Type Guard for PromiseRejectedResult
345
- // Location: src/decorators/task.ts inline (extracted to utils in P1.M2.T2)
346
- // ============================================
347
-
348
- // Inline type guard (used in this task):
349
- const rejected = results.filter(
350
- (r): r is PromiseRejectedResult => r.status === 'rejected'
351
- );
352
-
353
- // Type predicate syntax: (r): r is PromiseRejectedResult
354
- // - Tells TypeScript that filtered results are always PromiseRejectedResult
355
- // - Enables accessing .reason property without type error
356
- // - Equivalent to explicit type guard function:
357
- // const isRejected = (r: PromiseSettledResult<unknown>): r is PromiseRejectedResult =>
358
- // r.status === 'rejected';
359
-
360
- // ============================================
361
- // PATTERN 3: Backward Compatibility Strategy
362
- // Location: src/decorators/task.ts after Promise.allSettled
363
- // ============================================
364
-
365
- // CRITICAL: Must maintain exact same error propagation behavior
366
- // Promise.all behavior: Rejects with first error reason
367
- // Our implementation: Throw first rejected reason
368
-
369
- if (rejected.length > 0) {
370
- throw rejected[0].reason; // First error wins (same as Promise.all)
371
- }
372
-
373
- // WHY THIS WORKS:
374
- // - Promise.all: first rejection causes immediate reject, reason is the error
375
- // - Our code: await allSettled completes, then throw first reason
376
- // - Result: Parent receives same error, same timing (approximately)
377
- // - Difference: All workflows complete instead of being "orphaned"
378
- // - This is actually BETTER behavior (no zombie workflows)
379
-
380
- // ============================================
381
- // PATTERN 4: Error Context (Already Captured)
382
- // Location: src/decorators/step.ts lines 109-134
383
- // ============================================
384
-
385
- // NOTE: Error wrapping already happens in @Step decorator
386
- // Each workflow that throws has error already wrapped in WorkflowError
387
-
388
- // In @Step decorator (step.ts:126-130):
389
- wf.emitEvent({
390
- type: 'error',
391
- node: wf.node,
392
- error: workflowError, // WorkflowError with full context
393
- });
394
-
395
- // IMPLICATION FOR @Task:
396
- // - rejected[0].reason is already a WorkflowError object
397
- // - Contains: message, original, workflowId, stack, state, logs
398
- // - No need to wrap or transform errors
399
- // - Error events already emitted to observers
400
- // - Just throw the first WorkflowError as-is
401
-
402
- // ============================================
403
- // PATTERN 5: PromiseSettledResult Type Structure
404
- // Built-in TypeScript types
405
- // ============================================
406
-
407
- // PromiseFulfilledResult<T>:
408
- interface PromiseFulfilledResult<T> {
409
- status: 'fulfilled';
410
- value: T;
411
- }
412
-
413
- // PromiseRejectedResult:
414
- interface PromiseRejectedResult {
415
- status: 'rejected';
416
- reason: unknown; // The error/rejection reason
417
- }
418
-
419
- // PromiseSettledResult<T> (union type):
420
- type PromiseSettledResult<T> = PromiseFulfilledResult<T> | PromiseRejectedResult;
421
-
422
- // DISCRIMINATED UNION:
423
- // - Check .status property to narrow type
424
- // - 'fulfilled' -> has .value property
425
- // - 'rejected' -> has .reason property
426
- // - Type guards required for TypeScript to understand this
427
-
428
- // Example: Accessing properties safely
429
- results.forEach(result => {
430
- if (result.status === 'fulfilled') {
431
- console.log(result.value); // OK: TypeScript knows this is fulfilled
432
- } else {
433
- console.log(result.reason); // OK: TypeScript knows this is rejected
434
- }
435
- });
436
- ```
437
-
438
- ### Integration Points
439
-
440
- ```yaml
441
- # No integration point changes for this task
442
- # Promise.allSettled is a drop-in replacement for Promise.all
443
- # No API changes, no type changes, no configuration changes
444
-
445
- FUTURE_INTEGRATIONS (P1.M2.T2 - ErrorMergeStrategy):
446
- - modify: src/types/decorators.ts
447
- add: errorMergeStrategy?: ErrorMergeStrategy
448
-
449
- - modify: src/decorators/task.ts
450
- use: rejected array from this task for error aggregation
451
- pattern: if (opts.errorMergeStrategy?.enabled) { /* aggregate */ }
452
-
453
- - create: src/utils/promise-utils.ts
454
- add: Type guard functions isFulfilled, isRejected, isWorkflowError
455
- ```
456
-
457
- ---
458
-
459
- ## Validation Loop
460
-
461
- ### Level 1: Syntax & Style (Immediate Feedback)
462
-
463
- ```bash
464
- # After modifying src/decorators/task.ts, run these checks
465
-
466
- # TypeScript type checking
467
- npx tsc --noEmit src/decorators/task.ts
468
-
469
- # Run full type check on project
470
- npm run type-check # or equivalent command
471
-
472
- # Expected: Zero type errors
473
- # Common error to fix: TypeScript complaining about .reason access
474
- # Solution: Ensure type guard (r): r is PromiseRejectedResult is correct
475
- ```
476
-
477
- ### Level 2: Unit Tests (Component Validation)
478
-
479
- ```bash
480
- # Run all existing tests to verify backward compatibility
481
- npm test
482
-
483
- # Run specific concurrent execution tests
484
- npm test -- src/__tests__/adversarial/edge-case.test.ts
485
- npm test -- src/__tests__/adversarial/prd-compliance.test.ts
486
-
487
- # Run decorator-specific tests
488
- npm test -- src/__tests__/unit/decorators.test.ts
489
-
490
- # Expected: All tests pass without modification
491
- # If tests fail, debug - should maintain exact same behavior
492
- ```
493
-
494
- ### Level 3: Integration Testing (System Validation)
495
-
496
- ```bash
497
- # Create quick manual test to verify Promise.allSettled behavior
498
- cat > test_concurrent_errors.js << 'EOF'
499
- // Quick manual test for concurrent error collection
500
- import { Workflow, Task, Step } from './src/index.js';
501
-
502
- class FailingWorkflow extends Workflow {
503
- @Step()
504
- async run() {
505
- throw new Error(`Intentional failure in ${this.node.name}`);
506
- }
507
- }
508
-
509
- class SuccessWorkflow extends Workflow {
510
- @Step()
511
- async run() {
512
- return `Success from ${this.node.name}`;
513
- }
514
- }
515
-
516
- class ParentWorkflow extends Workflow {
517
- @Task({ concurrent: true })
518
- async spawnMixed() {
519
- return [
520
- new SuccessWorkflow('Good1', this),
521
- new FailingWorkflow('Bad1', this),
522
- new SuccessWorkflow('Good2', this),
523
- new FailingWorkflow('Bad2', this),
524
- ];
525
- }
526
-
527
- async run() {
528
- return this.spawnMixed();
529
- }
530
- }
531
-
532
- async function test() {
533
- const workflow = new ParentWorkflow('TestParent');
534
- try {
535
- await workflow.run();
536
- } catch (error) {
537
- console.log('Caught error (expected):', error.message);
538
- console.log('Error workflowId:', error.workflowId);
539
- console.log('Children attached:', workflow.children.length);
540
-
541
- // Verify: All workflows completed and attached
542
- // Verify: First error thrown (Bad1 or Bad2, non-deterministic which)
543
- }
544
- }
545
-
546
- test();
547
- EOF
548
-
549
- node test_concurrent_errors.js
550
-
551
- # Expected behavior:
552
- # - All 4 child workflows complete execution
553
- # - All 4 children attached to parent
554
- # - First error thrown (either Bad1 or Bad2)
555
- # - Error is WorkflowError with full context
556
-
557
- # Clean up test file
558
- rm test_concurrent_errors.js
559
- ```
560
-
561
- ### Level 4: Manual Code Review
562
-
563
- ```bash
564
- # Review the changes made to src/decorators/task.ts
565
-
566
- # Key verification points:
567
- grep -A 10 "Promise.allSettled" src/decorators/task.ts
568
-
569
- # Should show:
570
- # 1. Promise.allSettled replaces Promise.all
571
- # 2. Results filtered for 'rejected' status
572
- # 3. First error thrown for backward compatibility
573
-
574
- # Verify no other changes
575
- git diff src/decorators/task.ts
576
-
577
- # Expected: Only lines 111-120 changed, no other modifications
578
- ```
579
-
580
- ---
581
-
582
- ## Final Validation Checklist
583
-
584
- ### Technical Validation
585
-
586
- - [ ] Promise.all replaced with Promise.allSettled at line 112
587
- - [ ] Error collection filters for PromiseRejectedResult
588
- - [ ] Type guard (r): r is PromiseRejectedResult used correctly
589
- - [ ] First error thrown for backward compatibility
590
- - [ ] No type errors: `npm run type-check` passes
591
- - [ ] All existing tests pass: `npm test` passes
592
- - [ ] Concurrent execution tests pass: edge-case.test.ts, prd-compliance.test.ts
593
-
594
- ### Backward Compatibility Validation
595
-
596
- - [ ] First error thrown maintains fail-fast behavior
597
- - [ ] Error is same WorkflowError object (no wrapping/transformation)
598
- - [ ] Error events still emitted by @Step decorator (no duplication)
599
- - [ ] Child attachment happens before execution (unchanged)
600
- - [ ] Task start/end events still emitted (unchanged)
601
- - [ ] No changes to TaskOptions interface (no new options yet)
602
-
603
- ### Code Quality Validation
604
-
605
- - [ ] Follows existing code patterns (indentation, naming, style)
606
- - [ ] Inline comment added for future P1.M2.T2 enhancement
607
- - [ ] No unused variables or dead code
608
- - [ ] No console.log or debug statements left in
609
- - [ ] Error handling is specific (throwing exact error, not new wrapper)
610
-
611
- ### Documentation & Future-Proofing
612
-
613
- - [ ] Comment indicates rejected array available for P1.M2.T2
614
- - [ ] No breaking changes to public API
615
- - [ ] Code is self-documenting with clear variable names
616
- - [ ] Type guards are clear and correct
617
-
618
- ---
619
-
620
- ## Anti-Patterns to Avoid
621
-
622
- - ❌ **Don't add try-catch around Promise.allSettled** - It never rejects, catching won't work
623
- - ❌ **Don't skip the type guard** - TypeScript won't know .reason exists without type predicate
624
- - ❌ **Don't wrap the error** - Throw rejected[0].reason as-is, it's already WorkflowError
625
- - ❌ **Don't emit error events** - @Step decorator already emits them, don't duplicate
626
- - ❌ **Don't change TaskOptions** - That's P1.M2.T2, this task is internal change only
627
- - ❌ **Don't throw AggregateError** - Maintain fail-fast by throwing first error
628
- - ❌ **Don't access .value or .reason without type check** - Use type guard first
629
- - ❌ **Don't assume Error interface** - rejected[0].reason is WorkflowError (check with instanceof if needed)
630
- - ❌ **Don't create new files** - This task only modifies existing task.ts
631
- - ❌ **Don't write new tests** - Existing tests should pass, new tests in P1.M2.T1.S3
632
-
633
- ---
634
-
635
- ## Success Metrics
636
-
637
- **Confidence Score**: 10/10 for one-pass implementation success
638
-
639
- **Definition of Done**:
640
- 1. src/decorators/task.ts line 112 uses Promise.allSettled instead of Promise.all
641
- 2. Errors from all failed concurrent workflows are collected (via rejected array)
642
- 3. Backward compatibility maintained: first error still thrown
643
- 4. All existing tests pass without modification
644
- 5. Zero TypeScript type errors
645
- 6. No changes to public API or TaskOptions interface
646
-
647
- **Validation**: The implementation enables P1.M2.T2 (ErrorMergeStrategy) by providing collected errors while maintaining complete backward compatibility with existing code.
648
-
649
- ---
650
-
651
- ## Appendix: Complete Code Change Reference
652
-
653
- ### Exact Change Required (src/decorators/task.ts)
654
-
655
- **Lines 111-113 (BEFORE):**
656
- ```typescript
657
- if (runnable.length > 0) {
658
- await Promise.all(runnable.map((w) => w.run()));
659
- }
660
- ```
661
-
662
- **Lines 111-120 (AFTER):**
663
- ```typescript
664
- if (runnable.length > 0) {
665
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
666
-
667
- const rejected = results.filter(
668
- (r): r is PromiseRejectedResult => r.status === 'rejected'
669
- );
670
-
671
- if (rejected.length > 0) {
672
- throw rejected[0].reason;
673
- }
674
- }
675
- ```
676
-
677
- **Diff:**
678
- ```diff
679
- if (runnable.length > 0) {
680
- - await Promise.all(runnable.map((w) => w.run()));
681
- + const results = await Promise.allSettled(runnable.map((w) => w.run()));
682
- +
683
- + const rejected = results.filter(
684
- + (r): r is PromiseRejectedResult => r.status === 'rejected'
685
- + );
686
- +
687
- + if (rejected.length > 0) {
688
- + throw rejected[0].reason;
689
- + }
690
- }
691
- ```
692
-
693
- ---
694
-
695
- **PRP Status**: ✅ Complete - Ready for Implementation
696
- **Next Task**: P1.M2.T1.S3 - Add tests for concurrent task failure scenarios