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,713 +0,0 @@
1
- # PRP: Write Test for WorkflowContext Error State Capture
2
-
3
- ---
4
-
5
- ## Goal
6
-
7
- **Feature Goal**: Add a comprehensive test to `src/__tests__/unit/context.test.ts` that validates the `WorkflowContext.step()` error handler properly captures state (via `getObservedState(this.workflow)`) and logs (via `[...this.workflow.node.logs] as LogEntry[]`) when errors occur during step execution.
8
-
9
- **Deliverable**: A new test case `should capture state and logs in step() error handler` added to the existing test suite in `src/__tests__/unit/context.test.ts` that validates error state/logs capture for `WorkflowContext.step()` method.
10
-
11
- **Success Definition**: The test creates a Workflow with `@ObservedState` decorated fields, calls `ctx.step()` with a function that throws an error, and asserts that the error event's `state` property contains captured observed field values and `logs` property contains log entries.
12
-
13
- ## User Persona
14
-
15
- **Target User**: Developer/QA Engineer who needs to verify that `WorkflowContext.step()` error handlers properly capture workflow state and logs for debugging purposes.
16
-
17
- **Use Case**: When developing or testing workflows that use the functional `ctx.step()` API, developers need assurance that error events emitted from step failures contain complete execution context (state and logs) to diagnose failures and understand what happened before the error occurred.
18
-
19
- **User Journey**:
20
- 1. Developer writes a workflow using the functional executor pattern with `ctx.step()` calls
21
- 2. Developer optionally decorates workflow class fields with `@ObservedState` for state tracking
22
- 3. Step execution may encounter errors during workflow run
23
- 4. Error event is emitted with `WorkflowError` object containing `state` and `logs`
24
- 5. Developer inspects `error.state` to see captured workflow state
25
- 6. Developer inspects `error.logs` to see execution history
26
-
27
- **Pain Points Addressed**:
28
- - Previously `error.state` was empty object `{}` for all step() errors
29
- - Previously `error.logs` was empty array `[]` for all step() errors
30
- - No test validation that `getObservedState(this.workflow)` actually captures decorated fields in step() error handler
31
- - No test validation that `[...this.workflow.node.logs]` actually captures log entries in step() error handler
32
-
33
- ## Why
34
-
35
- - **Bug Fix Validation**: Subtask P1.M1.T2.S4 requires a test to validate the fixes from P1.M1.T2.S2 (state capture in first error handler) and P1.M1.T2.S3 (state/logs capture in second error handler)
36
- - **Regression Prevention**: Ensures future changes don't break error state/logs capture in `WorkflowContext.step()` method
37
- - **Documentation**: Test serves as executable documentation of expected error behavior for the step() API
38
- - **Completes P1.M1.T2**: This is the final subtask in the "Fix Empty State/Logs in WorkflowContext.step() Error Handler" task
39
- - **Follows Test-Driven Bug Fix**: Implementation (S2, S3) is complete; this test validates the fix works correctly
40
- - **Complements Existing Tests**: The existing test in `workflow.test.ts` (lines 132-207) validates state capture through the full workflow execution path; this new test focuses specifically on the `step()` error handler behavior
41
-
42
- ## What
43
-
44
- Add a test to `src/__tests__/unit/context.test.ts` that:
45
- 1. Creates a Workflow class with `@ObservedState` decorated fields
46
- 2. Uses a functional executor that calls `ctx.step()` with a failing function
47
- 3. Captures error events via `WorkflowObserver`
48
- 4. Validates that the error event contains captured `state` (with @ObservedState field values)
49
- 5. Validates that the error event contains captured `logs` (as an array)
50
-
51
- ### Success Criteria
52
-
53
- - [ ] New test case added to `src/__tests__/unit/context.test.ts`
54
- - [ ] Test creates a Workflow class with `@ObservedState` fields
55
- - [ ] Test uses functional executor pattern (not class-based run() method)
56
- - [ ] Test calls `ctx.step()` with a function that throws
57
- - [ ] Test asserts `error.state` contains captured observed field values
58
- - [ ] Test asserts `error.logs` is an array (may be empty if no logs generated before error)
59
- - [ ] Test follows existing test patterns in `workflow.test.ts`
60
- - [ ] All tests pass after new test is added
61
-
62
- ## All Needed Context
63
-
64
- ### Context Completeness Check
65
-
66
- _If someone knew nothing about this codebase, would they have everything needed to implement this successfully?_
67
-
68
- **YES** - This PRP provides:
69
- - Exact file location for adding the test (`src/__tests__/unit/context.test.ts`)
70
- - Complete code snippets showing existing test patterns to follow from `workflow.test.ts`
71
- - Reference patterns for `@ObservedState` usage from existing tests
72
- - The exact implementation being tested (WorkflowContext.step() error handlers in workflow-context.ts)
73
- - All required imports and test structure
74
- - Known gotchas about functional vs class-based workflows
75
- - Specific line numbers for error handlers being tested
76
-
77
- ### Documentation & References
78
-
79
- ```yaml
80
- # MUST READ - Include these in your context window
81
- - file: src/__tests__/unit/workflow.test.ts
82
- why: PRIMARY REFERENCE - Contains the exact test pattern to follow
83
- pattern: Lines 132-207 show "should capture @ObservedState fields in workflow error state"
84
- critical: Shows complete test structure: observer setup, @ObservedState class, ctx.step() error trigger, assertions
85
- line_range: 132-207
86
- gotcha: This test already exists and validates step() error handler - P1.M1.T2.S4 may need to enhance or add a variant
87
-
88
- - file: src/__tests__/unit/workflow.test.ts
89
- why: Lines 82-130 show basic functional workflow error testing
90
- pattern: Shows observer pattern, ctx.step() error trigger, basic error assertions
91
- line_range: 82-130
92
- critical: Lines 98-100 show ctx.step() usage with throwing function
93
-
94
- - file: src/__tests__/unit/context.test.ts
95
- why: TARGET FILE - Add new test case to this file
96
- pattern: Current tests use vitest describe/it blocks, simple mock creation
97
- line_range: 1-138
98
- gotcha: Current tests target AgentExecutionContext, not WorkflowContext. Add new describe() block for WorkflowContext tests
99
- critical: Consider adding a new describe('WorkflowContext', () => {...}) block to separate from AgentExecutionContext tests
100
-
101
- - file: src/core/workflow-context.ts
102
- why: Implementation being tested - WorkflowContext.step() error handlers
103
- pattern: Lines 155-165 show first error handler in step() method
104
- pattern: Lines 319-329 show second error handler in replaceLastPromptResult() method
105
- line_range: 155-165, 319-329
106
- critical: Line 161: `state: getObservedState(this.workflow)` - this is what the test validates
107
- critical: Line 162: `logs: [...this.workflow.node.logs] as LogEntry[]` - this is what the test validates
108
-
109
- - file: src/__tests__/unit/decorators.test.ts
110
- why: Reference pattern for @ObservedState usage in tests
111
- pattern: Lines 69-100 show StateTestWorkflow class with @ObservedState decorators
112
- critical: Shows how to create class with @ObservedState(), @ObservedState({ redact: true }), @ObservedState({ hidden: true })
113
- line_range: 69-100
114
-
115
- - file: src/decorators/observed-state.ts
116
- why: Understanding how getObservedState() works and what it returns
117
- pattern: Lines 50-77 show getObservedState function implementation
118
- critical: Returns empty object {} if no fields decorated with @ObservedState
119
- line_range: 50-77
120
-
121
- - file: src/types/error.ts
122
- why: WorkflowError interface definition - structure of error object
123
- pattern: WorkflowError interface with state and logs properties
124
- gotcha: error.state is SerializedWorkflowState, error.logs is LogEntry[]
125
-
126
- - file: src/types/logging.ts
127
- why: LogEntry type definition - structure of log entries
128
- pattern: LogEntry interface with id, workflowId, timestamp, level, message, data properties
129
-
130
- - file: plan/bugfix/P1M1T1S4/PRP.md
131
- why: Related PRP for functional workflow error state capture test
132
- pattern: Similar structure and patterns, but for Workflow.runFunctional() instead of WorkflowContext.step()
133
- critical: Use as template reference, but note the difference between runFunctional() and step() error handlers
134
-
135
- - url: https://vitest.dev/guide/assertions.html
136
- why: Vitest assertions documentation
137
- critical: expect().toBeDefined(), expect().toBe(), expect().rejects.toThrow()
138
-
139
- - url: https://vitest.dev/guide/expect.html
140
- why: Vitest expect API for custom matchers
141
- critical: expect.objectContaining() for partial object matching
142
- ```
143
-
144
- ### Current Codebase Tree
145
-
146
- ```bash
147
- /home/dustin/projects/groundswell
148
- ├── dist/ # Compiled JavaScript (not modified)
149
- ├── docs/ # User documentation
150
- ├── examples/
151
- │ └── examples/
152
- │ └── 05-error-handling.ts # Error handling example
153
- ├── plan/
154
- │ ├── architecture/ # Architecture documentation
155
- │ ├── docs/
156
- │ │ └── bugfix/
157
- │ │ └── system_context.md
158
- │ └── bugfix/
159
- │ ├── P1M1T1S1/PRP.md
160
- │ ├── P1M1T1S2/PRP.md
161
- │ ├── P1M1T1S3/PRP.md
162
- │ ├── P1M1T1S4/PRP.md
163
- │ ├── P1M1T2S1/PRP.md
164
- │ ├── P1M1T2S2/PRP.md
165
- │ ├── P1M1T2S3/PRP.md
166
- │ └── P1M1T2S4/ # THIS PRP LOCATION
167
- ├── src/
168
- │ ├── __tests__/
169
- │ │ ├── integration/
170
- │ │ └── unit/
171
- │ │ ├── workflow.test.ts # Reference test patterns
172
- │ │ ├── decorators.test.ts # Reference for @ObservedState
173
- │ │ └── context.test.ts # TARGET FILE - Add test here
174
- │ ├── core/
175
- │ │ ├── workflow.ts # Workflow class
176
- │ │ ├── workflow-context.ts # Implementation being tested
177
- │ │ └── context.ts # AgentExecutionContext (different module)
178
- │ ├── decorators/
179
- │ │ ├── step.ts
180
- │ │ └── observed-state.ts # getObservedState function
181
- │ └── types/
182
- │ ├── workflow.ts
183
- │ ├── logging.ts # LogEntry interface
184
- │ ├── error.ts # WorkflowError interface
185
- │ └── workflow-context.ts # WorkflowContext interface
186
- ├── package.json
187
- ├── vitest.config.ts
188
- └── tsconfig.json
189
- ```
190
-
191
- ### Desired Codebase Tree (files to be added/modified)
192
-
193
- ```bash
194
- # Modified: src/__tests__/unit/context.test.ts
195
- # - Add new describe() block for WorkflowContext tests
196
- # - Add test case "should capture state and logs in step() error handler"
197
- ```
198
-
199
- ### Known Gotchas of Our Codebase & Library Quirks
200
-
201
- ```typescript
202
- // CRITICAL: AgentExecutionContext vs WorkflowContext
203
- // context.test.ts currently tests AgentExecutionContext (from src/core/context.ts)
204
- // This test should add a NEW describe() block for WorkflowContext (from src/core/workflow-context.ts)
205
- // These are DIFFERENT modules - do not mix tests
206
-
207
- // CRITICAL: WorkflowContext cannot be instantiated directly
208
- // It is created internally by Workflow.createWorkflowContext()
209
- // Tests must go through Workflow to access WorkflowContext behavior
210
- // The ctx parameter in the functional executor IS the WorkflowContext
211
-
212
- // CRITICAL: Existing test in workflow.test.ts (lines 132-207)
213
- // This test ALREADY validates step() error state capture with @ObservedState
214
- // P1.M1.T2.S4 test should either:
215
- // 1. Enhance the existing test with more specific assertions
216
- // 2. Add a focused variant test in context.test.ts as specified
217
- // 3. Check if task intends for a DIFFERENT aspect of step() error handling
218
-
219
- // CRITICAL: Functional vs Class-based workflows
220
- // Functional workflows: new Workflow(config, async (ctx) => {...})
221
- // - ctx parameter is WorkflowContext
222
- // - Can still use @ObservedState on the Workflow class instance
223
- // Class-based workflows: class MyWorkflow extends Workflow { async run() {...} }
224
- // - Use this.step() or create ctx manually
225
- // The test should use functional pattern to test WorkflowContext.step()
226
-
227
- // CRITICAL: getObservedState(this.workflow) behavior
228
- // Returns {} if no @ObservedState decorated fields exist
229
- // Returns object with decorated field values if fields exist
230
- // Applies redaction: @ObservedState({ redact: true }) fields become '***'
231
- // Applies hiding: @ObservedState({ hidden: true }) fields are excluded
232
-
233
- // CRITICAL: Error event capture pattern
234
- // Must use observer to capture error events
235
- // Filter events by type: events.filter((e) => e.type === 'error')
236
- // Access error object: errorEvent.error.state, errorEvent.error.logs
237
-
238
- // CRITICAL: Test file imports
239
- // context.test.ts currently imports from core/context.js
240
- // Need to add imports from main index.js for Workflow, WorkflowObserver, etc.
241
- // Need to add imports for @ObservedState and getObservedState
242
-
243
- // CRITICAL: Logs array may be empty
244
- // If workflow doesn't generate logs before the error, error.logs will be []
245
- // This is expected behavior - validate it's an array, not that it has entries
246
-
247
- // CRITICAL: Two error handlers in WorkflowContext
248
- // First: In step() method at lines 155-165
249
- // Second: In replaceLastPromptResult() method at lines 319-329
250
- // Both were fixed in P1.M1.T2.S2 and P1.M1.T2.S3
251
- // Test should trigger step() error to validate first error handler
252
-
253
- // CRITICAL: Test name collision
254
- // workflow.test.ts has "should capture @ObservedState fields in workflow error state"
255
- // Use a different, more specific name: "should capture state and logs in step() error handler"
256
- ```
257
-
258
- ## Implementation Blueprint
259
-
260
- ### Data Models and Structure
261
-
262
- **Relevant Types** (for context):
263
- ```typescript
264
- // From src/decorators/observed-state.ts
265
- export function ObservedState(meta: StateFieldMetadata = {}) {
266
- // Class field decorator - marks fields for state capture
267
- }
268
-
269
- export function getObservedState(obj: object): SerializedWorkflowState {
270
- // Returns object with decorated field values
271
- // Empty object {} if no decorated fields
272
- }
273
-
274
- // From src/types/workflow.ts
275
- export interface SerializedWorkflowState {
276
- [key: string]: unknown;
277
- }
278
-
279
- // From src/types/error.ts
280
- export interface WorkflowError {
281
- message: string;
282
- original: unknown;
283
- workflowId: string;
284
- stack?: string;
285
- state: SerializedWorkflowState; // <-- Captured by getObservedState(this.workflow)
286
- logs: LogEntry[]; // <-- Captured by [...this.workflow.node.logs]
287
- }
288
-
289
- // From src/types/logging.ts
290
- export interface LogEntry {
291
- id: string;
292
- workflowId: string;
293
- timestamp: number;
294
- level: LogLevel;
295
- message: string;
296
- data?: unknown;
297
- parentLogId?: string;
298
- }
299
-
300
- // From src/types/workflow-context.ts
301
- export interface WorkflowContext {
302
- step<T>(name: string, fn: () => Promise<T>): Promise<T>;
303
- // ... other methods
304
- }
305
- ```
306
-
307
- ### Implementation Tasks (ordered by dependencies)
308
-
309
- ```yaml
310
- Task 1: ADD REQUIRED IMPORTS TO context.test.ts
311
- - CHECK: Current imports at line 1-10
312
- - ADD: Workflow class from main index
313
- - ADD: WorkflowObserver interface from main index
314
- - ADD: WorkflowEvent type from main index
315
- - ADD: ObservedState decorator from main index
316
- - PATTERN: Follow import pattern from workflow.test.ts line 2
317
- - CURRENT: import { describe, it, expect } from 'vitest';
318
- - CURRENT: import { getExecutionContext, requireExecutionContext, runInContext, ... } from '../../core/context.js';
319
- - NEW: import { Workflow, WorkflowObserver, WorkflowEvent, ObservedState } from '../../index.js';
320
- - PLACEMENT: Top of file, after vitest import, line 2
321
- - DEPENDENCIES: None
322
-
323
- Task 2: CREATE TEST WORKFLOW CLASS WITH @ObservedState FIELDS
324
- - CREATE: StatefulTestWorkflow class inside new describe block
325
- - IMPLEMENT: Multiple @ObservedState decorated fields
326
- - INCLUDE: @ObservedState() for normal field (visible with value)
327
- - INCLUDE: @ObservedState({ redact: true }) for redacted field (shows '***')
328
- - INCLUDE: @ObservedState({ hidden: true }) for hidden field (not in state)
329
- - PATTERN: Follow StateTestWorkflow from decorators.test.ts lines 70-81
330
- - PATTERN: Follow StatefulWorkflowClass from workflow.test.ts lines 135-144
331
- - PLACEMENT: Inside new describe('WorkflowContext', () => {...}) block
332
- - DEPENDENCIES: Task 1
333
-
334
- Task 3: WRITE TEST CASE FOR STEP() ERROR STATE CAPTURE
335
- - CREATE: New describe() block for WorkflowContext tests
336
- - CREATE: New it() block with descriptive name
337
- - NAME: "should capture state and logs in step() error handler"
338
- - ARRANGE: Create observer to capture error events
339
- - ARRANGE: Create StatefulTestWorkflow class instance with functional executor
340
- - ARRANGE: Modify @ObservedState fields on workflow instance
341
- - ARRANGE: Attach observer to workflow
342
- - ACT: Run workflow (which calls ctx.step() with throwing function)
343
- - ASSERT: Verify error event was emitted
344
- - ASSERT: Verify error.state contains observed field values
345
- - ASSERT: Verify redacted field shows '***'
346
- - ASSERT: Verify hidden field is NOT in state
347
- - ASSERT: Verify error.logs is an array
348
- - PATTERN: Follow workflow.test.ts lines 132-207 for complete test structure
349
- - PLACEMENT: After existing AgentExecutionContext describe block, after line 138
350
- - DEPENDENCIES: Task 2
351
-
352
- Task 4: RUN TESTS TO VALIDATE
353
- - RUN: npm test (or npm run test)
354
- - VERIFY: New test passes
355
- - VERIFY: All existing tests still pass (no regression)
356
- - DEPENDENCIES: Task 3
357
- ```
358
-
359
- ### Implementation Patterns & Key Details
360
-
361
- ```typescript
362
- // ============================================================
363
- // IMPORTS TO ADD (Line 2 in context.test.ts)
364
- // ============================================================
365
- // CURRENT (lines 1-10):
366
- import { describe, it, expect } from 'vitest';
367
- import {
368
- getExecutionContext,
369
- requireExecutionContext,
370
- runInContext,
371
- runInContextSync,
372
- hasExecutionContext,
373
- createChildContext,
374
- type AgentExecutionContext,
375
- } from '../../core/context.js';
376
- import type { WorkflowNode, WorkflowEvent } from '../../types/index.js';
377
-
378
- // NEW (add after line 10):
379
- import { Workflow, WorkflowObserver, ObservedState } from '../../index.js';
380
-
381
- // ============================================================
382
- // TEST WORKFLOW CLASS (add inside or before test)
383
- // ============================================================
384
- // Reference from workflow.test.ts lines 135-144
385
- class StatefulTestWorkflow extends Workflow {
386
- @ObservedState()
387
- stepCount: number = 0;
388
-
389
- @ObservedState({ redact: true })
390
- apiKey: string = 'secret-key-123';
391
-
392
- @ObservedState({ hidden: true })
393
- internalCounter: number = 42;
394
- }
395
-
396
- // ============================================================
397
- // TEST CASE TEMPLATE
398
- // ============================================================
399
- // Reference from workflow.test.ts lines 132-207
400
- describe('WorkflowContext', () => {
401
- it('should capture state and logs in step() error handler', async () => {
402
- // Arrange: Create observer to capture error events
403
- const events: WorkflowEvent[] = [];
404
-
405
- const observer: WorkflowObserver = {
406
- onLog: () => {},
407
- onEvent: (event) => events.push(event),
408
- onStateUpdated: () => {},
409
- onTreeChanged: () => {},
410
- };
411
-
412
- // Arrange: Create workflow with @ObservedState fields using functional executor
413
- const workflow = new StatefulTestWorkflow(
414
- { name: 'StepErrorTest' },
415
- async (ctx) => {
416
- // Modify @ObservedState fields on the workflow instance
417
- (workflow as any).stepCount = 5;
418
- (workflow as any).apiKey = 'updated-key';
419
- (workflow as any).internalCounter = 99;
420
-
421
- // Execute a step that will fail - THIS TRIGGERS WorkflowContext.step() ERROR HANDLER
422
- await ctx.step('failing-step', async () => {
423
- throw new Error('Test error from step');
424
- });
425
- }
426
- );
427
-
428
- // Act: Attach observer and trigger error
429
- workflow.addObserver(observer);
430
- await expect(workflow.run()).rejects.toThrow('Test error from step');
431
-
432
- // Assert: Verify error event was emitted
433
- const errorEvents = events.filter((e) => e.type === 'error');
434
- expect(errorEvents.length).toBeGreaterThanOrEqual(1);
435
-
436
- // Assert: Verify error structure
437
- const errorEvent = errorEvents[0];
438
- expect(errorEvent.error).toBeDefined();
439
- expect(errorEvent.error.message).toBe('Test error from step');
440
-
441
- // Assert: Verify @ObservedState fields were captured in state
442
- expect(errorEvent.error.state).toBeDefined();
443
- expect(typeof errorEvent.error.state).toBe('object');
444
-
445
- // Assert: Verify public field value is captured
446
- expect(errorEvent.error.state.stepCount).toBe(5);
447
-
448
- // Assert: Verify redacted field shows '***'
449
- expect(errorEvent.error.state.apiKey).toBe('***');
450
-
451
- // Assert: Verify hidden field is NOT in state
452
- expect('internalCounter' in errorEvent.error.state).toBe(false);
453
-
454
- // Assert: Verify logs array is present (may be empty)
455
- expect(errorEvent.error.logs).toBeDefined();
456
- expect(Array.isArray(errorEvent.error.logs)).toBe(true);
457
-
458
- // Assert: Verify workflow status
459
- expect(workflow.status).toBe('failed');
460
-
461
- // Assert: Verify workflowId is captured
462
- expect(errorEvent.error.workflowId).toBe(workflow.id);
463
- });
464
- });
465
-
466
- // ============================================================
467
- // ALTERNATIVE: Simpler test without field value changes
468
- // ============================================================
469
- it('should capture @ObservedState initial values in step() error', async () => {
470
- const events: WorkflowEvent[] = [];
471
- const observer: WorkflowObserver = {
472
- onLog: () => {},
473
- onEvent: (event) => events.push(event),
474
- onStateUpdated: () => {},
475
- onTreeChanged: () => {},
476
- };
477
-
478
- const workflow = new StatefulTestWorkflow(
479
- { name: 'InitialStateTest' },
480
- async (ctx) => {
481
- await ctx.step('failing-step', async () => {
482
- throw new Error('Test error');
483
- });
484
- }
485
- );
486
-
487
- workflow.addObserver(observer);
488
- await expect(workflow.run()).rejects.toThrow('Test error');
489
-
490
- const errorEvents = events.filter((e) => e.type === 'error');
491
- const errorEvent = errorEvents[0];
492
-
493
- // Verify captured state (initial values)
494
- expect(errorEvent.error.state.stepCount).toBe(0);
495
- expect(errorEvent.error.state.apiKey).toBe('***');
496
- expect('internalCounter' in errorEvent.error.state).toBe(false);
497
- expect(Array.isArray(errorEvent.error.logs)).toBe(true);
498
- });
499
- ```
500
-
501
- ### Integration Points
502
-
503
- ```yaml
504
- TEST FILE:
505
- - file: src/__tests__/unit/context.test.ts
506
- - add_after: Line 138 (end of AgentExecutionContext describe block)
507
- - add_import: Workflow, WorkflowObserver, WorkflowEvent, ObservedState to line 2
508
-
509
- TEST RUNNER:
510
- - command: npm test
511
- - config: vitest.config.ts
512
- - pattern: All *.test.ts files are auto-discovered
513
-
514
- OBSERVER PATTERN:
515
- - interface: WorkflowObserver from src/types/workflow.ts
516
- - methods: onLog, onEvent, onStateUpdated, onTreeChanged
517
- - usage: workflow.addObserver(observer)
518
-
519
- ERROR EVENT STRUCTURE:
520
- - type: 'error'
521
- - node: WorkflowNode
522
- - error: WorkflowError with state and logs properties
523
-
524
- WORKFLOWCONTEXT:
525
- - interface: WorkflowContext from src/types/workflow-context.ts
526
- - implementation: WorkflowContextImpl from src/core/workflow-context.ts
527
- - step() method: Lines 144-165 in workflow-context.ts
528
- - error handler: Lines 155-165 in workflow-context.ts
529
- ```
530
-
531
- ## Validation Loop
532
-
533
- ### Level 1: Syntax & Style (Immediate Feedback)
534
-
535
- ```bash
536
- # TypeScript compilation check
537
- npm run build
538
- # Expected: Zero compilation errors
539
- # If errors exist, check import statements and class syntax
540
-
541
- # Type checking
542
- npx tsc --noEmit
543
- # Expected: Zero type errors
544
-
545
- # Linting (if configured)
546
- npm run lint
547
- # Expected: Zero linting errors
548
- ```
549
-
550
- ### Level 2: Unit Tests (Component Validation)
551
-
552
- ```bash
553
- # Run specific test file
554
- npm test src/__tests__/unit/context.test.ts
555
-
556
- # Run specific test by name (after implementation)
557
- npm test -t "should capture state and logs in step"
558
-
559
- # Run full test suite
560
- npm test
561
-
562
- # Expected: All tests pass
563
- # Specifically: New test "should capture state and logs in step() error handler" passes
564
- # No regression in existing AgentExecutionContext tests
565
-
566
- # Expected test output:
567
- # ✓ src/__tests__/unit/context.test.ts (N)
568
- # ✓ AgentExecutionContext
569
- # ✓ should return undefined outside of context
570
- # ✓ should throw when requiring context outside of context
571
- # ✓ ... (existing tests)
572
- # ✓ WorkflowContext
573
- # ✓ should capture state and logs in step() error handler <-- NEW TEST
574
- ```
575
-
576
- ### Level 3: Integration Testing (System Validation)
577
-
578
- ```bash
579
- # Verify test is properly integrated
580
- grep -n "should capture state and logs in step" src/__tests__/unit/context.test.ts
581
- # Expected: Shows line number of new test
582
-
583
- # Verify imports are correct
584
- grep -n "Workflow" src/__tests__/unit/context.test.ts
585
- # Expected: Shows import statement and usage in test
586
-
587
- # Run all context tests
588
- npm test -- context
589
- # Expected: All context-related tests pass
590
-
591
- # Run all workflow tests to ensure no regression
592
- npm test -- workflow
593
- # Expected: All workflow tests pass (including existing step() error tests)
594
- ```
595
-
596
- ### Level 4: Domain-Specific Validation
597
-
598
- ```bash
599
- # Manual verification - inspect test behavior
600
- npm test -t "should capture state and logs in step" --reporter=verbose
601
-
602
- # Expected verbose output shows:
603
- # - Observer capturing error event
604
- # - Error state containing stepCount: 5
605
- # - Error state containing apiKey: '***'
606
- # - Error state NOT containing internalCounter
607
- # - Error logs being an array
608
-
609
- # Verify test validates the fix from P1.M1.T2.S2 and P1.M1.T2.S3
610
- grep -A 5 "state: getObservedState" src/core/workflow-context.ts
611
- # Expected: Shows line 161 with state: getObservedState(this.workflow)
612
-
613
- grep -A 5 "logs:.*this.workflow.node.logs" src/core/workflow-context.ts
614
- # Expected: Shows line 162 with logs: [...this.workflow.node.logs] as LogEntry[]
615
-
616
- # Verify error event is emitted from step() method
617
- grep -B 5 -A 10 "type: 'error'" src/core/workflow-context.ts | head -30
618
- # Expected: Shows error emission in step() method error handler
619
- ```
620
-
621
- ## Final Validation Checklist
622
-
623
- ### Technical Validation
624
-
625
- - [ ] All 4 validation levels completed successfully
626
- - [ ] All tests pass: `npm test`
627
- - [ ] No TypeScript compilation errors: `npm run build`
628
- - [ ] No type errors: `npx tsc --noEmit`
629
- - [ ] New test case added to context.test.ts
630
- - [ ] Required imports added (Workflow, WorkflowObserver, WorkflowEvent, ObservedState)
631
- - [ ] New describe() block created for WorkflowContext tests
632
-
633
- ### Feature Validation
634
-
635
- - [ ] Test creates Workflow class with @ObservedState fields
636
- - [ ] Test uses functional executor pattern (async (ctx) => {...})
637
- - [ ] Test calls ctx.step() with throwing function
638
- - [ ] Test asserts error.state contains captured field values
639
- - [ ] Test asserts redacted fields show '***'
640
- - [ ] Test asserts hidden fields are excluded
641
- - [ ] Test asserts error.logs is an array
642
- - [ ] Test validates workflow status is 'failed'
643
- - [ ] Test validates workflowId is captured
644
- - [ ] Test follows existing test patterns
645
- - [ ] No regression in existing tests
646
-
647
- ### Code Quality Validation
648
-
649
- - [ ] Test name is descriptive and unique (no collision with workflow.test.ts tests)
650
- - [ ] Test follows AAA pattern (Arrange, Act, Assert)
651
- - [ ] Test uses observer pattern for event capture
652
- - [ ] Test uses async/await properly
653
- - [ ] Test has clear assertions with descriptive comments
654
- - [ ] Test is self-contained (no external dependencies)
655
- - [ ] Imports follow existing patterns
656
- - [ ] New describe() block separates WorkflowContext from AgentExecutionContext tests
657
-
658
- ### Documentation & Deployment
659
-
660
- - [ ] Test is self-documenting (descriptive variable names and comments)
661
- - [ ] No environment variables needed for test
662
- - [ ] Test can run independently
663
- - [ ] Test file has proper imports
664
-
665
- ---
666
-
667
- ## Anti-Patterns to Avoid
668
-
669
- - ❌ **Don't mix AgentExecutionContext and WorkflowContext tests** - Add a new describe() block
670
- - ❌ **Don't test runFunctional() error handler** - That's P1.M1.T1.S4's job
671
- - ❌ **Don't use class-based run() method** - Use functional executor to test ctx.step()
672
- - ❌ **Don't create WorkflowContext directly** - It's created internally by Workflow
673
- - ❌ **Don't use existing test name from workflow.test.ts** - Use "should capture state and logs in step() error handler"
674
- - ❌ **Don't forget to add imports** - Workflow, WorkflowObserver, WorkflowEvent, ObservedState must be imported
675
- - ❌ **Don't assume logs has entries** - Empty logs array is valid
676
- - ❌ **Don't test hidden field presence** - Hidden fields should NOT be in state
677
- - ❌ **Don't test redacted field value** - Redacted fields should be '***', not actual value
678
- - ❌ **Don't skip observer pattern** - Must use observer to capture error events
679
- - ❌ **Don't use sync execution** - run() is async, must use await
680
- - ❌ **Don't modify existing AgentExecutionContext tests** - Add new tests in separate describe block
681
- - ❌ **Don't duplicate existing test from workflow.test.ts** - Ensure this test adds unique value or is specifically required
682
-
683
- ---
684
-
685
- ## Confidence Score
686
-
687
- **9/10** for one-pass implementation success likelihood
688
-
689
- **Justification**:
690
- - Clear file location and test structure specified
691
- - Existing test patterns to follow (workflow.test.ts lines 132-207)
692
- - Reference implementation for @ObservedState in decorators.test.ts
693
- - Implementation being tested is complete and verified (P1.M1.T2.S2, P1.M1.T2.S3)
694
- - Simple test addition - no complex logic or new files required
695
- - All required imports and patterns documented
696
- - Test runner (vitest) already configured and working
697
-
698
- **Risk Factors**:
699
- - Potential confusion with existing test in workflow.test.ts (lines 132-207) which tests similar functionality - mitigated by specifying different test name and location
700
- - Confusion about AgentExecutionContext vs WorkflowContext - mitigated by explicit instruction to create new describe() block
701
- - Missing imports - mitigated by explicit import instructions
702
-
703
- **Mitigation**: PRP provides exact code snippets, line numbers, and patterns to follow. Clear distinction between AgentExecutionContext and WorkflowContext prevents confusion. Note that existing test in workflow.test.ts already validates this behavior - verify with project lead if this task is still needed or if existing test is sufficient.
704
-
705
- ---
706
-
707
- ## Related Work Items
708
-
709
- - **P1.M1.T2.S1**: Add getObservedState import to workflow-context.ts - ✅ COMPLETE
710
- - **P1.M1.T2.S2**: Fix first error handler in step() method (line 155-162) - ✅ COMPLETE (line 161)
711
- - **P1.M1.T2.S3**: Fix second error handler in replaceLastPromptResult() method (line 319-326) - ✅ COMPLETE (line 327)
712
- - **P1.M1.T2.S4**: Write test for WorkflowContext error state capture - ⏳ THIS TASK
713
- - **P1.M1.T1**: Fix Empty State/Logs in Workflow.runFunctional() Error Handler - ✅ COMPLETE