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,1011 +0,0 @@
1
- # Breaking Changes Audit Report - Version 0.0.3
2
-
3
- **PRP ID**: P1.M4.T3.S1
4
- **Audit Date**: 2026-01-12
5
- **Auditor**: Claude Code (PRP-Driven Implementation)
6
- **Report Version**: 1.0
7
-
8
- ---
9
-
10
- ## Executive Summary
11
-
12
- This comprehensive audit examines all bug fixes implemented in milestones P1.M1 (Critical), P1.M2 (Major), and P1.M3 (Minor) to identify breaking changes, assess their severity, and document mitigation strategies with migration paths.
13
-
14
- ### Overall Assessment
15
-
16
- | Metric | Value | Status |
17
- |--------|-------|--------|
18
- | **Total Bug Fixes Audited** | 8 | Complete |
19
- | **Breaking Changes Found** | 1 | Low Severity |
20
- | **Non-Breaking Changes** | 7 | Full Backward Compatibility |
21
- | **Test Pass Rate** | 100% (479/479) | Validated |
22
- | **Version Recommendation** | PATCH (0.0.3 → 0.0.4) | See Version Recommendation |
23
-
24
- ### Key Findings
25
-
26
- - **Primary Breaking Change**: Workflow constructor name validation (LOW severity)
27
- - **All Other Changes**: Non-breaking additive changes or internal implementation improvements
28
- - **Backward Compatibility**: Maintained for 7 of 8 fixes via function overloads, default preservation, or internal-only changes
29
- - **Migration Required**: Only for users relying on empty/whitespace workflow names
30
-
31
- ---
32
-
33
- ## Methodology
34
-
35
- This audit follows a systematic approach to identify and classify breaking changes:
36
-
37
- ### 1. Public API Surface Identification
38
-
39
- The public API surface is defined by all exports from `/home/dustin/projects/groundswell/src/index.ts`. Only changes to these exports can constitute breaking changes. Internal implementation changes are never breaking changes.
40
-
41
- **Public API Elements Include:**
42
- - All exported classes: `Workflow`, `WorkflowLogger`, `Agent`, `Prompt`, `MCPHandler`, `WorkflowTreeDebugger`
43
- - All exported decorators: `Step`, `Task`, `ObservedState`
44
- - All exported types and interfaces from `types/index.js`
45
- - All exported utility functions: `generateId`, `mergeWorkflowErrors`, `Observable`
46
-
47
- ### 2. Breaking Change Criteria
48
-
49
- Per [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html):
50
- > **MAJOR version** when you make incompatible API changes
51
- > **MINOR version** when you add functionality in a backward-compatible manner
52
- > **PATCH version** when you make backward-compatible bug fixes
53
-
54
- Breaking changes are defined as:
55
- - Function/method signature modifications that break existing call patterns
56
- - Interface property removal or requirement changes
57
- - Behavioral changes that break existing expectations
58
- - Removal of exported APIs
59
-
60
- ### 3. Severity Assessment Framework
61
-
62
- | Severity | Definition | Example |
63
- |----------|-----------|---------|
64
- | **Critical** | Data loss, security issue, complete feature failure | Removing required API, changing return type to incompatible |
65
- | **High** | Major disruption, complex migration | Removing commonly used method, tightening validation significantly |
66
- | **Medium** | Moderate disruption, straightforward migration | Changing optional to required, minor behavior change |
67
- | **Low** | Minor disruption, simple migration, fixes undefined behavior | Rejecting previously accepted invalid inputs |
68
-
69
- ### 4. Validation Methodology
70
-
71
- Each fix is validated against:
72
- 1. **Public API Impact**: Does the change affect exports from `src/index.ts`?
73
- 2. **Backward Compatibility**: Do existing usage patterns continue to work?
74
- 3. **Test Coverage**: Do all 479 tests pass without modification?
75
- 4. **PRD Alignment**: Does the fix correct PRD-violating behavior (which makes it non-breaking)?
76
-
77
- ---
78
-
79
- ## P1.M1 - Critical Fixes Audit
80
-
81
- ### WorkflowLogger.child() Signature Fix
82
-
83
- **File**: `/home/dustin/projects/groundswell/src/core/logger.ts:98-111`
84
- **Exported**: Yes - `WorkflowLogger` class is exported from `src/index.ts`
85
- **Public API Element**: `WorkflowLogger.child()` method
86
-
87
- #### Breaking Change Assessment
88
-
89
- **Classification**: **NON-BREAKING**
90
- **Severity**: N/A
91
-
92
- #### Public API Impact
93
-
94
- The `child()` method signature changed from:
95
- ```typescript
96
- // Before
97
- child(parentLogId: string): WorkflowLogger
98
-
99
- // After (with overloads)
100
- child(parentLogId: string): WorkflowLogger;
101
- child(meta: Partial<LogEntry>): WorkflowLogger;
102
- child(input: string | Partial<LogEntry>): WorkflowLogger
103
- ```
104
-
105
- #### Reasoning
106
-
107
- **Justification: Backward Compatible Implementation via Function Overloads**
108
-
109
- The implementation uses TypeScript function overloads to support both the legacy string-based API and the new `Partial<LogEntry>` API:
110
-
111
- ```typescript
112
- // src/core/logger.ts:98-111
113
- child(parentLogId: string): WorkflowLogger;
114
- child(meta: Partial<LogEntry>): WorkflowLogger;
115
- child(input: string | Partial<LogEntry>): WorkflowLogger {
116
- const parentLogId = typeof input === 'string' ? input : input.parentLogId;
117
- return new WorkflowLogger(this.node, this.observers, parentLogId);
118
- }
119
- ```
120
-
121
- **All existing call patterns continue to work:**
122
- - `logger.child('parent-id-123')` - Legacy string parameter
123
- - `logger.child('')` - Empty string (results in undefined parentLogId)
124
- - `logger.child({ parentLogId: 'parent-id' })` - New object syntax
125
-
126
- **Evidence from VERIFICATION_REPORT.md:**
127
- > All 361 tests pass without any code modifications required. 20 usage locations verified (2 existing + 18 new patterns).
128
-
129
- #### Migration Required
130
-
131
- **No** - Zero code changes required for existing users.
132
-
133
- #### Mitigation Strategy
134
-
135
- **Not applicable** - No migration needed. The function overload pattern ensures all existing code continues to work unchanged.
136
-
137
- **For new code**, users should use the more explicit `Partial<LogEntry>` syntax:
138
- ```typescript
139
- logger.child({ parentLogId: 'parent-id-123' })
140
- ```
141
-
142
- #### Verification
143
-
144
- **Test Coverage**: Comprehensive validation in `plan/.../P1M1T1S4/VERIFICATION_REPORT.md`
145
- - All 20 usage patterns verified working
146
- - 100% test pass rate (361 tests)
147
- - Edge cases documented and handled
148
-
149
- **Manual Verification**:
150
- ```bash
151
- npm test
152
- # Result: 479 tests passed (100% pass rate)
153
- ```
154
-
155
- ---
156
-
157
- ## P1.M2 - Major Fixes Audit
158
-
159
- ### Promise.allSettled for Concurrent Tasks
160
-
161
- **File**: `/home/dustin/projects/groundswell/src/decorators/task.ts:112-142`
162
- **Exported**: Yes - `Task` decorator is exported from `src/index.ts`
163
- **Public API Element**: `@Task` decorator behavior with `concurrent: true` option
164
-
165
- #### Breaking Change Assessment
166
-
167
- **Classification**: **NON-BREAKING**
168
- **Severity**: N/A
169
-
170
- #### Public API Impact
171
-
172
- The `@Task` decorator now uses `Promise.allSettled()` instead of `Promise.all()` for concurrent workflow execution:
173
-
174
- ```typescript
175
- // src/decorators/task.ts:112-142
176
- const results = await Promise.allSettled(runnable.map((w) => w.run()));
177
-
178
- const rejected = results.filter(
179
- (r): r is PromiseRejectedResult => r.status === 'rejected'
180
- );
181
-
182
- if (rejected.length > 0) {
183
- // Check if error merge strategy is enabled
184
- if (opts.errorMergeStrategy?.enabled) {
185
- // ... merge errors
186
- }
187
- // Backward compatibility: throw first error
188
- throw rejected[0].reason;
189
- }
190
- ```
191
-
192
- #### Reasoning
193
-
194
- **Justification: Default Behavior Unchanged (Backward Compatible)**
195
-
196
- The key behavioral difference between `Promise.all()` and `Promise.allSettled()` is:
197
- - `Promise.all()`: Rejects immediately on first error
198
- - `Promise.allSettled()`: Waits for all promises to complete
199
-
200
- However, **the default behavior is preserved**:
201
- ```typescript
202
- // Backward compatibility: throw first error
203
- throw rejected[0].reason;
204
- ```
205
-
206
- **Existing code expectations are maintained:**
207
- - When concurrent tasks fail, an error is still thrown
208
- - The first error (in array order) is thrown by default
209
- - No code changes required for existing users
210
-
211
- **The enhancement is additive:**
212
- - New `errorMergeStrategy` option enables aggregate error handling
213
- - When enabled, all errors are collected and merged
214
- - When disabled (default), behavior is identical to `Promise.all()`
215
-
216
- #### Migration Required
217
-
218
- **No** - Default behavior unchanged.
219
-
220
- #### Mitigation Strategy
221
-
222
- **Not applicable** - No migration needed.
223
-
224
- **For users wanting aggregate error handling**, the new feature is opt-in:
225
- ```typescript
226
- @Task({
227
- concurrent: true,
228
- errorMergeStrategy: {
229
- enabled: true,
230
- // Custom combine function optional
231
- }
232
- })
233
- async myTask() {
234
- // ...
235
- }
236
- ```
237
-
238
- #### Verification
239
-
240
- **Test Coverage**: `src/__tests__/adversarial/concurrent-task-failures.test.ts` validates concurrent task error handling behavior.
241
-
242
- ---
243
-
244
- ### ErrorMergeStrategy Implementation
245
-
246
- **File**: `/home/dustin/projects/groundswell/src/types/decorators.ts:25-32`
247
- **Exported**: Yes - `TaskOptions` interface and `ErrorMergeStrategy` type are exported from `src/index.ts`
248
- **Public API Element**: `TaskOptions.errorMergeStrategy` property
249
-
250
- #### Breaking Change Assessment
251
-
252
- **Classification**: **NON-BREAKING**
253
- **Severity**: N/A
254
-
255
- #### Public API Impact
256
-
257
- New optional property added to `TaskOptions` interface:
258
-
259
- ```typescript
260
- // src/types/decorators.ts:25-32
261
- export interface TaskOptions {
262
- /** Custom task name (defaults to method name) */
263
- name?: string;
264
- /** If true, run returned workflows concurrently */
265
- concurrent?: boolean;
266
- /** Strategy for merging errors from concurrent task execution */
267
- errorMergeStrategy?: ErrorMergeStrategy;
268
- }
269
- ```
270
-
271
- #### Reasoning
272
-
273
- **Justification: Additive Interface Change (New Optional Property)**
274
-
275
- Adding optional properties to interfaces is explicitly non-breaking per TypeScript and Semantic Versioning guidelines:
276
-
277
- 1. **Existing code without the property continues to work** - The property is optional
278
- 2. **Default behavior preserved** - Property defaults to `undefined`, which disables the feature
279
- 3. **No existing functionality affected** - This is purely additive
280
-
281
- From [TypeScript wiki on Breaking Changes](https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes):
282
- > Adding new members to an interface is generally safe; existing code won't use them.
283
-
284
- #### Migration Required
285
-
286
- **No** - This is purely additive.
287
-
288
- #### Mitigation Strategy
289
-
290
- **Not applicable** - No migration needed.
291
-
292
- **New utility function exported**: `mergeWorkflowErrors()` is now available from `src/index.ts` for custom error merging logic.
293
-
294
- #### Verification
295
-
296
- **Test Coverage**: `src/__tests__/adversarial/error-merge-strategy.test.ts` validates error merge strategy functionality.
297
-
298
- ---
299
-
300
- ### trackTiming Default Documentation
301
-
302
- **File**: `/home/dustin/projects/groundswell/src/decorators/step.ts:94-101`
303
- **Related PRD File**: `/home/dustin/projects/groundswell/PRD.md`
304
- **Exported**: Yes - `Step` decorator is exported from `src/index.ts`
305
- **Public API Element**: `StepOptions.trackTiming` property
306
-
307
- #### Breaking Change Assessment
308
-
309
- **Classification**: **NON-BREAKING**
310
- **Severity**: N/A
311
-
312
- #### Public API Impact
313
-
314
- **Documentation-only change** - No code behavior modified.
315
-
316
- The implementation has always used:
317
- ```typescript
318
- // src/decorators/step.ts:94-101
319
- if (opts.trackTiming !== false) {
320
- wf.emitEvent({
321
- type: 'stepEnd',
322
- node: wf.node,
323
- step: stepName,
324
- duration,
325
- });
326
- }
327
- ```
328
-
329
- This means `trackTiming` defaults to `true` (enabled) unless explicitly set to `false`.
330
-
331
- The fix clarifies this in the PRD documentation.
332
-
333
- #### Reasoning
334
-
335
- **Justification: Documentation-Only Change (No Behavior Change)**
336
-
337
- 1. **No code was modified** - The `!== false` check has always been the implementation
338
- 2. **Runtime behavior unchanged** - Timing was always tracked by default
339
- 3. **PRD alignment only** - Documentation updated to match actual implementation
340
-
341
- From the PRD snapshot (`prd_snapshot.md`):
342
- > Issue 4: "PRD shows `trackTiming?: boolean` in options but doesn't explicitly state default value"
343
-
344
- This was a documentation gap, not a behavior change.
345
-
346
- #### Migration Required
347
-
348
- **No** - No behavior change.
349
-
350
- #### Mitigation Strategy
351
-
352
- **Not applicable** - No migration needed.
353
-
354
- #### Verification
355
-
356
- **Manual Verification**: Inspect `src/decorators/step.ts:94-101` - confirms `!== false` check was always present.
357
-
358
- ---
359
-
360
- ## P1.M3 - Minor Fixes Audit
361
-
362
- ### Console.error to Logger Replacement
363
-
364
- **File**: `/home/dustin/projects/groundswell/src/core/workflow.ts:426, 444`
365
- **Exported**: No - Internal implementation detail
366
- **Public API Element**: N/A (Internal implementation)
367
-
368
- #### Breaking Change Assessment
369
-
370
- **Classification**: **NON-BREAKING**
371
- **Severity**: N/A
372
-
373
- #### Public API Impact
374
-
375
- Internal error logging changed from:
376
- ```typescript
377
- // Before
378
- console.error('Observer onEvent error:', err);
379
- console.error('Observer onStateUpdated error:', err);
380
-
381
- // After
382
- this.logger.error('Observer onEvent error', { error: err, eventType: event.type });
383
- this.logger.error('Observer onStateUpdated error', { error: err, nodeId: this.node.id });
384
- ```
385
-
386
- #### Reasoning
387
-
388
- **Justification: Internal Implementation Detail Only**
389
-
390
- 1. **Not a public API change** - Observer error handling is internal to the `Workflow` class
391
- 2. **No public API surface affected** - `Workflow` class methods and signatures unchanged
392
- 3. **Observable behavior identical** - Observer errors are still handled and logged
393
- 4. **Improved logging** - Structured logging provides better debugging context
394
-
395
- Per Semantic Versioning:
396
- > PATCH version when you make backward-compatible bug fixes... Internal implementation changes are not breaking changes.
397
-
398
- #### Migration Required
399
-
400
- **No** - Internal implementation only.
401
-
402
- #### Mitigation Strategy
403
-
404
- **Not applicable** - No migration needed.
405
-
406
- **Users who previously saw console.error output** will now see structured log entries through the workflow logger, which provides better context and filtering capabilities.
407
-
408
- ---
409
-
410
- ### Tree Debugger Optimization
411
-
412
- **File**: `/home/dustin/projects/groundswell/src/debugger/tree-debugger.ts:65-84, 92-117`
413
- **Exported**: Yes - `WorkflowTreeDebugger` class is exported from `src/index.ts`
414
- **Public API Element**: `WorkflowTreeDebugger` internal implementation
415
-
416
- #### Breaking Change Assessment
417
-
418
- **Classification**: **NON-BREAKING**
419
- **Severity**: N/A
420
-
421
- #### Public API Impact
422
-
423
- Performance optimization changed internal node map update algorithm:
424
-
425
- ```typescript
426
- // src/debugger/tree-debugger.ts:65-84, 92-117
427
- // Before: O(n) full map rebuild on every change
428
- onTreeChanged(root: WorkflowNode): void {
429
- this.root = root;
430
- this.nodeMap.clear();
431
- this.buildNodeMap(root); // O(n) rebuild
432
- }
433
-
434
- // After: O(k) incremental update for subtree removal
435
- private removeSubtreeNodes(nodeId: string): void {
436
- // BFS traversal to collect descendant IDs - O(k) where k = subtree size
437
- const toRemove: string[] = [];
438
- const queue: WorkflowNode[] = [node];
439
- while (queue.length > 0) {
440
- const current = queue.shift()!;
441
- toRemove.push(current.id);
442
- queue.push(...current.children);
443
- }
444
- for (const id of toRemove) {
445
- this.nodeMap.delete(id); // Batch delete
446
- }
447
- }
448
- ```
449
-
450
- #### Reasoning
451
-
452
- **Justification: Performance Optimization Without API Changes**
453
-
454
- 1. **Public API unchanged** - All `WorkflowTreeDebugger` methods have identical signatures
455
- 2. **Observable behavior identical** - Same methods, same return values, same events
456
- 3. **Only performance characteristics improved** - O(n) → O(k) for subtree operations
457
- 4. **Internal implementation detail** - Node map management is private
458
-
459
- From the verification report:
460
- > Incremental Node Map Updates: Detach operations complete in <1ms (target met)
461
- > 10-node subtree attaches in 0.042ms
462
- > 101-node subtree detaches in 0.163ms
463
-
464
- #### Migration Required
465
-
466
- **No** - Performance-only improvement.
467
-
468
- #### Mitigation Strategy
469
-
470
- **Not applicable** - No migration needed.
471
-
472
- **Users benefit from improved performance** without any code changes.
473
-
474
- #### Verification
475
-
476
- **Test Coverage**: `src/__tests__/unit/tree-debugger-incremental.test.ts` validates incremental node map updates.
477
-
478
- **Performance Benchmarks**: `src/__tests__/adversarial/node-map-update-benchmarks.test.ts` confirms O(k) performance.
479
-
480
- ---
481
-
482
- ### Workflow Name Validation
483
-
484
- **File**: `/home/dustin/projects/groundswell/src/core/workflow.ts:98-107`
485
- **Exported**: Yes - `Workflow` class is exported from `src/index.ts`
486
- **Public API Element**: `Workflow` constructor
487
-
488
- #### Breaking Change Assessment
489
-
490
- **Classification**: **BREAKING**
491
- **Severity**: **LOW**
492
-
493
- #### Public API Impact
494
-
495
- The `Workflow` constructor now validates the `name` parameter:
496
-
497
- ```typescript
498
- // src/core/workflow.ts:98-107
499
- // Validate workflow name (after config is normalized)
500
- if (typeof this.config.name === 'string') {
501
- const trimmedName = this.config.name.trim();
502
- if (trimmedName.length === 0) {
503
- throw new Error('Workflow name cannot be empty or whitespace only');
504
- }
505
- if (this.config.name.length > 100) {
506
- throw new Error('Workflow name cannot exceed 100 characters');
507
- }
508
- }
509
- ```
510
-
511
- **Previously accepted inputs now rejected:**
512
- - Empty string: `new Workflow({ name: '' })`
513
- - Whitespace-only: `new Workflow({ name: ' ' })`
514
- - Names >100 chars: `new Workflow({ name: 'a'.repeat(101) })`
515
-
516
- #### Reasoning
517
-
518
- **Why This is Potentially Breaking:**
519
-
520
- 1. **Constructor now throws for previously accepted inputs** - Tightened validation
521
- 2. **Affects public API** - `Workflow` constructor signature unchanged but behavior modified
522
- 3. **May affect existing code** - If users rely on empty/invalid names
523
-
524
- **Why LOW Severity:**
525
-
526
- 1. **Fixing undefined behavior** - Empty names don't represent valid usage
527
- 2. **Likelihood: RARE** - Most users use meaningful names
528
- 3. **Simple migration** - Provide valid names
529
- 4. **Fail-fast principle** - Better to catch invalid configuration early
530
- 5. **Aligns with PRD intent** - Workflows should have meaningful names
531
-
532
- From the PRD snapshot (`prd_snapshot.md`):
533
- > Issue 8: "Empty string workflow names are accepted... Add validation to reject empty or whitespace-only names"
534
-
535
- This fixes undefined/invalid behavior rather than breaking valid usage.
536
-
537
- #### Migration Required
538
-
539
- **Yes** - Only for users using empty/whitespace/long workflow names.
540
-
541
- #### Mitigation Strategy
542
-
543
- **What Changed:**
544
- The `Workflow` constructor now validates the `name` parameter and throws a `TypeError` for:
545
- - Empty strings: `''`
546
- - Whitespace-only names: `' '`, `'\t\n'`
547
- - Names exceeding 100 characters
548
-
549
- **Before (Invalid Pattern Now Rejected):**
550
- ```typescript
551
- // These now throw Error
552
- const workflow1 = new Workflow({ name: '' });
553
- const workflow2 = new Workflow({ name: ' ' });
554
- const workflow3 = new Workflow({ name: 'a'.repeat(101) });
555
- ```
556
-
557
- **After (Correct Pattern):**
558
- ```typescript
559
- // Provide meaningful names
560
- const workflow1 = new Workflow({ name: 'MyWorkflow' });
561
- const workflow2 = new Workflow({ name: 'DataProcessor' });
562
- const workflow3 = new Workflow({ name: 'Analysis' });
563
- ```
564
-
565
- **Migration Steps:**
566
- 1. Search your codebase for `new Workflow(` patterns
567
- 2. Verify all workflow names are non-empty strings with meaningful content
568
- 3. Ensure no workflow names exceed 100 characters
569
- 4. Run your test suite to catch any validation failures
570
- 5. Update tests that use empty/invalid names to use valid names
571
-
572
- **Impact Assessment:**
573
- - **Severity**: LOW - Empty names don't represent valid usage
574
- - **Likelihood**: RARE - Most users use meaningful names
575
- - **Migration**: SIMPLE - Provide valid names
576
-
577
- #### Verification
578
-
579
- **Test Coverage**: `src/__tests__/unit/workflow.test.ts` validates name enforcement.
580
-
581
- **Manual Verification**:
582
- ```typescript
583
- // Test empty name
584
- new Workflow({ name: '' });
585
- // Throws: Error: Workflow name cannot be empty or whitespace only
586
-
587
- // Test whitespace name
588
- new Workflow({ name: ' ' });
589
- // Throws: Error: Workflow name cannot be empty or whitespace only
590
-
591
- // Test long name
592
- new Workflow({ name: 'a'.repeat(101) });
593
- // Throws: Error: Workflow name cannot exceed 100 characters
594
- ```
595
-
596
- ---
597
-
598
- ### isDescendantOf Public API
599
-
600
- **File**: `/home/dustin/projects/groundswell/src/core/workflow.ts:201-219`
601
- **Exported**: Yes - `Workflow` class is exported from `src/index.ts`
602
- **Public API Element**: `Workflow.isDescendantOf()` method
603
-
604
- #### Breaking Change Assessment
605
-
606
- **Classification**: **NON-BREAKING**
607
- **Severity**: N/A
608
-
609
- #### Public API Impact
610
-
611
- Previously private method `isDescendantOf()` is now public:
612
-
613
- ```typescript
614
- // src/core/workflow.ts:201-219
615
- public isDescendantOf(ancestor: Workflow): boolean {
616
- const visited = new Set<Workflow>();
617
- let current: Workflow | null = this.parent;
618
-
619
- while (current !== null) {
620
- if (visited.has(current)) {
621
- throw new Error('Circular parent-child relationship detected');
622
- }
623
- visited.add(current);
624
-
625
- if (current === ancestor) {
626
- return true;
627
- }
628
-
629
- current = current.parent;
630
- }
631
-
632
- return false;
633
- }
634
- ```
635
-
636
- #### Reasoning
637
-
638
- **Justification: Making Private Method Public (Additive Change)**
639
-
640
- 1. **Purely additive** - New public method, no existing functionality removed
641
- 2. **No breaking changes** - Existing code unaffected
642
- 3. **Enables new use cases** - Users can now check workflow hierarchy relationships
643
- 4. **Already existed** - Method was previously private, now publicly accessible
644
-
645
- Per TypeScript/Semver guidelines:
646
- > Making private methods public is additive (non-breaking) - it adds new capabilities without removing existing ones.
647
-
648
- From the PRD snapshot (`prd_snapshot.md`):
649
- > Issue 9: "Consider adding a public `isDescendantOf(other: Workflow): boolean` method for external use"
650
-
651
- This addresses the request for hierarchy validation API.
652
-
653
- #### Migration Required
654
-
655
- **No** - Purely additive.
656
-
657
- #### Mitigation Strategy
658
-
659
- **Not applicable** - No migration needed.
660
-
661
- **New capability available** - Users can now:
662
- - Check ancestry relationships: `child.isDescendantOf(ancestor)`
663
- - Validate before attaching: `if (!newChild.isDescendantOf(parent))`
664
- - Check topology membership: `workflow.isDescendantOf(productionRoot)`
665
-
666
- #### Verification
667
-
668
- **Test Coverage**: `src/__tests__/unit/workflow-isDescendantOf.test.ts` (13 tests) validates public API functionality.
669
-
670
- ---
671
-
672
- ## Summary of Findings
673
-
674
- ### Breaking Changes Inventory
675
-
676
- | Fix | Milestone | Classification | Severity | Migration Required |
677
- |-----|-----------|----------------|----------|-------------------|
678
- | **Workflow name validation** | P1.M3.T3 | BREAKING | **LOW** | Yes (rare cases) |
679
-
680
- ### Non-Breaking Changes Justification
681
-
682
- | Fix | Milestone | Classification | Justification |
683
- |-----|-----------|----------------|---------------|
684
- | **WorkflowLogger.child() signature** | P1.M1.T1 | NON-BREAKING | Function overloads maintain backward compatibility; all 361 tests pass |
685
- | **Promise.allSettled for concurrent tasks** | P1.M2.T1 | NON-BREAKING | Default behavior unchanged (throws first error); additive error merging |
686
- | **ErrorMergeStrategy implementation** | P1.M2.T2 | NON-BREAKING | Additive - new optional property on TaskOptions interface |
687
- | **trackTiming default documentation** | P1.M2.T3 | NON-BREAKING | Documentation-only change; no behavior modified |
688
- | **Console.error to logger replacement** | P1.M3.T1 | NON-BREAKING | Internal implementation detail only; public API unchanged |
689
- | **Tree debugger optimization** | P1.M3.T2 | NON-BREAKING | Performance-only improvement; no API changes |
690
- | **isDescendantOf public API** | P1.M3.T4 | NON-BREAKING | Additive - private method made public |
691
-
692
- ---
693
-
694
- ## Version Recommendation
695
-
696
- ### Semantic Versioning Analysis
697
-
698
- #### Breaking Changes Found: 1
699
-
700
- **Breaking Change: Workflow name validation**
701
- - **Severity**: LOW
702
- - **Impact**: Constructor rejects empty/whitespace/long names
703
- - **Migration**: Simple (provide valid names)
704
- - **Likelihood**: Rare (most users use meaningful names)
705
-
706
- ### Version Bump Recommendation: **PATCH (0.0.3 → 0.0.4)**
707
-
708
- **Reasoning:**
709
-
710
- According to [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html):
711
- - **MAJOR (0.0.3 → 0.1.0)**: Incompatible API changes
712
- - **MINOR (0.0.3 → 0.0.4)**: Backward-compatible functionality
713
- - **PATCH (0.0.3 → 0.0.4)**: Backward-compatible bug fixes
714
-
715
- **Decision: PATCH version bump**
716
-
717
- While there is technically one breaking change (workflow name validation), the recommendation is for a **PATCH bump** rather than MAJOR for the following reasons:
718
-
719
- 1. **Version 0.x.x special rules**: According to semver, versions < 1.0.0 may have breaking changes. The project is at version 0.0.3, indicating pre-1.0 stability.
720
-
721
- 2. **LOW severity**: The breaking change fixes undefined/invalid behavior (empty names) rather than breaking valid usage patterns.
722
-
723
- 3. **Minimal user impact**: Empty/whitespace workflow names don't represent meaningful usage - they indicate buggy code or incomplete implementation.
724
-
725
- 4. **Fail-fast improvement**: Rejecting invalid names early is a quality improvement that prevents subtle bugs.
726
-
727
- 5. **Simple migration**: Users affected (if any)只需提供有意义的名称 - a straightforward fix.
728
-
729
- 6. **Clear error messages**: The validation throws descriptive errors guiding users to the fix.
730
-
731
- **Alternative Consideration: MINOR bump (0.0.3 → 0.1.0)**
732
-
733
- A MINOR bump could be justified because:
734
- - New public APIs added (`isDescendantOf`, `mergeWorkflowErrors`)
735
- - New decorator options (`errorMergeStrategy`)
736
-
737
- However, since the primary intent is bug fixes rather than new features, **PATCH** is more appropriate.
738
-
739
- ### Final Recommendation
740
-
741
- **Release as version 0.0.4** with the following CHANGELOG entry:
742
-
743
- ```markdown
744
- ## [0.0.4] - 2026-01-12
745
-
746
- ### Added
747
-
748
- - Public `isDescendantOf()` method to Workflow class for hierarchy validation
749
- - Public `mergeWorkflowErrors()` utility function for concurrent error aggregation
750
- - `ErrorMergeStrategy` option for @Task decorator concurrent error handling
751
-
752
- ### Fixed
753
-
754
- - WorkflowLogger.child() signature updated to accept Partial<LogEntry> (backward compatible)
755
- - Concurrent task execution now uses Promise.allSettled() for comprehensive error collection
756
- - Observer errors now logged via workflow logger instead of console.error
757
- - Tree debugger optimized with incremental node map updates
758
- - Workflow constructor now validates name parameter (rejects empty/whitespace/long names)
759
-
760
- ### Changed
761
-
762
- - Documentation clarified: @Step trackTiming defaults to true
763
-
764
- ### Migration Notes
765
-
766
- If you use empty or whitespace-only workflow names, update to meaningful names:
767
- ```typescript
768
- // Before (now throws)
769
- new Workflow({ name: '' });
770
-
771
- // After
772
- new Workflow({ name: 'MyWorkflow' });
773
- ```
774
- ```
775
-
776
- ---
777
-
778
- ## Migration Guide
779
-
780
- ### Breaking Change: Workflow Name Validation
781
-
782
- #### What Changed
783
-
784
- The `Workflow` constructor now validates the `name` parameter and throws an `Error` for:
785
- - Empty strings: `''`
786
- - Whitespace-only names: `' '`, `'\t\n'`, etc.
787
- - Names exceeding 100 characters
788
-
789
- Previously, these invalid names were silently accepted, leading to confusing debug output and tree visualizations.
790
-
791
- #### Before (Invalid Pattern - Now Rejected)
792
-
793
- ```typescript
794
- // These now throw Error
795
- const workflow1 = new Workflow({ name: '' });
796
- const workflow2 = new Workflow({ name: ' ' });
797
- const workflow3 = new Workflow({ name: '\t\n' });
798
- const workflow4 = new Workflow({ name: 'a'.repeat(101) });
799
- ```
800
-
801
- **Error Messages:**
802
- - `Error: Workflow name cannot be empty or whitespace only`
803
- - `Error: Workflow name cannot exceed 100 characters`
804
-
805
- #### After (Correct Pattern)
806
-
807
- ```typescript
808
- // Provide meaningful names
809
- const workflow1 = new Workflow({ name: 'DataProcessor' });
810
- const workflow2 = new Workflow({ name: 'AnalysisWorkflow' });
811
- const workflow3 = new Workflow({ name: 'ETLPipeline' });
812
- const workflow4 = new Workflow({ name: 'ReportGenerator' });
813
- ```
814
-
815
- #### Migration Steps
816
-
817
- 1. **Search for workflow creation patterns**:
818
- ```bash
819
- # Search your codebase
820
- grep -r "new Workflow" --include="*.ts" --include="*.js"
821
- ```
822
-
823
- 2. **Identify invalid names**:
824
- - Empty strings: `name: ''`
825
- - Whitespace-only: `name: ' '`
826
- - Overly long names: > 100 characters
827
-
828
- 3. **Replace with meaningful names**:
829
- ```typescript
830
- // Replace empty names with descriptive names
831
- new Workflow({ name: 'MyWorkflow' })
832
-
833
- // Replace whitespace with actual content
834
- new Workflow({ name: 'DataProcessor' })
835
-
836
- // Shorten long names to <= 100 characters
837
- new Workflow({ name: 'ShortDescriptiveName' })
838
- ```
839
-
840
- 4. **Update test fixtures**:
841
- ```typescript
842
- // In tests, use meaningful fixture names
843
- const testWorkflow = new Workflow({ name: 'TestWorkflow' });
844
- ```
845
-
846
- 5. **Run your test suite**:
847
- ```bash
848
- npm test
849
- # Fix any validation failures that appear
850
- ```
851
-
852
- 6. **Verify all workflows have valid names**:
853
- ```bash
854
- # Search for any remaining empty/whitespace names
855
- grep -r 'name:.*""\|name:.*[[:space:]]\{1,\}"' --include="*.ts" --include="*.js"
856
- ```
857
-
858
- #### Impact Assessment
859
-
860
- | Factor | Assessment |
861
- |--------|------------|
862
- | **Severity** | LOW - Empty names don't represent valid usage |
863
- | **Likelihood** | RARE - Most users use meaningful names |
864
- | **Migration Effort** | SIMPLE - Provide valid names |
865
- | **Rollback Required** | NO - This is a quality improvement |
866
- | **Users Affected** | Minimal - Only those with invalid names |
867
-
868
- #### Common Patterns
869
-
870
- **Pattern 1: Test Workflows**
871
- ```typescript
872
- // Before
873
- const wf = new Workflow({ name: '' });
874
-
875
- // After
876
- const wf = new Workflow({ name: 'TestWorkflow' });
877
- ```
878
-
879
- **Pattern 2: Dynamically Generated Names**
880
- ```typescript
881
- // Before - May generate empty names
882
- const wf = new Workflow({ name: userInput || '' });
883
-
884
- // After - Provide default
885
- const wf = new Workflow({ name: userInput || 'DefaultWorkflow' });
886
- ```
887
-
888
- **Pattern 3: Whitespace Names**
889
- ```typescript
890
- // Before - Accidental whitespace
891
- const wf = new Workflow({ name: ' ' });
892
-
893
- // After - Trim or provide content
894
- const wf = new Workflow({ name: workflowName.trim() });
895
- ```
896
-
897
- #### Testing Your Migration
898
-
899
- 1. **Unit Tests**: Ensure all workflow creation tests use valid names
900
- 2. **Integration Tests**: Verify workflow trees build without validation errors
901
- 3. **Manual Testing**: Create workflows with various valid names
902
- 4. **Edge Cases**: Test names at 100-character boundary
903
-
904
- #### Example Migration Script
905
-
906
- If you have many workflows to update, use this search pattern:
907
-
908
- ```bash
909
- # Find all workflow creations with empty names
910
- grep -rn 'new Workflow.*name.*""' src/
911
-
912
- # Find all workflow creations with whitespace names
913
- grep -rn 'new Workflow.*name.*"[[:space:]]"' src/
914
- ```
915
-
916
- ---
917
-
918
- ## References
919
-
920
- ### Implementation Files
921
-
922
- | Bug Fix | Implementation File | Lines |
923
- |---------|---------------------|-------|
924
- | WorkflowLogger.child() signature | `/home/dustin/projects/groundswell/src/core/logger.ts` | 98-111 |
925
- | Promise.allSettled for concurrent tasks | `/home/dustin/projects/groundswell/src/decorators/task.ts` | 112-142 |
926
- | ErrorMergeStrategy (type) | `/home/dustin/projects/groundswell/src/types/decorators.ts` | 25-32 |
927
- | ErrorMergeStrategy (implementation) | `/home/dustin/projects/groundswell/src/utils/workflow-error-utils.ts` | 23-56 |
928
- | trackTiming default | `/home/dustin/projects/groundswell/src/decorators/step.ts` | 94-101 |
929
- | Console.error replacement | `/home/dustin/projects/groundswell/src/core/workflow.ts` | 426, 444 |
930
- | Tree debugger optimization | `/home/dustin/projects/groundswell/src/debugger/tree-debugger.ts` | 65-84, 92-117 |
931
- | Workflow name validation | `/home/dustin/projects/groundswell/src/core/workflow.ts` | 98-107 |
932
- | isDescendantOf public API | `/home/dustin/projects/groundswell/src/core/workflow.ts` | 201-219 |
933
-
934
- ### Verification Documents
935
-
936
- | Document | Location | Purpose |
937
- |----------|----------|---------|
938
- | child() Verification Report | `/home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md` | Proves backward compatibility of child() signature change |
939
- | Test Execution Report | `/home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md` | Full test suite validation (479 tests, 100% pass rate) |
940
- | PRD Snapshot | `/home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md` | Original bug descriptions and PRD violations |
941
- | CHANGELOG | `/home/dustin/projects/groundswell/CHANGELOG.md` | Project changelog with migration patterns |
942
-
943
- ### External Standards
944
-
945
- | Standard | URL | Purpose |
946
- |----------|-----|---------|
947
- | Semantic Versioning 2.0.0 | https://semver.org/spec/v2.0.0.html | Definitive specification for version bumping and breaking changes |
948
- | TypeScript Breaking Changes | https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes | TypeScript-specific breaking change patterns |
949
-
950
- ### Test Files
951
-
952
- | Test File | Purpose |
953
- |-----------|---------|
954
- | `src/__tests__/unit/logger.test.ts` | Validates WorkflowLogger.child() signature compatibility (17 tests) |
955
- | `src/__tests__/adversarial/concurrent-task-failures.test.ts` | Validates Promise.allSettled behavior (10 tests) |
956
- | `src/__tests__/adversarial/error-merge-strategy.test.ts` | Validates ErrorMergeStrategy functionality (17 tests) |
957
- | `src/__tests__/unit/workflow.test.ts` | Validates workflow name validation (28 tests) |
958
- | `src/__tests__/unit/workflow-isDescendantOf.test.ts` | Validates public isDescendantOf API (13 tests) |
959
- | `src/__tests__/unit/tree-debugger-incremental.test.ts` | Validates tree debugger optimization (6 tests) |
960
- | `src/__tests__/integration/observer-logging.test.ts` | Validates observer error logging (20 tests) |
961
-
962
- ---
963
-
964
- ## Appendix A: Public API Surface Inventory
965
-
966
- The following exports from `/home/dustin/projects/groundswell/src/index.ts` constitute the complete public API surface:
967
-
968
- ### Core Classes
969
- - `Workflow` - Base workflow class
970
- - `WorkflowLogger` - Structured logging with parent-child relationships
971
- - `Agent` - LLM agent wrapper
972
- - `Prompt` - Prompt template handler
973
- - `MCPHandler` - Model Context Protocol handler
974
-
975
- ### Decorators
976
- - `@Step` - Method decorator for step execution
977
- - `@Task` - Method decorator for workflow spawning
978
- - `@ObservedState` - Property decorator for state observation
979
-
980
- ### Debugger
981
- - `WorkflowTreeDebugger` - Real-time tree visualization
982
-
983
- ### Utilities
984
- - `Observable` - Observable pattern implementation
985
- - `generateId()` - Unique ID generator
986
- - `mergeWorkflowErrors()` - Concurrent error aggregation utility
987
-
988
- ### Factory Functions
989
- - `createWorkflow()` - Workflow factory
990
- - `createAgent()` - Agent factory
991
- - `createPrompt()` - Prompt factory
992
- - `quickWorkflow()` - Quick workflow creation
993
- - `quickAgent()` - Quick agent creation
994
-
995
- ### Types (All from `types/index.js`)
996
- - `WorkflowStatus`, `WorkflowNode`, `LogLevel`, `LogEntry`
997
- - `SerializedWorkflowState`, `StateFieldMetadata`
998
- - `WorkflowError`, `WorkflowEvent`, `WorkflowObserver`
999
- - `StepOptions`, `TaskOptions`, `ErrorMergeStrategy`
1000
- - `Tool`, `ToolResult`, `MCPServer`, `Skill`, `HookHandler`
1001
- - `AgentConfig`, `PromptConfig`, `PromptOverrides`
1002
- - `WorkflowContext`, `WorkflowConfig`, `WorkflowResult`
1003
- - `EventTreeHandle`, `EventNode`, `EventMetrics`
1004
- - `AgentLike`, `PromptLike`
1005
- - `ReflectionAPI`, `ReflectionConfig`, `ReflectionContext`, `ReflectionResult`
1006
-
1007
- ---
1008
-
1009
- **Report Completed**: 2026-01-12
1010
- **PRP Status**: Complete
1011
- **Next Step**: Proceed to P1.M4.T3.S2 - Backward Compatibility Testing