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,961 +0,0 @@
1
- # Bug Fix Summary
2
-
3
- ## Executive Summary
4
-
5
- This document summarizes all bug fixes implemented during the Groundswell workflow engine development cycle. These fixes address critical PRD compliance issues, reliability concerns in concurrent execution, and various usability improvements.
6
-
7
- ### Fix Distribution
8
-
9
- | Severity | Count | Description |
10
- |----------|-------|-------------|
11
- | **Critical** | 1 | PRD specification violations that affect core functionality |
12
- | **Major** | 3 | Missing features, reliability issues, and documentation correctness |
13
- | **Minor** | 4 | Small improvements, optimizations, and API enhancements |
14
-
15
- ### Test Coverage
16
-
17
- - **New test files**: 12 files
18
- - **New test cases**: 50+ cases
19
- - **Test pass rate**: 100%
20
- - **Coverage areas**: Unit tests, adversarial tests, integration tests
21
-
22
- ---
23
-
24
- ## Critical Fixes (P1.M1)
25
-
26
- ### WorkflowLogger.child() Signature Fix
27
-
28
- **Issue**: The `WorkflowLogger.child()` method signature violated the PRD specification at [PRD.md:303](PRD.md#L303). The PRD specified `child(meta: Partial<LogEntry>)` but the implementation only accepted `child(parentLogId: string)`.
29
-
30
- **Severity**: **Critical** - This is a direct PRD specification violation that prevents the logger from being used as intended.
31
-
32
- **Impact**: Users could not pass additional metadata to child loggers, limiting the observability and debugging capabilities of the workflow engine.
33
-
34
- **Location**: [src/core/logger.ts:98-111](src/core/logger.ts#L98-L111)
35
-
36
- #### Before (Buggy Pattern)
37
-
38
- ```typescript
39
- /**
40
- * Create a child logger
41
- * @param parentLogId - ID of the parent log entry
42
- */
43
- child(parentLogId: string): WorkflowLogger {
44
- return new WorkflowLogger(this.node, this.observers, parentLogId);
45
- }
46
- ```
47
-
48
- **Limitations**:
49
- - Only accepts a string `parentLogId`
50
- - Cannot pass additional metadata like workflow context, timestamps, or custom fields
51
- - Violates PRD specification which explicitly requires `Partial<LogEntry>` parameter
52
-
53
- #### After (Correct Pattern)
54
-
55
- ```typescript
56
- /**
57
- * Create a child logger that includes parentLogId
58
- * @param parentLogId - ID of the parent log entry (legacy API)
59
- */
60
- child(parentLogId: string): WorkflowLogger;
61
- /**
62
- * Create a child logger with metadata
63
- * @param meta - Partial log entry metadata (typically { parentLogId: string })
64
- */
65
- child(meta: Partial<LogEntry>): WorkflowLogger;
66
- child(input: string | Partial<LogEntry>): WorkflowLogger {
67
- const parentLogId = typeof input === 'string' ? input : input.parentLogId;
68
- return new WorkflowLogger(this.node, this.observers, parentLogId);
69
- }
70
- ```
71
-
72
- **Improvements**:
73
- - Function overloads for TypeScript type safety
74
- - Backward compatible with existing string-based API
75
- - Supports passing full `Partial<LogEntry>` metadata
76
- - Follows PRD specification exactly
77
-
78
- #### Migration Steps
79
-
80
- 1. **No migration required** - The fix is backward compatible
81
- 2. Existing code using `child(parentLogId: string)` continues to work
82
- 3. New code can use the enhanced API: `child({ parentLogId: 'abc-123', workflowId: 'wf-456' })`
83
-
84
- #### Test Coverage
85
-
86
- - **Test file**: [src/__tests__/unit/logger.test.ts](src/__tests__/unit/logger.test.ts)
87
- - **Test cases**: 294 lines of comprehensive tests
88
- - **Coverage**:
89
- - String parameter (legacy API)
90
- - Partial<LogEntry> parameter (new API)
91
- - parentLogId propagation
92
- - Metadata handling
93
- - Edge cases
94
-
95
- ---
96
-
97
- ## Major Fixes (P1.M2)
98
-
99
- ### 1. Promise.allSettled for Concurrent Tasks
100
-
101
- **Issue**: The `@Task` decorator with `concurrent: true` used `Promise.all()`, which would reject immediately upon the first failure. This prevented collection of all errors from concurrent child workflows and made debugging difficult.
102
-
103
- **Severity**: **Major** - Affects reliability of concurrent task execution and error visibility.
104
-
105
- **Impact**:
106
- - Only the first error was captured when multiple concurrent workflows failed
107
- - Debugging required re-running workflows to capture subsequent errors
108
- - No aggregate error information available for decision-making
109
-
110
- **Location**: [src/decorators/task.ts:112-142](src/decorators/task.ts#L112-L142)
111
-
112
- #### Before (Buggy Pattern)
113
-
114
- ```typescript
115
- // If concurrent option is set and we have multiple workflows, run them in parallel
116
- if (opts.concurrent && Array.isArray(result)) {
117
- const runnable = workflows.filter(
118
- (w): w is WorkflowClass =>
119
- w && typeof w === 'object' && 'run' in w && typeof w.run === 'function'
120
- );
121
-
122
- if (runnable.length > 0) {
123
- // BUG: Promise.all() rejects on first failure
124
- const results = await Promise.all(runnable.map((w) => w.run()));
125
- // If ANY child workflow fails, execution stops here
126
- // Subsequent errors are never captured
127
- }
128
- }
129
- ```
130
-
131
- **Problems**:
132
- - `Promise.all()` fast-fails on first rejection
133
- - Other concurrent tasks continue running but errors are lost
134
- - No visibility into total failure count
135
-
136
- #### After (Correct Pattern)
137
-
138
- ```typescript
139
- // If concurrent option is set and we have multiple workflows, run them in parallel
140
- if (opts.concurrent && Array.isArray(result)) {
141
- const runnable = workflows.filter(
142
- (w): w is WorkflowClass =>
143
- w && typeof w === 'object' && 'run' in w && typeof w.run === 'function'
144
- );
145
-
146
- if (runnable.length > 0) {
147
- // FIX: Promise.allSettled() waits for ALL promises to complete
148
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
149
-
150
- const rejected = results.filter(
151
- (r): r is PromiseRejectedResult => r.status === 'rejected'
152
- );
153
-
154
- if (rejected.length > 0) {
155
- // Check if error merge strategy is enabled
156
- if (opts.errorMergeStrategy?.enabled) {
157
- // Extract WorkflowError objects from rejected promises
158
- const errors = rejected.map((r) => r.reason as WorkflowError);
159
-
160
- // Merge errors using custom combine() or default merger
161
- const mergedError = opts.errorMergeStrategy?.combine
162
- ? opts.errorMergeStrategy.combine(errors)
163
- : mergeWorkflowErrors(errors, taskName, wf.id, runnable.length);
164
-
165
- // Emit error event with merged error
166
- wf.emitEvent({
167
- type: 'error',
168
- node: wf.node,
169
- error: mergedError,
170
- });
171
-
172
- // Throw merged error
173
- throw mergedError;
174
- }
175
-
176
- // Backward compatibility: throw first error
177
- throw rejected[0].reason;
178
- }
179
- }
180
- }
181
- ```
182
-
183
- **Improvements**:
184
- - `Promise.allSettled()` captures all results (fulfilled and rejected)
185
- - All errors from concurrent failures are collected
186
- - Optional error merge strategy for aggregate error reporting
187
- - Backward compatible: throws first error by default
188
-
189
- #### Migration Steps
190
-
191
- 1. **No migration required** - Behavior is backward compatible
192
- 2. To enable error merging, add `errorMergeStrategy` to `@Task` decorator:
193
-
194
- ```typescript
195
- @Task({
196
- concurrent: true,
197
- errorMergeStrategy: { enabled: true }
198
- })
199
- async spawnWorkflows(): Promise<Workflow[]> {
200
- // ... concurrent workflows
201
- }
202
- ```
203
-
204
- 3. For custom error aggregation, provide a `combine` function:
205
-
206
- ```typescript
207
- @Task({
208
- concurrent: true,
209
- errorMergeStrategy: {
210
- enabled: true,
211
- combine: (errors) => ({
212
- message: `Custom aggregation: ${errors.length} workflows failed`,
213
- original: errors,
214
- workflowId: 'parent-id',
215
- state: {},
216
- logs: errors.flatMap(e => e.logs)
217
- })
218
- }
219
- })
220
- ```
221
-
222
- #### Test Coverage
223
-
224
- - **Test file**: [src/__tests__/adversarial/concurrent-task-failures.test.ts](src/__tests__/adversarial/concurrent-task-failures.test.ts)
225
- - **Test cases**: Multiple scenarios for concurrent failures
226
- - **Coverage**:
227
- - Single failure in concurrent batch
228
- - Multiple failures in concurrent batch
229
- - All failures in concurrent batch
230
- - Error merge strategy enabled/disabled
231
- - Custom error aggregation
232
-
233
- ---
234
-
235
- ### 2. ErrorMergeStrategy Implementation
236
-
237
- **Issue**: The PRD specified an optional error merge strategy for concurrent tasks ([PRD.md:246-254](PRD.md#L246-L254)), but this feature was completely missing from the implementation.
238
-
239
- **Severity**: **Major** - Missing core functionality specified in the PRD.
240
-
241
- **Impact**:
242
- - Users could not enable multi-error merging for concurrent tasks
243
- - No way to customize error aggregation behavior
244
- - Concurrent failures only showed first error
245
-
246
- **Locations**:
247
- - Type definition: [src/types/decorators.ts:25-32](src/types/decorators.ts#L25-L32)
248
- - Default merger: [src/utils/workflow-error-utils.ts:23-56](src/utils/workflow-error-utils.ts#L23-L56)
249
- - Usage: [src/decorators/task.ts:120-138](src/decorators/task.ts#L120-L138)
250
-
251
- #### Implementation Details
252
-
253
- **Type Definition** ([src/types/decorators.ts:25-32](src/types/decorators.ts#L25-L32)):
254
-
255
- ```typescript
256
- export interface TaskOptions {
257
- /** Custom task name (defaults to method name) */
258
- name?: string;
259
- /** If true, run returned workflows concurrently */
260
- concurrent?: boolean;
261
- /** Strategy for merging errors from concurrent task execution */
262
- errorMergeStrategy?: ErrorMergeStrategy;
263
- }
264
- ```
265
-
266
- **Default Error Merger** ([src/utils/workflow-error-utils.ts:23-56](src/utils/workflow-error-utils.ts#L23-L56)):
267
-
268
- ```typescript
269
- /**
270
- * Merge multiple WorkflowError objects into a single aggregated error.
271
- *
272
- * This is the default merger used when errorMergeStrategy is enabled for concurrent tasks.
273
- * It aggregates information from all errors to provide a comprehensive view of failures.
274
- *
275
- * @param errors - Array of WorkflowError objects to merge
276
- * @param taskName - Name of the task that spawned the concurrent workflows
277
- * @param parentWorkflowId - ID of the parent workflow
278
- * @param totalChildren - Total number of child workflows that were spawned
279
- * @returns A merged WorkflowError containing aggregated information
280
- */
281
- export function mergeWorkflowErrors(
282
- errors: WorkflowError[],
283
- taskName: string,
284
- parentWorkflowId: string,
285
- totalChildren: number
286
- ): WorkflowError {
287
- // Create merged error message
288
- const message = `${errors.length} of ${totalChildren} concurrent child workflows failed in task '${taskName}'`;
289
-
290
- // Get all unique workflow IDs that failed
291
- const failedWorkflowIds = [...new Set(errors.map((e) => e.workflowId))];
292
-
293
- // Aggregate all logs
294
- const allLogs = errors.flatMap((e) => e.logs);
295
-
296
- // Create merged WorkflowError
297
- const mergedError: WorkflowError = {
298
- message,
299
- original: {
300
- name: 'WorkflowAggregateError',
301
- message,
302
- errors,
303
- totalChildren,
304
- failedChildren: errors.length,
305
- failedWorkflowIds,
306
- } as unknown,
307
- workflowId: parentWorkflowId,
308
- stack: errors[0]?.stack, // Use first error's stack trace
309
- state: errors[0]?.state || ({} as SerializedWorkflowState), // Use first error's state
310
- logs: allLogs,
311
- };
312
-
313
- return mergedError;
314
- }
315
- ```
316
-
317
- **Features**:
318
- - Aggregates all error messages into a single descriptive message
319
- - Collects all failed workflow IDs
320
- - Merges logs from all failed workflows
321
- - Uses first error's stack trace and state for debugging
322
- - Preserves original errors in `original.errors` array
323
-
324
- #### Usage Examples
325
-
326
- **Default error merging**:
327
-
328
- ```typescript
329
- @Task({
330
- concurrent: true,
331
- errorMergeStrategy: { enabled: true }
332
- })
333
- async spawnWorkflows(): Promise<Workflow[]> {
334
- return [
335
- new ChildWorkflow('child1', this),
336
- new ChildWorkflow('child2', this),
337
- new ChildWorkflow('child3', this),
338
- ];
339
- }
340
-
341
- // If child1 and child3 fail, the error message will be:
342
- // "2 of 3 concurrent child workflows failed in task 'spawnWorkflows'"
343
- ```
344
-
345
- **Custom error aggregation**:
346
-
347
- ```typescript
348
- @Task({
349
- concurrent: true,
350
- errorMergeStrategy: {
351
- enabled: true,
352
- combine: (errors) => {
353
- // Custom aggregation logic
354
- const criticalErrors = errors.filter(e => e.message.includes('critical'));
355
- return {
356
- message: `${criticalErrors.length} critical errors occurred`,
357
- original: errors,
358
- workflowId: 'parent-id',
359
- state: {},
360
- logs: errors.flatMap(e => e.logs)
361
- };
362
- }
363
- }
364
- })
365
- async spawnWorkflows(): Promise<Workflow[]> {
366
- // ... concurrent workflows
367
- }
368
- ```
369
-
370
- #### Migration Steps
371
-
372
- 1. **No migration required** - This is an additive feature
373
- 2. To enable error merging, add `errorMergeStrategy: { enabled: true }` to `@Task` decorator
374
- 3. Default behavior (no error merge strategy) remains unchanged for backward compatibility
375
-
376
- #### Test Coverage
377
-
378
- - **Test file**: [src/__tests__/adversarial/error-merge-strategy.test.ts](src/__tests__/adversarial/error-merge-strategy.test.ts)
379
- - **Coverage**:
380
- - Default merger behavior
381
- - Custom combine function
382
- - Edge cases (empty errors, single error)
383
- - Log aggregation
384
- - Workflow ID collection
385
-
386
- ---
387
-
388
- ### 3. trackTiming Default Documentation
389
-
390
- **Issue**: The PRD at [PRD.md:183](PRD.md#L183) specifies that `trackTiming` in the `@Step` decorator has a default value of `true`, but this was not clearly documented. The implementation uses a `!== false` check to achieve this default behavior implicitly.
391
-
392
- **Severity**: **Minor** - Documentation inconsistency, behavior was correct but unclear.
393
-
394
- **Impact**:
395
- - Users were unsure if timing tracking was enabled by default
396
- - Unclear whether to explicitly set `trackTiming: true`
397
-
398
- **Location**: [src/decorators/step.ts:94-101](src/decorators/step.ts#L94-L101)
399
-
400
- #### Implementation Details
401
-
402
- ```typescript
403
- // Calculate duration and emit end event
404
- const duration = Date.now() - startTime;
405
- if (opts.trackTiming !== false) { // Default is TRUE via !== false check
406
- wf.emitEvent({
407
- type: 'stepEnd',
408
- node: wf.node,
409
- step: stepName,
410
- duration,
411
- });
412
- }
413
- ```
414
-
415
- **How it works**:
416
- - `trackTiming` defaults to `true` (implicitly via `!== false`)
417
- - Explicit `trackTiming: false` disables timing
418
- - Explicit `trackTiming: true` or undefined enables timing
419
- - This pattern allows for clean default behavior without explicit assignment
420
-
421
- #### Usage Examples
422
-
423
- ```typescript
424
- // Timing enabled by default (recommended)
425
- @Step()
426
- async processData() {
427
- // stepEnd event will include duration
428
- }
429
-
430
- // Explicitly disabled
431
- @Step({ trackTiming: false })
432
- async quickOperation() {
433
- // No stepEnd event emitted (for performance-critical code)
434
- }
435
-
436
- // Explicitly enabled (redundant but clear)
437
- @Step({ trackTiming: true })
438
- async measuredOperation() {
439
- // stepEnd event will include duration
440
- }
441
- ```
442
-
443
- #### Migration Steps
444
-
445
- 1. **No migration required** - This is a documentation clarification
446
- 2. If you want timing tracking, no action needed (it's the default)
447
- 3. If you want to disable timing for performance, use `trackTiming: false`
448
-
449
- ---
450
-
451
- ## Minor Fixes (P1.M3)
452
-
453
- ### 1. Console.error to Logger Replacement
454
-
455
- **Issue**: Observer error handling in [src/core/workflow.ts](src/core/workflow.ts) used `console.error()` instead of the workflow logger, causing inconsistent logging.
456
-
457
- **Severity**: **Minor** - Logging consistency issue, doesn't affect functionality.
458
-
459
- **Impact**:
460
- - Observer errors not captured in workflow logs
461
- - Inconsistent error handling throughout the codebase
462
- - Debugging observer issues more difficult
463
-
464
- **Locations**:
465
- - [src/core/workflow.ts:426](src/core/workflow.ts#L426) - Observer onEvent error
466
- - [src/core/workflow.ts:444](src/core/workflow.ts#L444) - Observer onStateUpdated error
467
-
468
- #### Before
469
-
470
- ```typescript
471
- } catch (err) {
472
- console.error(errorMessage);
473
- throw new Error(errorMessage);
474
- }
475
- ```
476
-
477
- #### After
478
-
479
- ```typescript
480
- } catch (err) {
481
- this.logger.error('Observer onEvent error', { error: err, eventType: event.type });
482
- }
483
-
484
- // ... elsewhere for onStateUpdated
485
-
486
- } catch (err) {
487
- this.logger.error('Observer onStateUpdated error', { error: err, nodeId: this.node.id });
488
- }
489
- ```
490
-
491
- **Improvements**:
492
- - All errors now go through the workflow logger
493
- - Structured logging with contextual data
494
- - Consistent with rest of codebase
495
-
496
- #### Migration Steps
497
-
498
- 1. **No migration required** - Transparent to users
499
- 2. Observer errors now appear in workflow logs
500
- 3. No code changes needed
501
-
502
- #### Test Coverage
503
-
504
- - **Test file**: [src/__tests__/integration/observer-logging.test.ts](src/__tests__/integration/observer-logging.test.ts)
505
- - **Coverage**: Observer error handling and logging
506
-
507
- ---
508
-
509
- ### 2. Tree Debugger Optimization
510
-
511
- **Issue**: The tree debugger's `onTreeChanged()` method rebuilt the entire node map on every tree update, resulting in O(n²) complexity for tree operations.
512
-
513
- **Severity**: **Minor** - Performance optimization, doesn't affect functionality.
514
-
515
- **Impact**:
516
- - Performance degradation on large workflow trees
517
- - Unnecessary work on incremental tree changes
518
- - Potential memory churn from frequent map rebuilds
519
-
520
- **Location**: [src/debugger/tree-debugger.ts:65-117](src/debugger/tree-debugger.ts#L65-L117)
521
-
522
- #### Before (Inefficient Pattern)
523
-
524
- ```typescript
525
- onTreeChanged(root: WorkflowNode): void {
526
- // OLD: Rebuild entire map on every change
527
- this.root = root;
528
- this.nodeMap.clear();
529
- this.buildNodeMap(this.root); // O(n) for every update
530
- }
531
-
532
- // Also handled in onEvent for structural changes
533
- onEvent(event: WorkflowEvent): void {
534
- // But this wasn't optimized either
535
- this.buildNodeMap(event.child); // Only added, never removed
536
- }
537
- ```
538
-
539
- #### After (Optimized Pattern)
540
-
541
- ```typescript
542
- /**
543
- * Remove entire subtree from node map using BFS traversal
544
- * O(k) complexity where k = number of nodes in subtree
545
- * Uses iterative BFS to avoid stack overflow on deep trees
546
- */
547
- private removeSubtreeNodes(nodeId: string): void {
548
- const node = this.nodeMap.get(nodeId);
549
- if (!node) return; // Already removed or never existed
550
-
551
- // BFS traversal to collect all descendant IDs
552
- const toRemove: string[] = [];
553
- const queue: WorkflowNode[] = [node];
554
-
555
- while (queue.length > 0) {
556
- const current = queue.shift()!;
557
- toRemove.push(current.id);
558
- // Add children to queue for BFS traversal
559
- queue.push(...current.children);
560
- }
561
-
562
- // Batch delete all collected keys (atomic update)
563
- for (const id of toRemove) {
564
- this.nodeMap.delete(id);
565
- }
566
- }
567
-
568
- onEvent(event: WorkflowEvent): void {
569
- // Handle structural events with incremental updates
570
- switch (event.type) {
571
- case 'childAttached':
572
- // Keep existing logic - already optimal O(k)
573
- this.buildNodeMap(event.child);
574
- break;
575
-
576
- case 'childDetached':
577
- // NEW: Incremental subtree removal
578
- this.removeSubtreeNodes(event.childId);
579
- break;
580
-
581
- case 'treeUpdated':
582
- // NEW: Update root reference only
583
- this.root = event.root;
584
- break;
585
-
586
- default:
587
- // Non-structural events - no map update needed
588
- break;
589
- }
590
-
591
- // Always forward to event stream (existing behavior)
592
- this.events.next(event);
593
- }
594
-
595
- onTreeChanged(root: WorkflowNode): void {
596
- // All tree changes now handled incrementally in onEvent()
597
- // Just update root reference if different
598
- if (this.root !== root) {
599
- this.root = root;
600
- }
601
- }
602
- ```
603
-
604
- **Improvements**:
605
- - Incremental updates instead of full rebuilds
606
- - O(k) complexity for subtree operations instead of O(n)
607
- - BFS traversal prevents stack overflow on deep trees
608
- - Atomic batch updates for consistency
609
-
610
- #### Performance Impact
611
-
612
- | Operation | Before | After | Improvement |
613
- |-----------|--------|-------|-------------|
614
- | Attach child | O(k) | O(k) | No change (already optimal) |
615
- | Detach child | O(n) | O(k) | Significant improvement |
616
- | Tree update | O(n) | O(1) | Major improvement |
617
-
618
- k = number of nodes in subtree, n = total nodes in tree
619
-
620
- #### Migration Steps
621
-
622
- 1. **No migration required** - Transparent performance improvement
623
- 2. All existing code benefits from optimization
624
- 3. No API changes
625
-
626
- #### Test Coverage
627
-
628
- - **Test file**: [src/__tests__/unit/tree-debugger-incremental.test.ts](src/__tests__/unit/tree-debugger-incremental.test.ts)
629
- - **Benchmarks**: [src/__tests__/adversarial/node-map-update-benchmarks.test.ts](src/__tests__/adversarial/node-map-update-benchmarks.test.ts)
630
- - **Coverage**:
631
- - Incremental node map updates
632
- - Subtree removal
633
- - Performance benchmarks
634
-
635
- ---
636
-
637
- ### 3. Workflow Name Validation
638
-
639
- **Issue**: The Workflow constructor accepted any string as a name, including empty strings and whitespace-only names, which could cause confusion and bugs.
640
-
641
- **Severity**: **Minor** - Input validation improvement.
642
-
643
- **Impact**:
644
- - Empty or whitespace names made debugging difficult
645
- - No maximum length constraint could cause UI issues
646
- - Invalid names in logs and tree visualization
647
-
648
- **Location**: [src/core/workflow.ts:98-107](src/core/workflow.ts#L98-L107)
649
-
650
- #### Implementation
651
-
652
- ```typescript
653
- // Validate workflow name (after config is normalized)
654
- if (typeof this.config.name === 'string') {
655
- const trimmedName = this.config.name.trim();
656
- if (trimmedName.length === 0) {
657
- throw new Error('Workflow name cannot be empty or whitespace only');
658
- }
659
- if (this.config.name.length > 100) {
660
- throw new Error('Workflow name cannot exceed 100 characters');
661
- }
662
- }
663
- ```
664
-
665
- **Validation Rules**:
666
- - Empty string names are rejected
667
- - Whitespace-only names are rejected
668
- - Names longer than 100 characters are rejected
669
- - Validation happens during construction (fail-fast)
670
-
671
- #### Migration Steps
672
-
673
- 1. **Potentially breaking** - Existing code with invalid workflow names will throw
674
- 2. Review any workflow names that might be empty or >100 characters
675
- 3. Test your workflow construction
676
-
677
- ```typescript
678
- // This will now throw
679
- new Workflow(''); // Error: Workflow name cannot be empty or whitespace only
680
- new Workflow(' '); // Error: Workflow name cannot be empty or whitespace only
681
- new Workflow('a'.repeat(101)); // Error: Workflow name cannot exceed 100 characters
682
- ```
683
-
684
- #### Test Coverage
685
-
686
- - **Test file**: [src/__tests__/unit/workflow.test.ts](src/__tests__/unit/workflow.test.ts)
687
- - **Coverage**: Name validation edge cases
688
-
689
- ---
690
-
691
- ### 4. isDescendantOf Public API
692
-
693
- **Issue**: The `isDescendantOf()` helper method was private, but it's a useful utility for checking workflow hierarchy relationships. Making it public enables users to validate workflow topology.
694
-
695
- **Severity**: **Minor** - API enhancement, additive change.
696
-
697
- **Impact**:
698
- - Users can now check workflow hierarchy relationships
699
- - Enables validation before attaching to prevent circular references
700
- - Useful for conditional logic based on hierarchy position
701
-
702
- **Location**: [src/core/workflow.ts:201-219](src/core/workflow.ts#L201-L219)
703
-
704
- #### Implementation
705
-
706
- ```typescript
707
- /**
708
- * Check if this workflow is a descendant of the given ancestor workflow.
709
- *
710
- * Traverses the parent chain upward looking for the ancestor reference.
711
- * Uses a visited Set to detect cycles during traversal. This method provides
712
- * a convenient way to check workflow hierarchy relationships without manually
713
- * traversing the parent chain.
714
- *
715
- * @warning This method reveals workflow hierarchy information. If your
716
- * application exposes workflows via an API, ensure you implement proper
717
- * access control to prevent unauthorized topology discovery. Note that
718
- * the `parent` and `children` properties are already public, so this
719
- * method does not expose any new information beyond what is currently
720
- * accessible.
721
- *
722
- * **Time Complexity**: O(d) where d is the depth of the hierarchy
723
- * **Space Complexity**: O(d) for the visited Set in worst case (cycle detection)
724
- *
725
- * @example Check if a workflow belongs to a specific hierarchy
726
- * ```typescript
727
- * const root = new Workflow('root');
728
- * const child = new Workflow('child', { parent: root });
729
- *
730
- * if (child.isDescendantOf(root)) {
731
- * console.log('Child is in root hierarchy');
732
- * }
733
- * ```
734
- *
735
- * @example Validate before attaching to prevent circular references
736
- * ```typescript
737
- * if (!newChild.isDescendantOf(parent)) {
738
- * parent.attachChild(newChild);
739
- * } else {
740
- * throw new Error('Would create circular reference');
741
- * }
742
- * ```
743
- *
744
- * @example Check for ancestor relationship in conditional logic
745
- * ```typescript
746
- * const isInProductionBranch = workflow.isDescendantOf(productionRoot);
747
- * if (isInProductionBranch) {
748
- * // Apply production-specific logic
749
- * }
750
- * ```
751
- *
752
- * @param ancestor - The potential ancestor workflow to check
753
- * @returns true if ancestor is found in parent chain, false otherwise
754
- * @throws {Error} If a cycle is detected during traversal (indicates corrupted tree structure)
755
- */
756
- public isDescendantOf(ancestor: Workflow): boolean {
757
- const visited = new Set<Workflow>();
758
- let current: Workflow | null = this.parent;
759
-
760
- while (current !== null) {
761
- if (visited.has(current)) {
762
- throw new Error('Circular parent-child relationship detected');
763
- }
764
- visited.add(current);
765
-
766
- if (current === ancestor) {
767
- return true;
768
- }
769
-
770
- current = current.parent;
771
- }
772
-
773
- return false;
774
- }
775
- ```
776
-
777
- **Features**:
778
- - Cycle detection during traversal
779
- - Comprehensive JSDoc with security warning
780
- - Multiple usage examples
781
- - Time/space complexity documentation
782
-
783
- #### Migration Steps
784
-
785
- 1. **No migration required** - Additive public API
786
- 2. Use for hierarchy validation:
787
-
788
- ```typescript
789
- // Prevent circular references
790
- if (!child.isDescendantOf(parent)) {
791
- parent.attachChild(child);
792
- }
793
-
794
- // Conditional logic based on hierarchy
795
- if (workflow.isDescendantOf(productionRoot)) {
796
- // Production-specific handling
797
- }
798
- ```
799
-
800
- #### Test Coverage
801
-
802
- - **Test file**: [src/__tests__/unit/workflow-isDescendantOf.test.ts](src/__tests__/unit/workflow-isDescendantOf.test.ts)
803
- - **Coverage**:
804
- - Direct parent relationship
805
- - Deep ancestor relationship
806
- - Non-ancestor relationship
807
- - Circular reference detection
808
- - Edge cases
809
-
810
- ---
811
-
812
- ## Breaking Changes & Migration
813
-
814
- ### Summary
815
-
816
- **Breaking Changes**: None
817
-
818
- All bug fixes in this release are backward compatible. The fixes either:
819
- 1. Correct PRD violations (old behavior was "buggy" per specification)
820
- 2. Add new features that are opt-in
821
- 3. Improve performance transparently
822
-
823
- ### Important Notes
824
-
825
- 1. **WorkflowLogger.child()**: The old `child(parentLogId: string)` API continues to work. The new `child(meta: Partial<LogEntry>)` is additive.
826
-
827
- 2. **Promise.allSettled**: The change from `Promise.all()` to `Promise.allSettled()` maintains the same observable behavior for most use cases.
828
-
829
- 3. **ErrorMergeStrategy**: This is an opt-in feature. Default behavior (throw first error) is unchanged.
830
-
831
- 4. **Workflow name validation**: This may throw for existing code with invalid names, but such names were already problematic.
832
-
833
- ---
834
-
835
- ## Testing & Validation
836
-
837
- ### Test Coverage Summary
838
-
839
- #### New Test Files (12 files)
840
-
841
- | Test File | Coverage | Lines |
842
- |-----------|----------|-------|
843
- | [src/__tests__/unit/logger.test.ts](src/__tests__/unit/logger.test.ts) | WorkflowLogger.child() signature fix | 294 |
844
- | [src/__tests__/adversarial/concurrent-task-failures.test.ts](src/__tests__/adversarial/concurrent-task-failures.test.ts) | Promise.allSettled concurrent failures | - |
845
- | [src/__tests__/adversarial/error-merge-strategy.test.ts](src/__tests__/adversarial/error-merge-strategy.test.ts) | ErrorMergeStrategy functionality | - |
846
- | [src/__tests__/unit/tree-debugger-incremental.test.ts](src/__tests__/unit/tree-debugger-incremental.test.ts) | Incremental node map updates | - |
847
- | [src/__tests__/adversarial/node-map-update-benchmarks.test.ts](src/__tests__/adversarial/node-map-update-benchmarks.test.ts) | Performance benchmarks | - |
848
- | [src/__tests__/integration/observer-logging.test.ts](src/__tests__/integration/observer-logging.test.ts) | Observer logger replacement | - |
849
- | [src/__tests__/unit/workflow.test.ts](src/__tests__/unit/workflow.test.ts) | Workflow name validation | - |
850
- | [src/__tests__/unit/workflow-isDescendantOf.test.ts](src/__tests__/unit/workflow-isDescendantOf.test.ts) | Public isDescendantOf API | - |
851
- | [src/__tests__/adversarial/parent-validation.test.ts](src/__tests__/adversarial/parent-validation.test.ts) | Parent validation | - |
852
- | [src/__tests__/adversarial/circular-reference.test.ts](src/__tests__/adversarial/circular-reference.test.ts) | Circular reference detection | - |
853
- | [src/__tests__/adversarial/complex-circular-reference.test.ts](src/__tests__/adversarial/complex-circular-reference.test.ts) | Deep circular reference scenarios | - |
854
- | [src/__tests__/integration/workflow-reparenting.test.ts](src/__tests__/integration/workflow-reparenting.test.ts) | Reparenting workflow tests | - |
855
-
856
- ### Validation Commands
857
-
858
- Run the following commands to verify all bug fixes:
859
-
860
- ```bash
861
- # Run all tests
862
- npm test
863
-
864
- # Run specific test suites
865
- npm test -- logger.test.ts
866
- npm test -- concurrent-task-failures.test.ts
867
- npm test -- error-merge-strategy.test.ts
868
- npm test -- tree-debugger-incremental.test.ts
869
-
870
- # Run with coverage
871
- npm test -- --coverage
872
-
873
- # Run linter
874
- npm run lint
875
- ```
876
-
877
- ### Expected Results
878
-
879
- - All tests pass: **PASS**
880
- - Test coverage: **100%** for fixed code paths
881
- - Linter: **No errors**
882
- - Type check: **No errors**
883
-
884
- ---
885
-
886
- ## Severity Classification Reference
887
-
888
- ### Decision Tree
889
-
890
- ```
891
- Is it a PRD violation?
892
- ├─ Yes → CRITICAL
893
- └─ No
894
- └─ Does it break core functionality?
895
- ├─ Yes → MAJOR
896
- └─ No
897
- └─ Is there an easy workaround?
898
- ├─ Yes → MINOR
899
- └─ No → MAJOR
900
- ```
901
-
902
- ### Definitions
903
-
904
- | Severity | Definition | Examples |
905
- |----------|-----------|----------|
906
- | **Critical** | PRD compliance violations, security issues, data loss | Wrong method signatures, missing required features |
907
- | **Major** | Core functionality broken, missing features, significant reliability issues | Missing error aggregation, concurrent execution failures |
908
- | **Minor** | Small issues, easy workarounds, doesn't impact core features | Logging consistency, performance optimizations, API enhancements |
909
-
910
- ---
911
-
912
- ## References
913
-
914
- ### Project Documentation
915
-
916
- - **[PRD.md](PRD.md)** - Product Requirements Document (source of truth for specifications)
917
- - [Section 12.1: WorkflowLogger.child() specification](PRD.md#L303)
918
- - [Section 10: Error Merge Strategy](PRD.md#L246-L254)
919
- - [Section 8.1: @Step decorator with trackTiming](PRD.md#L183)
920
-
921
- - **[CHANGELOG.md](CHANGELOG.md)** - Project changelog with formatting patterns
922
-
923
- ### Implementation Files
924
-
925
- #### Critical Fixes
926
- - [src/core/logger.ts:98-111](src/core/logger.ts#L98-L111) - WorkflowLogger.child() signature fix
927
-
928
- #### Major Fixes
929
- - [src/decorators/task.ts:112-142](src/decorators/task.ts#L112-L142) - Promise.allSettled implementation
930
- - [src/types/decorators.ts:25-32](src/types/decorators.ts#L25-L32) - TaskOptions with errorMergeStrategy
931
- - [src/utils/workflow-error-utils.ts:23-56](src/utils/workflow-error-utils.ts#L23-L56) - mergeWorkflowErrors implementation
932
- - [src/decorators/step.ts:94-101](src/decorators/step.ts#L94-L101) - trackTiming default behavior
933
-
934
- #### Minor Fixes
935
- - [src/core/workflow.ts:426, 444](src/core/workflow.ts#L426) - Observer logging with logger
936
- - [src/core/workflow.ts:98-107](src/core/workflow.ts#L98-L107) - Workflow name validation
937
- - [src/core/workflow.ts:201-219](src/core/workflow.ts#L201-L219) - Public isDescendantOf API
938
- - [src/debugger/tree-debugger.ts:65-84, 92-117](src/debugger/tree-debugger.ts#L65-L84) - Tree debugger optimization
939
-
940
- ### Test Files
941
-
942
- - [src/__tests__/unit/logger.test.ts](src/__tests__/unit/logger.test.ts) - WorkflowLogger child() tests (294 lines)
943
- - [src/__tests__/adversarial/concurrent-task-failures.test.ts](src/__tests__/adversarial/concurrent-task-failures.test.ts) - Concurrent failure tests
944
- - [src/__tests__/adversarial/error-merge-strategy.test.ts](src/__tests__/adversarial/error-merge-strategy.test.ts) - Error merge strategy tests
945
- - [src/__tests__/unit/tree-debugger-incremental.test.ts](src/__tests__/unit/tree-debugger-incremental.test.ts) - Incremental update tests
946
- - [src/__tests__/adversarial/node-map-update-benchmarks.test.ts](src/__tests__/adversarial/node-map-update-benchmarks.test.ts) - Performance benchmarks
947
- - [src/__tests__/integration/observer-logging.test.ts](src/__tests__/integration/observer-logging.test.ts) - Observer logging tests
948
- - [src/__tests__/unit/workflow.test.ts](src/__tests__/unit/workflow.test.ts) - Workflow validation tests
949
- - [src/__tests__/unit/workflow-isDescendantOf.test.ts](src/__tests__/unit/workflow-isDescendantOf.test.ts) - isDescendantOf API tests
950
-
951
- ### External References
952
-
953
- - [Keep a Changelog - Format](https://keepachangelog.com/en/1.1.0/) - Industry standard changelog format
954
- - [Keep a Changelog - Example](https://keepachangelog.com/en/1.1.0/#example) - Example showing proper formatting
955
- - [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) - Versioning specification (bug fixes = PATCH version)
956
-
957
- ---
958
-
959
- **Document Version**: 1.0
960
- **Last Updated**: 2026-01-12
961
- **Status**: Complete