groundswell 0.0.2 → 1.0.0

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 (554) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -9
  3. package/dist/cache/cache-key.d.ts +86 -0
  4. package/dist/cache/cache-key.d.ts.map +1 -0
  5. package/dist/cache/cache-key.js +204 -0
  6. package/dist/cache/cache-key.js.map +1 -0
  7. package/dist/cache/cache.d.ts +104 -0
  8. package/dist/cache/cache.d.ts.map +1 -0
  9. package/dist/cache/cache.js +179 -0
  10. package/dist/cache/cache.js.map +1 -0
  11. package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
  12. package/dist/cache/index.d.ts.map +1 -0
  13. package/dist/cache/index.js +6 -0
  14. package/dist/cache/index.js.map +1 -0
  15. package/dist/core/agent.d.ts +203 -0
  16. package/dist/core/agent.d.ts.map +1 -0
  17. package/dist/core/agent.js +833 -0
  18. package/dist/core/agent.js.map +1 -0
  19. package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
  20. package/dist/core/context.d.ts.map +1 -0
  21. package/dist/core/context.js +80 -0
  22. package/dist/core/context.js.map +1 -0
  23. package/dist/core/event-tree.d.ts +72 -0
  24. package/dist/core/event-tree.d.ts.map +1 -0
  25. package/dist/core/event-tree.js +211 -0
  26. package/dist/core/event-tree.js.map +1 -0
  27. package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
  28. package/dist/core/factory.d.ts.map +1 -0
  29. package/dist/core/factory.js +110 -0
  30. package/dist/core/factory.js.map +1 -0
  31. package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/index.js +9 -0
  34. package/dist/core/index.js.map +1 -0
  35. package/dist/core/logger.d.ts +50 -0
  36. package/dist/core/logger.d.ts.map +1 -0
  37. package/dist/core/logger.js +91 -0
  38. package/dist/core/logger.js.map +1 -0
  39. package/dist/core/mcp-handler.d.ts +127 -0
  40. package/dist/core/mcp-handler.d.ts.map +1 -0
  41. package/dist/core/mcp-handler.js +323 -0
  42. package/dist/core/mcp-handler.js.map +1 -0
  43. package/dist/core/prompt.d.ts +80 -0
  44. package/dist/core/prompt.d.ts.map +1 -0
  45. package/dist/core/prompt.js +120 -0
  46. package/dist/core/prompt.js.map +1 -0
  47. package/dist/core/workflow-context.d.ts +61 -0
  48. package/dist/core/workflow-context.d.ts.map +1 -0
  49. package/dist/core/workflow-context.js +358 -0
  50. package/dist/core/workflow-context.js.map +1 -0
  51. package/dist/core/workflow.d.ts +543 -0
  52. package/dist/core/workflow.d.ts.map +1 -0
  53. package/dist/core/workflow.js +986 -0
  54. package/dist/core/workflow.js.map +1 -0
  55. package/dist/debugger/event-replayer.d.ts +422 -0
  56. package/dist/debugger/event-replayer.d.ts.map +1 -0
  57. package/dist/debugger/event-replayer.js +639 -0
  58. package/dist/debugger/event-replayer.js.map +1 -0
  59. package/dist/debugger/index.d.ts +2 -0
  60. package/dist/debugger/index.d.ts.map +1 -0
  61. package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
  62. package/dist/debugger/index.js.map +1 -0
  63. package/dist/debugger/tree-debugger.d.ts +240 -0
  64. package/dist/debugger/tree-debugger.d.ts.map +1 -0
  65. package/dist/debugger/tree-debugger.js +620 -0
  66. package/dist/debugger/tree-debugger.js.map +1 -0
  67. package/dist/decorators/index.d.ts +4 -0
  68. package/dist/decorators/index.d.ts.map +1 -0
  69. package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
  70. package/dist/decorators/index.js.map +1 -0
  71. package/dist/decorators/observed-state.d.ts +32 -0
  72. package/dist/decorators/observed-state.d.ts.map +1 -0
  73. package/dist/decorators/observed-state.js +79 -0
  74. package/dist/decorators/observed-state.js.map +1 -0
  75. package/dist/decorators/step.d.ts +15 -0
  76. package/dist/decorators/step.d.ts.map +1 -0
  77. package/dist/decorators/step.js +192 -0
  78. package/dist/decorators/step.js.map +1 -0
  79. package/dist/decorators/task.d.ts +50 -0
  80. package/dist/decorators/task.d.ts.map +1 -0
  81. package/dist/decorators/task.js +118 -0
  82. package/dist/decorators/task.js.map +1 -0
  83. package/dist/examples/index.d.ts +3 -0
  84. package/dist/examples/index.d.ts.map +1 -0
  85. package/{src/examples/index.ts → dist/examples/index.js} +1 -0
  86. package/dist/examples/index.js.map +1 -0
  87. package/dist/examples/tdd-orchestrator.d.ts +15 -0
  88. package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
  89. package/dist/examples/tdd-orchestrator.js +121 -0
  90. package/dist/examples/tdd-orchestrator.js.map +1 -0
  91. package/dist/examples/test-cycle-workflow.d.ts +14 -0
  92. package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
  93. package/dist/examples/test-cycle-workflow.js +116 -0
  94. package/dist/examples/test-cycle-workflow.js.map +1 -0
  95. package/dist/harnesses/claude-code-harness.d.ts +391 -0
  96. package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
  97. package/dist/harnesses/claude-code-harness.js +1076 -0
  98. package/dist/harnesses/claude-code-harness.js.map +1 -0
  99. package/dist/harnesses/harness-registry.d.ts +440 -0
  100. package/dist/harnesses/harness-registry.d.ts.map +1 -0
  101. package/dist/harnesses/harness-registry.js +543 -0
  102. package/dist/harnesses/harness-registry.js.map +1 -0
  103. package/dist/harnesses/index.d.ts +12 -0
  104. package/dist/harnesses/index.d.ts.map +1 -0
  105. package/dist/harnesses/index.js +11 -0
  106. package/dist/harnesses/index.js.map +1 -0
  107. package/dist/harnesses/pi-harness.d.ts +219 -0
  108. package/dist/harnesses/pi-harness.d.ts.map +1 -0
  109. package/dist/harnesses/pi-harness.js +676 -0
  110. package/dist/harnesses/pi-harness.js.map +1 -0
  111. package/dist/harnesses/pi-schema-converter.d.ts +24 -0
  112. package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
  113. package/dist/harnesses/pi-schema-converter.js +81 -0
  114. package/dist/harnesses/pi-schema-converter.js.map +1 -0
  115. package/dist/harnesses/register-defaults.d.ts +24 -0
  116. package/dist/harnesses/register-defaults.d.ts.map +1 -0
  117. package/dist/harnesses/register-defaults.js +40 -0
  118. package/dist/harnesses/register-defaults.js.map +1 -0
  119. package/dist/harnesses/session-store.d.ts +201 -0
  120. package/dist/harnesses/session-store.d.ts.map +1 -0
  121. package/dist/harnesses/session-store.js +254 -0
  122. package/dist/harnesses/session-store.js.map +1 -0
  123. package/dist/index.d.ts +37 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +57 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/reflection/index.d.ts +5 -0
  128. package/dist/reflection/index.d.ts.map +1 -0
  129. package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
  130. package/dist/reflection/index.js.map +1 -0
  131. package/dist/reflection/reflection.d.ts +84 -0
  132. package/dist/reflection/reflection.d.ts.map +1 -0
  133. package/dist/reflection/reflection.js +344 -0
  134. package/dist/reflection/reflection.js.map +1 -0
  135. package/dist/tools/index.d.ts +6 -0
  136. package/dist/tools/index.d.ts.map +1 -0
  137. package/dist/tools/index.js +11 -0
  138. package/dist/tools/index.js.map +1 -0
  139. package/dist/tools/introspection.d.ts +165 -0
  140. package/dist/tools/introspection.d.ts.map +1 -0
  141. package/dist/tools/introspection.js +324 -0
  142. package/dist/tools/introspection.js.map +1 -0
  143. package/dist/types/agent.d.ts +1317 -0
  144. package/dist/types/agent.d.ts.map +1 -0
  145. package/dist/types/agent.js +423 -0
  146. package/dist/types/agent.js.map +1 -0
  147. package/dist/types/decorators.d.ts +40 -0
  148. package/dist/types/decorators.d.ts.map +1 -0
  149. package/dist/types/decorators.js +2 -0
  150. package/dist/types/decorators.js.map +1 -0
  151. package/dist/types/error-strategy.d.ts +13 -0
  152. package/dist/types/error-strategy.d.ts.map +1 -0
  153. package/dist/types/error-strategy.js +2 -0
  154. package/dist/types/error-strategy.js.map +1 -0
  155. package/dist/types/error.d.ts +20 -0
  156. package/dist/types/error.d.ts.map +1 -0
  157. package/dist/types/error.js +2 -0
  158. package/dist/types/error.js.map +1 -0
  159. package/dist/types/events.d.ts +113 -0
  160. package/dist/types/events.d.ts.map +1 -0
  161. package/dist/types/events.js +2 -0
  162. package/dist/types/events.js.map +1 -0
  163. package/dist/types/harnesses.d.ts +474 -0
  164. package/dist/types/harnesses.d.ts.map +1 -0
  165. package/dist/types/harnesses.js +2 -0
  166. package/dist/types/harnesses.js.map +1 -0
  167. package/dist/types/index.d.ts +23 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +8 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/types/logging.d.ts +24 -0
  172. package/dist/types/logging.d.ts.map +1 -0
  173. package/dist/types/logging.js +2 -0
  174. package/dist/types/logging.js.map +1 -0
  175. package/dist/types/observer.d.ts +18 -0
  176. package/dist/types/observer.d.ts.map +1 -0
  177. package/dist/types/observer.js +2 -0
  178. package/dist/types/observer.js.map +1 -0
  179. package/dist/types/prompt.d.ts +31 -0
  180. package/dist/types/prompt.d.ts.map +1 -0
  181. package/dist/types/prompt.js +6 -0
  182. package/dist/types/prompt.js.map +1 -0
  183. package/dist/types/providers.d.ts +691 -0
  184. package/dist/types/providers.d.ts.map +1 -0
  185. package/dist/types/providers.js +14 -0
  186. package/dist/types/providers.js.map +1 -0
  187. package/dist/types/reflection.d.ts +96 -0
  188. package/dist/types/reflection.d.ts.map +1 -0
  189. package/dist/types/reflection.js +24 -0
  190. package/dist/types/reflection.js.map +1 -0
  191. package/dist/types/restart.d.ts +132 -0
  192. package/dist/types/restart.d.ts.map +1 -0
  193. package/dist/types/restart.js +2 -0
  194. package/dist/types/restart.js.map +1 -0
  195. package/dist/types/sdk-primitives.d.ts +118 -0
  196. package/dist/types/sdk-primitives.d.ts.map +1 -0
  197. package/dist/types/sdk-primitives.js +6 -0
  198. package/dist/types/sdk-primitives.js.map +1 -0
  199. package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
  200. package/dist/types/snapshot.d.ts.map +1 -0
  201. package/dist/types/snapshot.js +2 -0
  202. package/dist/types/snapshot.js.map +1 -0
  203. package/dist/types/streaming.d.ts +194 -0
  204. package/dist/types/streaming.d.ts.map +1 -0
  205. package/dist/types/streaming.js +67 -0
  206. package/dist/types/streaming.js.map +1 -0
  207. package/dist/types/workflow-context.d.ts +275 -0
  208. package/dist/types/workflow-context.d.ts.map +1 -0
  209. package/dist/types/workflow-context.js +8 -0
  210. package/dist/types/workflow-context.js.map +1 -0
  211. package/dist/types/workflow.d.ts +30 -0
  212. package/dist/types/workflow.d.ts.map +1 -0
  213. package/dist/types/workflow.js +2 -0
  214. package/dist/types/workflow.js.map +1 -0
  215. package/dist/utils/agent-validation.d.ts +88 -0
  216. package/dist/utils/agent-validation.d.ts.map +1 -0
  217. package/dist/utils/agent-validation.js +87 -0
  218. package/dist/utils/agent-validation.js.map +1 -0
  219. package/dist/utils/delay.d.ts +7 -0
  220. package/dist/utils/delay.d.ts.map +1 -0
  221. package/dist/utils/delay.js +9 -0
  222. package/dist/utils/delay.js.map +1 -0
  223. package/dist/utils/harness-config.d.ts +180 -0
  224. package/dist/utils/harness-config.d.ts.map +1 -0
  225. package/dist/utils/harness-config.js +311 -0
  226. package/dist/utils/harness-config.js.map +1 -0
  227. package/dist/utils/id.d.ts +6 -0
  228. package/dist/utils/id.d.ts.map +1 -0
  229. package/dist/utils/id.js +12 -0
  230. package/dist/utils/id.js.map +1 -0
  231. package/dist/utils/index.d.ts +13 -0
  232. package/dist/utils/index.d.ts.map +1 -0
  233. package/dist/utils/index.js +11 -0
  234. package/dist/utils/index.js.map +1 -0
  235. package/dist/utils/model-spec.d.ts +110 -0
  236. package/dist/utils/model-spec.d.ts.map +1 -0
  237. package/dist/utils/model-spec.js +149 -0
  238. package/dist/utils/model-spec.js.map +1 -0
  239. package/dist/utils/observable.d.ts +54 -0
  240. package/dist/utils/observable.d.ts.map +1 -0
  241. package/dist/utils/observable.js +82 -0
  242. package/dist/utils/observable.js.map +1 -0
  243. package/dist/utils/provider-config.d.ts +10 -0
  244. package/dist/utils/provider-config.d.ts.map +1 -0
  245. package/dist/utils/provider-config.js +10 -0
  246. package/dist/utils/provider-config.js.map +1 -0
  247. package/dist/utils/restart-analysis.d.ts +202 -0
  248. package/dist/utils/restart-analysis.d.ts.map +1 -0
  249. package/dist/utils/restart-analysis.js +426 -0
  250. package/dist/utils/restart-analysis.js.map +1 -0
  251. package/dist/utils/session-serialization.d.ts +118 -0
  252. package/dist/utils/session-serialization.d.ts.map +1 -0
  253. package/dist/utils/session-serialization.js +217 -0
  254. package/dist/utils/session-serialization.js.map +1 -0
  255. package/dist/utils/workflow-error-utils.d.ts +22 -0
  256. package/dist/utils/workflow-error-utils.d.ts.map +1 -0
  257. package/dist/utils/workflow-error-utils.js +45 -0
  258. package/dist/utils/workflow-error-utils.js.map +1 -0
  259. package/package.json +34 -5
  260. package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
  261. package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
  262. package/.claude/commands/task-breakdown.md +0 -94
  263. package/.claude/settings.local.json +0 -9
  264. package/.claude/system_prompts/task-breakdown.md +0 -101
  265. package/CHANGELOG.md +0 -188
  266. package/PRD.md +0 -543
  267. package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
  268. package/PRPs/PRDs/002-agent-prompt.md +0 -390
  269. package/PRPs/PRDs/003-agent-prompt.md +0 -943
  270. package/PRPs/PRDs/004-agent-prompt.md +0 -1136
  271. package/PRPs/PRDs/tasks-001.json +0 -492
  272. package/PRPs/README.md +0 -83
  273. package/PRPs/templates/prp_base.md +0 -222
  274. package/docs/agent.md +0 -422
  275. package/docs/prompt.md +0 -419
  276. package/docs/workflow.md +0 -600
  277. package/examples/README.md +0 -258
  278. package/examples/examples/01-basic-workflow.ts +0 -100
  279. package/examples/examples/02-decorator-options.ts +0 -217
  280. package/examples/examples/03-parent-child.ts +0 -241
  281. package/examples/examples/04-observers-debugger.ts +0 -340
  282. package/examples/examples/05-error-handling.ts +0 -387
  283. package/examples/examples/06-concurrent-tasks.ts +0 -352
  284. package/examples/examples/07-agent-loops.ts +0 -432
  285. package/examples/examples/08-sdk-features.ts +0 -667
  286. package/examples/examples/09-reflection.ts +0 -573
  287. package/examples/examples/10-introspection.ts +0 -550
  288. package/examples/examples/11-reparenting-workflows.ts +0 -269
  289. package/examples/index.ts +0 -147
  290. package/examples/utils/helpers.ts +0 -57
  291. package/package-lock.json +0 -2398
  292. package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
  293. package/plan/001_d3bb02af4886/backlog.json +0 -867
  294. package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
  295. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
  296. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
  297. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
  298. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
  299. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
  300. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
  301. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
  302. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
  303. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
  304. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
  305. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
  306. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
  307. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
  308. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
  309. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
  310. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
  311. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
  312. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
  313. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
  314. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
  315. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
  316. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
  317. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
  318. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
  319. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
  320. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
  321. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
  322. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
  323. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
  324. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
  325. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
  326. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
  327. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
  328. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
  329. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
  330. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
  331. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
  332. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
  333. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
  334. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
  335. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
  336. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
  337. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
  338. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
  339. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
  340. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
  341. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
  342. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
  343. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
  344. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
  345. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
  346. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
  347. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
  348. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
  349. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
  350. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
  351. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
  352. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
  353. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
  354. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
  355. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
  356. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
  357. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
  358. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
  359. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
  360. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
  361. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
  362. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
  363. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
  364. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
  365. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
  366. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
  367. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
  368. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
  369. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
  370. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
  371. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
  372. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
  373. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
  374. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
  375. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
  376. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
  377. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
  378. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
  379. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
  380. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
  381. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
  382. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
  383. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
  384. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
  385. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
  386. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
  387. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
  388. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
  389. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
  390. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
  391. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
  392. package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
  393. package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
  394. package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
  395. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
  396. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
  397. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
  398. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
  399. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
  400. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
  401. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
  402. package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
  403. package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
  404. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
  405. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
  406. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
  407. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
  408. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
  409. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
  410. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
  411. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
  412. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
  413. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
  414. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
  415. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
  416. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
  417. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
  418. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
  419. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
  420. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
  421. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
  422. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
  423. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
  424. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
  425. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
  426. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
  427. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
  428. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
  429. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
  430. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
  431. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
  432. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
  433. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
  434. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
  435. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
  436. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
  437. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
  438. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
  439. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
  440. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
  441. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
  442. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
  443. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
  444. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
  445. package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
  446. package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
  447. package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
  448. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
  449. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
  450. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
  451. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
  452. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
  453. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
  454. package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
  455. package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
  456. package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
  457. package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
  458. package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
  459. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
  460. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
  461. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
  462. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
  463. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
  464. package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
  465. package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
  466. package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
  467. package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
  468. package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
  469. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
  470. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
  471. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
  472. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
  473. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
  474. package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
  475. package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
  476. package/scripts/generate-llms-full.ts +0 -206
  477. package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
  478. package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
  479. package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
  480. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
  481. package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
  482. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
  483. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
  484. package/src/__tests__/adversarial/edge-case.test.ts +0 -703
  485. package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
  486. package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
  487. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
  488. package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
  489. package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
  490. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
  491. package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
  492. package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
  493. package/src/__tests__/helpers/index.ts +0 -18
  494. package/src/__tests__/helpers/tree-verification.ts +0 -257
  495. package/src/__tests__/integration/agent-workflow.test.ts +0 -256
  496. package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
  497. package/src/__tests__/integration/observer-logging.test.ts +0 -643
  498. package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
  499. package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
  500. package/src/__tests__/unit/agent.test.ts +0 -169
  501. package/src/__tests__/unit/cache-key.test.ts +0 -182
  502. package/src/__tests__/unit/cache.test.ts +0 -172
  503. package/src/__tests__/unit/context.test.ts +0 -217
  504. package/src/__tests__/unit/decorators.test.ts +0 -100
  505. package/src/__tests__/unit/introspection-tools.test.ts +0 -277
  506. package/src/__tests__/unit/logger.test.ts +0 -293
  507. package/src/__tests__/unit/observable.test.ts +0 -321
  508. package/src/__tests__/unit/prompt.test.ts +0 -135
  509. package/src/__tests__/unit/reflection.test.ts +0 -210
  510. package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
  511. package/src/__tests__/unit/tree-debugger.test.ts +0 -85
  512. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
  513. package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
  514. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
  515. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
  516. package/src/__tests__/unit/workflow.test.ts +0 -357
  517. package/src/cache/cache-key.ts +0 -244
  518. package/src/cache/cache.ts +0 -236
  519. package/src/core/agent.ts +0 -593
  520. package/src/core/event-tree.ts +0 -260
  521. package/src/core/logger.ts +0 -112
  522. package/src/core/mcp-handler.ts +0 -184
  523. package/src/core/prompt.ts +0 -150
  524. package/src/core/workflow-context.ts +0 -351
  525. package/src/core/workflow.ts +0 -540
  526. package/src/debugger/tree-debugger.ts +0 -255
  527. package/src/decorators/observed-state.ts +0 -95
  528. package/src/decorators/step.ts +0 -139
  529. package/src/decorators/task.ts +0 -159
  530. package/src/examples/tdd-orchestrator.ts +0 -65
  531. package/src/examples/test-cycle-workflow.ts +0 -64
  532. package/src/index.ts +0 -142
  533. package/src/reflection/reflection.ts +0 -407
  534. package/src/tools/index.ts +0 -36
  535. package/src/tools/introspection.ts +0 -464
  536. package/src/types/agent.ts +0 -90
  537. package/src/types/decorators.ts +0 -32
  538. package/src/types/error-strategy.ts +0 -13
  539. package/src/types/error.ts +0 -20
  540. package/src/types/events.ts +0 -75
  541. package/src/types/index.ts +0 -55
  542. package/src/types/logging.ts +0 -24
  543. package/src/types/observer.ts +0 -18
  544. package/src/types/prompt.ts +0 -40
  545. package/src/types/reflection.ts +0 -117
  546. package/src/types/sdk-primitives.ts +0 -128
  547. package/src/types/workflow-context.ts +0 -163
  548. package/src/types/workflow.ts +0 -37
  549. package/src/utils/id.ts +0 -11
  550. package/src/utils/index.ts +0 -4
  551. package/src/utils/observable.ts +0 -106
  552. package/src/utils/workflow-error-utils.ts +0 -56
  553. package/tsconfig.json +0 -22
  554. package/vitest.config.ts +0 -16
@@ -1,719 +0,0 @@
1
- # Product Requirement Prompt (PRP): P1.M3.T2.S1 - Analyze Tree Debugger onTreeChanged Implementation
2
-
3
- **PRP ID**: P1M3T2S1
4
- **Task ID**: P1.M3.T2.S1
5
- **Story Points**: 1
6
- **Status**: Researching
7
- **Created**: 2025-01-12
8
-
9
- ---
10
-
11
- ## Goal
12
-
13
- **Feature Goal**: Conduct a comprehensive analysis of the WorkflowTreeDebugger's `onTreeChanged()` implementation to understand the current full-rebuild behavior and identify opportunities for incremental updates.
14
-
15
- **Deliverable**: Analysis document stored at `plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md` containing:
16
- - Current rebuild logic documentation with line number references
17
- - Tree change event type analysis (childAttached, childDetached, treeUpdated)
18
- - Performance impact assessment for current O(n) rebuild behavior
19
- - Identified opportunities for incremental O(1)/O(k) updates
20
- - Recommendations for P1.M3.T2.S2 implementation
21
-
22
- **Success Definition**:
23
- - [ ] Analysis document exists at specified path
24
- - [ ] Current implementation behavior fully documented with code references
25
- - [ ] All tree change trigger events identified and documented
26
- - [ ] Performance bottleneck clearly explained with complexity analysis
27
- - [ ] Incremental update opportunities identified with specific recommendations
28
- - [ ] Research findings stored in research/ subdirectory for P1.M3.T2.S2 reference
29
-
30
- ---
31
-
32
- ## User Persona (if applicable)
33
-
34
- **Target User**: Implementation AI agent for P1.M3.T2.S2 and P1.M3.T2.S3
35
-
36
- **Use Case**: The analysis document serves as the foundation for implementing incremental node map updates (P1.M3.T2.S2) and creating benchmark tests (P1.M3.T2.S3).
37
-
38
- **User Journey**:
39
- 1. Read analysis document to understand current behavior
40
- 2. Use identified opportunities to implement incremental updates
41
- 3. Reference performance analysis for benchmark test design
42
- 4. Validate implementation against recommendations
43
-
44
- **Pain Points Addressed**:
45
- - Eliminates need for P1.M3.T2.S2 agent to rediscover current implementation
46
- - Provides concrete recommendations backed by research
47
- - Accelerates implementation by providing clear guidance
48
-
49
- ---
50
-
51
- ## Why
52
-
53
- - **Performance Optimization**: Current O(n) full rebuild on every tree change is inefficient for large workflow trees (1000+ nodes)
54
- - **Foundation for Implementation**: Analysis enables P1.M3.T2.S2 to implement incremental updates without additional research overhead
55
- - **Informed Benchmark Design**: Performance assessment informs P1.M3.T2.S3 benchmark test design
56
- - **Documentation**: Creates permanent record of optimization rationale for future maintainers
57
-
58
- **Business Value**:
59
- - Reduces node map update overhead from O(n) to O(1) for single-node operations
60
- - Enables 100-1000× performance improvement for large trees with frequent structural changes
61
- - Prevents garbage collection pressure from Map.clear() and full rebuild
62
- - Maintains correctness while improving performance
63
-
64
- ---
65
-
66
- ## What
67
-
68
- **User-Visible Behavior**: No behavior change - this is a research and analysis task only.
69
-
70
- **Technical Requirements**:
71
- - Read and analyze `src/debugger/tree-debugger.ts` implementation
72
- - Read and analyze `src/core/workflow.ts` emitEvent and observer notification logic
73
- - Document all tree change events that trigger `onTreeChanged()`
74
- - Map current rebuild logic with specific line number references
75
- - Calculate time complexity of current operations
76
- - Research incremental update patterns
77
- - Document specific opportunities for optimization
78
-
79
- ### Success Criteria
80
-
81
- - [ ] Analysis document contains complete current implementation documentation
82
- - [ ] All three tree change events (childAttached, childDetached, treeUpdated) documented
83
- - [ ] Performance impact quantified with complexity analysis
84
- - [ ] At least 3 specific incremental update opportunities identified
85
- - [ ] Recommendations include code pattern examples
86
- - [ ] External research cited with specific URLs
87
-
88
- ---
89
-
90
- ## All Needed Context
91
-
92
- ### Context Completeness Check
93
-
94
- **"No Prior Knowledge" Test**: If someone knew nothing about this codebase, would they have everything needed to conduct this analysis successfully?
95
-
96
- **Answer**: YES - This PRP provides:
97
- - Exact file paths and line numbers for all relevant code
98
- - Complete WorkflowNode and WorkflowEvent type definitions
99
- - Observer pattern documentation
100
- - Testing framework patterns
101
- - External research with specific URLs
102
- - Output template for analysis document
103
-
104
- ### Documentation & References
105
-
106
- ```yaml
107
- # MUST READ - Code Files (read in order)
108
-
109
- - file: src/debugger/tree-debugger.ts
110
- why: Core implementation to analyze - contains onTreeChanged(), buildNodeMap(), onEvent(), nodeMap
111
- lines: "53-84" # buildNodeMap() and onTreeChanged() implementation
112
- pattern: Recursive tree traversal using for-of loop over node.children
113
- gotcha: "onEvent() at line 66-74 already handles childAttached incrementally - onTreeChanged() redundant"
114
-
115
- - file: src/core/workflow.ts
116
- why: Understanding when onTreeChanged is called via emitEvent()
117
- lines: "360-379" # emitEvent() method showing observer notification logic
118
- pattern: "obs.onTreeChanged(this.getRoot().node) called for childAttached, childDetached, treeUpdated events"
119
- gotcha: "onTreeChanged called AFTER onEvent - causing redundant work for childAttached"
120
-
121
- - file: src/types/workflow.ts
122
- why: WorkflowNode structure definition - needed to understand tree hierarchy
123
- lines: "16-37" # Complete WorkflowNode interface
124
- pattern: "id, name, parent, children[], status, logs[], events[], stateSnapshot"
125
- gotcha: "parent is WorkflowNode | null - null for root nodes"
126
-
127
- - file: src/types/events.ts
128
- why: WorkflowEvent discriminated union - all tree change event types
129
- lines: "8-18" # Core workflow events including childAttached, childDetached, treeUpdated
130
- pattern: "type: 'childAttached' | 'childDetached' | 'treeUpdated' are tree structure change events"
131
- gotcha: "childDetached only provides childId string, not full child node"
132
-
133
- - file: src/types/observer.ts
134
- why: WorkflowObserver interface defining onTreeChanged signature
135
- lines: "9-18" # Complete WorkflowObserver interface
136
- pattern: "onTreeChanged(root: WorkflowNode): void - receives root node after any tree change"
137
- gotcha: "Called for ALL tree events including state changes (via treeUpdated)"
138
-
139
- # EXTERNAL RESEARCH - Read for best practices and patterns
140
-
141
- - url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#instance-methods
142
- why: Map.set(), Map.get(), Map.delete() are O(1) - validates incremental approach feasibility
143
- critical: "Map operations have O(1) average case complexity - incremental updates faster than O(n) rebuild"
144
-
145
- - url: https://react.dev/learn/understanding-reacts-render-phase#rendering-and-committing
146
- why: React reconciliation algorithm - tree diffing strategy reference
147
- critical: "React only updates changed subtrees - same principle applies to node map updates"
148
-
149
- - url: https://v8.dev/blog/elements-kinds#hidden-classes
150
- why: V8 Map optimization and garbage collection behavior
151
- critical: "Map.clear() triggers full GC - incremental updates spread GC cost over time"
152
-
153
- - url: https://stackoverflow.com/questions/38476433/what-is-the-time-complexity-of-map-set-in-javascript#answer-38476768
154
- why: Confirmed O(1) complexity for Map operations
155
- critical: "Map.set() and Map.delete() are O(1) on average in modern JavaScript engines"
156
-
157
- # INTERNAL RESEARCH - Generated research package
158
-
159
- - docfile: plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md
160
- why: Code examples and implementation patterns for incremental updates
161
- section: "Code Examples - Incremental Update Pattern"
162
-
163
- - docfile: plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md
164
- why: Comprehensive analysis of current implementation and recommended patterns
165
- section: "Current Implementation Analysis" and "Recommended Implementation"
166
-
167
- - docfile: plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md
168
- why: Overall codebase architecture and dual tree structure
169
- section: "7. Observer Pattern Implementation" and "8. Additional Architecture Patterns"
170
-
171
- # TEST PATTERNS - For validation approach
172
-
173
- - file: src/__tests__/unit/tree-debugger.test.ts
174
- why: Existing test patterns for tree-debugger functionality
175
- pattern: "WorkflowTreeDebugger instantiation, getNode() lookup, tree string rendering"
176
- gotcha: "Tests verify nodeMap behavior - useful for validating incremental correctness"
177
-
178
- - file: src/__tests__/integration/tree-mirroring.test.ts
179
- why: Observer propagation and treeUpdated event testing
180
- pattern: "treeUpdated events trigger onTreeChanged callback"
181
- gotcha: "Test at lines 115-150 verifies onTreeChanged is called with correct root"
182
- ```
183
-
184
- ### Current Codebase Tree (relevant portions)
185
-
186
- ```
187
- src/
188
- ├── debugger/
189
- │ └── tree-debugger.ts # PRIMARY ANALYSIS TARGET
190
- │ ├── WorkflowTreeDebugger class
191
- │ ├── buildNodeMap() # Line 53-58 - O(n) recursive rebuild
192
- │ ├── onEvent() # Line 66-74 - handles childAttached incrementally
193
- │ ├── onTreeChanged() # Line 80-84 - O(n) full rebuild (OPTIMIZE TARGET)
194
- │ └── nodeMap: Map # Line 33 - node lookup map
195
- ├── core/
196
- │ └── workflow.ts # Event emission logic
197
- │ ├── emitEvent() # Line 363-379 - triggers onTreeChanged
198
- │ ├── attachChild() # Line 266-305 - childAttached trigger
199
- │ └── detachChild() # Line 329-358 - childDetached trigger
200
- ├── types/
201
- │ ├── workflow.ts # WorkflowNode interface
202
- │ ├── events.ts # WorkflowEvent discriminated union
203
- │ └── observer.ts # WorkflowObserver interface
204
- └── __tests__/
205
- ├── unit/
206
- │ └── tree-debugger.test.ts # Existing test patterns
207
- └── integration/
208
- └── tree-mirroring.test.ts # Observer propagation tests
209
- ```
210
-
211
- ### Known Gotchas of Our Codebase & Library Quirks
212
-
213
- ```typescript
214
- // CRITICAL: onEvent() and onTreeChanged() are BOTH called for tree changes
215
- // From src/core/workflow.ts:372-374
216
- if (event.type === 'treeUpdated' || event.type === 'childAttached' || event.type === 'childDetached') {
217
- obs.onTreeChanged(this.getRoot().node); // ❌ This triggers full rebuild
218
- }
219
-
220
- // CRITICAL: onEvent() already handles childAttached incrementally
221
- // From src/debugger/tree-debugger.ts:66-70
222
- onEvent(event: WorkflowEvent): void {
223
- if (event.type === 'childAttached') {
224
- this.buildNodeMap(event.child); // ✅ Already incremental!
225
- }
226
- // Then onTreeChanged() is called, causing REDUNDANT full rebuild
227
- }
228
-
229
- // CRITICAL: childDetached only provides childId, not full node
230
- // From src/types/events.ts:11
231
- { type: 'childDetached'; parentId: string; childId: string }
232
- // Must use stored node reference to collect descendants for removal
233
-
234
- // CRITICAL: buildNodeMap() is recursive - may hit call stack limits on deep trees
235
- // From src/debugger/tree-debugger.ts:53-58
236
- private buildNodeMap(node: WorkflowNode): void {
237
- this.nodeMap.set(node.id, node);
238
- for (const child of node.children) {
239
- this.buildNodeMap(child); // Recursive call
240
- }
241
- }
242
-
243
- // CRITICAL: treeUpdated is called for non-structural changes
244
- // From src/core/workflow.ts:414
245
- this.emitEvent({ type: 'treeUpdated', root: this.getRoot().node });
246
- // Called by setStatus() - NO tree structure change, just status update
247
- // Current implementation rebuilds entire map for status changes!
248
- ```
249
-
250
- ---
251
-
252
- ## Implementation Blueprint
253
-
254
- ### Data Models and Structure
255
-
256
- **No data model changes** - This is a research task only.
257
-
258
- **Data structures to analyze**:
259
-
260
- ```typescript
261
- // From src/types/workflow.ts:20-37
262
- interface WorkflowNode {
263
- id: string; // Unique identifier
264
- name: string; // Human-readable name
265
- parent: WorkflowNode | null; // Parent reference (null for root)
266
- children: WorkflowNode[]; // Child nodes (tree structure)
267
- status: WorkflowStatus; // Current execution state
268
- logs: LogEntry[]; // Log entries
269
- events: WorkflowEvent[]; // Emitted events
270
- stateSnapshot: SerializedWorkflowState | null; // State snapshot
271
- }
272
-
273
- // Tree structure maintained by debugger:
274
- // - this.root: WorkflowNode (root node reference)
275
- // - this.nodeMap: Map<string, WorkflowNode> (id -> node lookup)
276
- ```
277
-
278
- ### Implementation Tasks (ordered by dependencies)
279
-
280
- ```yaml
281
- Task 1: READ and document current implementation
282
- - READ: src/debugger/tree-debugger.ts lines 53-84 (buildNodeMap, onTreeChanged)
283
- - READ: src/debugger/tree-debugger.ts lines 66-74 (onEvent childAttached handling)
284
- - DOCUMENT: Current rebuild logic in analysis.md
285
- - IDENTIFY: Time complexity of buildNodeMap() - O(n) where n = total nodes
286
- - IDENTIFY: Redundant work - childAttached handled in both onEvent() AND onTreeChanged()
287
- - OUTPUT: Section "Current Implementation" in analysis.md
288
-
289
- Task 2: ANALYZE tree change event types
290
- - READ: src/types/events.ts lines 8-18 (core workflow events)
291
- - READ: src/core/workflow.ts lines 360-379 (emitEvent observer notification)
292
- - IDENTIFY: Three events trigger onTreeChanged:
293
- 1. childAttached - new subtree added
294
- 2. childDetached - subtree removed (only childId provided)
295
- 3. treeUpdated - root reference or status change
296
- - DOCUMENT: For each event:
297
- - When it occurs
298
- - What data it provides
299
- - Current onTreeChanged behavior
300
- - Optimal incremental behavior
301
- - OUTPUT: Section "Tree Change Event Analysis" in analysis.md
302
-
303
- Task 3: CALCULATE performance impact
304
- - CALCULATE: Current complexity per event type
305
- - childAttached: O(n) - rebuilds entire map
306
- - childDetached: O(n) - rebuilds entire map
307
- - treeUpdated: O(n) - rebuilds entire map
308
- - CALCULATE: Potential incremental complexity
309
- - childAttached: O(k) where k = nodes in new subtree (already implemented in onEvent)
310
- - childDetached: O(k) where k = nodes in removed subtree
311
- - treeUpdated: O(1) - just update root reference
312
- - CALCULATE: Speedup potential
313
- - Single node attach to 1000-node tree: 1000× faster (O(1000) → O(1))
314
- - Single node detach from 1000-node tree: 100× faster (O(1000) → O(10))
315
- - Root status update: 1000× faster (O(1000) → O(1))
316
- - OUTPUT: Section "Performance Impact Analysis" in analysis.md
317
-
318
- Task 4: IDENTIFY incremental update opportunities
319
- - RESEARCH: Read plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/
320
- - IDENTIFY: Opportunity 1 - Remove redundant childAttached rebuild
321
- - onEvent() already adds new subtree
322
- - onTreeChanged() rebuild is redundant work
323
- - IDENTIFY: Opportunity 2 - Implement childDetached subtree removal
324
- - Use stored node reference to collect descendants
325
- - Remove collected node IDs from map
326
- - IDENTIFY: Opportunity 3 - Replace treeUpdated full rebuild
327
- - Just update this.root reference
328
- - Node references in map unchanged
329
- - IDENTIFY: Opportunity 4 - Eliminate onTreeChanged rebuild entirely
330
- - All tree changes can be handled incrementally in onEvent()
331
- - OUTPUT: Section "Incremental Update Opportunities" in analysis.md
332
-
333
- Task 5: CREATE implementation recommendations
334
- - DOCUMENT: Specific code changes for P1.M3.T2.S2
335
- - Add handleChildDetached() method with BFS subtree collection
336
- - Modify onEvent() to handle childDetached
337
- - Remove full rebuild from onTreeChanged()
338
- - DOCUMENT: Code pattern examples (from research package)
339
- - BFS-based subtree removal
340
- - Incremental update pattern
341
- - DOCUMENT: Gotchas to avoid
342
- - Must remove entire subtree, not just detached node
343
- - Must handle case where node already removed from map
344
- - Recursive removal may hit stack limits - use iterative BFS
345
- - OUTPUT: Section "Implementation Recommendations" in analysis.md
346
-
347
- Task 6: STORE research for P1.M3.T2.S2 and P1.M3.T2.S3
348
- - CREATE: plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/research/ directory
349
- - COPY: External research URLs with annotations
350
- - STORE: Code pattern examples for incremental updates
351
- - STORE: Performance benchmark template for P1.M3.T2.S3
352
- - OUTPUT: research/README.md with links to all resources
353
- ```
354
-
355
- ### Implementation Patterns & Key Details
356
-
357
- ```typescript
358
- // Current Implementation (to analyze and document)
359
-
360
- // From src/debugger/tree-debugger.ts:53-58
361
- private buildNodeMap(node: WorkflowNode): void {
362
- // PATTERN: Recursive DFS traversal
363
- this.nodeMap.set(node.id, node);
364
- for (const child of node.children) {
365
- this.buildNodeMap(child); // RECURSIVE - may hit stack limits
366
- }
367
- // COMPLEXITY: O(n) where n = total nodes in tree
368
- // SIDE EFFECT: Replaces entire map content
369
- }
370
-
371
- // From src/debugger/tree-debugger.ts:66-74
372
- onEvent(event: WorkflowEvent): void {
373
- // PATTERN: Event-type dispatch
374
- if (event.type === 'childAttached') {
375
- this.buildNodeMap(event.child); // ✅ Already adds new subtree
376
- }
377
- // GOTCHA: No handling for childDetached - leaks orphaned nodes
378
-
379
- this.events.next(event);
380
- // GOTCHA: After onEvent returns, emitEvent() calls onTreeChanged()
381
- }
382
-
383
- // From src/debugger/tree-debugger.ts:80-84
384
- onTreeChanged(root: WorkflowNode): void {
385
- // PATTERN: Complete map invalidation
386
- this.root = root;
387
- this.nodeMap.clear(); // ❌ Clears entire map
388
- this.buildNodeMap(root); // ❌ O(n) rebuild from scratch
389
- // PROBLEM: Redundant work for childAttached (already handled in onEvent)
390
- // PROBLEM: Unnecessary for treeUpdated (node references unchanged)
391
- }
392
-
393
- // Recommended Incremental Pattern (for recommendations section)
394
-
395
- onEvent(event: WorkflowEvent): void {
396
- switch (event.type) {
397
- case 'childAttached':
398
- // ✅ Keep existing logic - already optimal
399
- this.buildNodeMap(event.child);
400
- break;
401
-
402
- case 'childDetached':
403
- // ✅ NEW: Incremental subtree removal
404
- this.removeSubtree(event.childId);
405
- break;
406
-
407
- case 'treeUpdated':
408
- // ✅ NEW: Just update root reference
409
- this.root = event.root;
410
- break;
411
- }
412
- this.events.next(event);
413
- }
414
-
415
- // BFS-based subtree removal (recommended over recursive)
416
- private removeSubtree(nodeId: string): void {
417
- const node = this.nodeMap.get(nodeId);
418
- if (!node) return;
419
-
420
- // Collect all descendants using BFS (avoid stack overflow)
421
- const toRemove: string[] = [];
422
- const queue = [node];
423
-
424
- while (queue.length > 0) {
425
- const current = queue.shift()!;
426
- toRemove.push(current.id);
427
- queue.push(...current.children);
428
- }
429
-
430
- // Remove all collected nodes
431
- for (const id of toRemove) {
432
- this.nodeMap.delete(id);
433
- }
434
- // COMPLEXITY: O(k) where k = nodes in removed subtree
435
- }
436
-
437
- onTreeChanged(root: WorkflowNode): void {
438
- // ✅ No longer needed - all updates handled in onEvent()
439
- this.root = root;
440
- }
441
- ```
442
-
443
- ### Integration Points
444
-
445
- ```yaml
446
- WORKFLOW EMIT EVENT:
447
- - file: src/core/workflow.ts:363-379
448
- - pattern: "emitEvent() calls obs.onEvent() then obs.onTreeChanged()"
449
- - gotcha: "Both observers called for same event - causes redundant work"
450
-
451
- EVENT TYPES:
452
- - file: src/types/events.ts:10-18
453
- - pattern: "Discriminated union with type field"
454
- - gotcha: "childDetached only provides childId, not full node"
455
-
456
- OBSERVER PATTERN:
457
- - file: src/core/workflow.ts:124-139
458
- - pattern: "getRootObservers() traverses parent chain"
459
- - gotcha: "Uses visited Set for cycle detection"
460
- ```
461
-
462
- ---
463
-
464
- ## Validation Loop
465
-
466
- ### Level 1: Completeness Check (Immediate Feedback)
467
-
468
- ```bash
469
- # Verify analysis document exists
470
- test -f plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
471
- echo "Analysis document exists: $?"
472
-
473
- # Verify document contains all required sections
474
- grep -q "Current Implementation" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
475
- echo "Current Implementation section exists: $?"
476
-
477
- grep -q "Tree Change Event Analysis" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
478
- echo "Event Analysis section exists: $?"
479
-
480
- grep -q "Performance Impact Analysis" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
481
- echo "Performance Analysis section exists: $?"
482
-
483
- grep -q "Incremental Update Opportunities" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
484
- echo "Opportunities section exists: $?"
485
-
486
- grep -q "Implementation Recommendations" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
487
- echo "Recommendations section exists: $?"
488
-
489
- # Expected: All checks return 0 (true)
490
- ```
491
-
492
- ### Level 2: Content Quality Validation
493
-
494
- ```bash
495
- # Verify line number references are accurate
496
- grep -n "onTreeChanged" src/debugger/tree-debugger.ts
497
- # Expected: Line 80 shows onTreeChanged method
498
-
499
- grep -n "buildNodeMap" src/debugger/tree-debugger.ts
500
- # Expected: Line 53 shows buildNodeMap method
501
-
502
- grep -n "childAttached\|childDetached\|treeUpdated" src/types/events.ts
503
- # Expected: Lines 10-18 show event definitions
504
-
505
- # Verify analysis document contains code references
506
- grep -q "src/debugger/tree-debugger.ts:80-84" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
507
- echo "Line number references present: $?"
508
-
509
- # Verify complexity analysis present
510
- grep -q "O(n)\|O(1)\|O(k)" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
511
- echo "Complexity analysis present: $?"
512
-
513
- # Verify external research cited
514
- grep -q "https://" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
515
- echo "External references cited: $?"
516
- ```
517
-
518
- ### Level 3: Research Artifact Validation
519
-
520
- ```bash
521
- # Verify research directory exists
522
- test -d plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/research
523
- echo "Research directory exists: $?"
524
-
525
- # Verify research README exists
526
- test -f plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/research/README.md
527
- echo "Research README exists: $?"
528
-
529
- # Verify README contains link to main research package
530
- grep -q "incremental-tree-map-updates" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/research/README.md
531
- echo "Research package linked: $?"
532
- ```
533
-
534
- ### Level 4: Readiness for P1.M3.T2.S2 Validation
535
-
536
- ```bash
537
- # Verify recommendations are actionable
538
- grep -q "addSubtree\|removeSubtree\|handleChildDetached" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
539
- echo "Actionable method names present: $?"
540
-
541
- # Verify code examples provided
542
- grep -q "```typescript" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
543
- echo "Code examples present: $?"
544
-
545
- # Verify gotchas documented
546
- grep -q "GOTCHA\|gotcha\|WARNING" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S1/analysis.md
547
- echo "Gotchas documented: $?"
548
- ```
549
-
550
- ---
551
-
552
- ## Final Validation Checklist
553
-
554
- ### Technical Validation
555
-
556
- - [ ] Analysis document exists at correct path
557
- - [ ] All required sections completed (Current Implementation, Event Analysis, Performance, Opportunities, Recommendations)
558
- - [ ] Line number references accurate and verifiable
559
- - [ ] Complexity analysis includes O(n), O(1), O(k) notations
560
- - [ ] External research URLs cited with annotations
561
- - [ ] Code pattern examples included for each recommendation
562
-
563
- ### Content Quality Validation
564
-
565
- - [ ] Current implementation behavior fully documented
566
- - [ ] All three tree change events (childAttached, childDetached, treeUpdated) analyzed
567
- - [ ] Performance impact quantified with specific complexity values
568
- - [ ] Redundant work identified (onEvent + onTreeChanged for childAttached)
569
- - [ ] At least 3 specific optimization opportunities identified
570
- - [ ] Implementation recommendations include specific method names and patterns
571
-
572
- ### Research Artifact Validation
573
-
574
- - [ ] research/ directory created
575
- - [ ] research/README.md exists with links to external resources
576
- - [ ] Code pattern examples stored for P1.M3.T2.S2 reference
577
- - [ ] Benchmark template provided for P1.M3.T2.S3
578
-
579
- ### P1.M3.T2.S2 Readiness Validation
580
-
581
- - [ ] Recommendations enable implementation without additional research
582
- - [ ] Specific method signatures provided (removeSubtree, handleChildDetached)
583
- - [ ] Code examples follow existing codebase patterns
584
- - [ ] Gotchas and anti-patterns documented to avoid
585
- - [ ] Performance expectations quantified for validation
586
-
587
- ---
588
-
589
- ## Anti-Patterns to Avoid
590
-
591
- - ❌ Don't implement code changes - this is a research task only
592
- - ❌ Don't skip external research - use provided URLs for validation
593
- - ❌ Don't omit line number references - P1.M3.T2.S2 needs exact locations
594
- - ❌ Don't ignore the redundancy between onEvent() and onTreeChanged()
595
- - ❌ Don't forget that childDetached only provides childId, not full node
596
- - ❌ Don't recommend recursive subtree removal - use iterative BFS to avoid stack limits
597
- - ❌ Don't omit complexity analysis - quantitative comparison essential
598
- - ❌ Don't forget to document the treeUpdated case - root reference changes only
599
-
600
- ---
601
-
602
- ## Output Template
603
-
604
- The analysis document should follow this structure:
605
-
606
- ```markdown
607
- # Tree Debugger onTreeChanged Implementation Analysis
608
-
609
- ## Current Implementation
610
-
611
- ### buildNodeMap() - Line 53-58
612
- [Code snippet and analysis]
613
-
614
- ### onEvent() - Line 66-74
615
- [Code snippet and analysis]
616
-
617
- ### onTreeChanged() - Line 80-84
618
- [Code snippet and analysis]
619
-
620
- ## Tree Change Event Analysis
621
-
622
- ### childAttached Event
623
- - When: Called by attachChild() after child added to workflow.children and node.children
624
- - Data: { type: 'childAttached', parentId: string, child: WorkflowNode }
625
- - Current behavior: Added in onEvent(), then entire map rebuilt in onTreeChanged()
626
- - Optimal behavior: Just add in onEvent(), skip onTreeChanged() rebuild
627
-
628
- ### childDetached Event
629
- [Similar analysis]
630
-
631
- ### treeUpdated Event
632
- [Similar analysis]
633
-
634
- ## Performance Impact Analysis
635
-
636
- ### Current Complexity
637
- - childAttached: O(n)
638
- - childDetached: O(n)
639
- - treeUpdated: O(n)
640
-
641
- ### Incremental Complexity
642
- - childAttached: O(k) already implemented
643
- - childDetached: O(k) - needs implementation
644
- - treeUpdated: O(1) - needs implementation
645
-
646
- ### Speedup Potential
647
- [Table with specific speedup calculations]
648
-
649
- ## Incremental Update Opportunities
650
-
651
- ### Opportunity 1: Eliminate Redundant childAttached Rebuild
652
- [Description and recommendation]
653
-
654
- ### Opportunity 2: Implement childDetached Subtree Removal
655
- [Description with code pattern]
656
-
657
- ### Opportunity 3: Replace treeUpdated Full Rebuild
658
- [Description with code pattern]
659
-
660
- ### Opportunity 4: Remove onTreeChanged Rebuild Entirely
661
- [Description with code pattern]
662
-
663
- ## Implementation Recommendations
664
-
665
- ### For P1.M3.T2.S2: Add removeSubtree() Method
666
- [Specific implementation guidance]
667
-
668
- ### For P1.M3.T2.S2: Modify onEvent() to Handle childDetached
669
- [Specific implementation guidance]
670
-
671
- ### For P1.M3.T2.S2: Simplify onTreeChanged()
672
- [Specific implementation guidance]
673
-
674
- ### Gotchas to Avoid
675
- [List of potential issues]
676
-
677
- ## References
678
-
679
- ### External Research
680
- [Links to MDN, React docs, V8 blog, StackOverflow]
681
-
682
- ### Internal Research
683
- [Links to research package files]
684
-
685
- ### Code Files Referenced
686
- [Links to specific files with line numbers]
687
- ```
688
-
689
- ---
690
-
691
- ## Appendix: Research Summary
692
-
693
- ### Research Package Location
694
-
695
- `plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/`
696
-
697
- ### Key Files
698
-
699
- - `QUICK_REFERENCE.md` - Code examples and patterns
700
- - `RESEARCH_REPORT.md` - Comprehensive analysis
701
- - `SUMMARY.md` - Executive summary
702
- - `PRP_TEMPLATE.md` - Implementation PRP template
703
-
704
- ### Expected P1.M3.T2.S2 Output
705
-
706
- After this analysis, P1.M3.T2.S2 should implement:
707
-
708
- 1. `removeSubtree(nodeId: string)` - BFS-based subtree removal
709
- 2. Modified `onEvent()` - Handle childDetached
710
- 3. Simplified `onTreeChanged()` - Remove full rebuild
711
-
712
- Expected performance improvement: **100-1000× faster** for large trees.
713
-
714
- ---
715
-
716
- **PRP Version**: 1.0
717
- **Last Updated**: 2025-01-12
718
- **Next PRP**: P1.M3.T2.S2 (Implementation)
719
- **Dependencies**: None (research task)