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
package/src/core/agent.ts DELETED
@@ -1,573 +0,0 @@
1
- /**
2
- * Agent - Lightweight wrapper around Anthropic's Agent SDK
3
- *
4
- * Agents execute prompts and manage tool invocation cycles.
5
- * All configuration properties map 1:1 to Anthropic SDK.
6
- */
7
-
8
- import Anthropic from '@anthropic-ai/sdk';
9
- import type {
10
- AgentConfig,
11
- PromptOverrides,
12
- Tool,
13
- AgentHooks,
14
- TokenUsage,
15
- PreToolUseContext,
16
- PostToolUseContext,
17
- SessionStartContext,
18
- SessionEndContext,
19
- WorkflowEvent,
20
- } from '../types/index.js';
21
- import type { Prompt } from './prompt.js';
22
- import { MCPHandler } from './mcp-handler.js';
23
- import { generateId } from '../utils/id.js';
24
- import { getExecutionContext } from './context.js';
25
- import { generateCacheKey, defaultCache } from '../cache/index.js';
26
- import type { CacheKeyInputs } from '../cache/index.js';
27
-
28
- /**
29
- * Result from a prompt execution including metadata
30
- */
31
- export interface PromptResult<T> {
32
- /** Validated response data */
33
- data: T;
34
- /** Token usage from the API */
35
- usage: TokenUsage;
36
- /** Total duration in milliseconds */
37
- duration: number;
38
- /** Number of tool invocations */
39
- toolCalls: number;
40
- }
41
-
42
- /**
43
- * Internal message type for conversation history
44
- */
45
- type Message = Anthropic.MessageParam;
46
-
47
- /**
48
- * Agent class - executes prompts via Anthropic SDK
49
- */
50
- export class Agent {
51
- /** Unique identifier for this agent instance */
52
- public readonly id: string;
53
-
54
- /** Agent name */
55
- public readonly name: string;
56
-
57
- /** Stored configuration */
58
- private readonly config: AgentConfig;
59
-
60
- /** Anthropic client instance */
61
- private readonly client: Anthropic;
62
-
63
- /** MCP handler for tool management */
64
- private readonly mcpHandler: MCPHandler;
65
-
66
- /** Default model to use */
67
- private readonly model: string;
68
-
69
- /**
70
- * Create a new Agent instance
71
- * @param config Agent configuration
72
- */
73
- constructor(config: AgentConfig = {}) {
74
- this.id = generateId();
75
- this.name = config.name ?? 'Agent';
76
- this.config = config;
77
- this.model = config.model ?? 'claude-sonnet-4-20250514';
78
-
79
- // Create Anthropic client
80
- this.client = new Anthropic({
81
- apiKey: process.env.ANTHROPIC_API_KEY,
82
- });
83
-
84
- // Initialize MCP handler
85
- this.mcpHandler = new MCPHandler();
86
-
87
- // Register MCP servers
88
- if (config.mcps) {
89
- for (const mcp of config.mcps) {
90
- this.mcpHandler.registerServer(mcp);
91
- }
92
- }
93
- }
94
-
95
- /**
96
- * Execute a prompt and return validated response
97
- * @param prompt Prompt to execute
98
- * @param overrides Optional overrides for this execution
99
- * @returns Validated response of type T
100
- */
101
- public async prompt<T>(
102
- prompt: Prompt<T>,
103
- overrides?: PromptOverrides
104
- ): Promise<T> {
105
- const result = await this.executePrompt(prompt, overrides);
106
- return result.data;
107
- }
108
-
109
- /**
110
- * Execute a prompt with full result metadata
111
- * @param prompt Prompt to execute
112
- * @param overrides Optional overrides for this execution
113
- * @returns Full result including metadata
114
- */
115
- public async promptWithMetadata<T>(
116
- prompt: Prompt<T>,
117
- overrides?: PromptOverrides
118
- ): Promise<PromptResult<T>> {
119
- return this.executePrompt(prompt, overrides);
120
- }
121
-
122
- /**
123
- * Execute a prompt with reflection capabilities
124
- * @param prompt Prompt to execute
125
- * @param overrides Optional overrides for this execution
126
- * @returns Validated response of type T
127
- */
128
- public async reflect<T>(
129
- prompt: Prompt<T>,
130
- overrides?: PromptOverrides
131
- ): Promise<T> {
132
- // Add reflection system prefix if reflection is enabled
133
- const reflectionEnabled =
134
- prompt.enableReflection ??
135
- overrides?.enableReflection ??
136
- this.config.enableReflection;
137
-
138
- const systemPrefix = reflectionEnabled
139
- ? 'Before answering, reflect on your reasoning step by step. Consider alternative approaches and potential errors. Then provide your final answer.\n\n'
140
- : '';
141
-
142
- const effectiveOverrides: PromptOverrides = {
143
- ...overrides,
144
- system:
145
- systemPrefix +
146
- (prompt.systemOverride ?? overrides?.system ?? this.config.system ?? ''),
147
- };
148
-
149
- const result = await this.executePrompt(prompt, effectiveOverrides);
150
- return result.data;
151
- }
152
-
153
- /**
154
- * Get the MCP handler for custom tool registration
155
- */
156
- public getMcpHandler(): MCPHandler {
157
- return this.mcpHandler;
158
- }
159
-
160
- /**
161
- * Emit an event if within workflow context
162
- */
163
- private emitWorkflowEvent(event: WorkflowEvent): void {
164
- const ctx = getExecutionContext();
165
- if (ctx) {
166
- ctx.emitEvent(event);
167
- }
168
- }
169
-
170
- /**
171
- * Internal prompt execution with full flow
172
- */
173
- private async executePrompt<T>(
174
- prompt: Prompt<T>,
175
- overrides?: PromptOverrides
176
- ): Promise<PromptResult<T>> {
177
- const startTime = Date.now();
178
- let toolCallCount = 0;
179
- let totalUsage: TokenUsage = { input_tokens: 0, output_tokens: 0 };
180
-
181
- // Get execution context for event emission
182
- const ctx = getExecutionContext();
183
-
184
- // Merge configuration: Prompt > Overrides > Config
185
- const effectiveSystem =
186
- prompt.systemOverride ?? overrides?.system ?? this.config.system;
187
-
188
- const effectiveModel = overrides?.model ?? this.model;
189
- const effectiveMaxTokens = overrides?.maxTokens ?? this.config.maxTokens ?? 4096;
190
- const effectiveTemperature =
191
- overrides?.temperature ?? this.config.temperature;
192
-
193
- // Check cache if enabled
194
- const cacheEnabled = this.config.enableCache && !overrides?.disableCache;
195
- let cacheKey: string | undefined;
196
-
197
- if (cacheEnabled) {
198
- const cacheInputs: CacheKeyInputs = {
199
- user: prompt.buildUserMessage(),
200
- data: prompt.getData(),
201
- system: effectiveSystem,
202
- model: effectiveModel,
203
- temperature: effectiveTemperature,
204
- maxTokens: effectiveMaxTokens,
205
- tools: this.config.tools,
206
- mcps: this.config.mcps,
207
- skills: this.config.skills,
208
- responseFormat: prompt.getResponseFormat(),
209
- };
210
- cacheKey = generateCacheKey(cacheInputs);
211
-
212
- const cached = await defaultCache.get(cacheKey) as PromptResult<T> | undefined;
213
- if (cached) {
214
- // Emit cache hit event
215
- if (ctx) {
216
- this.emitWorkflowEvent({
217
- type: 'cacheHit',
218
- key: cacheKey,
219
- node: ctx.workflowNode,
220
- });
221
- }
222
- return cached;
223
- }
224
-
225
- // Emit cache miss event
226
- if (ctx) {
227
- this.emitWorkflowEvent({
228
- type: 'cacheMiss',
229
- key: cacheKey,
230
- node: ctx.workflowNode,
231
- });
232
- }
233
- }
234
-
235
- // Emit prompt start event if in workflow context
236
- if (ctx) {
237
- this.emitWorkflowEvent({
238
- type: 'agentPromptStart',
239
- agentId: this.id,
240
- agentName: this.name,
241
- promptId: prompt.id,
242
- node: ctx.workflowNode,
243
- });
244
- }
245
-
246
- const effectiveTools = this.mergeTools(
247
- prompt.toolsOverride ?? overrides?.tools ?? this.config.tools
248
- );
249
-
250
- const effectiveHooks = this.mergeHooks(
251
- prompt.hooksOverride,
252
- overrides?.hooks,
253
- this.config.hooks
254
- );
255
-
256
- const effectiveStop = overrides?.stop;
257
-
258
- // Set up environment variables
259
- const originalEnv = this.setupEnvironment(overrides?.env ?? this.config.env);
260
-
261
- try {
262
- // Call session start hooks
263
- await this.callHooks(effectiveHooks?.sessionStart, {
264
- agentId: this.id,
265
- agentName: this.name,
266
- } as SessionStartContext);
267
-
268
- // Build initial messages
269
- const messages: Message[] = [
270
- { role: 'user', content: prompt.buildUserMessage() },
271
- ];
272
-
273
- // Execute conversation loop
274
- let response = await this.callApi(
275
- messages,
276
- effectiveSystem,
277
- effectiveTools,
278
- effectiveModel,
279
- effectiveMaxTokens,
280
- effectiveTemperature,
281
- effectiveStop
282
- );
283
-
284
- totalUsage = this.addUsage(totalUsage, response.usage);
285
-
286
- // Handle tool use loop
287
- while (response.stop_reason === 'tool_use') {
288
- const toolUseBlocks = response.content.filter(
289
- (block): block is Anthropic.ToolUseBlock => block.type === 'tool_use'
290
- );
291
-
292
- const toolResults: Anthropic.ToolResultBlockParam[] = [];
293
-
294
- for (const toolUse of toolUseBlocks) {
295
- toolCallCount++;
296
-
297
- // Call pre-tool hooks
298
- await this.callHooks(effectiveHooks?.preToolUse, {
299
- toolName: toolUse.name,
300
- toolInput: toolUse.input,
301
- agentId: this.id,
302
- } as PreToolUseContext);
303
-
304
- const toolStartTime = Date.now();
305
-
306
- // Execute tool
307
- const result = await this.executeTool(toolUse.name, toolUse.input);
308
-
309
- const toolDuration = Date.now() - toolStartTime;
310
-
311
- // Emit tool invocation event if in workflow context
312
- if (ctx) {
313
- this.emitWorkflowEvent({
314
- type: 'toolInvocation',
315
- toolName: toolUse.name,
316
- input: toolUse.input,
317
- output: result,
318
- duration: toolDuration,
319
- node: ctx.workflowNode,
320
- });
321
- }
322
-
323
- // Call post-tool hooks
324
- await this.callHooks(effectiveHooks?.postToolUse, {
325
- toolName: toolUse.name,
326
- toolInput: toolUse.input,
327
- toolOutput: result,
328
- agentId: this.id,
329
- duration: toolDuration,
330
- } as PostToolUseContext);
331
-
332
- toolResults.push({
333
- type: 'tool_result',
334
- tool_use_id: toolUse.id,
335
- content:
336
- typeof result === 'string' ? result : JSON.stringify(result),
337
- });
338
- }
339
-
340
- // Add assistant message with tool uses
341
- messages.push({ role: 'assistant', content: response.content });
342
-
343
- // Add tool results
344
- messages.push({ role: 'user', content: toolResults });
345
-
346
- // Continue conversation
347
- response = await this.callApi(
348
- messages,
349
- effectiveSystem,
350
- effectiveTools,
351
- effectiveModel,
352
- effectiveMaxTokens,
353
- effectiveTemperature,
354
- effectiveStop
355
- );
356
-
357
- totalUsage = this.addUsage(totalUsage, response.usage);
358
- }
359
-
360
- // Extract text response
361
- const textContent = response.content.find(
362
- (block): block is Anthropic.TextBlock => block.type === 'text'
363
- );
364
-
365
- if (!textContent) {
366
- throw new Error('No text response received from API');
367
- }
368
-
369
- // Parse JSON from response
370
- const jsonMatch = textContent.text.match(/\{[\s\S]*\}/);
371
- if (!jsonMatch) {
372
- throw new Error('No JSON object found in response');
373
- }
374
-
375
- const parsed = JSON.parse(jsonMatch[0]);
376
-
377
- // Validate with schema
378
- const validated = prompt.validateResponse(parsed);
379
-
380
- // Call session end hooks
381
- await this.callHooks(effectiveHooks?.sessionEnd, {
382
- agentId: this.id,
383
- agentName: this.name,
384
- totalDuration: Date.now() - startTime,
385
- } as SessionEndContext);
386
-
387
- const duration = Date.now() - startTime;
388
-
389
- // Emit prompt end event if in workflow context
390
- if (ctx) {
391
- this.emitWorkflowEvent({
392
- type: 'agentPromptEnd',
393
- agentId: this.id,
394
- agentName: this.name,
395
- promptId: prompt.id,
396
- node: ctx.workflowNode,
397
- duration,
398
- tokenUsage: totalUsage,
399
- });
400
- }
401
-
402
- const result: PromptResult<T> = {
403
- data: validated,
404
- usage: totalUsage,
405
- duration,
406
- toolCalls: toolCallCount,
407
- };
408
-
409
- // Store in cache if enabled
410
- if (cacheEnabled && cacheKey) {
411
- await defaultCache.set(cacheKey, result, { prefix: this.id });
412
- }
413
-
414
- return result;
415
- } finally {
416
- // Restore environment
417
- this.restoreEnvironment(originalEnv);
418
- }
419
- }
420
-
421
- /**
422
- * Call the Anthropic API
423
- */
424
- private async callApi(
425
- messages: Message[],
426
- system: string | undefined,
427
- tools: Tool[] | undefined,
428
- model: string,
429
- maxTokens: number,
430
- temperature: number | undefined,
431
- stop: string[] | undefined
432
- ): Promise<Anthropic.Message> {
433
- const params: Anthropic.MessageCreateParams = {
434
- model,
435
- max_tokens: maxTokens,
436
- messages,
437
- };
438
-
439
- if (system) {
440
- params.system = system;
441
- }
442
-
443
- if (tools && tools.length > 0) {
444
- params.tools = tools.map((tool) => ({
445
- name: tool.name,
446
- description: tool.description,
447
- input_schema: tool.input_schema as Anthropic.Tool['input_schema'],
448
- }));
449
- }
450
-
451
- if (temperature !== undefined) {
452
- params.temperature = temperature;
453
- }
454
-
455
- if (stop && stop.length > 0) {
456
- params.stop_sequences = stop;
457
- }
458
-
459
- return this.client.messages.create(params);
460
- }
461
-
462
- /**
463
- * Execute a tool (either direct or via MCP)
464
- */
465
- private async executeTool(name: string, input: unknown): Promise<unknown> {
466
- // Check if it's an MCP tool
467
- if (this.mcpHandler.hasTool(name)) {
468
- const result = await this.mcpHandler.executeTool(name, input);
469
- if (result.is_error) {
470
- throw new Error(result.content as string);
471
- }
472
- return result.content;
473
- }
474
-
475
- // Look for direct tool handler - this would be set by subclasses
476
- throw new Error(`No handler found for tool '${name}'`);
477
- }
478
-
479
- /**
480
- * Merge tools from config and MCP servers
481
- */
482
- private mergeTools(configTools?: Tool[]): Tool[] | undefined {
483
- const mcpTools = this.mcpHandler.getTools();
484
- const directTools = configTools ?? [];
485
-
486
- const allTools = [...directTools, ...mcpTools];
487
- return allTools.length > 0 ? allTools : undefined;
488
- }
489
-
490
- /**
491
- * Merge hooks from multiple sources
492
- */
493
- private mergeHooks(
494
- promptHooks?: AgentHooks,
495
- overrideHooks?: AgentHooks,
496
- configHooks?: AgentHooks
497
- ): AgentHooks {
498
- return {
499
- preToolUse: [
500
- ...(configHooks?.preToolUse ?? []),
501
- ...(overrideHooks?.preToolUse ?? []),
502
- ...(promptHooks?.preToolUse ?? []),
503
- ],
504
- postToolUse: [
505
- ...(configHooks?.postToolUse ?? []),
506
- ...(overrideHooks?.postToolUse ?? []),
507
- ...(promptHooks?.postToolUse ?? []),
508
- ],
509
- sessionStart: [
510
- ...(configHooks?.sessionStart ?? []),
511
- ...(overrideHooks?.sessionStart ?? []),
512
- ...(promptHooks?.sessionStart ?? []),
513
- ],
514
- sessionEnd: [
515
- ...(configHooks?.sessionEnd ?? []),
516
- ...(overrideHooks?.sessionEnd ?? []),
517
- ...(promptHooks?.sessionEnd ?? []),
518
- ],
519
- };
520
- }
521
-
522
- /**
523
- * Call hooks of a specific type
524
- */
525
- private async callHooks<T>(
526
- hooks: ((context: T) => Promise<void> | void)[] | undefined,
527
- context: T
528
- ): Promise<void> {
529
- if (!hooks) return;
530
- for (const hook of hooks) {
531
- await hook(context);
532
- }
533
- }
534
-
535
- /**
536
- * Set up environment variables
537
- */
538
- private setupEnvironment(
539
- env?: Record<string, string>
540
- ): Record<string, string | undefined> {
541
- if (!env) return {};
542
-
543
- const original: Record<string, string | undefined> = {};
544
- for (const [key, value] of Object.entries(env)) {
545
- original[key] = process.env[key];
546
- process.env[key] = value;
547
- }
548
- return original;
549
- }
550
-
551
- /**
552
- * Restore environment variables
553
- */
554
- private restoreEnvironment(original: Record<string, string | undefined>): void {
555
- for (const [key, value] of Object.entries(original)) {
556
- if (value === undefined) {
557
- delete process.env[key];
558
- } else {
559
- process.env[key] = value;
560
- }
561
- }
562
- }
563
-
564
- /**
565
- * Add token usage from response
566
- */
567
- private addUsage(total: TokenUsage, usage: Anthropic.Usage): TokenUsage {
568
- return {
569
- input_tokens: total.input_tokens + usage.input_tokens,
570
- output_tokens: total.output_tokens + usage.output_tokens,
571
- };
572
- }
573
- }