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
@@ -1,667 +0,0 @@
1
- /**
2
- * Example 8: SDK Features Integration
3
- *
4
- * Demonstrates:
5
- * - Custom tool definitions with handlers
6
- * - MCP server configuration (inprocess)
7
- * - Pre/Post tool hooks for logging and validation
8
- * - Skills integration with system prompt content
9
- * - Environment variable pass-through
10
- */
11
-
12
- import { z } from 'zod';
13
- import {
14
- Workflow,
15
- Step,
16
- ObservedState,
17
- WorkflowTreeDebugger,
18
- MCPHandler,
19
- } from 'groundswell';
20
- import type {
21
- Tool,
22
- AgentHooks,
23
- PreToolUseContext,
24
- PostToolUseContext,
25
- SessionStartContext,
26
- SessionEndContext,
27
- } from 'groundswell';
28
- import { printHeader, printSection, sleep } from '../utils/helpers.js';
29
-
30
- // ============================================================================
31
- // Custom Tool Definitions
32
- // ============================================================================
33
-
34
- /**
35
- * Calculator tool - performs basic arithmetic
36
- */
37
- const calculatorTool: Tool = {
38
- name: 'calculate',
39
- description: 'Performs basic arithmetic operations (add, subtract, multiply, divide)',
40
- input_schema: {
41
- type: 'object' as const,
42
- properties: {
43
- operation: {
44
- type: 'string',
45
- enum: ['add', 'subtract', 'multiply', 'divide'],
46
- description: 'The arithmetic operation to perform',
47
- },
48
- a: {
49
- type: 'number',
50
- description: 'The first operand',
51
- },
52
- b: {
53
- type: 'number',
54
- description: 'The second operand',
55
- },
56
- },
57
- required: ['operation', 'a', 'b'],
58
- },
59
- };
60
-
61
- /**
62
- * Weather tool - simulates weather lookup
63
- */
64
- const weatherTool: Tool = {
65
- name: 'get_weather',
66
- description: 'Gets current weather for a location',
67
- input_schema: {
68
- type: 'object' as const,
69
- properties: {
70
- location: {
71
- type: 'string',
72
- description: 'City name or location',
73
- },
74
- units: {
75
- type: 'string',
76
- enum: ['celsius', 'fahrenheit'],
77
- description: 'Temperature units',
78
- },
79
- },
80
- required: ['location'],
81
- },
82
- };
83
-
84
- /**
85
- * Database tool - simulates database queries
86
- */
87
- const databaseTool: Tool = {
88
- name: 'query_database',
89
- description: 'Executes a database query and returns results',
90
- input_schema: {
91
- type: 'object' as const,
92
- properties: {
93
- table: {
94
- type: 'string',
95
- description: 'Table name to query',
96
- },
97
- filter: {
98
- type: 'object',
99
- description: 'Filter conditions',
100
- },
101
- limit: {
102
- type: 'number',
103
- description: 'Maximum results to return',
104
- },
105
- },
106
- required: ['table'],
107
- },
108
- };
109
-
110
- // ============================================================================
111
- // Tool Handlers
112
- // ============================================================================
113
-
114
- interface CalculateInput {
115
- operation: 'add' | 'subtract' | 'multiply' | 'divide';
116
- a: number;
117
- b: number;
118
- }
119
-
120
- interface WeatherInput {
121
- location: string;
122
- units?: 'celsius' | 'fahrenheit';
123
- }
124
-
125
- interface DatabaseInput {
126
- table: string;
127
- filter?: Record<string, unknown>;
128
- limit?: number;
129
- }
130
-
131
- /**
132
- * Handle calculator operations
133
- */
134
- async function handleCalculate(input: CalculateInput): Promise<{ result: number; expression: string }> {
135
- await sleep(50); // Simulate processing time
136
-
137
- let result: number;
138
- let expression: string;
139
-
140
- switch (input.operation) {
141
- case 'add':
142
- result = input.a + input.b;
143
- expression = `${input.a} + ${input.b} = ${result}`;
144
- break;
145
- case 'subtract':
146
- result = input.a - input.b;
147
- expression = `${input.a} - ${input.b} = ${result}`;
148
- break;
149
- case 'multiply':
150
- result = input.a * input.b;
151
- expression = `${input.a} × ${input.b} = ${result}`;
152
- break;
153
- case 'divide':
154
- if (input.b === 0) throw new Error('Division by zero');
155
- result = input.a / input.b;
156
- expression = `${input.a} ÷ ${input.b} = ${result}`;
157
- break;
158
- }
159
-
160
- return { result, expression };
161
- }
162
-
163
- /**
164
- * Handle weather lookup (simulated)
165
- */
166
- async function handleWeather(input: WeatherInput): Promise<{
167
- location: string;
168
- temperature: number;
169
- units: string;
170
- conditions: string;
171
- }> {
172
- await sleep(100); // Simulate API call
173
-
174
- const weatherData: Record<string, { temp: number; conditions: string }> = {
175
- 'new york': { temp: 72, conditions: 'Partly cloudy' },
176
- london: { temp: 58, conditions: 'Rainy' },
177
- tokyo: { temp: 85, conditions: 'Sunny' },
178
- sydney: { temp: 68, conditions: 'Clear' },
179
- };
180
-
181
- const locationKey = input.location.toLowerCase();
182
- const data = weatherData[locationKey] ?? { temp: 70, conditions: 'Unknown' };
183
-
184
- const temp =
185
- input.units === 'celsius' ? Math.round((data.temp - 32) * (5 / 9)) : data.temp;
186
-
187
- return {
188
- location: input.location,
189
- temperature: temp,
190
- units: input.units ?? 'fahrenheit',
191
- conditions: data.conditions,
192
- };
193
- }
194
-
195
- /**
196
- * Handle database queries (simulated)
197
- */
198
- async function handleDatabase(input: DatabaseInput): Promise<{
199
- table: string;
200
- rowCount: number;
201
- results: Array<Record<string, unknown>>;
202
- }> {
203
- await sleep(75); // Simulate query time
204
-
205
- const mockData: Record<string, Array<Record<string, unknown>>> = {
206
- users: [
207
- { id: 1, name: 'Alice', role: 'admin' },
208
- { id: 2, name: 'Bob', role: 'user' },
209
- { id: 3, name: 'Charlie', role: 'user' },
210
- ],
211
- products: [
212
- { id: 1, name: 'Widget', price: 9.99 },
213
- { id: 2, name: 'Gadget', price: 19.99 },
214
- ],
215
- orders: [
216
- { id: 1, userId: 1, total: 29.98 },
217
- { id: 2, userId: 2, total: 9.99 },
218
- ],
219
- };
220
-
221
- const tableData = mockData[input.table] ?? [];
222
- const limit = input.limit ?? tableData.length;
223
- const results = tableData.slice(0, limit);
224
-
225
- return {
226
- table: input.table,
227
- rowCount: results.length,
228
- results,
229
- };
230
- }
231
-
232
- // ============================================================================
233
- // Lifecycle Hooks
234
- // ============================================================================
235
-
236
- /**
237
- * Create comprehensive agent hooks for logging and validation
238
- */
239
- function createLoggingHooks(): AgentHooks {
240
- const hookLogs: string[] = [];
241
-
242
- return {
243
- preToolUse: [
244
- async (ctx: PreToolUseContext): Promise<void> => {
245
- const log = `[PRE] Tool: ${ctx.toolName}, Input: ${JSON.stringify(ctx.toolInput)}`;
246
- hookLogs.push(log);
247
- console.log(` ${log}`);
248
- },
249
- async (ctx: PreToolUseContext): Promise<void> => {
250
- // Validation hook - could block execution if needed
251
- if (ctx.toolName === 'calculate') {
252
- const input = ctx.toolInput as CalculateInput;
253
- if (input.operation === 'divide' && input.b === 0) {
254
- console.log(' [PRE] WARNING: Division by zero detected');
255
- }
256
- }
257
- },
258
- ],
259
- postToolUse: [
260
- async (ctx: PostToolUseContext): Promise<void> => {
261
- const log = `[POST] Tool: ${ctx.toolName}, Duration: ${ctx.duration}ms`;
262
- hookLogs.push(log);
263
- console.log(` ${log}`);
264
- },
265
- async (ctx: PostToolUseContext): Promise<void> => {
266
- // Metrics collection hook
267
- const output = ctx.toolOutput as Record<string, unknown>;
268
- if (output.result !== undefined) {
269
- console.log(` [POST] Result: ${output.result}`);
270
- }
271
- },
272
- ],
273
- sessionStart: [
274
- async (ctx: SessionStartContext): Promise<void> => {
275
- console.log(` [SESSION] Started: Agent ${ctx.agentName} (${ctx.agentId})`);
276
- hookLogs.push(`Session started: ${ctx.agentName}`);
277
- },
278
- ],
279
- sessionEnd: [
280
- async (ctx: SessionEndContext): Promise<void> => {
281
- console.log(` [SESSION] Ended: Agent ${ctx.agentName}, Duration: ${ctx.totalDuration}ms`);
282
- hookLogs.push(`Session ended: ${ctx.agentName} (${ctx.totalDuration}ms)`);
283
- },
284
- ],
285
- };
286
- }
287
-
288
- // ============================================================================
289
- // Workflow Definitions
290
- // ============================================================================
291
-
292
- /**
293
- * Tool demonstration workflow
294
- */
295
- class ToolDemoWorkflow extends Workflow {
296
- @ObservedState()
297
- toolCalls: Array<{ tool: string; input: unknown; result: unknown }> = [];
298
-
299
- private mcpHandler: MCPHandler;
300
-
301
- constructor(name: string) {
302
- super(name);
303
- this.mcpHandler = new MCPHandler();
304
-
305
- // Register MCP server with tools (inprocess transport)
306
- this.mcpHandler.registerServer({
307
- name: 'demo',
308
- transport: 'inprocess',
309
- tools: [calculatorTool, weatherTool, databaseTool],
310
- });
311
-
312
- // Register tool executors
313
- this.mcpHandler.registerToolExecutor('demo', 'calculate', (input) =>
314
- handleCalculate(input as CalculateInput)
315
- );
316
- this.mcpHandler.registerToolExecutor('demo', 'get_weather', (input) =>
317
- handleWeather(input as WeatherInput)
318
- );
319
- this.mcpHandler.registerToolExecutor('demo', 'query_database', (input) =>
320
- handleDatabase(input as DatabaseInput)
321
- );
322
- }
323
-
324
- @Step({ trackTiming: true })
325
- async callTool(toolName: string, input: unknown): Promise<unknown> {
326
- this.logger.info(`Calling tool: ${toolName}`);
327
-
328
- // Use full tool name: serverName__toolName
329
- const fullName = `demo__${toolName}`;
330
- const result = await this.mcpHandler.executeTool(fullName, input);
331
-
332
- this.toolCalls.push({ tool: toolName, input, result: result.content });
333
- return result.content;
334
- }
335
-
336
- async run(): Promise<void> {
337
- this.setStatus('running');
338
- this.logger.info('Starting tool demonstration');
339
-
340
- // Demonstrate calculator tool
341
- await this.callTool('calculate', { operation: 'add', a: 10, b: 5 });
342
- await this.callTool('calculate', { operation: 'multiply', a: 7, b: 8 });
343
-
344
- // Demonstrate weather tool
345
- await this.callTool('get_weather', { location: 'Tokyo', units: 'celsius' });
346
- await this.callTool('get_weather', { location: 'London' });
347
-
348
- // Demonstrate database tool
349
- await this.callTool('query_database', { table: 'users', limit: 2 });
350
- await this.callTool('query_database', { table: 'products' });
351
-
352
- this.logger.info(`Total tool calls: ${this.toolCalls.length}`);
353
- this.setStatus('completed');
354
- }
355
- }
356
-
357
- /**
358
- * Hook demonstration workflow
359
- */
360
- class HookDemoWorkflow extends Workflow {
361
- @ObservedState()
362
- hookEvents: string[] = [];
363
-
364
- private mcpHandler: MCPHandler;
365
-
366
- constructor(name: string) {
367
- super(name);
368
- this.mcpHandler = new MCPHandler();
369
-
370
- // Register MCP server with calculator tool
371
- this.mcpHandler.registerServer({
372
- name: 'calc',
373
- transport: 'inprocess',
374
- tools: [calculatorTool],
375
- });
376
- this.mcpHandler.registerToolExecutor('calc', 'calculate', (input) =>
377
- handleCalculate(input as CalculateInput)
378
- );
379
- }
380
-
381
- @Step({ trackTiming: true, logStart: true, logFinish: true })
382
- async executeWithHooks(): Promise<void> {
383
- // Simulate hook execution flow
384
- this.hookEvents.push('preToolUse: calculate');
385
- const result = await handleCalculate({ operation: 'add', a: 100, b: 200 });
386
- this.hookEvents.push(`postToolUse: calculate (result=${result.result})`);
387
- }
388
-
389
- async run(): Promise<void> {
390
- this.setStatus('running');
391
- this.logger.info('Demonstrating lifecycle hooks');
392
-
393
- this.hookEvents.push('sessionStart');
394
- await this.executeWithHooks();
395
- this.hookEvents.push('sessionEnd');
396
-
397
- this.logger.info(`Hook events: ${this.hookEvents.length}`);
398
- this.setStatus('completed');
399
- }
400
- }
401
-
402
- /**
403
- * Skills demonstration workflow
404
- */
405
- class SkillsDemoWorkflow extends Workflow {
406
- @ObservedState()
407
- skillContent: string = '';
408
-
409
- @ObservedState()
410
- systemPrompt: string = '';
411
-
412
- constructor(name: string) {
413
- super(name);
414
- }
415
-
416
- @Step({ snapshotState: true })
417
- async loadSkill(): Promise<void> {
418
- // Simulate loading skill content from SKILL.md
419
- this.skillContent = `
420
- # Math Expert Skill
421
-
422
- You are an expert mathematician. You can:
423
- - Perform complex calculations
424
- - Explain mathematical concepts
425
- - Solve equations step by step
426
-
427
- ## Usage
428
- Ask me any math question and I'll provide a detailed solution.
429
- `.trim();
430
-
431
- this.logger.info('Loaded skill: Math Expert');
432
- }
433
-
434
- @Step({ snapshotState: true })
435
- async buildSystemPrompt(): Promise<void> {
436
- const baseSystem = 'You are a helpful assistant.';
437
-
438
- // Skills inject content into system prompt
439
- this.systemPrompt = `${baseSystem}
440
-
441
- ## Available Skills
442
-
443
- ${this.skillContent}
444
-
445
- ## Instructions
446
- Use the loaded skills to assist the user with their requests.`;
447
-
448
- this.logger.info('Built system prompt with skill content');
449
- }
450
-
451
- async run(): Promise<string> {
452
- this.setStatus('running');
453
- this.logger.info('Demonstrating skills integration');
454
-
455
- await this.loadSkill();
456
- await this.buildSystemPrompt();
457
-
458
- this.logger.info(`System prompt length: ${this.systemPrompt.length} chars`);
459
- this.setStatus('completed');
460
-
461
- return this.systemPrompt;
462
- }
463
- }
464
-
465
- /**
466
- * Environment variables demonstration workflow
467
- */
468
- class EnvVarsDemoWorkflow extends Workflow {
469
- @ObservedState()
470
- capturedEnvVars: Record<string, string> = {};
471
-
472
- @ObservedState({ redact: true })
473
- sensitiveVars: Record<string, string> = {};
474
-
475
- constructor(name: string) {
476
- super(name);
477
- }
478
-
479
- @Step({ snapshotState: true })
480
- async captureEnvironment(): Promise<void> {
481
- // Capture non-sensitive environment info
482
- this.capturedEnvVars = {
483
- NODE_ENV: process.env.NODE_ENV ?? 'development',
484
- PWD: process.env.PWD ?? '(unknown)',
485
- SHELL: process.env.SHELL ?? '(unknown)',
486
- };
487
-
488
- // Simulate sensitive vars (would be passed to agent)
489
- this.sensitiveVars = {
490
- API_KEY: 'demo-key-12345',
491
- DATABASE_URL: 'postgres://localhost:5432/demo',
492
- };
493
-
494
- this.logger.info('Captured environment variables');
495
- }
496
-
497
- @Step()
498
- async demonstratePassThrough(): Promise<void> {
499
- // In real usage, env vars are passed through to agent execution
500
- this.logger.info('Environment vars would be set during agent execution');
501
- this.logger.info(`Non-sensitive vars: ${Object.keys(this.capturedEnvVars).join(', ')}`);
502
- this.logger.info(`Sensitive vars (redacted): ${Object.keys(this.sensitiveVars).length} vars`);
503
- }
504
-
505
- async run(): Promise<void> {
506
- this.setStatus('running');
507
- this.logger.info('Demonstrating environment variable handling');
508
-
509
- await this.captureEnvironment();
510
- await this.demonstratePassThrough();
511
-
512
- this.setStatus('completed');
513
- }
514
- }
515
-
516
- // ============================================================================
517
- // Main Example Runner
518
- // ============================================================================
519
-
520
- /**
521
- * Run the SDK Features example
522
- */
523
- export async function runSDKFeaturesExample(): Promise<void> {
524
- printHeader('Example 8: SDK Features Integration');
525
-
526
- // Part 1: Custom Tool Definitions
527
- printSection('Part 1: Custom Tool Definitions & Handlers');
528
- {
529
- const workflow = new ToolDemoWorkflow('ToolDemo');
530
- const debugger_ = new WorkflowTreeDebugger(workflow);
531
-
532
- console.log('Registered tools:');
533
- console.log(' - calculate: Basic arithmetic operations');
534
- console.log(' - get_weather: Weather lookup (simulated)');
535
- console.log(' - query_database: Database queries (simulated)\n');
536
-
537
- await workflow.run();
538
-
539
- console.log('\nTool call results:');
540
- for (const call of workflow.toolCalls) {
541
- console.log(` ${call.tool}: ${JSON.stringify(call.result)}`);
542
- }
543
-
544
- console.log('\nTree:');
545
- console.log(debugger_.toTreeString());
546
- }
547
-
548
- // Part 2: MCP Server Integration
549
- printSection('Part 2: MCP Handler / In-Process Server');
550
- {
551
- console.log('MCP Handler features:');
552
- console.log(' - Register servers with tools (registerServer)');
553
- console.log(' - Register executors for inprocess tools (registerToolExecutor)');
554
- console.log(' - Execute tools by full name: serverName__toolName');
555
- console.log(' - Return structured ToolResult objects');
556
- console.log(' - Error handling with is_error flag\n');
557
-
558
- const mcpHandler = new MCPHandler();
559
-
560
- // Register server with tool
561
- const demoTool: Tool = {
562
- name: 'demo_tool',
563
- description: 'A demonstration tool',
564
- input_schema: {
565
- type: 'object' as const,
566
- properties: { test: { type: 'string' } },
567
- required: [],
568
- },
569
- };
570
-
571
- mcpHandler.registerServer({
572
- name: 'demo',
573
- transport: 'inprocess',
574
- tools: [demoTool],
575
- });
576
-
577
- mcpHandler.registerToolExecutor('demo', 'demo_tool', async (input: unknown) => ({
578
- status: 'success',
579
- input,
580
- }));
581
-
582
- const tools = mcpHandler.getTools();
583
- console.log(`Registered tools count: ${tools.length}`);
584
-
585
- // Execute using full name: serverName__toolName
586
- const result = await mcpHandler.executeTool('demo__demo_tool', { test: 'data' });
587
- console.log(`Execution result: ${JSON.stringify(result)}`);
588
- }
589
-
590
- // Part 3: Lifecycle Hooks
591
- printSection('Part 3: Lifecycle Hooks (Pre/Post Tool, Session)');
592
- {
593
- console.log('Hook types demonstrated:');
594
- console.log(' - preToolUse: Log input, validate parameters');
595
- console.log(' - postToolUse: Log duration, collect metrics');
596
- console.log(' - sessionStart: Initialize session context');
597
- console.log(' - sessionEnd: Cleanup, final metrics\n');
598
-
599
- const workflow = new HookDemoWorkflow('HookDemo');
600
- const debugger_ = new WorkflowTreeDebugger(workflow);
601
-
602
- await workflow.run();
603
-
604
- console.log('\nHook events captured:');
605
- for (const event of workflow.hookEvents) {
606
- console.log(` → ${event}`);
607
- }
608
-
609
- console.log('\nTree:');
610
- console.log(debugger_.toTreeString());
611
- }
612
-
613
- // Part 4: Skills Integration
614
- printSection('Part 4: Skills Integration');
615
- {
616
- console.log('Skills system:');
617
- console.log(' - Load SKILL.md content from skill directories');
618
- console.log(' - Inject skill content into system prompt');
619
- console.log(' - Multiple skills can be combined\n');
620
-
621
- const workflow = new SkillsDemoWorkflow('SkillsDemo');
622
- const debugger_ = new WorkflowTreeDebugger(workflow);
623
-
624
- const systemPrompt = await workflow.run();
625
-
626
- console.log('Generated system prompt preview:');
627
- console.log('─'.repeat(50));
628
- console.log(systemPrompt.slice(0, 300) + '...');
629
- console.log('─'.repeat(50));
630
-
631
- console.log('\nTree:');
632
- console.log(debugger_.toTreeString());
633
- }
634
-
635
- // Part 5: Environment Variables
636
- printSection('Part 5: Environment Variable Pass-Through');
637
- {
638
- console.log('Environment handling:');
639
- console.log(' - Pass env vars to agent execution context');
640
- console.log(' - Sensitive vars marked with @ObservedState({ redact: true })');
641
- console.log(' - Vars restored after execution\n');
642
-
643
- const workflow = new EnvVarsDemoWorkflow('EnvVarsDemo');
644
- const debugger_ = new WorkflowTreeDebugger(workflow);
645
-
646
- await workflow.run();
647
-
648
- console.log('\nCaptured environment:');
649
- for (const [key, value] of Object.entries(workflow.capturedEnvVars)) {
650
- console.log(` ${key}: ${value}`);
651
- }
652
-
653
- // Get state snapshot to show redaction
654
- const logs = debugger_.getAllLogs();
655
- console.log(`\nLog entries: ${logs.length}`);
656
-
657
- console.log('\nTree:');
658
- console.log(debugger_.toTreeString());
659
- }
660
-
661
- console.log('\n=== Example 8 Complete ===');
662
- }
663
-
664
- // Allow direct execution
665
- if (import.meta.url === `file://${process.argv[1]}`) {
666
- runSDKFeaturesExample().catch(console.error);
667
- }