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,401 +0,0 @@
1
- # Logger child() Signature Analysis
2
-
3
- ## 1. PRD Specification
4
-
5
- ### Signature from PRD Section 12.1
6
-
7
- ```typescript
8
- child(meta: Partial<LogEntry>): WorkflowLogger {
9
- return new WorkflowLogger(this.node, this.observers);
10
- }
11
- ```
12
-
13
- **Source**: PRD.md lines 303-305
14
-
15
- ### LogEntry Type Definition
16
-
17
- ```typescript
18
- export interface LogEntry {
19
- /** Unique identifier for this log entry */
20
- id: string;
21
- /** ID of the workflow that created this log */
22
- workflowId: string;
23
- /** Unix timestamp in milliseconds */
24
- timestamp: number;
25
- /** Severity level */
26
- level: LogLevel;
27
- /** Log message */
28
- message: string;
29
- /** Optional structured data */
30
- data?: unknown;
31
- /** ID of parent log entry (for hierarchical logging) */
32
- parentLogId?: string;
33
- }
34
- ```
35
-
36
- **Source**: src/types/logging.ts lines 9-24
37
-
38
- ### PRD Implementation Notes
39
-
40
- The PRD skeleton shows that `meta: Partial<LogEntry>` is **accepted but NOT USED** in the implementation. The `child()` method simply returns a new `WorkflowLogger` with the same `node` and `observers`, ignoring the `meta` parameter entirely.
41
-
42
- This suggests the parameter is for **future extensibility** - the PRD architect intended to allow passing metadata when creating child loggers, but the skeleton implementation was a stub.
43
-
44
- ---
45
-
46
- ## 2. Current Implementation
47
-
48
- ### Actual Signature
49
-
50
- ```typescript
51
- child(parentLogId: string): WorkflowLogger
52
- ```
53
-
54
- **Source**: src/core/logger.ts line 84
55
-
56
- ### Current Code
57
-
58
- ```typescript
59
- export class WorkflowLogger {
60
- private readonly parentLogId?: string;
61
-
62
- constructor(
63
- private readonly node: WorkflowNode,
64
- private readonly observers: WorkflowObserver[],
65
- parentLogId?: string
66
- ) {
67
- this.parentLogId = parentLogId;
68
- }
69
-
70
- /**
71
- * Create a child logger that includes parentLogId
72
- */
73
- child(parentLogId: string): WorkflowLogger {
74
- return new WorkflowLogger(this.node, this.observers, parentLogId);
75
- }
76
- }
77
- ```
78
-
79
- **Source**: src/core/logger.ts lines 8-16, 84-86
80
-
81
- ### Constructor Support for parentLogId
82
-
83
- The current implementation **does support** hierarchical logging through the constructor:
84
-
85
- 1. `WorkflowLogger` stores `parentLogId` as a private field
86
- 2. The constructor accepts an optional `parentLogId` parameter
87
- 3. The `child()` method passes the `parentLogId` to the constructor
88
- 4. When logging, if `this.parentLogId` exists, it's added to the log entry:
89
-
90
- ```typescript
91
- // From src/core/logger.ts lines 45-48
92
- if (this.parentLogId) {
93
- entry.parentLogId = this.parentLogId;
94
- }
95
- ```
96
-
97
- ---
98
-
99
- ## 3. Signature Comparison
100
-
101
- ### Key Differences Table
102
-
103
- | Aspect | PRD Spec | Current Implementation |
104
- |--------|----------|----------------------|
105
- | Parameter Type | `Partial<LogEntry>` | `string` |
106
- | Parameter Name | `meta` | `parentLogId` |
107
- | Flexibility | Can pass any LogEntry field | Only accepts parentLogId |
108
- | PRD Skeleton Behavior | Ignores the meta parameter | Uses parentLogId to set hierarchy |
109
- | Actual Implementation | N/A (skeleton only) | Passes parentLogId to constructor |
110
-
111
- ### Compatibility Matrix
112
-
113
- | Call Pattern | Works with PRD Spec | Works with Current Implementation |
114
- |--------------|-------------------|----------------------------------|
115
- | `logger.child('parent-id')` | No (wrong type) | Yes |
116
- | `logger.child({ parentLogId: 'parent-id' })` | Yes | No |
117
- | `logger.child({})` | Yes | No |
118
- | `logger.child({ id: 'custom-id', parentLogId: 'parent-id' })` | Yes | No |
119
-
120
- **Result**: Complete incompatibility - the two signatures are mutually exclusive.
121
-
122
- ---
123
-
124
- ## 4. Existing Usage Analysis
125
-
126
- ### Usage Site 1: deep-analysis.test.ts:61
127
-
128
- ```typescript
129
- const childLogger = this.logger.child('');
130
- childLogger.info('Child log with empty parent');
131
- ```
132
-
133
- **Context**: Testing empty parentLogId handling
134
-
135
- **Expected Behavior**: Empty string is passed through, and because of the falsy check in the logger's `log()` method, `parentLogId` remains `undefined`.
136
-
137
- **Impact**: BREAKING - will need migration
138
-
139
- **Migration Path**:
140
- ```typescript
141
- // Before
142
- const childLogger = this.logger.child('');
143
-
144
- // After
145
- const childLogger = this.logger.child({ parentLogId: '' });
146
- // Or for root logger behavior:
147
- const childLogger = this.logger.child({});
148
- ```
149
-
150
- ### Usage Site 2: edge-case.test.ts:96
151
-
152
- ```typescript
153
- const childLogger = this.logger.child('parent-id-123');
154
- expect(childLogger).toBeDefined();
155
- ```
156
-
157
- **Context**: Testing normal parentLogId passing and verifying child logger is created
158
-
159
- **Expected Behavior**: Child logger stores `'parent-id-123'` as its parentLogId, which gets attached to all log entries from this child logger.
160
-
161
- **Impact**: BREAKING - will need migration
162
-
163
- **Migration Path**:
164
- ```typescript
165
- // Before
166
- const childLogger = this.logger.child('parent-id-123');
167
-
168
- // After
169
- const childLogger = this.logger.child({ parentLogId: 'parent-id-123' });
170
- ```
171
-
172
- ### Usage Summary
173
-
174
- - **Total Usage Sites**: 2 test files
175
- - **Both Are Breaking Changes**: String parameter is incompatible with object parameter
176
- - **Migration Required**: Both test files will need updates
177
-
178
- ---
179
-
180
- ## 5. Partial<LogEntry> Field Analysis
181
-
182
- ### Fields That Make Sense for child()
183
-
184
- | Field | Type | Relevance | Notes |
185
- |-------|------|-----------|-------|
186
- | `parentLogId` | `string` | **Primary** | Main use case - links child log entries to parent |
187
- | `id` | `string` | Low | Could allow explicit child log ID, but logger generates IDs automatically |
188
- | `workflowId` | `string` | Low | Could allow different workflow context, but logger uses `this.node.id` |
189
- | `data` | `unknown` | Medium | Could attach metadata to child logger for inclusion in all logs |
190
- | `level` | `LogLevel` | Medium | Could set default level for child logger |
191
-
192
- ### Fields That DON'T Make Sense
193
-
194
- | Field | Type | Why It Doesn't Make Sense |
195
- |-------|------|---------------------------|
196
- | `timestamp` | `number` | Child logger generates timestamps when logging, not at creation |
197
- | `message` | `string` | Logger doesn't have a default message - messages are provided per log call |
198
-
199
- ---
200
-
201
- ## 6. Recommended Implementation Approach
202
-
203
- ### Option 1: Strict PRD Compliance (Breaking Change)
204
-
205
- ```typescript
206
- child(meta: Partial<LogEntry>): WorkflowLogger {
207
- // Extract parentLogId from meta
208
- const parentLogId = meta.parentLogId;
209
- return new WorkflowLogger(this.node, this.observers, parentLogId);
210
- }
211
- ```
212
-
213
- **Pros**:
214
- - Matches PRD exactly
215
- - Enables future extensibility for other meta fields
216
- - More consistent with TypeScript patterns
217
-
218
- **Cons**:
219
- - Breaking change for 2 existing test files
220
- - Requires user code migration
221
-
222
- **Migration Required**:
223
- ```typescript
224
- // All existing calls must change from:
225
- logger.child('parent-id')
226
- // To:
227
- logger.child({ parentLogId: 'parent-id' })
228
- ```
229
-
230
- ### Option 2: Backward Compatible with Overload
231
-
232
- ```typescript
233
- // Legacy signature for backward compatibility
234
- child(parentLogId: string): WorkflowLogger;
235
- // New PRD-compliant signature
236
- child(meta: Partial<LogEntry>): WorkflowLogger;
237
-
238
- child(input: string | Partial<LogEntry>): WorkflowLogger {
239
- const parentLogId = typeof input === 'string'
240
- ? input
241
- : input.parentLogId;
242
- return new WorkflowLogger(this.node, this.observers, parentLogId);
243
- }
244
- ```
245
-
246
- **Pros**:
247
- - No breaking change
248
- - Supports both old and new patterns
249
- - Smooth migration path
250
-
251
- **Cons**:
252
- - More complex implementation
253
- - TypeScript type narrowing required at call sites
254
- - Ambiguity: what if someone passes `{ parentLogId: '123' }` vs `'123'`?
255
-
256
- ### Option 3: Hybrid Approach with Default
257
-
258
- ```typescript
259
- child(meta: Partial<LogEntry> = {}): WorkflowLogger {
260
- const parentLogId = meta.parentLogId;
261
- return new WorkflowLogger(this.node, this.observers, parentLogId);
262
- }
263
- ```
264
-
265
- **Pros**:
266
- - Default empty object makes `logger.child()` calls work
267
- - Closer to PRD signature
268
-
269
- **Cons**:
270
- - Still breaking for string-based calls like `logger.child('parent-id')`
271
- - Doesn't solve the incompatibility problem
272
-
273
- ### Recommendation: **Option 1 - Strict PRD Compliance**
274
-
275
- **Rationale**:
276
-
277
- 1. **Codebase Pattern**: This project has a history of breaking changes when correcting PRD mismatches. See CHANGELOG.md for the `attachChild()` behavior change which also broke existing patterns.
278
-
279
- 2. **Limited Impact**: Only 2 test files are affected. The public API impact is minimal since this is primarily used internally.
280
-
281
- 3. **Future Extensibility**: The `Partial<LogEntry>` signature allows passing additional metadata (like `data`, `level`) in future enhancements without another breaking change.
282
-
283
- 4. **Type Safety**: The object-based signature is more self-documenting and type-safe than a string parameter.
284
-
285
- 5. **Consistency**: Aligning implementation with PRD specification is the correct architectural decision.
286
-
287
- ---
288
-
289
- ## 7. Migration Strategy
290
-
291
- ### Code Changes Required
292
-
293
- 1. **Update src/core/logger.ts:84** - Change `child()` signature
294
- 2. **Update 2 test files** - Convert to object syntax
295
- 3. **Update documentation** - Document the new signature
296
-
297
- ### Test Migration Examples
298
-
299
- #### Test File 1: src/__tests__/adversarial/deep-analysis.test.ts:61
300
-
301
- ```typescript
302
- // Before
303
- const childLogger = this.logger.child('');
304
- childLogger.info('Child log with empty parent');
305
-
306
- // After
307
- const childLogger = this.logger.child({});
308
- childLogger.info('Child log with empty parent');
309
- ```
310
-
311
- #### Test File 2: src/__tests__/adversarial/edge-case.test.ts:96
312
-
313
- ```typescript
314
- // Before
315
- const childLogger = this.logger.child('parent-id-123');
316
- expect(childLogger).toBeDefined();
317
-
318
- // After
319
- const childLogger = this.logger.child({ parentLogId: 'parent-id-123' });
320
- expect(childLogger).toBeDefined();
321
- ```
322
-
323
- ### Implementation Template for P1.M1.T1.S2
324
-
325
- ```typescript
326
- /**
327
- * Create a child logger that includes parentLogId
328
- * @param meta Partial log entry metadata (typically { parentLogId: string })
329
- */
330
- child(meta: Partial<LogEntry> = {}): WorkflowLogger {
331
- const parentLogId = meta.parentLogId;
332
- return new WorkflowLogger(this.node, this.observers, parentLogId);
333
- }
334
- ```
335
-
336
- **Note**: The default parameter `{}` allows `logger.child()` to be called without arguments, creating a logger with no parentLogId (similar to current empty string behavior).
337
-
338
- ---
339
-
340
- ## 8. Related Files
341
-
342
- | File | Lines | Purpose |
343
- |------|-------|---------|
344
- | PRD.md | 286-307 | PRD Section 12.1 WorkflowLogger specification |
345
- | src/core/logger.ts | 8-16, 84-86 | Current WorkflowLogger implementation with child() |
346
- | src/types/logging.ts | 9-24 | LogEntry interface definition |
347
- | src/__tests__/adversarial/deep-analysis.test.ts | 61 | Usage site 1: empty string parentLogId |
348
- | src/__tests__/adversarial/edge-case.test.ts | 96 | Usage site 2: normal parentLogId |
349
- | src/types/reflection.ts | 110-117 | Partial<T> usage pattern reference |
350
-
351
- ### Partial<T> Pattern Reference from reflection.ts
352
-
353
- ```typescript
354
- export function createReflectionConfig(
355
- partial?: Partial<ReflectionConfig>
356
- ): ReflectionConfig {
357
- return {
358
- ...DEFAULT_REFLECTION_CONFIG, // Spread defaults first
359
- ...partial, // Then override with provided values
360
- };
361
- }
362
- ```
363
-
364
- **Pattern Note**: This shows the codebase uses spread operator for merging Partial objects. Similar pattern could be applied if child() needs to merge multiple metadata fields in the future.
365
-
366
- ---
367
-
368
- ## Summary
369
-
370
- ### Core Issue
371
-
372
- The `child()` method signature is **incompatible** between PRD specification and current implementation:
373
-
374
- - **PRD**: `child(meta: Partial<LogEntry>)`
375
- - **Actual**: `child(parentLogId: string)`
376
-
377
- ### Impact Assessment
378
-
379
- - **Breaking Change**: Yes - string and object types are incompatible
380
- - **Affected Files**: 2 test files (minimal impact)
381
- - **Public API Impact**: Low - primarily internal usage
382
-
383
- ### Recommended Action
384
-
385
- **Implement Option 1 (Strict PRD Compliance)** in the next subtask (P1.M1.T1.S2):
386
-
387
- 1. Update `src/core/logger.ts:84` to accept `Partial<LogEntry>`
388
- 2. Migrate the 2 test files to use object syntax
389
- 3. Add a default parameter `{}` to allow `logger.child()` calls without arguments
390
-
391
- ### Next Steps
392
-
393
- 1. **P1.M1.T1.S2** - Implement the signature change in `src/core/logger.ts`
394
- 2. **P1.M1.T1.S3** - Add tests for the new `child()` signature with `Partial<LogEntry>`
395
- 3. **P1.M1.T1.S4** - Verify all existing `child()` calls work after migration
396
-
397
- ---
398
-
399
- **Document Version**: 1.0
400
- **Generated**: 2026-01-12
401
- **For**: P1.M1.T1.S2 - Update WorkflowLogger.child() to accept Partial<LogEntry>
@@ -1,142 +0,0 @@
1
- # child() Implementation Research
2
-
3
- ## File Location
4
-
5
- **Path**: `/home/dustin/projects/groundswell/src/core/logger.ts`
6
- **Lines**: 81-94 (child() method)
7
-
8
- ## Current child() Method Implementation
9
-
10
- ```typescript
11
- /**
12
- * Create a child logger that includes parentLogId
13
- * @param parentLogId - ID of the parent log entry (legacy API)
14
- */
15
- child(parentLogId: string): WorkflowLogger;
16
- /**
17
- * Create a child logger with metadata
18
- * @param meta - Partial log entry metadata (typically { parentLogId: string })
19
- */
20
- child(meta: Partial<LogEntry>): WorkflowLogger;
21
- child(input: string | Partial<LogEntry>): WorkflowLogger {
22
- const parentLogId = typeof input === 'string' ? input : input.parentLogId;
23
- return new WorkflowLogger(this.node, this.observers, parentLogId);
24
- }
25
- ```
26
-
27
- ## LogEntry Type Definition
28
-
29
- **Path**: `/home/dustin/projects/groundswell/src/types/logging.ts`
30
- **Lines**: 9-24
31
-
32
- ```typescript
33
- export interface LogEntry {
34
- id: string; // Unique identifier for this log entry
35
- workflowId: string; // ID of the workflow that created this log
36
- timestamp: number; // Unix timestamp in milliseconds
37
- level: LogLevel; // Severity level
38
- message: string; // Log message
39
- data?: unknown; // Optional structured data
40
- parentLogId?: string; // ID of parent log entry (for hierarchical logging)
41
- }
42
-
43
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
44
- ```
45
-
46
- ## child() Method Behavior by Input Type
47
-
48
- ### Scenario 1: Partial<LogEntry> containing parentLogId
49
- ```typescript
50
- // Input: { parentLogId: 'some-id' }
51
- const childLogger = logger.child({ parentLogId: 'some-id' });
52
-
53
- // Behavior:
54
- // - Type guard returns false (not a string)
55
- // - input.parentLogId is extracted ('some-id')
56
- // - New WorkflowLogger created with parentLogId = 'some-id'
57
- // - All log entries from this child will have parentLogId = 'some-id'
58
- ```
59
-
60
- ### Scenario 2: Partial<LogEntry> containing id (should use as parentLogId)
61
- ```typescript
62
- // Input: { id: 'some-id' }
63
- const childLogger = logger.child({ id: 'some-id' });
64
-
65
- // Behavior:
66
- // - Type guard returns false
67
- // - input.parentLogId is undefined (object only has id)
68
- // - New WorkflowLogger created with parentLogId = undefined
69
- // - All log entries from this child will NOT have a parentLogId
70
- ```
71
-
72
- ### Scenario 3: String input (backward compatibility)
73
- ```typescript
74
- // Input: 'parent-id-123'
75
- const childLogger = logger.child('parent-id-123');
76
-
77
- // Behavior:
78
- // - Type guard returns true
79
- // - input is assigned directly as parentLogId
80
- // - New WorkflowLogger created with parentLogId = 'parent-id-123'
81
- // - All log entries from this child will have parentLogId = 'parent-id-123'
82
- ```
83
-
84
- ### Scenario 4: Empty object (should generate parentLogId)
85
- ```typescript
86
- // Input: {}
87
- const childLogger = logger.child({});
88
-
89
- // Behavior:
90
- // - Type guard returns false
91
- // - input.parentLogId is undefined (empty object has no properties)
92
- // - New WorkflowLogger created with parentLogId = undefined
93
- // - All log entries from this child will NOT have a parentLogId
94
- ```
95
-
96
- ## How parentLogId is Set in Child Logger Entries
97
-
98
- **Location**: `src/core/logger.ts` lines 45-48
99
-
100
- ```typescript
101
- // Add parent log ID if this is a child logger
102
- if (this.parentLogId) {
103
- entry.parentLogId = this.parentLogId;
104
- }
105
- ```
106
-
107
- **Process**:
108
- 1. When logging (lines 35-51), a new LogEntry is created with `generateId()`
109
- 2. If `this.parentLogId` exists (is truthy), it's added to the entry
110
- 3. The entry is then emitted to the node and observers
111
- 4. **Note**: Empty strings (`''`) are falsy, so `parentLogId: ''` becomes `undefined`
112
-
113
- ## Constructor Support
114
-
115
- ```typescript
116
- // Line 8-16
117
- export class WorkflowLogger {
118
- private readonly parentLogId?: string;
119
-
120
- constructor(
121
- private node: WorkflowNode,
122
- private observers: WorkflowObserver[],
123
- parentLogId?: string
124
- ) {
125
- this.parentLogId = parentLogId;
126
- }
127
- // ...
128
- }
129
- ```
130
-
131
- ## Key Implementation Details
132
-
133
- 1. **Function Overloads**: Two overload signatures for backward compatibility
134
- 2. **Type Guard**: Uses `typeof input === 'string'` to narrow union type
135
- 3. **Falsy Handling**: Empty strings are treated as undefined due to falsy check in `log()` method
136
- 4. **PRD Compliance**: Matches PRD specification with backward-compatible overloads
137
- 5. **Future Extensibility**: Accepts additional fields in `Partial<LogEntry>` but only uses `parentLogId`
138
-
139
- ## Existing Usage Sites
140
-
141
- 1. **deep-analysis.test.ts:61**: `this.logger.child('')` - Tests empty string handling
142
- 2. **edge-case.test.ts:96**: `this.logger.child('parent-id-123')` - Tests normal parent ID
@@ -1,112 +0,0 @@
1
- # Logger Test Patterns Research
2
-
3
- ## Codebase Test Pattern Analysis
4
-
5
- ### Existing Test Files Using Logger
6
-
7
- | File | Lines | Pattern | Purpose |
8
- |------|-------|---------|---------|
9
- | src/__tests__/unit/workflow.test.ts | Basic logging | Observer pattern | Tests log emission to observers |
10
- | src/__tests__/adversarial/deep-analysis.test.ts | 61 | `this.logger.child('')` | Tests empty parentLogId handling |
11
- | src/__tests__/adversarial/edge-case.test.ts | 96 | `this.logger.child('parent-id-123')` | Tests normal parent ID passing |
12
-
13
- ### Vitest Configuration
14
-
15
- ```typescript
16
- // vitest.config.ts
17
- export default defineConfig({
18
- test: {
19
- include: ['src/__tests__/**/*.test.ts'],
20
- globals: true,
21
- },
22
- esbuild: {
23
- target: 'node18',
24
- },
25
- });
26
- ```
27
-
28
- ### Test Scripts
29
-
30
- ```json
31
- // package.json
32
- {
33
- "test": "vitest run",
34
- "test:watch": "vitest"
35
- }
36
- ```
37
-
38
- ### Key Test Patterns
39
-
40
- #### 1. Basic Logging Test Pattern
41
- ```typescript
42
- it('should emit logs to observers', async () => {
43
- const wf = new SimpleWorkflow();
44
- const logs: LogEntry[] = [];
45
-
46
- const observer: WorkflowObserver = {
47
- onLog: (entry) => logs.push(entry),
48
- onEvent: () => {},
49
- onStateUpdated: () => {},
50
- onTreeChanged: () => {},
51
- };
52
-
53
- wf.addObserver(observer);
54
- await wf.run();
55
-
56
- expect(logs.length).toBeGreaterThan(0);
57
- expect(logs[0].message).toBe('Running simple workflow');
58
- });
59
- ```
60
-
61
- #### 2. Child Logger Test Pattern
62
- ```typescript
63
- it('should handle logger.child() with empty parentLogId', async () => {
64
- class TestWorkflow extends Workflow {
65
- async run() {
66
- const childLogger = this.logger.child('');
67
- childLogger.info('Child log with empty parent');
68
- }
69
- }
70
-
71
- const workflow = new TestWorkflow();
72
- await workflow.run();
73
-
74
- expect(workflow.node.logs.length).toBe(1);
75
- expect(workflow.node.logs[0].parentLogId).toBeUndefined();
76
- });
77
- ```
78
-
79
- #### 3. Mock Pattern for Console
80
- ```typescript
81
- beforeEach(() => {
82
- vi.spyOn(console, 'log').mockImplementation(() => {});
83
- vi.spyOn(console, 'error').mockImplementation(() => {});
84
- });
85
-
86
- afterEach(() => {
87
- vi.restoreAllMocks();
88
- });
89
- ```
90
-
91
- ### Test File Naming Conventions
92
-
93
- - Unit tests: `[feature].test.ts` (e.g., `workflow.test.ts`)
94
- - Adversarial tests: `[topic].test.ts` (e.g., `deep-analysis.test.ts`)
95
- - Integration tests: `[scenario].test.ts`
96
-
97
- ### parentLogId Verification Pattern
98
- ```typescript
99
- // Direct access to node logs
100
- expect(workflow.node.logs.length).toBe(1);
101
- expect(workflow.node.logs[0].parentLogId).toBeUndefined();
102
- // OR
103
- expect(workflow.node.logs[0].parentLogId).toBe('expected-id');
104
- ```
105
-
106
- ### Gaps Identified
107
-
108
- 1. **No dedicated logger test file** - Tests scattered across multiple files
109
- 2. **No comprehensive child() method tests** - Only one adversarial test exists
110
- 3. **No parent-child hierarchy tests** - Tests don't verify parentLogId propagation
111
- 4. **No logger method variants tested** - Only `info` method commonly tested
112
- 5. **No backward compatibility tests** - No tests covering multiple call patterns