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,718 +0,0 @@
1
- name: "P1M3T2S3: Add Benchmark Tests for Node Map Updates"
2
- description: |
3
- Creates comprehensive benchmark tests demonstrating the performance improvement from incremental node map updates
4
- implemented in P1M3T2S2. Tests compare old full rebuild approach vs new incremental O(k) approach.
5
-
6
- ---
7
-
8
- ## Goal
9
-
10
- **Feature Goal**: Create benchmark tests that demonstrate and validate the performance improvement from incremental node map updates.
11
-
12
- **Deliverable**: Benchmark test file `src/__tests__/adversarial/node-map-update-benchmarks.test.ts` with:
13
- 1. Tests comparing old full rebuild vs new incremental update performance
14
- 2. Large workflow tree scenarios (100+ nodes)
15
- 3. Performance threshold assertions
16
- 4. Functional correctness validation
17
-
18
- **Success Definition**:
19
- - Benchmark tests pass consistently
20
- - Incremental updates show measurable performance improvement (10-100×)
21
- - Performance thresholds are appropriate for CI environments
22
- - Tests prevent future regressions in node map update performance
23
-
24
- ## User Persona
25
-
26
- **Target User**: Developer maintaining the hierarchical workflow engine codebase.
27
-
28
- **Use Case**: Validating that incremental node map updates maintain performance optimization over time.
29
-
30
- **User Journey**:
31
- 1. Developer runs benchmark tests after code changes
32
- 2. Tests measure performance of node map updates
33
- 3. If performance regresses, tests fail indicating issue
34
- 4. Developer identifies and fixes regression
35
-
36
- **Pain Points Addressed**:
37
- - Without benchmarks, performance regressions go undetected
38
- - Need to validate that S2 optimization actually improved performance
39
- - Need to establish baseline performance for future comparisons
40
-
41
- ## Why
42
-
43
- - **Validation**: P1M3T2S2 implemented incremental updates - need to verify improvement
44
- - **Regression prevention**: Benchmark tests catch performance regressions early
45
- - **Documentation**: Tests serve as executable documentation of expected performance
46
- - **CI/CD integration**: Automated performance validation in CI pipeline
47
-
48
- ## What
49
-
50
- Create comprehensive benchmark tests for node map update performance.
51
-
52
- ### Success Criteria
53
-
54
- - [ ] Benchmark test file created in `src/__tests__/adversarial/`
55
- - [ ] Tests measure single node detach performance (1000+ node tree)
56
- - [ ] Tests measure subtree detach performance (varying subtree sizes)
57
- - [ ] Tests measure multiple operations cumulative performance
58
- - [ ] Tests validate functional correctness alongside performance
59
- - [ ] Performance thresholds use generous CI-friendly margins
60
- - [ ] Console logging shows expected vs actual performance
61
- - [ ] All tests pass consistently
62
-
63
- ## All Needed Context
64
-
65
- ### Context Completeness Check
66
-
67
- **"No Prior Knowledge" test**: If someone knew nothing about this codebase, would they have everything needed?
68
-
69
- ✅ **YES** - This PRP provides:
70
- - Exact file paths and patterns from existing benchmark tests
71
- - Complete benchmark testing patterns to follow
72
- - Tree debugger implementation details for understanding what's being tested
73
- - Performance threshold guidelines based on existing tests
74
- - All necessary test utilities and helpers
75
-
76
- ### Documentation & References
77
-
78
- ```yaml
79
- # MUST READ - Include these in your context window
80
- - file: src/__tests__/adversarial/incremental-performance.test.ts
81
- why: PRIMARY REFERENCE - Existing benchmark test patterns for node map updates
82
- pattern: Lines 9-39 (detach from large tree is O(k) not O(n))
83
- pattern: Lines 41-67 (attach to large tree is O(k))
84
- pattern: Lines 69-102 (detach large subtree is O(k))
85
- pattern: Lines 104-139 (multiple operations show cumulative benefit)
86
- gotcha: Uses 5ms threshold for CI environments (line 38)
87
-
88
- - file: src/__tests__/adversarial/attachChild-performance.test.ts
89
- why: Performance regression testing patterns with tiered thresholds
90
- pattern: Lines 1-14 (header documentation pattern)
91
- pattern: Lines 20-30 (SimpleWorkflow class pattern)
92
- pattern: Lines 59-81 (shallow tree test with < 10ms threshold)
93
- pattern: Lines 92-116 (deep tree test with < 50ms threshold)
94
- pattern: Lines 127-150 (extreme deep tree with < 100ms threshold)
95
- pattern: Lines 161-183 (wide tree with average time calculation)
96
- gotcha: Console logging for debugging (lines 28-29, 59-60)
97
-
98
- - file: src/__tests__/adversarial/deep-hierarchy-stress.test.ts
99
- why: Stress testing patterns for extreme scenarios
100
- pattern: Lines 33-37 (beforeEach console mocking pattern)
101
- pattern: Lines 44-48 (afterEach vi.restoreAllMocks pattern)
102
- pattern: Lines 153-187 (performance threshold test pattern)
103
- gotcha: Thresholds: < 100ms for single operation, < 1000ms for 100 iterations
104
-
105
- - file: src/debugger/tree-debugger.ts
106
- why: Understanding what is being benchmarked
107
- pattern: Lines 65-84 (removeSubtreeNodes - incremental O(k) removal)
108
- pattern: Lines 92-117 (onEvent with incremental updates)
109
- pattern: Lines 123-129 (onTreeChanged - now O(1) root update only)
110
- pattern: Lines 225-254 (getStats for validation)
111
-
112
- - file: src/__tests__/helpers/tree-verification.ts
113
- why: Test helper utilities for validation
114
- pattern: Lines 114-140 (verifyBidirectionalLink for attach validation)
115
- pattern: Lines 151-163 (verifyOrphaned for detach validation)
116
- pattern: Lines 201-237 (verifyTreeMirror for consistency checks)
117
-
118
- - file: plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md
119
- why: Understanding the incremental optimization being benchmarked
120
- section: "Goal" (lines 8-22) - Success definition and expected improvements
121
- section: "Level 4: Performance Validation" (lines 441-483) - Benchmark pattern
122
- gotcha: Expected 10-100× improvement for large trees (1000+ nodes)
123
-
124
- - url: https://developer.mozilla.org/en-US/docs/Web/API/Performance/now
125
- why: performance.now() API documentation for timing measurements
126
- critical: High-resolution timing, monotonic clock, sub-millisecond precision
127
- gotcha: Use duration.toFixed(3) for consistent logging
128
-
129
- - url: https://vitest.dev/guide/features.html#benchmark
130
- why: Vitest built-in benchmark support (alternative to manual performance.now())
131
- section: "Benchmark Mode" - can use .bench() instead of .it() for benchmarks
132
- ```
133
-
134
- ### Current Codebase Structure
135
-
136
- ```bash
137
- /home/dustin/projects/groundswell/
138
- ├── src/
139
- │ ├── debugger/
140
- │ │ └── tree-debugger.ts # Implementation being benchmarked
141
- │ ├── __tests__/
142
- │ │ ├── adversarial/
143
- │ │ │ ├── incremental-performance.test.ts # REFERENCE PATTERN
144
- │ │ │ ├── attachChild-performance.test.ts # REFERENCE PATTERN
145
- │ │ │ └── deep-hierarchy-stress.test.ts # REFERENCE PATTERN
146
- │ │ └── helpers/
147
- │ │ └── tree-verification.ts # Test utilities
148
- │ └── types/
149
- │ ├── events.ts # WorkflowEvent types
150
- │ └── observer.ts # WorkflowObserver interface
151
- └── plan/
152
- └── 001_d3bb02af4886/bugfix/001_e8e04329daf3/
153
- └── P1M3T2S3/
154
- ├── PRP.md # This file
155
- └── research/ # External research storage
156
- ```
157
-
158
- ### Desired Codebase Structure After Implementation
159
-
160
- ```bash
161
- src/__tests__/
162
- └── adversarial/
163
- └── node-map-update-benchmarks.test.ts # NEW: Benchmark tests
164
- ```
165
-
166
- ### Known Gotchas of Our Codebase & Library Quirks
167
-
168
- ```typescript
169
- // CRITICAL: Use performance.now() for timing, not Date.now()
170
- // performance.now() provides sub-millisecond precision
171
- // Date.now() is affected by system clock changes
172
- // Pattern from: incremental-performance.test.ts:22-26
173
-
174
- // CRITICAL: Use generous thresholds for CI environments
175
- // CI performance varies significantly - use 2-3× expected time
176
- // Example: incremental-performance.test.ts:38 uses < 5ms instead of < 1ms
177
-
178
- // CRITICAL: Always validate functional correctness FIRST
179
- // Performance tests must fail if functionality is broken
180
- // Pattern from: attachChild-performance.test.ts:75-77 (verifyBidirectionalLink)
181
-
182
- // CRITICAL: Log both actual and expected performance for debugging
183
- // Pattern: incremental-performance.test.ts:28-29
184
- // console.log(`Detach duration: ${duration.toFixed(3)}ms`);
185
- // console.log(`Expected: < 1ms for incremental, ~10ms for full rebuild`);
186
-
187
- // CRITICAL: Use BenchmarkWorkflow class pattern, not full Workflow
188
- // Minimal async run() method reduces test overhead
189
- // Pattern from: incremental-performance.test.ts:4-6
190
-
191
- // CRITICAL: Calculate average time for bulk operations
192
- // Helps identify if single operation is outlier
193
- // Pattern from: attachChild-performance.test.ts:167-183
194
-
195
- // CRITICAL: Mock console methods in adversarial tests
196
- // Prevents test output pollution
197
- // Pattern from: deep-hierarchy-stress.test.ts:33-37, 44-48
198
-
199
- // CRITICAL: Use vi.restoreAllMocks() in afterEach
200
- // Prevents test pollution
201
- // Pattern from: deep-hierarchy-stress.test.ts:44-48
202
-
203
- // CRITICAL: Tests should validate the specific optimization
204
- // For S3: validating that incremental O(k) is faster than old O(n) rebuild
205
- // The "old" approach would have called buildNodeMap(this.root) on every change
206
-
207
- // CRITICAL: Test different tree sizes to show scalability
208
- // Small trees (< 100): Already fast, minimal difference
209
- // Medium trees (100-1000): 10-100× improvement
210
- // Large trees (1000+): 100-1000× improvement
211
-
212
- // CRITICAL: Test both attach and detach operations
213
- // S2 optimized both childAttached and childDetached
214
- // Pattern from: incremental-performance.test.ts:41-67 (attach test)
215
-
216
- // CRITICAL: Test subtree operations, not just single nodes
217
- // BFS-based removeSubtreeNodes() scales with subtree size k
218
- // Pattern from: incremental-performance.test.ts:69-102
219
- ```
220
-
221
- ## Implementation Blueprint
222
-
223
- ### Data Models and Structure
224
-
225
- No new data models. Using existing:
226
- - `Workflow` from `src/core/workflow.js`
227
- - `WorkflowTreeDebugger` from `src/debugger/tree-debugger.js`
228
- - `SimpleWorkflow` or `BenchmarkWorkflow` test class pattern
229
-
230
- ### Implementation Tasks (ordered by dependencies)
231
-
232
- ```yaml
233
- Task 1: CREATE benchmark test file with header and setup
234
- - IMPLEMENT: src/__tests__/adversarial/node-map-update-benchmarks.test.ts
235
- - FOLLOW pattern: src/__tests__/adversarial/attachChild-performance.test.ts:1-30
236
- - INCLUDE: Comprehensive header comment explaining purpose
237
- - INCLUDE: Reference to P1M3T2S2 optimization being validated
238
- - IMPORT: describe, it, expect from vitest
239
- - IMPORT: Workflow, WorkflowTreeDebugger from src/index.js
240
- - CREATE: BenchmarkWorkflow class with minimal async run() method
241
- - PLACEMENT: src/__tests__/adversarial/node-map-update-benchmarks.test.ts
242
-
243
- Task 2: IMPLEMENT single node detach benchmark (1000+ node tree)
244
- - IMPLEMENT: Test case "single node detach from large tree is O(1)"
245
- - FOLLOW pattern: src/__tests__/adversarial/incremental-performance.test.ts:9-39
246
- - CREATE: 1000-node linear chain (root + 999 descendants)
247
- - MEASURE: Time to detach single leaf node using performance.now()
248
- - VERIFY: Functional correctness (node count decreases by 1)
249
- - VERIFY: Detached node removed from nodeMap
250
- - ASSERT: Duration < 5ms (generous CI threshold)
251
- - LOG: Expected vs actual performance
252
- - NAMING: it('should detach single node from large tree in O(1) time')
253
-
254
- Task 3: IMPLEMENT single node attach benchmark
255
- - IMPLEMENT: Test case "single node attach is O(1)"
256
- - FOLLOW pattern: src/__tests__/adversarial/incremental-performance.test.ts:41-67
257
- - CREATE: 100-node tree (smaller for attach test)
258
- - MEASURE: Time to attach single node
259
- - VERIFY: Node added to nodeMap
260
- - VERIFY: Total nodes increased by 1
261
- - ASSERT: Duration < 10ms
262
- - NAMING: it('should attach single node in O(1) time')
263
-
264
- Task 4: IMPLEMENT subtree detach benchmark with varying sizes
265
- - IMPLEMENT: Test case "subtree detach scales with subtree size, not tree size"
266
- - FOLLOW pattern: src/__tests__/adversarial/incremental-performance.test.ts:69-102
267
- - CREATE: Tree with one large branch (101 nodes) and 900 other nodes
268
- - MEASURE: Time to detach large branch
269
- - VERIFY: Entire subtree removed (node count - 101)
270
- - VERIFY: Branch nodes not in nodeMap
271
- - ASSERT: Duration < 10ms (should scale with k=101, not n=1002)
272
- - LOG: "Processing 101 nodes, not 1002"
273
- - NAMING: it('should detach subtree in O(k) time where k = subtree size')
274
-
275
- Task 5: IMPLEMENT cumulative operations benchmark
276
- - IMPLEMENT: Test case "multiple operations show cumulative benefit"
277
- - FOLLOW pattern: src/__tests__/adversarial/incremental-performance.test.ts:104-139
278
- - CREATE: Tree with 10 branches, each with 10 nodes
279
- - MEASURE: Total time to detach all 10 branches
280
- - CALCULATE: Average time per detach
281
- - VERIFY: Only root remains after all detaches
282
- - ASSERT: Total duration < 50ms (10 × 5ms)
283
- - LOG: Total and average duration
284
- - NAMING: it('should complete multiple operations efficiently')
285
-
286
- Task 6: IMPLEMENT deep tree stress test
287
- - IMPLEMENT: Test case "deep tree operations don't cause stack overflow"
288
- - FOLLOW pattern: src/__tests__/adversarial/deep-hierarchy-stress.test.ts:57-79
289
- - CREATE: 2000-node deep linear chain
290
- - MEASURE: Time to attach node at depth 2000
291
- - MEASURE: Time to detach node from depth 2000
292
- - VERIFY: No stack overflow occurs
293
- - VERIFY: Functional correctness
294
- - ASSERT: Duration < 100ms
295
- - NAMING: it('should handle deep tree (2000 levels) efficiently')
296
-
297
- Task 7: IMPLEMENT wide tree benchmark
298
- - IMPLEMENT: Test case "wide tree operations scale efficiently"
299
- - FOLLOW pattern: src/__tests__/adversarial/attachChild-performance.test.ts:161-183
300
- - CREATE: Single parent with 100 children
301
- - MEASURE: Total time to attach all 100 children
302
- - CALCULATE: Average time per attachment
303
- - VERIFY: All children in nodeMap
304
- - ASSERT: Total < 100ms, average < 1ms
305
- - NAMING: it('should handle wide tree efficiently')
306
-
307
- Task 8: ADD test suite metadata documentation
308
- - IMPLEMENT: Comprehensive header comment block
309
- - FOLLOW pattern: src/__tests__/adversarial/attachChild-performance.test.ts:1-14
310
- - INCLUDE: Purpose statement referencing P1M3T2S2
311
- - INCLUDE: Performance threshold rationale
312
- - INCLUDE: Expected complexity notation (O(k) vs O(n))
313
- - INCLUDE: Related PRP references
314
- - PLACEMENT: Top of test file
315
-
316
- Task 9: RUN all benchmarks to verify
317
- - VERIFY: All benchmark tests pass
318
- - VERIFY: Console output shows performance improvements
319
- - VERIFY: No test failures in CI environment
320
- - ADJUST: Thresholds if needed (increase if CI flaky, decrease if too lenient)
321
- - COMMAND: npm test -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts
322
- ```
323
-
324
- ### Implementation Patterns & Key Details
325
-
326
- ```typescript
327
- // Pattern 1: BenchmarkWorkflow class (minimal overhead)
328
- // Follows: incremental-performance.test.ts:4-6
329
- class BenchmarkWorkflow extends Workflow {
330
- async run() {
331
- this.setStatus('completed');
332
- }
333
- }
334
- // WHY: Minimal async run() method reduces test execution overhead
335
-
336
- // Pattern 2: Single node detach benchmark
337
- // Follows: incremental-performance.test.ts:9-39
338
- it('should detach single node from large tree in O(1) time', () => {
339
- // ARRANGE: Build large tree (1000 nodes)
340
- const root = new BenchmarkWorkflow('Root');
341
- let current = root;
342
- for (let i = 0; i < 999; i++) {
343
- const child = new BenchmarkWorkflow(`Node${i}`, current);
344
- current = child;
345
- }
346
-
347
- const treeDebugger = new WorkflowTreeDebugger(root);
348
- expect(treeDebugger.getStats().totalNodes).toBe(1000);
349
-
350
- // ACT: Benchmark detach single node (should be O(1) vs O(1000))
351
- const start = performance.now();
352
- const leaf = current; // Last node in chain
353
- const parent = leaf.parent!;
354
- parent.detachChild(leaf);
355
- const duration = performance.now() - start;
356
-
357
- console.log(`Detach duration: ${duration.toFixed(3)}ms`);
358
- console.log(`Expected: < 1ms for incremental, ~10ms for full rebuild`);
359
-
360
- // ASSERT: Verify correct behavior FIRST
361
- const stats = treeDebugger.getStats();
362
- expect(stats.totalNodes).toBe(999);
363
- expect(treeDebugger.getNode(leaf.id)).toBeUndefined();
364
-
365
- // ASSERT: Performance threshold (generous for CI)
366
- expect(duration).toBeLessThan(5);
367
- });
368
-
369
- // Pattern 3: Subtree detach benchmark
370
- // Follows: incremental-performance.test.ts:69-102
371
- it('should detach subtree in O(k) time where k = subtree size', () => {
372
- // ARRANGE: Build tree with one large branch
373
- const root = new BenchmarkWorkflow('Root');
374
- const branch = new BenchmarkWorkflow('Branch', root);
375
-
376
- // Add 100 nodes to branch
377
- for (let i = 0; i < 100; i++) {
378
- new BenchmarkWorkflow(`BranchNode${i}`, branch);
379
- }
380
-
381
- // Add 900 nodes to root
382
- for (let i = 0; i < 900; i++) {
383
- new BenchmarkWorkflow(`RootNode${i}`, root);
384
- }
385
-
386
- const treeDebugger = new WorkflowTreeDebugger(root);
387
- expect(treeDebugger.getStats().totalNodes).toBe(1002);
388
-
389
- // ACT: Detach entire branch (process 101 nodes, not 1002)
390
- const start = performance.now();
391
- root.detachChild(branch);
392
- const duration = performance.now() - start;
393
-
394
- console.log(`Detach 101-node subtree from 1002-node tree: ${duration.toFixed(3)}ms`);
395
- console.log(`Would be ~10ms for full rebuild, should be ~1ms for incremental`);
396
-
397
- // ASSERT: Verify correct behavior
398
- const stats = treeDebugger.getStats();
399
- expect(stats.totalNodes).toBe(901);
400
- expect(treeDebugger.getNode(branch.id)).toBeUndefined();
401
-
402
- // ASSERT: Should scale with subtree size (k=101), not tree size (n=1002)
403
- expect(duration).toBeLessThan(10);
404
- });
405
-
406
- // Pattern 4: Cumulative operations benchmark
407
- // Follows: incremental-performance.test.ts:104-139
408
- it('should complete multiple operations efficiently', () => {
409
- // ARRANGE: Build tree with 10 branches
410
- const root = new BenchmarkWorkflow('Root');
411
- const branches: BenchmarkWorkflow[] = [];
412
-
413
- for (let i = 0; i < 10; i++) {
414
- const branch = new BenchmarkWorkflow(`Branch${i}`, root);
415
- branches.push(branch);
416
- for (let j = 0; j < 10; j++) {
417
- new BenchmarkWorkflow(`Node${i}_${j}`, branch);
418
- }
419
- }
420
-
421
- const treeDebugger = new WorkflowTreeDebugger(root);
422
- expect(treeDebugger.getStats().totalNodes).toBe(111);
423
-
424
- // ACT: Detach all 10 branches
425
- const start = performance.now();
426
- for (const branch of branches) {
427
- root.detachChild(branch);
428
- }
429
- const totalDuration = performance.now() - start;
430
-
431
- console.log(`Detached 10 branches of 11 nodes each from 111-node tree: ${totalDuration.toFixed(3)}ms`);
432
- console.log(`Average per detach: ${(totalDuration / 10).toFixed(3)}ms`);
433
-
434
- // ASSERT: Verify correct behavior - only root remains
435
- const stats = treeDebugger.getStats();
436
- expect(stats.totalNodes).toBe(1);
437
- expect(treeDebugger.getNode(root.id)).toBeDefined();
438
-
439
- // ASSERT: Total should be much less than 10 × O(n) rebuilds
440
- expect(totalDuration).toBeLessThan(50);
441
- });
442
-
443
- // Pattern 5: Average time calculation
444
- // Follows: attachChild-performance.test.ts:167-183
445
- it('should calculate average time for bulk operations', () => {
446
- const root = new BenchmarkWorkflow('Root');
447
- const NUM_CHILDREN = 100;
448
-
449
- // ACT: Measure time to attach all children
450
- const startTime = performance.now();
451
- for (let i = 0; i < NUM_CHILDREN; i++) {
452
- const child = new BenchmarkWorkflow(`Child-${i}`, root);
453
- }
454
- const totalDuration = performance.now() - startTime;
455
-
456
- // ASSERT: Verify functional correctness
457
- expect(root.children).toHaveLength(NUM_CHILDREN);
458
-
459
- // ASSERT: Performance (< 100ms total, < 1ms average)
460
- expect(totalDuration).toBeLessThan(100);
461
- const avgTime = totalDuration / NUM_CHILDREN;
462
- expect(avgTime).toBeLessThan(1); // < 1ms per attachment
463
-
464
- console.log(`Total: ${totalDuration.toFixed(3)}ms, Average: ${avgTime.toFixed(3)}ms`);
465
- });
466
-
467
- // Pattern 6: Header documentation
468
- // Follows: attachChild-performance.test.ts:1-14
469
- /**
470
- * Node Map Update Performance Benchmarks
471
- *
472
- * Validates that the incremental node map update optimization (P1M3T2S2)
473
- * provides measurable performance improvement over the previous full rebuild approach.
474
- *
475
- * Expected Performance Improvements:
476
- * - Single node attach/detach: 10-100× faster (O(1) vs O(n))
477
- * - Subtree operations: 10-100× faster (O(k) vs O(n))
478
- * - Multiple operations: Cumulative benefit
479
- *
480
- * Performance Thresholds (CI-friendly with 2-3× buffer):
481
- * - Single operation: < 5ms (expected < 1ms)
482
- * - Subtree operation (100 nodes): < 10ms (expected < 2ms)
483
- * - Multiple operations (10×): < 50ms (expected < 10ms)
484
- * - Deep tree (2000 levels): < 100ms
485
- * - Wide tree (100 children): < 100ms total, < 1ms average
486
- *
487
- * Related: plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md
488
- */
489
- ```
490
-
491
- ### Integration Points
492
-
493
- ```yaml
494
- TEST_FRAMEWORK:
495
- - framework: Vitest
496
- - config: vitest.config.ts
497
- - pattern: Use describe(), it(), expect() from 'vitest'
498
-
499
- TREE_DEBUGGER:
500
- - file: src/debugger/tree-debugger.ts
501
- - class: WorkflowTreeDebugger
502
- - methods: getStats(), getNode(id)
503
-
504
- WORKFLOW:
505
- - file: src/core/workflow.ts
506
- - class: Workflow
507
- - methods: detachChild(), constructor with parent parameter
508
-
509
- TEST_UTILITIES:
510
- - file: src/__tests__/helpers/tree-verification.ts
511
- - helpers: verifyBidirectionalLink(), verifyOrphaned(), validateTreeConsistency()
512
-
513
- PERFORMANCE_API:
514
- - api: performance.now()
515
- - precision: Sub-millisecond
516
- - pattern: const duration = performance.now() - start;
517
- ```
518
-
519
- ## Validation Loop
520
-
521
- ### Level 1: Syntax & Style (Immediate Feedback)
522
-
523
- ```bash
524
- # TypeScript compilation check
525
- npx tsc --noEmit src/__tests__/adversarial/node-map-update-benchmarks.test.ts
526
-
527
- # Lint check
528
- npm run lint -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts
529
-
530
- # Format check
531
- npm run format -- --check src/__tests__/adversarial/node-map-update-benchmarks.test.ts
532
-
533
- # Expected: Zero errors. Fix any issues before proceeding.
534
- ```
535
-
536
- ### Level 2: Unit Tests (Component Validation)
537
-
538
- ```bash
539
- # Run the new benchmark tests
540
- npm test -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts
541
-
542
- # Run with verbose output to see console logs
543
- npm test -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts --reporter=verbose
544
-
545
- # Run all adversarial tests to ensure no regressions
546
- npm test -- src/__tests__/adversarial/
547
-
548
- # Expected: All tests pass. Console logs show performance metrics.
549
- ```
550
-
551
- ### Level 3: Integration Testing (System Validation)
552
-
553
- ```bash
554
- # Create integration test script
555
- cat > /tmp/test-benchmark-integration.mjs << 'EOF'
556
- import { Workflow, WorkflowTreeDebugger } from './dist/index.js';
557
-
558
- class TestWorkflow extends Workflow {
559
- async run() { this.setStatus('completed'); }
560
- }
561
-
562
- // Test 1: Verify incremental update is faster than would be for full rebuild
563
- const root = new TestWorkflow('Root');
564
- for (let i = 0; i < 999; i++) {
565
- new TestWorkflow(`Node${i}`, root);
566
- }
567
-
568
- const debugger = new WorkflowTreeDebugger(root);
569
- console.log('Initial nodes:', debugger.getStats().totalNodes);
570
-
571
- // Single node detach should be very fast
572
- const start = performance.now();
573
- const leaf = Array.from(root.children).pop();
574
- root.detachChild(leaf);
575
- const duration = performance.now() - start;
576
-
577
- console.log(`Detach duration: ${duration.toFixed(3)}ms`);
578
- console.log(`Nodes remaining: ${debugger.getStats().totalNodes}`);
579
-
580
- // Verify functional correctness
581
- if (debugger.getStats().totalNodes !== 999) {
582
- console.error('ERROR: Expected 999 nodes, got', debugger.getStats().totalNodes);
583
- process.exit(1);
584
- }
585
-
586
- if (duration > 5) {
587
- console.warn('WARNING: Detach took longer than expected (should be < 5ms)');
588
- }
589
-
590
- console.log('Integration test PASSED!');
591
- EOF
592
-
593
- node /tmp/test-benchmark-integration.mjs
594
-
595
- # Expected: Duration < 5ms, functional correctness verified
596
- ```
597
-
598
- ### Level 4: Performance Validation
599
-
600
- ```bash
601
- # Run benchmarks and capture output
602
- npm test -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts 2>&1 | tee /tmp/benchmark-results.txt
603
-
604
- # Check that all tests passed
605
- if grep -q "PASS" /tmp/benchmark-results.txt; then
606
- echo "All benchmark tests PASSED";
607
- else
608
- echo "Some benchmark tests FAILED";
609
- exit 1;
610
- fi
611
-
612
- # Verify performance metrics are logged
613
- grep "duration:" /tmp/benchmark-results.txt || echo "WARNING: No performance metrics logged"
614
-
615
- # Run benchmarks multiple times to check consistency
616
- for i in {1..5}; do
617
- echo "Run $i:"
618
- npm test -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts --silent 2>&1 | grep -E "duration|nodes"
619
- done
620
-
621
- # Expected: All runs complete successfully with consistent timing
622
- ```
623
-
624
- ## Final Validation Checklist
625
-
626
- ### Technical Validation
627
-
628
- - [ ] All 4 validation levels completed successfully
629
- - [ ] TypeScript compilation passes: `npx tsc --noEmit`
630
- - [ ] All benchmark tests pass: `npm test -- src/__tests__/adversarial/node-map-update-benchmarks.test.ts`
631
- - [ ] Linting passes: `npm run lint`
632
- - [ ] Format check passes: `npm run format -- --check`
633
- - [ ] No regressions in existing tests: `npm test -- src/__tests__/adversarial/`
634
-
635
- ### Feature Validation
636
-
637
- - [ ] Single node detach benchmark passes with < 5ms threshold
638
- - [ ] Single node attach benchmark passes with < 10ms threshold
639
- - [ ] Subtree detach benchmark passes with < 10ms threshold
640
- - [ ] Cumulative operations benchmark passes with < 50ms threshold
641
- - [ ] Deep tree benchmark passes with < 100ms threshold
642
- - [ ] Wide tree benchmark passes with < 100ms total, < 1ms average
643
- - [ ] Console logging shows expected vs actual performance
644
- - [ ] Functional correctness validated for all benchmarks
645
-
646
- ### Code Quality Validation
647
-
648
- - [ ] Header documentation follows existing pattern
649
- - [ ] BenchmarkWorkflow class pattern used correctly
650
- - [ ] Test naming is descriptive and consistent
651
- - [ ] Performance thresholds use generous CI-friendly margins
652
- - [ ] Console logging helps debug performance regressions
653
- - [ ] Average time calculations included for bulk operations
654
- - [ ] Follows AAA pattern (Arrange, Act, Assert)
655
- - [ ] Functional correctness validated before performance assertions
656
-
657
- ### Documentation & Deployment
658
-
659
- - [ ] Header comment references P1M3T2S2 PRP
660
- - [ ] Performance thresholds documented with rationale
661
- - [ ] Expected complexity noted (O(k) vs O(n))
662
- - [ ] Console output format is consistent
663
- - [ ] Test file placed in correct directory
664
-
665
- ---
666
-
667
- ## Anti-Patterns to Avoid
668
-
669
- - ❌ Don't use `Date.now()` - use `performance.now()` for high precision
670
- - ❌ Don't use overly precise thresholds - CI environments are variable
671
- - ❌ Don't forget to validate functional correctness - performance means nothing if broken
672
- - ❌ Don't skip console logging - needed for debugging regressions
673
- - ❌ Don't test only small trees - need large trees to show O(k) vs O(n) difference
674
- - ❌ Don't forget to calculate average time for bulk operations
675
- - ❌ Don't use full Workflow class - use BenchmarkWorkflow pattern
676
- - ❌ Don't create tests that measure JIT warmup - use realistic workloads
677
- - ❌ Don't assume performance will be identical across runs - use thresholds
678
- - ❌ Don't forget to test both attach AND detach operations
679
- - ❌ Don't test only single nodes - include subtree operations
680
- - ❌ Don't create thresholds based on local machine only - consider CI variance
681
- - ❌ Don't forget to mock console methods to prevent test pollution
682
- - ❌ Don't forget vi.restoreAllMocks() in afterEach
683
- - ❌ Don't create benchmark tests that are too brittle - they should catch regressions, not flake
684
-
685
- ---
686
-
687
- ## Success Metrics
688
-
689
- **Confidence Score**: 9/10 for one-pass implementation success
690
-
691
- **Validation**: The completed PRP enables an AI agent unfamiliar with the codebase to implement comprehensive benchmark tests for node map update performance successfully.
692
-
693
- **Key Success Indicators**:
694
- 1. Existing benchmark patterns are well-established and documented
695
- 2. Tree debugger implementation is complete and stable
696
- 3. Test utilities are comprehensive and ready to use
697
- 4. Performance thresholds are based on existing working benchmarks
698
- 5. All file paths and patterns are specific and actionable
699
- 6. Gotchas and anti-patterns are comprehensively documented
700
-
701
- **Expected Test Outcomes**:
702
- - Single node operations: < 1-5ms (vs ~10ms for old approach)
703
- - Subtree operations (100 nodes): < 2-10ms (vs ~100ms for old approach)
704
- - Multiple operations: Cumulative 10-100× improvement
705
- - Deep/wide trees: No stack overflow, efficient performance
706
-
707
- **Performance Improvement Validation**:
708
- - Small trees (< 100 nodes): Minimal difference (already fast)
709
- - Medium trees (100-1000 nodes): 10-100× improvement measurable
710
- - Large trees (1000+ nodes): 100-1000× improvement measurable
711
-
712
- **Test Coverage**:
713
- - Single node attach/detach
714
- - Subtree attach/detach
715
- - Cumulative operations
716
- - Deep trees (2000+ levels)
717
- - Wide trees (100+ children)
718
- - Functional correctness validation