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,741 +0,0 @@
1
- # Promise.all Implementation Analysis for @Task Decorator
2
-
3
- **Document Version:** 1.0
4
- **Analysis Date:** 2026-01-12
5
- **Target Implementation Task:** P1.M2.T1.S2 (Promise.allSettled Migration)
6
- **Primary File:** `src/decorators/task.ts` (lines 104-114)
7
-
8
- ---
9
-
10
- ## 1. Current Implementation Overview
11
-
12
- ### 1.1 Promise.all Execution Code
13
-
14
- **Location:** `src/decorators/task.ts:104-114`
15
-
16
- ```typescript
17
- // If concurrent option is set and we have multiple workflows, run them in parallel
18
- if (opts.concurrent && Array.isArray(result)) {
19
- const runnable = workflows.filter(
20
- (w): w is WorkflowClass =>
21
- w && typeof w === 'object' && 'run' in w && typeof w.run === 'function'
22
- );
23
-
24
- if (runnable.length > 0) {
25
- await Promise.all(runnable.map((w) => w.run())); // ← CRITICAL: Line 112
26
- }
27
- }
28
- ```
29
-
30
- ### 1.2 Context: Full @Task Decorator Structure
31
-
32
- **Location:** `src/decorators/task.ts:1-129`
33
-
34
- The @Task decorator performs three main operations:
35
-
36
- 1. **Child Attachment** (lines 91-102): Attaches returned workflows as children
37
- 2. **Concurrent Execution** (lines 104-114): Runs workflows in parallel when `concurrent: true`
38
- 3. **Event Emission** (lines 79-83, 117-121): Emits taskStart/taskEnd events
39
-
40
- **CRITICAL:** Child attachment happens BEFORE concurrent execution, establishing parent-child relationships regardless of execution success.
41
-
42
- ### 1.3 Local Type Definitions
43
-
44
- **Location:** `src/decorators/task.ts:4-16`
45
-
46
- ```typescript
47
- // Type for workflow-like objects
48
- interface WorkflowLike {
49
- id: string;
50
- node: WorkflowNode;
51
- emitEvent(event: WorkflowEvent): void;
52
- attachChild(child: WorkflowLike): void;
53
- }
54
-
55
- // Minimal Workflow type for checking if something is a workflow
56
- interface WorkflowClass {
57
- id: string;
58
- parent: WorkflowLike | null;
59
- run(...args: unknown[]): Promise<unknown>;
60
- }
61
- ```
62
-
63
- **NOTE:** These are local to the task.ts file - not exported from the types module.
64
-
65
- ---
66
-
67
- ## 2. Runnable Workflow Filtering Logic
68
-
69
- ### 2.1 Type Guard Implementation
70
-
71
- **Location:** `src/decorators/task.ts:106-109`
72
-
73
- ```typescript
74
- const runnable = workflows.filter(
75
- (w): w is WorkflowClass =>
76
- w && typeof w === 'object' && 'run' in w && typeof w.run === 'function'
77
- );
78
- ```
79
-
80
- ### 2.2 Type Predicate Explanation
81
-
82
- The `(w): w is WorkflowClass` syntax is a **TypeScript Type Predicate** (Type Guard):
83
-
84
- | Check | Purpose |
85
- |-------|---------|
86
- | `w` | Truthiness check - filters out null/undefined |
87
- | `typeof w === 'object'` | Ensures w is an object (not string, number, etc.) |
88
- | `'run' in w` | Checks if 'run' property exists on object |
89
- | `typeof w.run === 'function'` | Verifies run is callable |
90
-
91
- ### 2.3 What Gets Included/Excluded
92
-
93
- **Included in runnable:**
94
- - Workflow instances (with `run()` method)
95
- - Plain objects with a `run()` method (duck typing)
96
- - Workflow-like objects satisfying the type guard
97
-
98
- **Excluded from runnable:**
99
- - `null` and `undefined`
100
- - Primitive values (strings, numbers, booleans)
101
- - Objects without a `run()` method
102
- - Objects with `run` property that isn't a function
103
-
104
- ### 2.4 Critical Gotchas
105
-
106
- **Gotcha #1: No duplicate prevention**
107
- - The filter does NOT check if a workflow is already running
108
- - Same workflow instance could theoretically be executed twice
109
- - Relies on user code to not return duplicates
110
-
111
- **Gotcha #2: No running state check**
112
- - Does NOT verify workflow's current execution status
113
- - Would attempt to run an already-running workflow if present
114
- - No safeguard against race conditions in user code
115
-
116
- **Gotcha #3: Non-workflow return values silently skipped**
117
- - Worksflows are filtered out without warning
118
- - Original return value is preserved (line 123)
119
- - Lenient validation allows flexible signatures
120
-
121
- ---
122
-
123
- ## 3. Error Propagation Flow (Step-by-Step)
124
-
125
- ### 3.1 Complete Error Flow Diagram
126
-
127
- ```
128
- ┌─────────────────────────────────────────────────────────────────────────────┐
129
- │ ERROR PROPAGATION FLOW │
130
- ├─────────────────────────────────────────────────────────────────────────────┤
131
- │ │
132
- │ 1. @Step Method Throws Error │
133
- │ ↓ │
134
- │ Location: Any @Step decorated method │
135
- │ Action: Method throws Error or rejects Promise │
136
- │ │
137
- │ 2. @Step Decorator Catch Block │
138
- │ ↓ │
139
- │ Location: src/decorators/step.ts:109-134 │
140
- │ Action: │
141
- │ - Captures error state via getObservedState(this) │
142
- │ - Creates WorkflowError object with full context: │
143
- │ * message: error?.message ?? 'Unknown error' │
144
- │ * original: err (preserves original thrown error) │
145
- │ * workflowId: wf.id │
146
- │ * stack: error?.stack │
147
- │ * state: snap (observed state snapshot) │
148
- │ * logs: [...wf.node.logs] (copies current logs) │
149
- │ - Emits error event: { type: 'error', node: wf.node, error: ... } │
150
- │ - Re-throws WorkflowError │
151
- │ │
152
- │ 3. Workflow.run() Method │
153
- │ ↓ │
154
- │ Location: src/core/workflow.ts │
155
- │ Action: Error propagates naturally through call stack │
156
- │ NOTE: No automatic catching in run() - error passes through │
157
- │ │
158
- │ 4. Promise.all in @Task Decorator │
159
- │ ↓ │
160
- │ Location: src/decorators/task.ts:112 │
161
- │ Action: │
162
- │ - await Promise.all(runnable.map((w) => w.run())) │
163
- │ - FIRST ERROR WINS - immediately rejects on first rejection │
164
- │ - Other in-flight promises continue but results are LOST │
165
- │ - Parent workflow only receives FIRST error │
166
- │ │
167
- │ 5. Workflow.runFunctional() Error Handler │
168
- │ ↓ │
169
- │ Location: src/core/workflow.ts:470-488 │
170
- │ Action: │
171
- │ - Catches error in functional workflow executor │
172
- │ - Sets status to 'failed' │
173
- │ - Emits error event with WorkflowError context │
174
- │ - Re-throws original error │
175
- │ │
176
- │ 6. Parent Workflow or Root Handler │
177
- │ ↓ │
178
- │ Action: │
179
- │ - Parent may catch for custom handling │
180
- │ - Otherwise propagates to root │
181
- │ - Application-level error handling takes over │
182
- │ │
183
- └─────────────────────────────────────────────────────────────────────────────┘
184
- ```
185
-
186
- ### 3.2 WorkflowError Interface Structure
187
-
188
- **Location:** `src/types/error.ts:7-20`
189
-
190
- ```typescript
191
- export interface WorkflowError {
192
- message: string; // Error message from thrown error
193
- original: unknown; // Original thrown error (preserved)
194
- workflowId: string; // ID of workflow where error occurred
195
- stack?: string; // Stack trace if available
196
- state: SerializedWorkflowState; // State snapshot at error time
197
- logs: LogEntry[]; // Logs from the failing workflow node
198
- }
199
- ```
200
-
201
- **Key Characteristic:** Interface-based (not a class), allowing flexible error object creation while ensuring complete context capture.
202
-
203
- ### 3.3 Error Context Capture Points
204
-
205
- | Context | Where Captured | How |
206
- |---------|----------------|-----|
207
- | Error message | step.ts:117 | `error?.message ?? 'Unknown error'` |
208
- | Original error | step.ts:118 | Preserved as `original: err` |
209
- | Workflow ID | step.ts:119 | `wf.id` from workflow instance |
210
- | Stack trace | step.ts:120 | `error?.stack` if Error instance |
211
- | State snapshot | step.ts:114, 121 | `getObservedState(this as object)` |
212
- | Logs | step.ts:122 | `[...wf.node.logs]` (copied) |
213
-
214
- ---
215
-
216
- ## 4. Concurrent Failure Behavior Analysis
217
-
218
- ### 4.1 What Happens When ONE Concurrent Workflow Fails
219
-
220
- **Scenario:** Two concurrent workflows, one fails
221
-
222
- ```typescript
223
- class GoodChild extends Workflow {
224
- async run() {
225
- return 'good'; // Succeeds
226
- }
227
- }
228
-
229
- class BadChild extends Workflow {
230
- @Step()
231
- async run() {
232
- throw new Error('Bad child error'); // Fails
233
- }
234
- }
235
-
236
- class ParentWorkflow extends Workflow {
237
- @Task({ concurrent: true })
238
- async spawnMixed() {
239
- return [
240
- new GoodChild('Good', this),
241
- new BadChild('Bad', this),
242
- ];
243
- }
244
- }
245
- ```
246
-
247
- **Execution Timeline:**
248
-
249
- ```
250
- Time T0: Promise.all([
251
- run(GoodChild) → Promise<pending>,
252
- run(BadChild) → Promise<pending>
253
- ])
254
-
255
- Time T1: BadChild @Step throws error
256
- → Wrapped as WorkflowError
257
- → Promise.all REJECTS IMMEDIATELY
258
- → GoodChild result LOST
259
-
260
- Time T2: Parent receives WorkflowError from BadChild
261
- → No knowledge of GoodChild result
262
- → No knowledge that GoodChild succeeded
263
- ```
264
-
265
- ### 4.2 What Happens to OTHER Concurrent Workflows
266
-
267
- **CRITICAL BEHAVIOR:** When one workflow fails:
268
-
269
- 1. **Promise.all rejects immediately** - No waiting for other promises
270
- 2. **In-flight workflows continue executing** - They're not cancelled
271
- 3. **Results from other workflows are LOST** - Never captured
272
- 4. **Parent only sees first error** - No error aggregation
273
-
274
- ### 4.3 Can Parent See ALL Errors?
275
-
276
- **Answer:** NO - Parent only sees the FIRST error that causes Promise.all to reject.
277
-
278
- **Evidence from test code:**
279
-
280
- **Location:** `src/__tests__/adversarial/edge-case.test.ts:366-403`
281
-
282
- ```typescript
283
- it('should handle concurrent task execution with errors', async () => {
284
- // Test shows mixed success/failure in concurrent execution
285
- // Both children are attached (line 402: expect(workflow.children.length).toBe(2))
286
- // But error handling only catches first error
287
- });
288
- ```
289
-
290
- ### 4.4 Current Error Semantics
291
-
292
- | Aspect | Behavior |
293
- |--------|----------|
294
- | Fail-fast | YES - Immediate rejection on first error |
295
- | Error aggregation | NO - Only first error visible |
296
- | Partial results | NO - Success results are lost |
297
- | Error context | FULL - WorkflowError captures complete context |
298
- | Race condition preservation | YES - Whichever error arrives first wins |
299
-
300
- ---
301
-
302
- ## 5. Promise.allSettled Migration Requirements
303
-
304
- ### 5.1 Core Code Changes Required
305
-
306
- #### Change 1: Replace Promise.all with Promise.allSettled
307
-
308
- **Current (src/decorators/task.ts:112):**
309
- ```typescript
310
- await Promise.all(runnable.map((w) => w.run()));
311
- ```
312
-
313
- **Required:**
314
- ```typescript
315
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
316
- ```
317
-
318
- #### Change 2: Add Error Strategy Configuration
319
-
320
- **Location:** `src/types/decorators.ts` (TaskOptions interface)
321
-
322
- **Current:**
323
- ```typescript
324
- export interface TaskOptions {
325
- name?: string;
326
- concurrent?: boolean;
327
- }
328
- ```
329
-
330
- **Required:**
331
- ```typescript
332
- export interface TaskOptions {
333
- name?: string;
334
- concurrent?: boolean;
335
- errorStrategy?: 'fail-fast' | 'complete-all'; // NEW
336
- }
337
- ```
338
-
339
- **ALTERNATIVE:** Use existing ErrorMergeStrategy interface
340
-
341
- ```typescript
342
- export interface TaskOptions {
343
- name?: string;
344
- concurrent?: boolean;
345
- errorMergeStrategy?: ErrorMergeStrategy; // Use existing type
346
- }
347
- ```
348
-
349
- ### 5.2 Type Guard Requirements
350
-
351
- **Need to create:** Type guards for PromiseSettledResult
352
-
353
- **Location:** `src/utils/promise-utils.ts` (NEW FILE)
354
-
355
- ```typescript
356
- import type { WorkflowError } from '../types/error.js';
357
-
358
- // Type guard for fulfilled results
359
- export function isFulfilled<T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> {
360
- return result.status === 'fulfilled';
361
- }
362
-
363
- // Type guard for rejected results
364
- export function isRejected(result: PromiseSettledResult<unknown>): result is PromiseRejectedResult {
365
- return result.status === 'rejected';
366
- }
367
-
368
- // Check if result is WorkflowError
369
- export function isWorkflowError(error: unknown): error is WorkflowError {
370
- return (
371
- typeof error === 'object' &&
372
- error !== null &&
373
- 'message' in error &&
374
- 'workflowId' in error &&
375
- 'state' in error &&
376
- 'logs' in error
377
- );
378
- }
379
- ```
380
-
381
- ### 5.3 Error Aggregation Pattern Requirements
382
-
383
- **Required:** Logic to collect and process errors from Promise.allSettled results
384
-
385
- ```typescript
386
- // After Promise.allSettled, separate successes and failures
387
- const errors = results
388
- .filter((r): r is PromiseRejectedResult => r.status === 'rejected')
389
- .map((r) => r.reason as WorkflowError);
390
-
391
- // If there are errors and we're in complete-all mode
392
- if (errors.length > 0 && opts.errorStrategy === 'complete-all') {
393
- // Aggregate errors
394
- const mergedError: WorkflowError = {
395
- message: `${errors.length} concurrent workflows failed`,
396
- original: errors.map(e => e.original),
397
- workflowId: wf.id,
398
- stack: errors.map(e => e.stack).filter(Boolean).join('\n---\n'),
399
- state: getObservedState(this),
400
- logs: errors.flatMap(e => e.logs),
401
- };
402
-
403
- // Emit aggregated error
404
- wf.emitEvent({
405
- type: 'error',
406
- node: wf.node,
407
- error: mergedError,
408
- });
409
-
410
- throw mergedError;
411
- }
412
-
413
- // Otherwise, if fail-fast mode, throw first error
414
- if (errors.length > 0) {
415
- throw errors[0];
416
- }
417
- ```
418
-
419
- ### 5.4 Backward Compatibility Requirements
420
-
421
- **CRITICAL:** Must preserve existing behavior when `errorStrategy` is not specified:
422
-
423
- | Configuration | Behavior |
424
- |---------------|----------|
425
- | No errorStrategy | Fail-fast (current Promise.all behavior) |
426
- | errorStrategy: 'fail-fast' | Fail-fast (Promise.all semantics) |
427
- | errorStrategy: 'complete-all' | Wait for all, aggregate errors |
428
-
429
- **Implementation approach:**
430
- ```typescript
431
- if (opts.concurrent && Array.isArray(result)) {
432
- const runnable = workflows.filter(/* ... */);
433
-
434
- if (runnable.length > 0) {
435
- if (opts.errorStrategy === 'complete-all') {
436
- // New behavior: Promise.allSettled with error aggregation
437
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
438
- // ... error aggregation logic
439
- } else {
440
- // Default: maintain current Promise.all behavior
441
- await Promise.all(runnable.map((w) => w.run()));
442
- }
443
- }
444
- }
445
- ```
446
-
447
- ### 5.5 Integration with Existing ErrorMergeStrategy
448
-
449
- **Location:** `src/types/error-strategy.ts`
450
-
451
- **Current State:** Interface exists but is completely unused
452
-
453
- ```typescript
454
- export interface ErrorMergeStrategy {
455
- enabled: boolean;
456
- maxMergeDepth?: number;
457
- combine?(errors: WorkflowError[]): WorkflowError;
458
- }
459
- ```
460
-
461
- **Migration Decision Point:**
462
-
463
- **Option A:** Create new `errorStrategy?: 'fail-fast' | 'complete-all'` option
464
- - Pro: Simpler, more explicit
465
- - Pro: Easier to understand for users
466
- - Con: Doesn't leverage existing ErrorMergeStrategy interface
467
-
468
- **Option B:** Add `errorMergeStrategy?: ErrorMergeStrategy` to TaskOptions
469
- - Pro: Leverages existing design intent
470
- - Pro: Supports custom combine() functions
471
- - Pro: More flexible for advanced use cases
472
- - Con: More complex configuration
473
-
474
- **RECOMMENDATION for P1.M2.T1.S2:** Use Option A initially, can add Option B as enhancement
475
-
476
- ### 5.6 File Structure Changes
477
-
478
- **New File to Create:**
479
- ```
480
- src/utils/promise-utils.ts
481
- ```
482
-
483
- **Files to Modify:**
484
- 1. `src/types/decorators.ts` - Add errorStrategy option
485
- 2. `src/decorators/task.ts` - Implement Promise.allSettled logic
486
- 3. `src/utils/index.ts` - Export new promise utilities (if created)
487
-
488
- ---
489
-
490
- ## 6. Edge Cases and Gotchas
491
-
492
- ### 6.1 Promise.allSettled Gotchas
493
-
494
- #### Gotcha #1: Promise.allSettled Never Rejects
495
-
496
- **CRITICAL:** Unlike Promise.all, Promise.allSettled ALWAYS resolves
497
-
498
- ```typescript
499
- // This NEVER throws
500
- const results = await Promise.allSettled([runnable1, runnable2]);
501
-
502
- // You MUST check for errors manually
503
- const errors = results.filter(r => r.status === 'rejected');
504
- if (errors.length > 0) {
505
- throw errors[0].reason; // Manual error propagation
506
- }
507
- ```
508
-
509
- #### Gotcha #2: Type Narrowing Required
510
-
511
- **Without type guards, TypeScript doesn't know result types:**
512
-
513
- ```typescript
514
- // ❌ BAD: Type error
515
- results.forEach(r => {
516
- if (r.status === 'fulfilled') {
517
- console.log(r.value); // Error: Property 'value' does not exist
518
- }
519
- });
520
-
521
- // ✅ GOOD: With type guard
522
- const isFulfilled = <T>(r: PromiseSettledResult<T>): r is PromiseFulfilledResult<T> =>
523
- r.status === 'fulfilled';
524
-
525
- results.forEach(r => {
526
- if (isFulfilled(r)) {
527
- console.log(r.value); // OK: Type narrowed
528
- }
529
- });
530
- ```
531
-
532
- #### Gotcha #3: Order is Preserved But Results Aren't
533
-
534
- **Promise.allSettled preserves array order, but workflow completion order is non-deterministic:**
535
-
536
- ```typescript
537
- const workflows = [wf1, wf2, wf3];
538
- const results = await Promise.allSettled(workflows.map(w => w.run()));
539
-
540
- // results[0] always corresponds to wf1
541
- // results[1] always corresponds to wf2
542
- // results[2] always corresponds to wf3
543
-
544
- // But wf2 might complete BEFORE wf1 - order of completion != order of results
545
- ```
546
-
547
- ### 6.2 Child Attachment Gotchas
548
-
549
- #### Gotcha #4: Children Attach BEFORE Execution
550
-
551
- **Location:** `src/decorators/task.ts:91-102`
552
-
553
- **CRITICAL:** Parent-child relationship is established BEFORE concurrent execution:
554
-
555
- ```typescript
556
- // Step 1: Attach children (lines 91-102)
557
- for (const workflow of workflows) {
558
- if (workflow && typeof workflow === 'object' && 'id' in workflow) {
559
- const childWf = workflow as WorkflowClass;
560
- if (!childWf.parent) {
561
- childWf.parent = wf;
562
- wf.attachChild(childWf as unknown as WorkflowLike);
563
- }
564
- }
565
- }
566
-
567
- // Step 2: Run concurrently (lines 104-114)
568
- if (opts.concurrent && Array.isArray(result)) {
569
- // Children already attached at this point
570
- await Promise.all(runnable.map((w) => w.run()));
571
- }
572
- ```
573
-
574
- **Implication:** Failed workflows remain attached to parent even after errors.
575
-
576
- ### 6.3 Runnable Filter Gotchas
577
-
578
- #### Gotcha #5: No Duplicate Prevention
579
-
580
- **The runnable filter does NOT prevent duplicate workflow execution:**
581
-
582
- ```typescript
583
- @Task({ concurrent: true })
584
- async spawnDuplicate() {
585
- const child = new ChildWorkflow('same', this);
586
- return [child, child]; // Same workflow twice
587
- }
588
-
589
- // Result: child.run() is called twice
590
- // Potential: Race conditions, duplicate side effects
591
- ```
592
-
593
- #### Gotcha #6: Non-Workflow Returns Are Silently Skipped
594
-
595
- **Lenient validation allows flexible signatures:**
596
-
597
- ```typescript
598
- @Task()
599
- async mixedReturn() {
600
- return [
601
- new ChildWorkflow('child1', this), // Attached & run
602
- 'some string', // Silently skipped
603
- 42, // Silently skipped
604
- null, // Silently skipped
605
- new ChildWorkflow('child2', this), // Attached & run
606
- ];
607
- }
608
-
609
- // Original return value preserved (line 123)
610
- // Only workflow-like objects are filtered for execution
611
- ```
612
-
613
- ### 6.4 Error Context Gotchas
614
-
615
- #### Gotcha #7: WorkflowError May Contain Non-Error Objects
616
-
617
- **The `original` property is `unknown`, not `Error`:**
618
-
619
- ```typescript
620
- export interface WorkflowError {
621
- original: unknown; // Could be anything thrown
622
- }
623
- ```
624
-
625
- **Implication:** When aggregating errors, don't assume Error interface:
626
-
627
- ```typescript
628
- // ❌ BAD: Assumes Error interface
629
- errors.forEach(e => {
630
- console.log(e.original.stack); // Error if original isn't Error
631
- });
632
-
633
- // ✅ GOOD: Type guard first
634
- if (error.original instanceof Error) {
635
- console.log(error.original.stack);
636
- }
637
- ```
638
-
639
- ### 6.5 Event Emission Gotchas
640
-
641
- #### Gotcha #8: Error Events Emitted Per Workflow
642
-
643
- **Each failing workflow emits its own error event:**
644
-
645
- ```typescript
646
- // In @Step decorator (step.ts:126-130)
647
- wf.emitEvent({
648
- type: 'error',
649
- node: wf.node,
650
- error: workflowError,
651
- });
652
- ```
653
-
654
- **Implication:** With Promise.allSettled, observers see multiple error events for concurrent failures.
655
-
656
- **Migration consideration:** May want to emit aggregated error event after collection.
657
-
658
- ### 6.6 Testing Gotchas
659
-
660
- #### Gotcha #9: Concurrent Execution Order is Non-Deterministic
661
-
662
- **From test file (`src/__tests__/adversarial/prd-compliance.test.ts:421-460`):**
663
-
664
- ```typescript
665
- it('should run workflows concurrently when concurrent: true', async () => {
666
- // Test comment acknowledges non-deterministic order:
667
- // "With concurrent execution, we can't guarantee order, but all should be present"
668
- expect(executionOrder).toContain('Child1');
669
- expect(executionOrder).toContain('Child2');
670
- expect(executionOrder).toContain('Child3');
671
- });
672
- ```
673
-
674
- **Implication:** Tests cannot assume specific execution order with concurrent workflows.
675
-
676
- ---
677
-
678
- ## 7. Cross-References to Existing Research
679
-
680
- ### 7.1 Related Documents
681
-
682
- | Document | Location | Relevance |
683
- |----------|----------|-----------|
684
- | Error Handling Patterns | `plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md` | Documents Promise.all location and ErrorMergeStrategy |
685
- | Promise.allSettled Research | `plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md` | Comprehensive best practices and migration strategies |
686
- | Promise.allSettled Quick Ref | `plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md` | Quick reference for implementation |
687
-
688
- ### 7.2 Related Code Files
689
-
690
- | File | Lines | Purpose |
691
- |------|-------|---------|
692
- | `src/decorators/task.ts` | 104-114 | Promise.all implementation (primary target) |
693
- | `src/decorators/step.ts` | 109-134 | Error wrapping and WorkflowError creation |
694
- | `src/core/workflow.ts` | 470-488 | runFunctional error handling |
695
- | `src/types/error-strategy.ts` | All | ErrorMergeStrategy interface (currently unused) |
696
- | `src/types/error.ts` | All | WorkflowError interface definition |
697
- | `src/types/decorators.ts` | All | TaskOptions interface (needs extension) |
698
-
699
- ### 7.3 Related Test Files
700
-
701
- | File | Lines | Test Coverage |
702
- |------|-------|---------------|
703
- | `src/__tests__/adversarial/edge-case.test.ts` | 366-403 | Concurrent execution with errors |
704
- | `src/__tests__/adversarial/prd-compliance.test.ts` | 421-460 | Concurrent execution order |
705
- | `src/__tests__/adversarial/deep-analysis.test.ts` | 473 | Promise.all in test code |
706
-
707
- ---
708
-
709
- ## 8. Summary for P1.M2.T1.S2 Implementation
710
-
711
- ### 8.1 Key Findings
712
-
713
- 1. **Promise.all fails fast** - Only first error is visible to parent
714
- 2. **Child attachment is separate** - Happens before execution, regardless of success
715
- 3. **Error context is complete** - WorkflowError captures all needed information
716
- 4. **ErrorMergeStrategy exists but unused** - Requires Promise.allSettled to function
717
- 5. **Type guards are required** - PromiseSettledResult needs type narrowing
718
-
719
- ### 8.2 Implementation Checklist for P1.M2.T1.S2
720
-
721
- - [ ] Add `errorStrategy?: 'fail-fast' | 'complete-all'` to TaskOptions
722
- - [ ] Create type guards in `src/utils/promise-utils.ts`
723
- - [ ] Replace Promise.all with conditional Promise.allSettled logic
724
- - [ ] Implement error aggregation for 'complete-all' mode
725
- - [ ] Ensure backward compatibility (default = fail-fast)
726
- - [ ] Add tests for both error strategies
727
- - [ ] Update documentation and examples
728
-
729
- ### 8.3 Critical Success Factors
730
-
731
- 1. **Maintain backward compatibility** - Default behavior must remain unchanged
732
- 2. **Type safety** - Use proper type guards for PromiseSettledResult
733
- 3. **Complete error context** - Aggregate errors must preserve WorkflowError structure
734
- 4. **Clear semantics** - 'fail-fast' vs 'complete-all' should be unambiguous
735
- 5. **Test coverage** - Cover mixed success/failure scenarios
736
-
737
- ---
738
-
739
- **Document Status:** ✅ Complete - Ready for P1.M2.T1.S2 Implementation
740
-
741
- **Next Step:** Proceed to P1.M2.T1.S2 - Implement Promise.allSettled migration with error aggregation