groundswell 0.0.1 → 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 (451) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/README.md +99 -5
  3. package/dist/__tests__/adversarial/attachChild-performance.test.d.ts +16 -0
  4. package/dist/__tests__/adversarial/attachChild-performance.test.d.ts.map +1 -0
  5. package/dist/__tests__/adversarial/attachChild-performance.test.js +187 -0
  6. package/dist/__tests__/adversarial/attachChild-performance.test.js.map +1 -0
  7. package/dist/__tests__/adversarial/circular-reference.test.d.ts +13 -0
  8. package/dist/__tests__/adversarial/circular-reference.test.d.ts.map +1 -0
  9. package/dist/__tests__/adversarial/circular-reference.test.js +92 -0
  10. package/dist/__tests__/adversarial/circular-reference.test.js.map +1 -0
  11. package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts +16 -0
  12. package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts.map +1 -0
  13. package/dist/__tests__/adversarial/complex-circular-reference.test.js +127 -0
  14. package/dist/__tests__/adversarial/complex-circular-reference.test.js.map +1 -0
  15. package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts +21 -0
  16. package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts.map +1 -0
  17. package/dist/__tests__/adversarial/concurrent-task-failures.test.js +667 -0
  18. package/dist/__tests__/adversarial/concurrent-task-failures.test.js.map +1 -0
  19. package/dist/__tests__/adversarial/deep-analysis.test.d.ts +6 -0
  20. package/dist/__tests__/adversarial/deep-analysis.test.d.ts.map +1 -0
  21. package/dist/__tests__/adversarial/deep-analysis.test.js +877 -0
  22. package/dist/__tests__/adversarial/deep-analysis.test.js.map +1 -0
  23. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts +13 -0
  24. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts.map +1 -0
  25. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js +186 -0
  26. package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js.map +1 -0
  27. package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts +6 -0
  28. package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts.map +1 -0
  29. package/dist/__tests__/adversarial/e2e-prd-validation.test.js +626 -0
  30. package/dist/__tests__/adversarial/e2e-prd-validation.test.js.map +1 -0
  31. package/dist/__tests__/adversarial/edge-case.test.d.ts +6 -0
  32. package/dist/__tests__/adversarial/edge-case.test.d.ts.map +1 -0
  33. package/dist/__tests__/adversarial/edge-case.test.js +857 -0
  34. package/dist/__tests__/adversarial/edge-case.test.js.map +1 -0
  35. package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts +20 -0
  36. package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts.map +1 -0
  37. package/dist/__tests__/adversarial/error-merge-strategy.test.js +907 -0
  38. package/dist/__tests__/adversarial/error-merge-strategy.test.js.map +1 -0
  39. package/dist/__tests__/adversarial/incremental-performance.test.d.ts +2 -0
  40. package/dist/__tests__/adversarial/incremental-performance.test.d.ts.map +1 -0
  41. package/dist/__tests__/adversarial/incremental-performance.test.js +113 -0
  42. package/dist/__tests__/adversarial/incremental-performance.test.js.map +1 -0
  43. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts +22 -0
  44. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts.map +1 -0
  45. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js +383 -0
  46. package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js.map +1 -0
  47. package/dist/__tests__/adversarial/observer-propagation.test.d.ts +21 -0
  48. package/dist/__tests__/adversarial/observer-propagation.test.d.ts.map +1 -0
  49. package/dist/__tests__/adversarial/observer-propagation.test.js +404 -0
  50. package/dist/__tests__/adversarial/observer-propagation.test.js.map +1 -0
  51. package/dist/__tests__/adversarial/parent-validation.test.d.ts +13 -0
  52. package/dist/__tests__/adversarial/parent-validation.test.d.ts.map +1 -0
  53. package/dist/__tests__/adversarial/parent-validation.test.js +128 -0
  54. package/dist/__tests__/adversarial/parent-validation.test.js.map +1 -0
  55. package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts +20 -0
  56. package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts.map +1 -0
  57. package/dist/__tests__/adversarial/prd-12-2-compliance.test.js +482 -0
  58. package/dist/__tests__/adversarial/prd-12-2-compliance.test.js.map +1 -0
  59. package/dist/__tests__/adversarial/prd-compliance.test.d.ts +6 -0
  60. package/dist/__tests__/adversarial/prd-compliance.test.d.ts.map +1 -0
  61. package/dist/__tests__/adversarial/prd-compliance.test.js +886 -0
  62. package/dist/__tests__/adversarial/prd-compliance.test.js.map +1 -0
  63. package/dist/__tests__/compatibility/backward-compatibility.test.d.ts +22 -0
  64. package/dist/__tests__/compatibility/backward-compatibility.test.d.ts.map +1 -0
  65. package/dist/__tests__/compatibility/backward-compatibility.test.js +1843 -0
  66. package/dist/__tests__/compatibility/backward-compatibility.test.js.map +1 -0
  67. package/dist/__tests__/helpers/index.d.ts +10 -0
  68. package/dist/__tests__/helpers/index.d.ts.map +1 -0
  69. package/dist/__tests__/helpers/index.js +10 -0
  70. package/dist/__tests__/helpers/index.js.map +1 -0
  71. package/dist/__tests__/helpers/tree-verification.d.ts +90 -0
  72. package/dist/__tests__/helpers/tree-verification.d.ts.map +1 -0
  73. package/dist/__tests__/helpers/tree-verification.js +202 -0
  74. package/dist/__tests__/helpers/tree-verification.js.map +1 -0
  75. package/dist/__tests__/integration/agent-workflow.test.d.ts +2 -0
  76. package/dist/__tests__/integration/agent-workflow.test.d.ts.map +1 -0
  77. package/dist/__tests__/integration/agent-workflow.test.js +256 -0
  78. package/dist/__tests__/integration/agent-workflow.test.js.map +1 -0
  79. package/dist/__tests__/integration/bidirectional-consistency.test.d.ts +14 -0
  80. package/dist/__tests__/integration/bidirectional-consistency.test.d.ts.map +1 -0
  81. package/dist/__tests__/integration/bidirectional-consistency.test.js +668 -0
  82. package/dist/__tests__/integration/bidirectional-consistency.test.js.map +1 -0
  83. package/dist/__tests__/integration/observer-logging.test.d.ts +2 -0
  84. package/dist/__tests__/integration/observer-logging.test.d.ts.map +1 -0
  85. package/dist/__tests__/integration/observer-logging.test.js +517 -0
  86. package/dist/__tests__/integration/observer-logging.test.js.map +1 -0
  87. package/dist/__tests__/integration/tree-mirroring.test.d.ts +2 -0
  88. package/dist/__tests__/integration/tree-mirroring.test.d.ts.map +1 -0
  89. package/dist/__tests__/integration/tree-mirroring.test.js +117 -0
  90. package/dist/__tests__/integration/tree-mirroring.test.js.map +1 -0
  91. package/dist/__tests__/integration/workflow-reparenting.test.d.ts +12 -0
  92. package/dist/__tests__/integration/workflow-reparenting.test.d.ts.map +1 -0
  93. package/dist/__tests__/integration/workflow-reparenting.test.js +239 -0
  94. package/dist/__tests__/integration/workflow-reparenting.test.js.map +1 -0
  95. package/dist/__tests__/unit/agent.test.d.ts +2 -0
  96. package/dist/__tests__/unit/agent.test.d.ts.map +1 -0
  97. package/dist/__tests__/unit/agent.test.js +143 -0
  98. package/dist/__tests__/unit/agent.test.js.map +1 -0
  99. package/dist/__tests__/unit/cache-key.test.d.ts +5 -0
  100. package/dist/__tests__/unit/cache-key.test.d.ts.map +1 -0
  101. package/dist/__tests__/unit/cache-key.test.js +145 -0
  102. package/dist/__tests__/unit/cache-key.test.js.map +1 -0
  103. package/dist/__tests__/unit/cache.test.d.ts +5 -0
  104. package/dist/__tests__/unit/cache.test.d.ts.map +1 -0
  105. package/dist/__tests__/unit/cache.test.js +132 -0
  106. package/dist/__tests__/unit/cache.test.js.map +1 -0
  107. package/dist/__tests__/unit/context.test.d.ts +2 -0
  108. package/dist/__tests__/unit/context.test.d.ts.map +1 -0
  109. package/dist/__tests__/unit/context.test.js +220 -0
  110. package/dist/__tests__/unit/context.test.js.map +1 -0
  111. package/dist/__tests__/unit/decorators.test.d.ts +2 -0
  112. package/dist/__tests__/unit/decorators.test.d.ts.map +1 -0
  113. package/dist/__tests__/unit/decorators.test.js +162 -0
  114. package/dist/__tests__/unit/decorators.test.js.map +1 -0
  115. package/dist/__tests__/unit/introspection-tools.test.d.ts +5 -0
  116. package/dist/__tests__/unit/introspection-tools.test.d.ts.map +1 -0
  117. package/dist/__tests__/unit/introspection-tools.test.js +191 -0
  118. package/dist/__tests__/unit/introspection-tools.test.js.map +1 -0
  119. package/dist/__tests__/unit/logger.test.d.ts +2 -0
  120. package/dist/__tests__/unit/logger.test.d.ts.map +1 -0
  121. package/dist/__tests__/unit/logger.test.js +241 -0
  122. package/dist/__tests__/unit/logger.test.js.map +1 -0
  123. package/dist/__tests__/unit/observable.test.d.ts +2 -0
  124. package/dist/__tests__/unit/observable.test.d.ts.map +1 -0
  125. package/dist/__tests__/unit/observable.test.js +251 -0
  126. package/dist/__tests__/unit/observable.test.js.map +1 -0
  127. package/dist/__tests__/unit/prompt.test.d.ts +2 -0
  128. package/dist/__tests__/unit/prompt.test.d.ts.map +1 -0
  129. package/dist/__tests__/unit/prompt.test.js +113 -0
  130. package/dist/__tests__/unit/prompt.test.js.map +1 -0
  131. package/dist/__tests__/unit/reflection.test.d.ts +5 -0
  132. package/dist/__tests__/unit/reflection.test.d.ts.map +1 -0
  133. package/dist/__tests__/unit/reflection.test.js +160 -0
  134. package/dist/__tests__/unit/reflection.test.js.map +1 -0
  135. package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts +2 -0
  136. package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts.map +1 -0
  137. package/dist/__tests__/unit/tree-debugger-incremental.test.js +136 -0
  138. package/dist/__tests__/unit/tree-debugger-incremental.test.js.map +1 -0
  139. package/dist/__tests__/unit/tree-debugger.test.d.ts +2 -0
  140. package/dist/__tests__/unit/tree-debugger.test.d.ts.map +1 -0
  141. package/dist/__tests__/unit/tree-debugger.test.js +69 -0
  142. package/dist/__tests__/unit/tree-debugger.test.js.map +1 -0
  143. package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts +2 -0
  144. package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts.map +1 -0
  145. package/dist/__tests__/unit/utils/workflow-error-utils.test.js +154 -0
  146. package/dist/__tests__/unit/utils/workflow-error-utils.test.js.map +1 -0
  147. package/dist/__tests__/unit/workflow-detachChild.test.d.ts +2 -0
  148. package/dist/__tests__/unit/workflow-detachChild.test.d.ts.map +1 -0
  149. package/dist/__tests__/unit/workflow-detachChild.test.js +76 -0
  150. package/dist/__tests__/unit/workflow-detachChild.test.js.map +1 -0
  151. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts +2 -0
  152. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts.map +1 -0
  153. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js +122 -0
  154. package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js.map +1 -0
  155. package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts +2 -0
  156. package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts.map +1 -0
  157. package/dist/__tests__/unit/workflow-isDescendantOf.test.js +140 -0
  158. package/dist/__tests__/unit/workflow-isDescendantOf.test.js.map +1 -0
  159. package/dist/__tests__/unit/workflow.test.d.ts +2 -0
  160. package/dist/__tests__/unit/workflow.test.d.ts.map +1 -0
  161. package/dist/__tests__/unit/workflow.test.js +330 -0
  162. package/dist/__tests__/unit/workflow.test.js.map +1 -0
  163. package/dist/cache/cache-key.d.ts +66 -0
  164. package/dist/cache/cache-key.d.ts.map +1 -0
  165. package/dist/cache/cache-key.js +195 -0
  166. package/dist/cache/cache-key.js.map +1 -0
  167. package/dist/cache/cache.d.ts +104 -0
  168. package/dist/cache/cache.d.ts.map +1 -0
  169. package/dist/cache/cache.js +179 -0
  170. package/dist/cache/cache.js.map +1 -0
  171. package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
  172. package/dist/cache/index.d.ts.map +1 -0
  173. package/dist/cache/index.js +6 -0
  174. package/dist/cache/index.js.map +1 -0
  175. package/dist/core/agent.d.ts +112 -0
  176. package/dist/core/agent.d.ts.map +1 -0
  177. package/dist/core/agent.js +426 -0
  178. package/dist/core/agent.js.map +1 -0
  179. package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
  180. package/dist/core/context.d.ts.map +1 -0
  181. package/dist/core/context.js +80 -0
  182. package/dist/core/context.js.map +1 -0
  183. package/dist/core/event-tree.d.ts +72 -0
  184. package/dist/core/event-tree.d.ts.map +1 -0
  185. package/dist/core/event-tree.js +211 -0
  186. package/dist/core/event-tree.js.map +1 -0
  187. package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
  188. package/dist/core/factory.d.ts.map +1 -0
  189. package/dist/core/factory.js +110 -0
  190. package/dist/core/factory.js.map +1 -0
  191. package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
  192. package/dist/core/index.d.ts.map +1 -0
  193. package/dist/core/index.js +9 -0
  194. package/dist/core/index.js.map +1 -0
  195. package/dist/core/logger.d.ts +50 -0
  196. package/dist/core/logger.d.ts.map +1 -0
  197. package/dist/core/logger.js +91 -0
  198. package/dist/core/logger.js.map +1 -0
  199. package/dist/core/mcp-handler.d.ts +69 -0
  200. package/dist/core/mcp-handler.d.ts.map +1 -0
  201. package/dist/core/mcp-handler.js +143 -0
  202. package/dist/core/mcp-handler.js.map +1 -0
  203. package/dist/core/prompt.d.ts +80 -0
  204. package/dist/core/prompt.d.ts.map +1 -0
  205. package/dist/core/prompt.js +120 -0
  206. package/dist/core/prompt.js.map +1 -0
  207. package/dist/core/workflow-context.d.ts +57 -0
  208. package/dist/core/workflow-context.d.ts.map +1 -0
  209. package/dist/core/workflow-context.js +263 -0
  210. package/dist/core/workflow-context.js.map +1 -0
  211. package/dist/core/workflow.d.ts +241 -0
  212. package/dist/core/workflow.d.ts.map +1 -0
  213. package/dist/core/workflow.js +464 -0
  214. package/dist/core/workflow.js.map +1 -0
  215. package/dist/debugger/index.d.ts +2 -0
  216. package/dist/debugger/index.d.ts.map +1 -0
  217. package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
  218. package/dist/debugger/index.js.map +1 -0
  219. package/dist/debugger/tree-debugger.d.ts +71 -0
  220. package/dist/debugger/tree-debugger.d.ts.map +1 -0
  221. package/dist/debugger/tree-debugger.js +198 -0
  222. package/dist/debugger/tree-debugger.js.map +1 -0
  223. package/dist/decorators/index.d.ts +4 -0
  224. package/dist/decorators/index.d.ts.map +1 -0
  225. package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
  226. package/dist/decorators/index.js.map +1 -0
  227. package/dist/decorators/observed-state.d.ts +32 -0
  228. package/dist/decorators/observed-state.d.ts.map +1 -0
  229. package/dist/decorators/observed-state.js +79 -0
  230. package/dist/decorators/observed-state.js.map +1 -0
  231. package/dist/decorators/step.d.ts +15 -0
  232. package/dist/decorators/step.d.ts.map +1 -0
  233. package/dist/decorators/step.js +110 -0
  234. package/dist/decorators/step.js.map +1 -0
  235. package/dist/decorators/task.d.ts +50 -0
  236. package/dist/decorators/task.d.ts.map +1 -0
  237. package/dist/decorators/task.js +118 -0
  238. package/dist/decorators/task.js.map +1 -0
  239. package/dist/examples/index.d.ts +3 -0
  240. package/dist/examples/index.d.ts.map +1 -0
  241. package/{src/examples/index.ts → dist/examples/index.js} +1 -0
  242. package/dist/examples/index.js.map +1 -0
  243. package/dist/examples/tdd-orchestrator.d.ts +15 -0
  244. package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
  245. package/dist/examples/tdd-orchestrator.js +121 -0
  246. package/dist/examples/tdd-orchestrator.js.map +1 -0
  247. package/dist/examples/test-cycle-workflow.d.ts +14 -0
  248. package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
  249. package/dist/examples/test-cycle-workflow.js +116 -0
  250. package/dist/examples/test-cycle-workflow.js.map +1 -0
  251. package/dist/index.d.ts +27 -0
  252. package/dist/index.d.ts.map +1 -0
  253. package/dist/index.js +40 -0
  254. package/dist/index.js.map +1 -0
  255. package/dist/reflection/index.d.ts +5 -0
  256. package/dist/reflection/index.d.ts.map +1 -0
  257. package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
  258. package/dist/reflection/index.js.map +1 -0
  259. package/dist/reflection/reflection.d.ts +84 -0
  260. package/dist/reflection/reflection.d.ts.map +1 -0
  261. package/dist/reflection/reflection.js +329 -0
  262. package/dist/reflection/reflection.js.map +1 -0
  263. package/dist/tools/index.d.ts +6 -0
  264. package/dist/tools/index.d.ts.map +1 -0
  265. package/dist/tools/index.js +11 -0
  266. package/dist/tools/index.js.map +1 -0
  267. package/dist/tools/introspection.d.ts +165 -0
  268. package/dist/tools/introspection.d.ts.map +1 -0
  269. package/dist/tools/introspection.js +324 -0
  270. package/dist/tools/introspection.js.map +1 -0
  271. package/dist/types/agent.d.ts +66 -0
  272. package/dist/types/agent.d.ts.map +1 -0
  273. package/dist/types/agent.js +6 -0
  274. package/dist/types/agent.js.map +1 -0
  275. package/dist/types/decorators.d.ts +31 -0
  276. package/dist/types/decorators.d.ts.map +1 -0
  277. package/dist/types/decorators.js +2 -0
  278. package/dist/types/decorators.js.map +1 -0
  279. package/dist/types/error-strategy.d.ts +13 -0
  280. package/dist/types/error-strategy.d.ts.map +1 -0
  281. package/dist/types/error-strategy.js +2 -0
  282. package/dist/types/error-strategy.js.map +1 -0
  283. package/dist/types/error.d.ts +20 -0
  284. package/dist/types/error.d.ts.map +1 -0
  285. package/dist/types/error.js +2 -0
  286. package/dist/types/error.js.map +1 -0
  287. package/dist/types/events.d.ts +87 -0
  288. package/dist/types/events.d.ts.map +1 -0
  289. package/dist/types/events.js +2 -0
  290. package/dist/types/events.js.map +1 -0
  291. package/dist/types/index.d.ts +15 -0
  292. package/dist/types/index.d.ts.map +1 -0
  293. package/dist/types/index.js +2 -0
  294. package/dist/types/index.js.map +1 -0
  295. package/dist/types/logging.d.ts +24 -0
  296. package/dist/types/logging.d.ts.map +1 -0
  297. package/dist/types/logging.js +2 -0
  298. package/dist/types/logging.js.map +1 -0
  299. package/dist/types/observer.d.ts +18 -0
  300. package/dist/types/observer.d.ts.map +1 -0
  301. package/dist/types/observer.js +2 -0
  302. package/dist/types/observer.js.map +1 -0
  303. package/dist/types/prompt.d.ts +31 -0
  304. package/dist/types/prompt.d.ts.map +1 -0
  305. package/dist/types/prompt.js +6 -0
  306. package/dist/types/prompt.js.map +1 -0
  307. package/dist/types/reflection.d.ts +96 -0
  308. package/dist/types/reflection.d.ts.map +1 -0
  309. package/dist/types/reflection.js +24 -0
  310. package/dist/types/reflection.js.map +1 -0
  311. package/dist/types/sdk-primitives.d.ts +118 -0
  312. package/dist/types/sdk-primitives.d.ts.map +1 -0
  313. package/dist/types/sdk-primitives.js +6 -0
  314. package/dist/types/sdk-primitives.js.map +1 -0
  315. package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
  316. package/dist/types/snapshot.d.ts.map +1 -0
  317. package/dist/types/snapshot.js +2 -0
  318. package/dist/types/snapshot.js.map +1 -0
  319. package/dist/types/workflow-context.d.ts +139 -0
  320. package/dist/types/workflow-context.d.ts.map +1 -0
  321. package/dist/types/workflow-context.js +8 -0
  322. package/dist/types/workflow-context.js.map +1 -0
  323. package/dist/types/workflow.d.ts +30 -0
  324. package/dist/types/workflow.d.ts.map +1 -0
  325. package/dist/types/workflow.js +2 -0
  326. package/dist/types/workflow.js.map +1 -0
  327. package/dist/utils/id.d.ts +6 -0
  328. package/dist/utils/id.d.ts.map +1 -0
  329. package/dist/utils/id.js +12 -0
  330. package/dist/utils/id.js.map +1 -0
  331. package/{src/utils/index.ts → dist/utils/index.d.ts} +2 -0
  332. package/dist/utils/index.d.ts.map +1 -0
  333. package/dist/utils/index.js +4 -0
  334. package/dist/utils/index.js.map +1 -0
  335. package/dist/utils/observable.d.ts +54 -0
  336. package/dist/utils/observable.d.ts.map +1 -0
  337. package/dist/utils/observable.js +82 -0
  338. package/dist/utils/observable.js.map +1 -0
  339. package/dist/utils/workflow-error-utils.d.ts +22 -0
  340. package/dist/utils/workflow-error-utils.d.ts.map +1 -0
  341. package/dist/utils/workflow-error-utils.js +45 -0
  342. package/dist/utils/workflow-error-utils.js.map +1 -0
  343. package/package.json +7 -2
  344. package/.claude/settings.local.json +0 -9
  345. package/.claude/system_prompts/task-breakdown.md +0 -100
  346. package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
  347. package/PRPs/PRDs/001-hierarchical-workflow-engine.md +0 -543
  348. package/PRPs/PRDs/002-agent-prompt.md +0 -390
  349. package/PRPs/PRDs/003-agent-prompt.md +0 -943
  350. package/PRPs/PRDs/004-agent-prompt.md +0 -1136
  351. package/PRPs/PRDs/tasks-001.json +0 -492
  352. package/PRPs/README.md +0 -83
  353. package/PRPs/templates/prp_base.md +0 -222
  354. package/docs/agent.md +0 -422
  355. package/docs/prompt.md +0 -419
  356. package/docs/workflow.md +0 -600
  357. package/examples/README.md +0 -244
  358. package/examples/examples/01-basic-workflow.ts +0 -100
  359. package/examples/examples/02-decorator-options.ts +0 -217
  360. package/examples/examples/03-parent-child.ts +0 -241
  361. package/examples/examples/04-observers-debugger.ts +0 -340
  362. package/examples/examples/05-error-handling.ts +0 -387
  363. package/examples/examples/06-concurrent-tasks.ts +0 -352
  364. package/examples/examples/07-agent-loops.ts +0 -432
  365. package/examples/examples/08-sdk-features.ts +0 -667
  366. package/examples/examples/09-reflection.ts +0 -573
  367. package/examples/examples/10-introspection.ts +0 -550
  368. package/examples/index.ts +0 -143
  369. package/examples/utils/helpers.ts +0 -57
  370. package/llms_full.txt +0 -5890
  371. package/plan/P1P2/PRP.md +0 -527
  372. package/plan/P1P2/research/LRU_CACHE_BEST_PRACTICES.md +0 -1929
  373. package/plan/P1P2/research/LRU_CACHE_CODE_PATTERNS.md +0 -857
  374. package/plan/P1P2/research/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
  375. package/plan/P1P2/research/LRU_CACHE_RESEARCH_INDEX.md +0 -424
  376. package/plan/P1P2/research/REFLECTION_INDEX.md +0 -291
  377. package/plan/P1P2/research/REFLECTION_RESEARCH_REPORT.md +0 -1342
  378. package/plan/P1P2/research/RESEARCH_SUMMARY.md +0 -342
  379. package/plan/P1P2/research/anthropic-sdk.md +0 -174
  380. package/plan/P1P2/research/async-local-storage.md +0 -200
  381. package/plan/P1P2/research/reflection-code-patterns.md +0 -1205
  382. package/plan/P1P2/research/reflection-decision-matrix.md +0 -421
  383. package/plan/P1P2/research/reflection-implementation-guide.md +0 -1341
  384. package/plan/P1P2/research/reflection-integration-guide.md +0 -834
  385. package/plan/P1P2/research/reflection-patterns.md +0 -1468
  386. package/plan/P1P2/research/reflection-quick-reference.md +0 -558
  387. package/plan/P1P2/research/zod-schema.md +0 -152
  388. package/plan/P3P4/PRP.md +0 -1388
  389. package/plan/P3P4/research/caching-lru.md +0 -116
  390. package/plan/P3P4/research/introspection-tools.md +0 -177
  391. package/plan/P3P4/research/reflection-patterns.md +0 -117
  392. package/plan/P4P5/PRP.md +0 -1136
  393. package/plan/P4P5/research/RESEARCH_SUMMARY.md +0 -151
  394. package/plan/architecture/external_deps.md +0 -358
  395. package/plan/architecture/system_context.md +0 -242
  396. package/plan/backlog.json +0 -867
  397. package/plan/research/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
  398. package/plan/research/README-INTROSPECTION.md +0 -352
  399. package/plan/research/agent-introspection-patterns.md +0 -1085
  400. package/plan/research/introspection-security-guide.md +0 -928
  401. package/plan/research/introspection-tool-examples.md +0 -875
  402. package/scripts/generate-llms-full.ts +0 -206
  403. package/src/__tests__/integration/agent-workflow.test.ts +0 -256
  404. package/src/__tests__/integration/tree-mirroring.test.ts +0 -114
  405. package/src/__tests__/unit/agent.test.ts +0 -169
  406. package/src/__tests__/unit/cache-key.test.ts +0 -182
  407. package/src/__tests__/unit/cache.test.ts +0 -172
  408. package/src/__tests__/unit/context.test.ts +0 -138
  409. package/src/__tests__/unit/decorators.test.ts +0 -100
  410. package/src/__tests__/unit/introspection-tools.test.ts +0 -277
  411. package/src/__tests__/unit/prompt.test.ts +0 -135
  412. package/src/__tests__/unit/reflection.test.ts +0 -210
  413. package/src/__tests__/unit/tree-debugger.test.ts +0 -85
  414. package/src/__tests__/unit/workflow.test.ts +0 -81
  415. package/src/cache/cache-key.ts +0 -244
  416. package/src/cache/cache.ts +0 -236
  417. package/src/core/agent.ts +0 -573
  418. package/src/core/event-tree.ts +0 -260
  419. package/src/core/logger.ts +0 -87
  420. package/src/core/mcp-handler.ts +0 -184
  421. package/src/core/prompt.ts +0 -150
  422. package/src/core/workflow-context.ts +0 -349
  423. package/src/core/workflow.ts +0 -302
  424. package/src/debugger/tree-debugger.ts +0 -210
  425. package/src/decorators/observed-state.ts +0 -95
  426. package/src/decorators/step.ts +0 -139
  427. package/src/decorators/task.ts +0 -96
  428. package/src/examples/tdd-orchestrator.ts +0 -65
  429. package/src/examples/test-cycle-workflow.ts +0 -64
  430. package/src/index.ts +0 -140
  431. package/src/reflection/reflection.ts +0 -407
  432. package/src/tools/index.ts +0 -36
  433. package/src/tools/introspection.ts +0 -464
  434. package/src/types/agent.ts +0 -90
  435. package/src/types/decorators.ts +0 -25
  436. package/src/types/error-strategy.ts +0 -13
  437. package/src/types/error.ts +0 -20
  438. package/src/types/events.ts +0 -74
  439. package/src/types/index.ts +0 -55
  440. package/src/types/logging.ts +0 -24
  441. package/src/types/observer.ts +0 -18
  442. package/src/types/prompt.ts +0 -40
  443. package/src/types/reflection.ts +0 -117
  444. package/src/types/sdk-primitives.ts +0 -128
  445. package/src/types/workflow-context.ts +0 -163
  446. package/src/types/workflow.ts +0 -37
  447. package/src/utils/id.ts +0 -11
  448. package/src/utils/observable.ts +0 -77
  449. package/tasks.json +0 -0
  450. package/tsconfig.json +0 -22
  451. package/vitest.config.ts +0 -16
@@ -0,0 +1,877 @@
1
+ /**
2
+ * Deep Analysis Tests
3
+ * These tests probe deeper into edge cases, error scenarios, and potential bugs
4
+ */
5
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
6
+ var useValue = arguments.length > 2;
7
+ for (var i = 0; i < initializers.length; i++) {
8
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
9
+ }
10
+ return useValue ? value : void 0;
11
+ };
12
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
13
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
14
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
15
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
16
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
17
+ var _, done = false;
18
+ for (var i = decorators.length - 1; i >= 0; i--) {
19
+ var context = {};
20
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
21
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
22
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
23
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
24
+ if (kind === "accessor") {
25
+ if (result === void 0) continue;
26
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
27
+ if (_ = accept(result.get)) descriptor.get = _;
28
+ if (_ = accept(result.set)) descriptor.set = _;
29
+ if (_ = accept(result.init)) initializers.unshift(_);
30
+ }
31
+ else if (_ = accept(result)) {
32
+ if (kind === "field") initializers.unshift(_);
33
+ else descriptor[key] = _;
34
+ }
35
+ }
36
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
37
+ done = true;
38
+ };
39
+ import { describe, it, expect } from 'vitest';
40
+ import { Workflow, Step, Task, ObservedState } from '../../index.js';
41
+ import { WorkflowTreeDebugger } from '../../debugger/tree-debugger.js';
42
+ describe('Deep Analysis Tests', () => {
43
+ describe('Observable Edge Cases', () => {
44
+ it('should handle Observable.subscribe with empty observer object', async () => {
45
+ class TestWorkflow extends Workflow {
46
+ async run() {
47
+ this.emitEvent({ type: 'stepStart', node: this.node, step: 'test' });
48
+ }
49
+ }
50
+ const workflow = new TestWorkflow();
51
+ const debuggerInstance = new WorkflowTreeDebugger(workflow);
52
+ // Subscribe with empty observer - should not crash
53
+ debuggerInstance.events.subscribe({});
54
+ await workflow.run();
55
+ });
56
+ it('should handle Observable.unsubscribe during event emission', async () => {
57
+ class TestWorkflow extends Workflow {
58
+ async run() {
59
+ for (let i = 0; i < 10; i++) {
60
+ this.emitEvent({ type: 'stepStart', node: this.node, step: `step-${i}` });
61
+ }
62
+ }
63
+ }
64
+ const workflow = new TestWorkflow();
65
+ const debuggerInstance = new WorkflowTreeDebugger(workflow);
66
+ let count = 0;
67
+ const subscription = debuggerInstance.events.subscribe({
68
+ next: () => {
69
+ count++;
70
+ if (count === 5) {
71
+ subscription.unsubscribe();
72
+ }
73
+ },
74
+ });
75
+ await workflow.run();
76
+ // Should have received 5 events before unsubscribing
77
+ expect(count).toBe(5);
78
+ });
79
+ });
80
+ describe('WorkflowLogger Edge Cases', () => {
81
+ it('should handle logger.child() with empty parentLogId', async () => {
82
+ class TestWorkflow extends Workflow {
83
+ async run() {
84
+ const childLogger = this.logger.child('');
85
+ childLogger.info('Child log with empty parent');
86
+ }
87
+ }
88
+ const workflow = new TestWorkflow();
89
+ await workflow.run();
90
+ expect(workflow.node.logs.length).toBe(1);
91
+ // Empty string is passed through as parentLogId
92
+ expect(workflow.node.logs[0].parentLogId).toBeUndefined();
93
+ });
94
+ it('should handle logger with very long messages', async () => {
95
+ class TestWorkflow extends Workflow {
96
+ async run() {
97
+ const longMessage = 'A'.repeat(10000);
98
+ this.logger.info(longMessage);
99
+ }
100
+ }
101
+ const workflow = new TestWorkflow();
102
+ await workflow.run();
103
+ expect(workflow.node.logs[0].message.length).toBe(10000);
104
+ });
105
+ it('should handle logger with special characters in data', async () => {
106
+ class TestWorkflow extends Workflow {
107
+ async run() {
108
+ this.logger.info('Test', {
109
+ null: null,
110
+ undefined: undefined,
111
+ circular: { self: null },
112
+ function: () => { },
113
+ symbol: Symbol('test'),
114
+ });
115
+ }
116
+ }
117
+ const workflow = new TestWorkflow();
118
+ // Should not throw
119
+ await workflow.run();
120
+ });
121
+ });
122
+ describe('Step Decorator Edge Cases', () => {
123
+ it('should handle @Step on synchronous method that returns Promise', async () => {
124
+ let TestWorkflow = (() => {
125
+ let _classSuper = Workflow;
126
+ let _instanceExtraInitializers = [];
127
+ let _testStep_decorators;
128
+ return class TestWorkflow extends _classSuper {
129
+ static {
130
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
131
+ _testStep_decorators = [Step()];
132
+ __esDecorate(this, null, _testStep_decorators, { kind: "method", name: "testStep", static: false, private: false, access: { has: obj => "testStep" in obj, get: obj => obj.testStep }, metadata: _metadata }, null, _instanceExtraInitializers);
133
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
134
+ }
135
+ async testStep() {
136
+ return Promise.resolve('done');
137
+ }
138
+ async run() {
139
+ return this.testStep();
140
+ }
141
+ constructor() {
142
+ super(...arguments);
143
+ __runInitializers(this, _instanceExtraInitializers);
144
+ }
145
+ };
146
+ })();
147
+ const workflow = new TestWorkflow();
148
+ const result = await workflow.run();
149
+ expect(result).toBe('done');
150
+ });
151
+ it('should handle @Step that returns undefined', async () => {
152
+ let TestWorkflow = (() => {
153
+ let _classSuper = Workflow;
154
+ let _instanceExtraInitializers = [];
155
+ let _testStep_decorators;
156
+ return class TestWorkflow extends _classSuper {
157
+ static {
158
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
159
+ _testStep_decorators = [Step()];
160
+ __esDecorate(this, null, _testStep_decorators, { kind: "method", name: "testStep", static: false, private: false, access: { has: obj => "testStep" in obj, get: obj => obj.testStep }, metadata: _metadata }, null, _instanceExtraInitializers);
161
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
162
+ }
163
+ async testStep() {
164
+ // No return
165
+ }
166
+ async run() {
167
+ return this.testStep();
168
+ }
169
+ constructor() {
170
+ super(...arguments);
171
+ __runInitializers(this, _instanceExtraInitializers);
172
+ }
173
+ };
174
+ })();
175
+ const workflow = new TestWorkflow();
176
+ const result = await workflow.run();
177
+ expect(result).toBeUndefined();
178
+ });
179
+ it('should handle @Step that throws non-Error', async () => {
180
+ let TestWorkflow = (() => {
181
+ let _classSuper = Workflow;
182
+ let _instanceExtraInitializers = [];
183
+ let _testStep_decorators;
184
+ return class TestWorkflow extends _classSuper {
185
+ static {
186
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
187
+ _testStep_decorators = [Step()];
188
+ __esDecorate(this, null, _testStep_decorators, { kind: "method", name: "testStep", static: false, private: false, access: { has: obj => "testStep" in obj, get: obj => obj.testStep }, metadata: _metadata }, null, _instanceExtraInitializers);
189
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
190
+ }
191
+ async testStep() {
192
+ throw 'string error';
193
+ }
194
+ async run() {
195
+ try {
196
+ await this.testStep();
197
+ }
198
+ catch (err) {
199
+ // Non-Error throws get wrapped with 'Unknown error' message
200
+ // but the original is preserved
201
+ expect(err.message).toBe('Unknown error');
202
+ expect(err.original).toBe('string error');
203
+ }
204
+ }
205
+ constructor() {
206
+ super(...arguments);
207
+ __runInitializers(this, _instanceExtraInitializers);
208
+ }
209
+ };
210
+ })();
211
+ const workflow = new TestWorkflow();
212
+ await workflow.run();
213
+ });
214
+ it('should handle @Step that throws null', async () => {
215
+ let TestWorkflow = (() => {
216
+ let _classSuper = Workflow;
217
+ let _instanceExtraInitializers = [];
218
+ let _testStep_decorators;
219
+ return class TestWorkflow extends _classSuper {
220
+ static {
221
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
222
+ _testStep_decorators = [Step()];
223
+ __esDecorate(this, null, _testStep_decorators, { kind: "method", name: "testStep", static: false, private: false, access: { has: obj => "testStep" in obj, get: obj => obj.testStep }, metadata: _metadata }, null, _instanceExtraInitializers);
224
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
225
+ }
226
+ async testStep() {
227
+ throw null;
228
+ }
229
+ async run() {
230
+ try {
231
+ await this.testStep();
232
+ }
233
+ catch (err) {
234
+ expect(err).not.toBeNull();
235
+ }
236
+ }
237
+ constructor() {
238
+ super(...arguments);
239
+ __runInitializers(this, _instanceExtraInitializers);
240
+ }
241
+ };
242
+ })();
243
+ const workflow = new TestWorkflow();
244
+ await workflow.run();
245
+ });
246
+ });
247
+ describe('Task Decorator Edge Cases', () => {
248
+ it('should handle @Task that returns primitive value', async () => {
249
+ let TestWorkflow = (() => {
250
+ let _classSuper = Workflow;
251
+ let _instanceExtraInitializers = [];
252
+ let _returnsString_decorators;
253
+ return class TestWorkflow extends _classSuper {
254
+ static {
255
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
256
+ _returnsString_decorators = [Task()];
257
+ __esDecorate(this, null, _returnsString_decorators, { kind: "method", name: "returnsString", static: false, private: false, access: { has: obj => "returnsString" in obj, get: obj => obj.returnsString }, metadata: _metadata }, null, _instanceExtraInitializers);
258
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
259
+ }
260
+ async returnsString() {
261
+ return 'not a workflow';
262
+ }
263
+ async run() {
264
+ return this.returnsString();
265
+ }
266
+ constructor() {
267
+ super(...arguments);
268
+ __runInitializers(this, _instanceExtraInitializers);
269
+ }
270
+ };
271
+ })();
272
+ const workflow = new TestWorkflow();
273
+ const result = await workflow.run();
274
+ expect(result).toBe('not a workflow');
275
+ expect(workflow.children.length).toBe(0);
276
+ });
277
+ it('should handle @Task that returns number', async () => {
278
+ let TestWorkflow = (() => {
279
+ let _classSuper = Workflow;
280
+ let _instanceExtraInitializers = [];
281
+ let _returnsNumber_decorators;
282
+ return class TestWorkflow extends _classSuper {
283
+ static {
284
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
285
+ _returnsNumber_decorators = [Task()];
286
+ __esDecorate(this, null, _returnsNumber_decorators, { kind: "method", name: "returnsNumber", static: false, private: false, access: { has: obj => "returnsNumber" in obj, get: obj => obj.returnsNumber }, metadata: _metadata }, null, _instanceExtraInitializers);
287
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
288
+ }
289
+ async returnsNumber() {
290
+ return 42;
291
+ }
292
+ async run() {
293
+ return this.returnsNumber();
294
+ }
295
+ constructor() {
296
+ super(...arguments);
297
+ __runInitializers(this, _instanceExtraInitializers);
298
+ }
299
+ };
300
+ })();
301
+ const workflow = new TestWorkflow();
302
+ const result = await workflow.run();
303
+ expect(result).toBe(42);
304
+ });
305
+ it('should handle @Task that returns object with id property (duck typing)', async () => {
306
+ let TestWorkflow = (() => {
307
+ let _classSuper = Workflow;
308
+ let _instanceExtraInitializers = [];
309
+ let _returnsDuck_decorators;
310
+ return class TestWorkflow extends _classSuper {
311
+ static {
312
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
313
+ _returnsDuck_decorators = [Task()];
314
+ __esDecorate(this, null, _returnsDuck_decorators, { kind: "method", name: "returnsDuck", static: false, private: false, access: { has: obj => "returnsDuck" in obj, get: obj => obj.returnsDuck }, metadata: _metadata }, null, _instanceExtraInitializers);
315
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
316
+ }
317
+ async returnsDuck() {
318
+ return { id: 'duck-123', name: 'Duck' };
319
+ }
320
+ async run() {
321
+ return this.returnsDuck();
322
+ }
323
+ constructor() {
324
+ super(...arguments);
325
+ __runInitializers(this, _instanceExtraInitializers);
326
+ }
327
+ };
328
+ })();
329
+ const workflow = new TestWorkflow();
330
+ const result = await workflow.run();
331
+ // Duck typing - objects with 'id' property get parent attached
332
+ // The returned object is mutated to have a parent property
333
+ expect(result.id).toBe('duck-123');
334
+ expect(result.name).toBe('Duck');
335
+ expect(result.parent).toBeDefined();
336
+ // Duck typing treats it as a workflow and attaches it
337
+ expect(workflow.children.length).toBe(1);
338
+ });
339
+ it('should handle @Task with concurrent on single non-workflow', async () => {
340
+ let TestWorkflow = (() => {
341
+ let _classSuper = Workflow;
342
+ let _instanceExtraInitializers = [];
343
+ let _returnsString_decorators;
344
+ return class TestWorkflow extends _classSuper {
345
+ static {
346
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
347
+ _returnsString_decorators = [Task({ concurrent: true })];
348
+ __esDecorate(this, null, _returnsString_decorators, { kind: "method", name: "returnsString", static: false, private: false, access: { has: obj => "returnsString" in obj, get: obj => obj.returnsString }, metadata: _metadata }, null, _instanceExtraInitializers);
349
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
350
+ }
351
+ async returnsString() {
352
+ return 'not a workflow';
353
+ }
354
+ async run() {
355
+ return this.returnsString();
356
+ }
357
+ constructor() {
358
+ super(...arguments);
359
+ __runInitializers(this, _instanceExtraInitializers);
360
+ }
361
+ };
362
+ })();
363
+ const workflow = new TestWorkflow();
364
+ const result = await workflow.run();
365
+ expect(result).toBe('not a workflow');
366
+ });
367
+ it('should handle @Task with concurrent: true but no run method', async () => {
368
+ class ChildWorkflow extends Workflow {
369
+ }
370
+ let ParentWorkflow = (() => {
371
+ let _classSuper = Workflow;
372
+ let _instanceExtraInitializers = [];
373
+ let _spawnChild_decorators;
374
+ return class ParentWorkflow extends _classSuper {
375
+ static {
376
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
377
+ _spawnChild_decorators = [Task({ concurrent: true })];
378
+ __esDecorate(this, null, _spawnChild_decorators, { kind: "method", name: "spawnChild", static: false, private: false, access: { has: obj => "spawnChild" in obj, get: obj => obj.spawnChild }, metadata: _metadata }, null, _instanceExtraInitializers);
379
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
380
+ }
381
+ async spawnChild() {
382
+ return new ChildWorkflow('Child', this);
383
+ }
384
+ async run() {
385
+ // Child will be attached but running it will throw
386
+ return this.spawnChild();
387
+ }
388
+ constructor() {
389
+ super(...arguments);
390
+ __runInitializers(this, _instanceExtraInitializers);
391
+ }
392
+ };
393
+ })();
394
+ const workflow = new ParentWorkflow();
395
+ await workflow.run();
396
+ // Child should still be attached
397
+ expect(workflow.children.length).toBe(1);
398
+ });
399
+ });
400
+ describe('ObservedState Edge Cases', () => {
401
+ it('should handle undefined value in observed state', async () => {
402
+ let TestWorkflow = (() => {
403
+ let _classSuper = Workflow;
404
+ let _undefinedField_decorators;
405
+ let _undefinedField_initializers = [];
406
+ let _undefinedField_extraInitializers = [];
407
+ return class TestWorkflow extends _classSuper {
408
+ static {
409
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
410
+ _undefinedField_decorators = [ObservedState()];
411
+ __esDecorate(null, null, _undefinedField_decorators, { kind: "field", name: "undefinedField", static: false, private: false, access: { has: obj => "undefinedField" in obj, get: obj => obj.undefinedField, set: (obj, value) => { obj.undefinedField = value; } }, metadata: _metadata }, _undefinedField_initializers, _undefinedField_extraInitializers);
412
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
413
+ }
414
+ undefinedField = __runInitializers(this, _undefinedField_initializers, undefined);
415
+ async run() {
416
+ this.snapshotState();
417
+ return this.node.stateSnapshot;
418
+ }
419
+ constructor() {
420
+ super(...arguments);
421
+ __runInitializers(this, _undefinedField_extraInitializers);
422
+ }
423
+ };
424
+ })();
425
+ const workflow = new TestWorkflow();
426
+ const snapshot = await workflow.run();
427
+ expect(snapshot?.undefinedField).toBeUndefined();
428
+ });
429
+ it('should handle circular reference in observed state', async () => {
430
+ let TestWorkflow = (() => {
431
+ let _classSuper = Workflow;
432
+ let _circular_decorators;
433
+ let _circular_initializers = [];
434
+ let _circular_extraInitializers = [];
435
+ return class TestWorkflow extends _classSuper {
436
+ static {
437
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
438
+ _circular_decorators = [ObservedState()];
439
+ __esDecorate(null, null, _circular_decorators, { kind: "field", name: "circular", static: false, private: false, access: { has: obj => "circular" in obj, get: obj => obj.circular, set: (obj, value) => { obj.circular = value; } }, metadata: _metadata }, _circular_initializers, _circular_extraInitializers);
440
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
441
+ }
442
+ circular = __runInitializers(this, _circular_initializers, {});
443
+ async run() {
444
+ this.circular.self = this.circular;
445
+ this.snapshotState();
446
+ return this.node.stateSnapshot;
447
+ }
448
+ constructor() {
449
+ super(...arguments);
450
+ __runInitializers(this, _circular_extraInitializers);
451
+ }
452
+ };
453
+ })();
454
+ const workflow = new TestWorkflow();
455
+ // Should not crash
456
+ await workflow.run();
457
+ });
458
+ it('should handle deeply nested object in observed state', async () => {
459
+ let TestWorkflow = (() => {
460
+ let _classSuper = Workflow;
461
+ let _nested_decorators;
462
+ let _nested_initializers = [];
463
+ let _nested_extraInitializers = [];
464
+ return class TestWorkflow extends _classSuper {
465
+ static {
466
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
467
+ _nested_decorators = [ObservedState()];
468
+ __esDecorate(null, null, _nested_decorators, { kind: "field", name: "nested", static: false, private: false, access: { has: obj => "nested" in obj, get: obj => obj.nested, set: (obj, value) => { obj.nested = value; } }, metadata: _metadata }, _nested_initializers, _nested_extraInitializers);
469
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
470
+ }
471
+ nested = __runInitializers(this, _nested_initializers, { level: 1 });
472
+ async run() {
473
+ for (let i = 2; i <= 100; i++) {
474
+ this.nested = { level: i, child: this.nested };
475
+ }
476
+ this.snapshotState();
477
+ return this.node.stateSnapshot;
478
+ }
479
+ constructor() {
480
+ super(...arguments);
481
+ __runInitializers(this, _nested_extraInitializers);
482
+ }
483
+ };
484
+ })();
485
+ const workflow = new TestWorkflow();
486
+ const snapshot = await workflow.run();
487
+ expect(snapshot?.nested).toBeDefined();
488
+ });
489
+ });
490
+ describe('Workflow Construction Edge Cases', () => {
491
+ it('should handle Workflow with no arguments', async () => {
492
+ class TestWorkflow extends Workflow {
493
+ async run() {
494
+ return 'done';
495
+ }
496
+ }
497
+ const workflow = new TestWorkflow();
498
+ expect(workflow.node.name).toBe('TestWorkflow');
499
+ expect(workflow.parent).toBeNull();
500
+ });
501
+ it('should handle Workflow with only parent argument', async () => {
502
+ class ChildWorkflow extends Workflow {
503
+ async run() {
504
+ return 'done';
505
+ }
506
+ }
507
+ class ParentWorkflow extends Workflow {
508
+ async run() {
509
+ const child = new ChildWorkflow(undefined, this);
510
+ expect(child.parent).toBe(this);
511
+ }
512
+ }
513
+ const workflow = new ParentWorkflow();
514
+ await workflow.run();
515
+ });
516
+ it('should handle functional workflow pattern', async () => {
517
+ const workflow = new Workflow({ name: 'FunctionalWorkflow' }, async (ctx) => {
518
+ await ctx.step('test', async () => {
519
+ return 'done';
520
+ });
521
+ });
522
+ const result = await workflow.run();
523
+ expect(result).toBeDefined();
524
+ });
525
+ });
526
+ describe('Tree Debugger Edge Cases', () => {
527
+ it('should handle toTreeString on deep hierarchy', async () => {
528
+ // Create a root workflow with deep children
529
+ class RootWorkflow extends Workflow {
530
+ async run() {
531
+ return 'done';
532
+ }
533
+ }
534
+ const root = new RootWorkflow();
535
+ let lastWorkflow = root;
536
+ // Build deep hierarchy
537
+ for (let i = 0; i < 20; i++) {
538
+ const ChildWorkflow = class extends Workflow {
539
+ async run() {
540
+ return 'done';
541
+ }
542
+ };
543
+ const child = new ChildWorkflow(`Workflow-${i}`, lastWorkflow);
544
+ await child.run();
545
+ lastWorkflow = child;
546
+ }
547
+ // Create debugger on the root
548
+ const debuggerInstance = new WorkflowTreeDebugger(root);
549
+ const treeString = debuggerInstance.toTreeString();
550
+ expect(treeString.length).toBeGreaterThan(0);
551
+ expect(treeString.split('\n').length).toBeGreaterThan(20);
552
+ });
553
+ it('should handle toLogString on workflow with no logs', async () => {
554
+ class TestWorkflow extends Workflow {
555
+ async run() {
556
+ // No logs
557
+ }
558
+ }
559
+ const workflow = new TestWorkflow();
560
+ await workflow.run();
561
+ const debuggerInstance = new WorkflowTreeDebugger(workflow);
562
+ const logString = debuggerInstance.toLogString();
563
+ expect(typeof logString).toBe('string');
564
+ });
565
+ it('should handle getNode on non-existent ID', async () => {
566
+ class TestWorkflow extends Workflow {
567
+ async run() {
568
+ return 'done';
569
+ }
570
+ }
571
+ const workflow = new TestWorkflow();
572
+ const debuggerInstance = new WorkflowTreeDebugger(workflow);
573
+ const node = debuggerInstance.getNode('non-existent-id');
574
+ expect(node).toBeUndefined();
575
+ });
576
+ it('should handle getStats on complex tree', async () => {
577
+ let ChildWorkflow = (() => {
578
+ let _classSuper = Workflow;
579
+ let _instanceExtraInitializers = [];
580
+ let _step_decorators;
581
+ return class ChildWorkflow extends _classSuper {
582
+ static {
583
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
584
+ _step_decorators = [Step()];
585
+ __esDecorate(this, null, _step_decorators, { kind: "method", name: "step", static: false, private: false, access: { has: obj => "step" in obj, get: obj => obj.step }, metadata: _metadata }, null, _instanceExtraInitializers);
586
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
587
+ }
588
+ async step() {
589
+ this.logger.info('Child log');
590
+ return 'done';
591
+ }
592
+ async run() {
593
+ return this.step();
594
+ }
595
+ constructor() {
596
+ super(...arguments);
597
+ __runInitializers(this, _instanceExtraInitializers);
598
+ }
599
+ };
600
+ })();
601
+ let ParentWorkflow = (() => {
602
+ let _classSuper = Workflow;
603
+ let _instanceExtraInitializers = [];
604
+ let _spawnChildren_decorators;
605
+ return class ParentWorkflow extends _classSuper {
606
+ static {
607
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
608
+ _spawnChildren_decorators = [Task({ concurrent: true })];
609
+ __esDecorate(this, null, _spawnChildren_decorators, { kind: "method", name: "spawnChildren", static: false, private: false, access: { has: obj => "spawnChildren" in obj, get: obj => obj.spawnChildren }, metadata: _metadata }, null, _instanceExtraInitializers);
610
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
611
+ }
612
+ async spawnChildren() {
613
+ return [
614
+ new ChildWorkflow('Child1', this),
615
+ new ChildWorkflow('Child2', this),
616
+ new ChildWorkflow('Child3', this),
617
+ ];
618
+ }
619
+ async run() {
620
+ await this.spawnChildren();
621
+ await Promise.all(this.children.map(c => c.run()));
622
+ }
623
+ constructor() {
624
+ super(...arguments);
625
+ __runInitializers(this, _instanceExtraInitializers);
626
+ }
627
+ };
628
+ })();
629
+ const workflow = new ParentWorkflow();
630
+ await workflow.run();
631
+ const debuggerInstance = new WorkflowTreeDebugger(workflow);
632
+ const stats = debuggerInstance.getStats();
633
+ expect(stats.totalNodes).toBe(4); // 1 parent + 3 children
634
+ expect(stats.totalLogs).toBeGreaterThan(0);
635
+ expect(stats.totalEvents).toBeGreaterThan(0);
636
+ expect(stats.byStatus).toBeDefined();
637
+ });
638
+ });
639
+ describe('Event Propagation Edge Cases', () => {
640
+ it('should handle events emitted during observer callback', async () => {
641
+ class TestWorkflow extends Workflow {
642
+ async run() {
643
+ let callCount = 0;
644
+ this.addObserver({
645
+ onLog: () => { },
646
+ onEvent: () => {
647
+ callCount++;
648
+ // Emit another event during callback
649
+ if (callCount === 1) {
650
+ this.emitEvent({ type: 'stepStart', node: this.node, step: 'nested' });
651
+ }
652
+ },
653
+ onStateUpdated: () => { },
654
+ onTreeChanged: () => { },
655
+ });
656
+ this.emitEvent({ type: 'stepStart', node: this.node, step: 'initial' });
657
+ expect(callCount).toBeGreaterThanOrEqual(1);
658
+ }
659
+ }
660
+ const workflow = new TestWorkflow();
661
+ await workflow.run();
662
+ });
663
+ it('should handle multiple observers with different behaviors', async () => {
664
+ class TestWorkflow extends Workflow {
665
+ async run() {
666
+ const results = {};
667
+ this.addObserver({
668
+ onLog: () => { results.observer1 = (results.observer1 || 0) + 1; },
669
+ onEvent: () => { results.observer1 = (results.observer1 || 0) + 1; },
670
+ onStateUpdated: () => { },
671
+ onTreeChanged: () => { },
672
+ });
673
+ this.addObserver({
674
+ onLog: () => { results.observer2 = (results.observer2 || 0) + 1; },
675
+ onEvent: () => { results.observer2 = (results.observer2 || 0) + 1; },
676
+ onStateUpdated: () => { },
677
+ onTreeChanged: () => { },
678
+ });
679
+ this.emitEvent({ type: 'stepStart', node: this.node, step: 'test' });
680
+ expect(results.observer1).toBeGreaterThan(0);
681
+ expect(results.observer2).toBeGreaterThan(0);
682
+ }
683
+ }
684
+ const workflow = new TestWorkflow();
685
+ await workflow.run();
686
+ });
687
+ });
688
+ describe('State Transition Edge Cases', () => {
689
+ it('should handle status changes during execution', async () => {
690
+ class TestWorkflow extends Workflow {
691
+ async run() {
692
+ expect(this.status).toBe('idle');
693
+ this.setStatus('running');
694
+ expect(this.status).toBe('running');
695
+ this.setStatus('completed');
696
+ expect(this.status).toBe('completed');
697
+ }
698
+ }
699
+ const workflow = new TestWorkflow();
700
+ await workflow.run();
701
+ });
702
+ it('should handle invalid status values', async () => {
703
+ class TestWorkflow extends Workflow {
704
+ async run() {
705
+ // TypeScript should prevent this at compile time, but let's test runtime
706
+ this.setStatus('invalid');
707
+ // Status should be set (no validation at runtime)
708
+ expect(this.status).toBe('invalid');
709
+ }
710
+ }
711
+ const workflow = new TestWorkflow();
712
+ await workflow.run();
713
+ });
714
+ });
715
+ describe('Child Attachment Edge Cases', () => {
716
+ it('should prevent attaching the same child twice', async () => {
717
+ class ChildWorkflow extends Workflow {
718
+ async run() {
719
+ return 'done';
720
+ }
721
+ }
722
+ class ParentWorkflow extends Workflow {
723
+ async run() {
724
+ const child = new ChildWorkflow('Child', this);
725
+ // Try to attach again
726
+ expect(() => {
727
+ this.attachChild(child);
728
+ }).toThrow('Child already attached');
729
+ }
730
+ }
731
+ const workflow = new ParentWorkflow();
732
+ await workflow.run();
733
+ });
734
+ it('should handle child with parent set in constructor', async () => {
735
+ class ChildWorkflow extends Workflow {
736
+ async run() {
737
+ return 'done';
738
+ }
739
+ }
740
+ class ParentWorkflow extends Workflow {
741
+ async run() {
742
+ const child = new ChildWorkflow('Child', this);
743
+ // Child should already be attached
744
+ expect(this.children.length).toBe(1);
745
+ expect(this.children[0]).toBe(child);
746
+ }
747
+ }
748
+ const workflow = new ParentWorkflow();
749
+ await workflow.run();
750
+ });
751
+ });
752
+ describe('Memory and Resource Edge Cases', () => {
753
+ it('should handle rapid workflow creation and destruction', async () => {
754
+ class TestWorkflow extends Workflow {
755
+ async run() {
756
+ return 'done';
757
+ }
758
+ }
759
+ for (let i = 0; i < 100; i++) {
760
+ const workflow = new TestWorkflow(`Workflow-${i}`);
761
+ await workflow.run();
762
+ }
763
+ // If we got here without crashing, memory management is reasonable
764
+ expect(true).toBe(true);
765
+ });
766
+ it('should handle many observers on single workflow', async () => {
767
+ class TestWorkflow extends Workflow {
768
+ async run() {
769
+ this.emitEvent({ type: 'stepStart', node: this.node, step: 'test' });
770
+ }
771
+ }
772
+ const workflow = new TestWorkflow();
773
+ // Add 100 observers
774
+ for (let i = 0; i < 100; i++) {
775
+ workflow.addObserver({
776
+ onLog: () => { },
777
+ onEvent: () => { },
778
+ onStateUpdated: () => { },
779
+ onTreeChanged: () => { },
780
+ });
781
+ }
782
+ await workflow.run();
783
+ // Should complete without issues
784
+ expect(true).toBe(true);
785
+ });
786
+ });
787
+ describe('Error Recovery Edge Cases', () => {
788
+ it('should handle error in @Step followed by another @Step', async () => {
789
+ let TestWorkflow = (() => {
790
+ let _classSuper = Workflow;
791
+ let _instanceExtraInitializers = [];
792
+ let _failingStep_decorators;
793
+ let _successStep_decorators;
794
+ return class TestWorkflow extends _classSuper {
795
+ static {
796
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
797
+ _failingStep_decorators = [Step()];
798
+ _successStep_decorators = [Step()];
799
+ __esDecorate(this, null, _failingStep_decorators, { kind: "method", name: "failingStep", static: false, private: false, access: { has: obj => "failingStep" in obj, get: obj => obj.failingStep }, metadata: _metadata }, null, _instanceExtraInitializers);
800
+ __esDecorate(this, null, _successStep_decorators, { kind: "method", name: "successStep", static: false, private: false, access: { has: obj => "successStep" in obj, get: obj => obj.successStep }, metadata: _metadata }, null, _instanceExtraInitializers);
801
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
802
+ }
803
+ async failingStep() {
804
+ throw new Error('Failed');
805
+ }
806
+ async successStep() {
807
+ return 'success';
808
+ }
809
+ async run() {
810
+ try {
811
+ await this.failingStep();
812
+ }
813
+ catch (err) {
814
+ // Expected
815
+ }
816
+ return await this.successStep();
817
+ }
818
+ constructor() {
819
+ super(...arguments);
820
+ __runInitializers(this, _instanceExtraInitializers);
821
+ }
822
+ };
823
+ })();
824
+ const workflow = new TestWorkflow();
825
+ const result = await workflow.run();
826
+ expect(result).toBe('success');
827
+ });
828
+ it('should handle multiple sequential errors', async () => {
829
+ let TestWorkflow = (() => {
830
+ let _classSuper = Workflow;
831
+ let _instanceExtraInitializers = [];
832
+ let _errorStep1_decorators;
833
+ let _errorStep2_decorators;
834
+ return class TestWorkflow extends _classSuper {
835
+ static {
836
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
837
+ _errorStep1_decorators = [Step()];
838
+ _errorStep2_decorators = [Step()];
839
+ __esDecorate(this, null, _errorStep1_decorators, { kind: "method", name: "errorStep1", static: false, private: false, access: { has: obj => "errorStep1" in obj, get: obj => obj.errorStep1 }, metadata: _metadata }, null, _instanceExtraInitializers);
840
+ __esDecorate(this, null, _errorStep2_decorators, { kind: "method", name: "errorStep2", static: false, private: false, access: { has: obj => "errorStep2" in obj, get: obj => obj.errorStep2 }, metadata: _metadata }, null, _instanceExtraInitializers);
841
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
842
+ }
843
+ async errorStep1() {
844
+ throw new Error('Error 1');
845
+ }
846
+ async errorStep2() {
847
+ throw new Error('Error 2');
848
+ }
849
+ async run() {
850
+ try {
851
+ await this.errorStep1();
852
+ }
853
+ catch (err) {
854
+ // Expected
855
+ }
856
+ try {
857
+ await this.errorStep2();
858
+ }
859
+ catch (err) {
860
+ // Expected
861
+ }
862
+ }
863
+ constructor() {
864
+ super(...arguments);
865
+ __runInitializers(this, _instanceExtraInitializers);
866
+ }
867
+ };
868
+ })();
869
+ const workflow = new TestWorkflow();
870
+ await workflow.run();
871
+ // Should have multiple error events
872
+ const errorEvents = workflow.node.events.filter(e => e.type === 'error');
873
+ expect(errorEvents.length).toBe(2);
874
+ });
875
+ });
876
+ });
877
+ //# sourceMappingURL=deep-analysis.test.js.map