@agentick/core 0.0.1

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 (626) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +875 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/.tsbuildinfo.build +1 -0
  5. package/dist/agent.d.ts +32 -0
  6. package/dist/agent.d.ts.map +1 -0
  7. package/dist/agent.js +26 -0
  8. package/dist/agent.js.map +1 -0
  9. package/dist/agentick-instance.d.ts +285 -0
  10. package/dist/agentick-instance.d.ts.map +1 -0
  11. package/dist/agentick-instance.js +700 -0
  12. package/dist/agentick-instance.js.map +1 -0
  13. package/dist/aidk-instance.d.ts +294 -0
  14. package/dist/aidk-instance.d.ts.map +1 -0
  15. package/dist/aidk-instance.js +340 -0
  16. package/dist/aidk-instance.js.map +1 -0
  17. package/dist/app/session-store.d.ts +57 -0
  18. package/dist/app/session-store.d.ts.map +1 -0
  19. package/dist/app/session-store.js +87 -0
  20. package/dist/app/session-store.js.map +1 -0
  21. package/dist/app/session.d.ts +209 -0
  22. package/dist/app/session.d.ts.map +1 -0
  23. package/dist/app/session.js +2131 -0
  24. package/dist/app/session.js.map +1 -0
  25. package/dist/app/sqlite-session-store.d.ts +60 -0
  26. package/dist/app/sqlite-session-store.d.ts.map +1 -0
  27. package/dist/app/sqlite-session-store.js +234 -0
  28. package/dist/app/sqlite-session-store.js.map +1 -0
  29. package/dist/app/types.d.ts +1461 -0
  30. package/dist/app/types.d.ts.map +1 -0
  31. package/dist/app/types.js +14 -0
  32. package/dist/app/types.js.map +1 -0
  33. package/dist/app.d.ts +79 -0
  34. package/dist/app.d.ts.map +1 -0
  35. package/dist/app.js +83 -0
  36. package/dist/app.js.map +1 -0
  37. package/dist/channels/adapters/index.d.ts +2 -0
  38. package/dist/channels/adapters/index.d.ts.map +1 -0
  39. package/dist/channels/adapters/index.js +2 -0
  40. package/dist/channels/adapters/index.js.map +1 -0
  41. package/dist/channels/adapters/redis.d.ts +77 -0
  42. package/dist/channels/adapters/redis.d.ts.map +1 -0
  43. package/dist/channels/adapters/redis.js +259 -0
  44. package/dist/channels/adapters/redis.js.map +1 -0
  45. package/dist/channels/index.d.ts +38 -0
  46. package/dist/channels/index.d.ts.map +1 -0
  47. package/dist/channels/index.js +38 -0
  48. package/dist/channels/index.js.map +1 -0
  49. package/dist/channels/service.d.ts +684 -0
  50. package/dist/channels/service.d.ts.map +1 -0
  51. package/dist/channels/service.js +870 -0
  52. package/dist/channels/service.js.map +1 -0
  53. package/dist/channels/transports/index.d.ts +4 -0
  54. package/dist/channels/transports/index.d.ts.map +1 -0
  55. package/dist/channels/transports/index.js +4 -0
  56. package/dist/channels/transports/index.js.map +1 -0
  57. package/dist/channels/transports/socketio.d.ts +98 -0
  58. package/dist/channels/transports/socketio.d.ts.map +1 -0
  59. package/dist/channels/transports/socketio.js +246 -0
  60. package/dist/channels/transports/socketio.js.map +1 -0
  61. package/dist/channels/transports/streamable-http.d.ts +107 -0
  62. package/dist/channels/transports/streamable-http.d.ts.map +1 -0
  63. package/dist/channels/transports/streamable-http.js +353 -0
  64. package/dist/channels/transports/streamable-http.js.map +1 -0
  65. package/dist/channels/transports/websocket.d.ts +117 -0
  66. package/dist/channels/transports/websocket.d.ts.map +1 -0
  67. package/dist/channels/transports/websocket.js +416 -0
  68. package/dist/channels/transports/websocket.js.map +1 -0
  69. package/dist/com/index.d.ts +29 -0
  70. package/dist/com/index.d.ts.map +1 -0
  71. package/dist/com/index.js +29 -0
  72. package/dist/com/index.js.map +1 -0
  73. package/dist/com/object-model.d.ts +634 -0
  74. package/dist/com/object-model.d.ts.map +1 -0
  75. package/dist/com/object-model.js +963 -0
  76. package/dist/com/object-model.js.map +1 -0
  77. package/dist/com/types.d.ts +192 -0
  78. package/dist/com/types.d.ts.map +1 -0
  79. package/dist/com/types.js +1 -0
  80. package/dist/com/types.js.map +1 -0
  81. package/dist/compiler/collector.d.ts +16 -0
  82. package/dist/compiler/collector.d.ts.map +1 -0
  83. package/dist/compiler/collector.js +388 -0
  84. package/dist/compiler/collector.js.map +1 -0
  85. package/dist/compiler/content-block-registry.d.ts +11 -0
  86. package/dist/compiler/content-block-registry.d.ts.map +1 -0
  87. package/dist/compiler/content-block-registry.js +312 -0
  88. package/dist/compiler/content-block-registry.js.map +1 -0
  89. package/dist/compiler/extractors.d.ts +68 -0
  90. package/dist/compiler/extractors.d.ts.map +1 -0
  91. package/dist/compiler/extractors.js +547 -0
  92. package/dist/compiler/extractors.js.map +1 -0
  93. package/dist/compiler/fiber-compiler.d.ts +203 -0
  94. package/dist/compiler/fiber-compiler.d.ts.map +1 -0
  95. package/dist/compiler/fiber-compiler.js +498 -0
  96. package/dist/compiler/fiber-compiler.js.map +1 -0
  97. package/dist/compiler/fiber.d.ts +61 -0
  98. package/dist/compiler/fiber.d.ts.map +1 -0
  99. package/dist/compiler/fiber.js +244 -0
  100. package/dist/compiler/fiber.js.map +1 -0
  101. package/dist/compiler/index.d.ts +18 -0
  102. package/dist/compiler/index.d.ts.map +1 -0
  103. package/dist/compiler/index.js +38 -0
  104. package/dist/compiler/index.js.map +1 -0
  105. package/dist/compiler/scheduler.d.ts +95 -0
  106. package/dist/compiler/scheduler.d.ts.map +1 -0
  107. package/dist/compiler/scheduler.js +138 -0
  108. package/dist/compiler/scheduler.js.map +1 -0
  109. package/dist/compiler/structure-renderer.d.ts +42 -0
  110. package/dist/compiler/structure-renderer.d.ts.map +1 -0
  111. package/dist/compiler/structure-renderer.js +189 -0
  112. package/dist/compiler/structure-renderer.js.map +1 -0
  113. package/dist/compiler/types.d.ts +96 -0
  114. package/dist/compiler/types.d.ts.map +1 -0
  115. package/dist/compiler/types.js +19 -0
  116. package/dist/compiler/types.js.map +1 -0
  117. package/dist/component/component-hooks.d.ts +68 -0
  118. package/dist/component/component-hooks.d.ts.map +1 -0
  119. package/dist/component/component-hooks.js +112 -0
  120. package/dist/component/component-hooks.js.map +1 -0
  121. package/dist/component/component.d.ts +314 -0
  122. package/dist/component/component.d.ts.map +1 -0
  123. package/dist/component/component.js +64 -0
  124. package/dist/component/component.js.map +1 -0
  125. package/dist/component/index.d.ts +47 -0
  126. package/dist/component/index.d.ts.map +1 -0
  127. package/dist/component/index.js +47 -0
  128. package/dist/component/index.js.map +1 -0
  129. package/dist/component/tentickle-component.d.ts +185 -0
  130. package/dist/component/tentickle-component.d.ts.map +1 -0
  131. package/dist/component/tentickle-component.js +182 -0
  132. package/dist/component/tentickle-component.js.map +1 -0
  133. package/dist/content/index.d.ts +12 -0
  134. package/dist/content/index.d.ts.map +1 -0
  135. package/dist/content/index.js +17 -0
  136. package/dist/content/index.js.map +1 -0
  137. package/dist/context/index.d.ts +51 -0
  138. package/dist/context/index.d.ts.map +1 -0
  139. package/dist/context/index.js +69 -0
  140. package/dist/context/index.js.map +1 -0
  141. package/dist/core/channel-helpers.d.ts +31 -0
  142. package/dist/core/channel-helpers.d.ts.map +1 -0
  143. package/dist/core/channel-helpers.js +62 -0
  144. package/dist/core/channel-helpers.js.map +1 -0
  145. package/dist/core/channel.d.ts +164 -0
  146. package/dist/core/channel.d.ts.map +1 -0
  147. package/dist/core/channel.js +199 -0
  148. package/dist/core/channel.js.map +1 -0
  149. package/dist/core/context.d.ts +412 -0
  150. package/dist/core/context.d.ts.map +1 -0
  151. package/dist/core/context.js +290 -0
  152. package/dist/core/context.js.map +1 -0
  153. package/dist/core/event-buffer.d.ts +212 -0
  154. package/dist/core/event-buffer.d.ts.map +1 -0
  155. package/dist/core/event-buffer.js +346 -0
  156. package/dist/core/event-buffer.js.map +1 -0
  157. package/dist/core/execution-helpers.d.ts +179 -0
  158. package/dist/core/execution-helpers.d.ts.map +1 -0
  159. package/dist/core/execution-helpers.js +212 -0
  160. package/dist/core/execution-helpers.js.map +1 -0
  161. package/dist/core/execution-tracker.d.ts +53 -0
  162. package/dist/core/execution-tracker.d.ts.map +1 -0
  163. package/dist/core/execution-tracker.js +309 -0
  164. package/dist/core/execution-tracker.js.map +1 -0
  165. package/dist/core/index.d.ts +58 -0
  166. package/dist/core/index.d.ts.map +1 -0
  167. package/dist/core/index.js +58 -0
  168. package/dist/core/index.js.map +1 -0
  169. package/dist/core/logger.d.ts +341 -0
  170. package/dist/core/logger.d.ts.map +1 -0
  171. package/dist/core/logger.js +346 -0
  172. package/dist/core/logger.js.map +1 -0
  173. package/dist/core/metrics-helpers.d.ts +40 -0
  174. package/dist/core/metrics-helpers.d.ts.map +1 -0
  175. package/dist/core/metrics-helpers.js +72 -0
  176. package/dist/core/metrics-helpers.js.map +1 -0
  177. package/dist/core/otel-provider.d.ts +54 -0
  178. package/dist/core/otel-provider.d.ts.map +1 -0
  179. package/dist/core/otel-provider.js +107 -0
  180. package/dist/core/otel-provider.js.map +1 -0
  181. package/dist/core/procedure-graph.d.ts +136 -0
  182. package/dist/core/procedure-graph.d.ts.map +1 -0
  183. package/dist/core/procedure-graph.js +272 -0
  184. package/dist/core/procedure-graph.js.map +1 -0
  185. package/dist/core/procedure.d.ts +755 -0
  186. package/dist/core/procedure.d.ts.map +1 -0
  187. package/dist/core/procedure.js +899 -0
  188. package/dist/core/procedure.js.map +1 -0
  189. package/dist/core/stream.d.ts +106 -0
  190. package/dist/core/stream.d.ts.map +1 -0
  191. package/dist/core/stream.js +186 -0
  192. package/dist/core/stream.js.map +1 -0
  193. package/dist/core/telemetry.d.ts +182 -0
  194. package/dist/core/telemetry.d.ts.map +1 -0
  195. package/dist/core/telemetry.js +124 -0
  196. package/dist/core/telemetry.js.map +1 -0
  197. package/dist/engine/client-tool-coordinator.d.ts +50 -0
  198. package/dist/engine/client-tool-coordinator.d.ts.map +1 -0
  199. package/dist/engine/client-tool-coordinator.js +121 -0
  200. package/dist/engine/client-tool-coordinator.js.map +1 -0
  201. package/dist/engine/engine-events.d.ts +117 -0
  202. package/dist/engine/engine-events.d.ts.map +1 -0
  203. package/dist/engine/engine-events.js +178 -0
  204. package/dist/engine/engine-events.js.map +1 -0
  205. package/dist/engine/engine-response.d.ts +48 -0
  206. package/dist/engine/engine-response.d.ts.map +1 -0
  207. package/dist/engine/engine-response.js +2 -0
  208. package/dist/engine/engine-response.js.map +1 -0
  209. package/dist/engine/execution-graph.d.ts +104 -0
  210. package/dist/engine/execution-graph.d.ts.map +1 -0
  211. package/dist/engine/execution-graph.js +257 -0
  212. package/dist/engine/execution-graph.js.map +1 -0
  213. package/dist/engine/execution-handle.d.ts +212 -0
  214. package/dist/engine/execution-handle.d.ts.map +1 -0
  215. package/dist/engine/execution-handle.js +602 -0
  216. package/dist/engine/execution-handle.js.map +1 -0
  217. package/dist/engine/execution-types.d.ts +248 -0
  218. package/dist/engine/execution-types.d.ts.map +1 -0
  219. package/dist/engine/execution-types.js +23 -0
  220. package/dist/engine/execution-types.js.map +1 -0
  221. package/dist/engine/index.d.ts +21 -0
  222. package/dist/engine/index.d.ts.map +1 -0
  223. package/dist/engine/index.js +23 -0
  224. package/dist/engine/index.js.map +1 -0
  225. package/dist/engine/tool-confirmation-coordinator.d.ts +74 -0
  226. package/dist/engine/tool-confirmation-coordinator.d.ts.map +1 -0
  227. package/dist/engine/tool-confirmation-coordinator.js +137 -0
  228. package/dist/engine/tool-confirmation-coordinator.js.map +1 -0
  229. package/dist/engine/tool-executor.d.ts +127 -0
  230. package/dist/engine/tool-executor.d.ts.map +1 -0
  231. package/dist/engine/tool-executor.js +363 -0
  232. package/dist/engine/tool-executor.js.map +1 -0
  233. package/dist/hibernation/index.d.ts +126 -0
  234. package/dist/hibernation/index.d.ts.map +1 -0
  235. package/dist/hibernation/index.js +127 -0
  236. package/dist/hibernation/index.js.map +1 -0
  237. package/dist/hooks/base-hook-registry.d.ts +41 -0
  238. package/dist/hooks/base-hook-registry.d.ts.map +1 -0
  239. package/dist/hooks/base-hook-registry.js +76 -0
  240. package/dist/hooks/base-hook-registry.js.map +1 -0
  241. package/dist/hooks/com-state.d.ts +40 -0
  242. package/dist/hooks/com-state.d.ts.map +1 -0
  243. package/dist/hooks/com-state.js +90 -0
  244. package/dist/hooks/com-state.js.map +1 -0
  245. package/dist/hooks/context-info.d.ts +139 -0
  246. package/dist/hooks/context-info.d.ts.map +1 -0
  247. package/dist/hooks/context-info.js +115 -0
  248. package/dist/hooks/context-info.js.map +1 -0
  249. package/dist/hooks/context-internal.d.ts +21 -0
  250. package/dist/hooks/context-internal.d.ts.map +1 -0
  251. package/dist/hooks/context-internal.js +20 -0
  252. package/dist/hooks/context-internal.js.map +1 -0
  253. package/dist/hooks/context.d.ts +64 -0
  254. package/dist/hooks/context.d.ts.map +1 -0
  255. package/dist/hooks/context.js +83 -0
  256. package/dist/hooks/context.js.map +1 -0
  257. package/dist/hooks/data.d.ts +33 -0
  258. package/dist/hooks/data.d.ts.map +1 -0
  259. package/dist/hooks/data.js +84 -0
  260. package/dist/hooks/data.js.map +1 -0
  261. package/dist/hooks/formatter-context.d.ts +34 -0
  262. package/dist/hooks/formatter-context.d.ts.map +1 -0
  263. package/dist/hooks/formatter-context.js +34 -0
  264. package/dist/hooks/formatter-context.js.map +1 -0
  265. package/dist/hooks/hook-registry.d.ts +45 -0
  266. package/dist/hooks/hook-registry.d.ts.map +1 -0
  267. package/dist/hooks/hook-registry.js +109 -0
  268. package/dist/hooks/hook-registry.js.map +1 -0
  269. package/dist/hooks/index.d.ts +20 -0
  270. package/dist/hooks/index.d.ts.map +1 -0
  271. package/dist/hooks/index.js +47 -0
  272. package/dist/hooks/index.js.map +1 -0
  273. package/dist/hooks/knob.d.ts +87 -0
  274. package/dist/hooks/knob.d.ts.map +1 -0
  275. package/dist/hooks/knob.js +129 -0
  276. package/dist/hooks/knob.js.map +1 -0
  277. package/dist/hooks/knobs-component.d.ts +70 -0
  278. package/dist/hooks/knobs-component.d.ts.map +1 -0
  279. package/dist/hooks/knobs-component.js +300 -0
  280. package/dist/hooks/knobs-component.js.map +1 -0
  281. package/dist/hooks/lifecycle.d.ts +158 -0
  282. package/dist/hooks/lifecycle.d.ts.map +1 -0
  283. package/dist/hooks/lifecycle.js +217 -0
  284. package/dist/hooks/lifecycle.js.map +1 -0
  285. package/dist/hooks/message-context.d.ts +101 -0
  286. package/dist/hooks/message-context.d.ts.map +1 -0
  287. package/dist/hooks/message-context.js +145 -0
  288. package/dist/hooks/message-context.js.map +1 -0
  289. package/dist/hooks/policy-context.d.ts.map +1 -0
  290. package/dist/hooks/runtime-context.d.ts +122 -0
  291. package/dist/hooks/runtime-context.d.ts.map +1 -0
  292. package/dist/hooks/runtime-context.js +149 -0
  293. package/dist/hooks/runtime-context.js.map +1 -0
  294. package/dist/hooks/signal.d.ts +267 -0
  295. package/dist/hooks/signal.d.ts.map +1 -0
  296. package/dist/hooks/signal.js +825 -0
  297. package/dist/hooks/signal.js.map +1 -0
  298. package/dist/hooks/types.d.ts +179 -0
  299. package/dist/hooks/types.d.ts.map +1 -0
  300. package/dist/hooks/types.js +5 -0
  301. package/dist/hooks/types.js.map +1 -0
  302. package/dist/index.d.ts +20 -0
  303. package/dist/index.d.ts.map +1 -0
  304. package/dist/index.js +50 -0
  305. package/dist/index.js.map +1 -0
  306. package/dist/jsx/components/agent.d.ts +64 -0
  307. package/dist/jsx/components/agent.d.ts.map +1 -0
  308. package/dist/jsx/components/agent.js +80 -0
  309. package/dist/jsx/components/agent.js.map +1 -0
  310. package/dist/jsx/components/complete.d.ts +65 -0
  311. package/dist/jsx/components/complete.d.ts.map +1 -0
  312. package/dist/jsx/components/complete.js +64 -0
  313. package/dist/jsx/components/complete.js.map +1 -0
  314. package/dist/jsx/components/content.d.ts +98 -0
  315. package/dist/jsx/components/content.d.ts.map +1 -0
  316. package/dist/jsx/components/content.js +51 -0
  317. package/dist/jsx/components/content.js.map +1 -0
  318. package/dist/jsx/components/harness.d.ts +118 -0
  319. package/dist/jsx/components/harness.d.ts.map +1 -0
  320. package/dist/jsx/components/harness.js +117 -0
  321. package/dist/jsx/components/harness.js.map +1 -0
  322. package/dist/jsx/components/index.d.ts +11 -0
  323. package/dist/jsx/components/index.d.ts.map +1 -0
  324. package/dist/jsx/components/index.js +11 -0
  325. package/dist/jsx/components/index.js.map +1 -0
  326. package/dist/jsx/components/markdown.d.ts +31 -0
  327. package/dist/jsx/components/markdown.d.ts.map +1 -0
  328. package/dist/jsx/components/markdown.js +17 -0
  329. package/dist/jsx/components/markdown.js.map +1 -0
  330. package/dist/jsx/components/messages.d.ts +283 -0
  331. package/dist/jsx/components/messages.d.ts.map +1 -0
  332. package/dist/jsx/components/messages.js +257 -0
  333. package/dist/jsx/components/messages.js.map +1 -0
  334. package/dist/jsx/components/model.d.ts +94 -0
  335. package/dist/jsx/components/model.d.ts.map +1 -0
  336. package/dist/jsx/components/model.js +96 -0
  337. package/dist/jsx/components/model.js.map +1 -0
  338. package/dist/jsx/components/primitives.d.ts +117 -0
  339. package/dist/jsx/components/primitives.d.ts.map +1 -0
  340. package/dist/jsx/components/primitives.js +83 -0
  341. package/dist/jsx/components/primitives.js.map +1 -0
  342. package/dist/jsx/components/renderer.d.ts +24 -0
  343. package/dist/jsx/components/renderer.d.ts.map +1 -0
  344. package/dist/jsx/components/renderer.js +11 -0
  345. package/dist/jsx/components/renderer.js.map +1 -0
  346. package/dist/jsx/components/semantic.d.ts +155 -0
  347. package/dist/jsx/components/semantic.d.ts.map +1 -0
  348. package/dist/jsx/components/semantic.js +39 -0
  349. package/dist/jsx/components/semantic.js.map +1 -0
  350. package/dist/jsx/components/timeline.d.ts +157 -0
  351. package/dist/jsx/components/timeline.d.ts.map +1 -0
  352. package/dist/jsx/components/timeline.js +357 -0
  353. package/dist/jsx/components/timeline.js.map +1 -0
  354. package/dist/jsx/components/token-budget.d.ts +70 -0
  355. package/dist/jsx/components/token-budget.d.ts.map +1 -0
  356. package/dist/jsx/components/token-budget.js +135 -0
  357. package/dist/jsx/components/token-budget.js.map +1 -0
  358. package/dist/jsx/components/xml.d.ts +27 -0
  359. package/dist/jsx/components/xml.d.ts.map +1 -0
  360. package/dist/jsx/components/xml.js +17 -0
  361. package/dist/jsx/components/xml.js.map +1 -0
  362. package/dist/jsx/index.d.ts +58 -0
  363. package/dist/jsx/index.d.ts.map +1 -0
  364. package/dist/jsx/index.js +59 -0
  365. package/dist/jsx/index.js.map +1 -0
  366. package/dist/jsx/jsx-runtime.d.ts +370 -0
  367. package/dist/jsx/jsx-runtime.d.ts.map +1 -0
  368. package/dist/jsx/jsx-runtime.js +79 -0
  369. package/dist/jsx/jsx-runtime.js.map +1 -0
  370. package/dist/jsx/jsx-types.d.ts +23 -0
  371. package/dist/jsx/jsx-types.d.ts.map +1 -0
  372. package/dist/jsx/jsx-types.js +1 -0
  373. package/dist/jsx/jsx-types.js.map +1 -0
  374. package/dist/mcp/client.d.ts +46 -0
  375. package/dist/mcp/client.d.ts.map +1 -0
  376. package/dist/mcp/client.js +138 -0
  377. package/dist/mcp/client.js.map +1 -0
  378. package/dist/mcp/component.d.ts +95 -0
  379. package/dist/mcp/component.d.ts.map +1 -0
  380. package/dist/mcp/component.js +185 -0
  381. package/dist/mcp/component.js.map +1 -0
  382. package/dist/mcp/create-mcp-tool.d.ts +191 -0
  383. package/dist/mcp/create-mcp-tool.d.ts.map +1 -0
  384. package/dist/mcp/create-mcp-tool.js +228 -0
  385. package/dist/mcp/create-mcp-tool.js.map +1 -0
  386. package/dist/mcp/index.d.ts +49 -0
  387. package/dist/mcp/index.d.ts.map +1 -0
  388. package/dist/mcp/index.js +48 -0
  389. package/dist/mcp/index.js.map +1 -0
  390. package/dist/mcp/service.d.ts +39 -0
  391. package/dist/mcp/service.d.ts.map +1 -0
  392. package/dist/mcp/service.js +77 -0
  393. package/dist/mcp/service.js.map +1 -0
  394. package/dist/mcp/tool.d.ts +55 -0
  395. package/dist/mcp/tool.d.ts.map +1 -0
  396. package/dist/mcp/tool.js +119 -0
  397. package/dist/mcp/tool.js.map +1 -0
  398. package/dist/mcp/types.d.ts +72 -0
  399. package/dist/mcp/types.d.ts.map +1 -0
  400. package/dist/mcp/types.js +6 -0
  401. package/dist/mcp/types.js.map +1 -0
  402. package/dist/middleware/defaults.d.ts +9 -0
  403. package/dist/middleware/defaults.d.ts.map +1 -0
  404. package/dist/middleware/defaults.js +47 -0
  405. package/dist/middleware/defaults.js.map +1 -0
  406. package/dist/model/adapter-helpers.d.ts +161 -0
  407. package/dist/model/adapter-helpers.d.ts.map +1 -0
  408. package/dist/model/adapter-helpers.js +351 -0
  409. package/dist/model/adapter-helpers.js.map +1 -0
  410. package/dist/model/adapter.d.ts +399 -0
  411. package/dist/model/adapter.d.ts.map +1 -0
  412. package/dist/model/adapter.js +497 -0
  413. package/dist/model/adapter.js.map +1 -0
  414. package/dist/model/index.d.ts +54 -0
  415. package/dist/model/index.d.ts.map +1 -0
  416. package/dist/model/index.js +55 -0
  417. package/dist/model/index.js.map +1 -0
  418. package/dist/model/model-hooks.d.ts +45 -0
  419. package/dist/model/model-hooks.d.ts.map +1 -0
  420. package/dist/model/model-hooks.js +24 -0
  421. package/dist/model/model-hooks.js.map +1 -0
  422. package/dist/model/model.d.ts +302 -0
  423. package/dist/model/model.d.ts.map +1 -0
  424. package/dist/model/model.js +20 -0
  425. package/dist/model/model.js.map +1 -0
  426. package/dist/model/simple-adapter.d.ts +176 -0
  427. package/dist/model/simple-adapter.d.ts.map +1 -0
  428. package/dist/model/simple-adapter.js +264 -0
  429. package/dist/model/simple-adapter.js.map +1 -0
  430. package/dist/model/stream-accumulator.d.ts +284 -0
  431. package/dist/model/stream-accumulator.d.ts.map +1 -0
  432. package/dist/model/stream-accumulator.js +532 -0
  433. package/dist/model/stream-accumulator.js.map +1 -0
  434. package/dist/model/utils/index.d.ts +2 -0
  435. package/dist/model/utils/index.d.ts.map +1 -0
  436. package/dist/model/utils/index.js +2 -0
  437. package/dist/model/utils/index.js.map +1 -0
  438. package/dist/model/utils/language-model.d.ts +26 -0
  439. package/dist/model/utils/language-model.d.ts.map +1 -0
  440. package/dist/model/utils/language-model.js +706 -0
  441. package/dist/model/utils/language-model.js.map +1 -0
  442. package/dist/procedure/index.d.ts +20 -0
  443. package/dist/procedure/index.d.ts.map +1 -0
  444. package/dist/procedure/index.js +19 -0
  445. package/dist/procedure/index.js.map +1 -0
  446. package/dist/reconciler/devtools-bridge.d.ts +40 -0
  447. package/dist/reconciler/devtools-bridge.d.ts.map +1 -0
  448. package/dist/reconciler/devtools-bridge.js +79 -0
  449. package/dist/reconciler/devtools-bridge.js.map +1 -0
  450. package/dist/reconciler/host-config.d.ts +39 -0
  451. package/dist/reconciler/host-config.d.ts.map +1 -0
  452. package/dist/reconciler/host-config.js +195 -0
  453. package/dist/reconciler/host-config.js.map +1 -0
  454. package/dist/reconciler/index.d.ts +7 -0
  455. package/dist/reconciler/index.d.ts.map +1 -0
  456. package/dist/reconciler/index.js +7 -0
  457. package/dist/reconciler/index.js.map +1 -0
  458. package/dist/reconciler/reconciler.d.ts +47 -0
  459. package/dist/reconciler/reconciler.d.ts.map +1 -0
  460. package/dist/reconciler/reconciler.js +89 -0
  461. package/dist/reconciler/reconciler.js.map +1 -0
  462. package/dist/reconciler/types.d.ts +86 -0
  463. package/dist/reconciler/types.d.ts.map +1 -0
  464. package/dist/reconciler/types.js +37 -0
  465. package/dist/reconciler/types.js.map +1 -0
  466. package/dist/renderers/base.d.ts +98 -0
  467. package/dist/renderers/base.d.ts.map +1 -0
  468. package/dist/renderers/base.js +82 -0
  469. package/dist/renderers/base.js.map +1 -0
  470. package/dist/renderers/index.d.ts +31 -0
  471. package/dist/renderers/index.d.ts.map +1 -0
  472. package/dist/renderers/index.js +31 -0
  473. package/dist/renderers/index.js.map +1 -0
  474. package/dist/renderers/markdown.d.ts +48 -0
  475. package/dist/renderers/markdown.d.ts.map +1 -0
  476. package/dist/renderers/markdown.js +432 -0
  477. package/dist/renderers/markdown.js.map +1 -0
  478. package/dist/renderers/types.d.ts +7 -0
  479. package/dist/renderers/types.d.ts.map +1 -0
  480. package/dist/renderers/types.js +7 -0
  481. package/dist/renderers/types.js.map +1 -0
  482. package/dist/renderers/xml.d.ts +49 -0
  483. package/dist/renderers/xml.d.ts.map +1 -0
  484. package/dist/renderers/xml.js +444 -0
  485. package/dist/renderers/xml.js.map +1 -0
  486. package/dist/state/boundary.d.ts +347 -0
  487. package/dist/state/boundary.d.ts.map +1 -0
  488. package/dist/state/boundary.js +341 -0
  489. package/dist/state/boundary.js.map +1 -0
  490. package/dist/state/context.d.ts +138 -0
  491. package/dist/state/context.d.ts.map +1 -0
  492. package/dist/state/context.js +139 -0
  493. package/dist/state/context.js.map +1 -0
  494. package/dist/state/hooks.d.ts +798 -0
  495. package/dist/state/hooks.d.ts.map +1 -0
  496. package/dist/state/hooks.js +1437 -0
  497. package/dist/state/hooks.js.map +1 -0
  498. package/dist/state/index.d.ts +72 -0
  499. package/dist/state/index.d.ts.map +1 -0
  500. package/dist/state/index.js +73 -0
  501. package/dist/state/index.js.map +1 -0
  502. package/dist/state/signal.d.ts +223 -0
  503. package/dist/state/signal.d.ts.map +1 -0
  504. package/dist/state/signal.js +699 -0
  505. package/dist/state/signal.js.map +1 -0
  506. package/dist/state/use-state.d.ts +210 -0
  507. package/dist/state/use-state.d.ts.map +1 -0
  508. package/dist/state/use-state.js +327 -0
  509. package/dist/state/use-state.js.map +1 -0
  510. package/dist/tentickle-instance.d.ts +285 -0
  511. package/dist/tentickle-instance.d.ts.map +1 -0
  512. package/dist/tentickle-instance.js +700 -0
  513. package/dist/tentickle-instance.js.map +1 -0
  514. package/dist/testing/act.d.ts +59 -0
  515. package/dist/testing/act.d.ts.map +1 -0
  516. package/dist/testing/act.js +92 -0
  517. package/dist/testing/act.js.map +1 -0
  518. package/dist/testing/async-helpers.d.ts +99 -0
  519. package/dist/testing/async-helpers.d.ts.map +1 -0
  520. package/dist/testing/async-helpers.js +193 -0
  521. package/dist/testing/async-helpers.js.map +1 -0
  522. package/dist/testing/compile-agent.d.ts +101 -0
  523. package/dist/testing/compile-agent.d.ts.map +1 -0
  524. package/dist/testing/compile-agent.js +136 -0
  525. package/dist/testing/compile-agent.js.map +1 -0
  526. package/dist/testing/index.d.ts +57 -0
  527. package/dist/testing/index.d.ts.map +1 -0
  528. package/dist/testing/index.js +59 -0
  529. package/dist/testing/index.js.map +1 -0
  530. package/dist/testing/mock-app.d.ts +163 -0
  531. package/dist/testing/mock-app.d.ts.map +1 -0
  532. package/dist/testing/mock-app.js +393 -0
  533. package/dist/testing/mock-app.js.map +1 -0
  534. package/dist/testing/mocks.d.ts +142 -0
  535. package/dist/testing/mocks.d.ts.map +1 -0
  536. package/dist/testing/mocks.js +191 -0
  537. package/dist/testing/mocks.js.map +1 -0
  538. package/dist/testing/render-agent.d.ts +146 -0
  539. package/dist/testing/render-agent.d.ts.map +1 -0
  540. package/dist/testing/render-agent.js +200 -0
  541. package/dist/testing/render-agent.js.map +1 -0
  542. package/dist/testing/test-adapter.d.ts +157 -0
  543. package/dist/testing/test-adapter.d.ts.map +1 -0
  544. package/dist/testing/test-adapter.js +297 -0
  545. package/dist/testing/test-adapter.js.map +1 -0
  546. package/dist/testing/test-model.d.ts +132 -0
  547. package/dist/testing/test-model.d.ts.map +1 -0
  548. package/dist/testing/test-model.js +260 -0
  549. package/dist/testing/test-model.js.map +1 -0
  550. package/dist/tool/index.d.ts +61 -0
  551. package/dist/tool/index.d.ts.map +1 -0
  552. package/dist/tool/index.js +63 -0
  553. package/dist/tool/index.js.map +1 -0
  554. package/dist/tool/tool-hooks.d.ts +45 -0
  555. package/dist/tool/tool-hooks.d.ts.map +1 -0
  556. package/dist/tool/tool-hooks.js +35 -0
  557. package/dist/tool/tool-hooks.js.map +1 -0
  558. package/dist/tool/tool.d.ts +403 -0
  559. package/dist/tool/tool.d.ts.map +1 -0
  560. package/dist/tool/tool.js +176 -0
  561. package/dist/tool/tool.js.map +1 -0
  562. package/dist/types.d.ts +442 -0
  563. package/dist/types.d.ts.map +1 -0
  564. package/dist/types.js +97 -0
  565. package/dist/types.js.map +1 -0
  566. package/dist/utils/abort-utils.d.ts +5 -0
  567. package/dist/utils/abort-utils.d.ts.map +1 -0
  568. package/dist/utils/abort-utils.js +50 -0
  569. package/dist/utils/abort-utils.js.map +1 -0
  570. package/dist/utils/classify-error.d.ts +19 -0
  571. package/dist/utils/classify-error.d.ts.map +1 -0
  572. package/dist/utils/classify-error.js +77 -0
  573. package/dist/utils/classify-error.js.map +1 -0
  574. package/dist/utils/index.d.ts +21 -0
  575. package/dist/utils/index.d.ts.map +1 -0
  576. package/dist/utils/index.js +21 -0
  577. package/dist/utils/index.js.map +1 -0
  578. package/dist/utils/normalization.d.ts +6 -0
  579. package/dist/utils/normalization.d.ts.map +1 -0
  580. package/dist/utils/normalization.js +103 -0
  581. package/dist/utils/normalization.js.map +1 -0
  582. package/dist/utils/registry.d.ts +15 -0
  583. package/dist/utils/registry.d.ts.map +1 -0
  584. package/dist/utils/registry.js +28 -0
  585. package/dist/utils/registry.js.map +1 -0
  586. package/dist/utils/schema.d.ts +7 -0
  587. package/dist/utils/schema.d.ts.map +1 -0
  588. package/dist/utils/schema.js +13 -0
  589. package/dist/utils/schema.js.map +1 -0
  590. package/dist/utils/token-estimate.d.ts +87 -0
  591. package/dist/utils/token-estimate.d.ts.map +1 -0
  592. package/dist/utils/token-estimate.js +199 -0
  593. package/dist/utils/token-estimate.js.map +1 -0
  594. package/dist/v2/reconciler/host-config.d.ts +31 -0
  595. package/dist/v2/reconciler/host-config.d.ts.map +1 -0
  596. package/dist/v2/reconciler/host-config.js +197 -0
  597. package/dist/v2/reconciler/host-config.js.map +1 -0
  598. package/dist/v2/reconciler/index.d.ts +7 -0
  599. package/dist/v2/reconciler/index.d.ts.map +1 -0
  600. package/dist/v2/reconciler/index.js +7 -0
  601. package/dist/v2/reconciler/index.js.map +1 -0
  602. package/dist/v2/reconciler/reconciler.d.ts +39 -0
  603. package/dist/v2/reconciler/reconciler.d.ts.map +1 -0
  604. package/dist/v2/reconciler/reconciler.js +54 -0
  605. package/dist/v2/reconciler/reconciler.js.map +1 -0
  606. package/dist/v2/reconciler/types.d.ts +64 -0
  607. package/dist/v2/reconciler/types.d.ts.map +1 -0
  608. package/dist/v2/reconciler/types.js +20 -0
  609. package/dist/v2/reconciler/types.js.map +1 -0
  610. package/dist/v2/renderers/index.d.ts +7 -0
  611. package/dist/v2/renderers/index.d.ts.map +1 -0
  612. package/dist/v2/renderers/index.js +7 -0
  613. package/dist/v2/renderers/index.js.map +1 -0
  614. package/dist/v2/renderers/markdown.d.ts +16 -0
  615. package/dist/v2/renderers/markdown.d.ts.map +1 -0
  616. package/dist/v2/renderers/markdown.js +65 -0
  617. package/dist/v2/renderers/markdown.js.map +1 -0
  618. package/dist/v2/renderers/types.d.ts +26 -0
  619. package/dist/v2/renderers/types.d.ts.map +1 -0
  620. package/dist/v2/renderers/types.js +6 -0
  621. package/dist/v2/renderers/types.js.map +1 -0
  622. package/dist/v2/renderers/xml.d.ts +17 -0
  623. package/dist/v2/renderers/xml.d.ts.map +1 -0
  624. package/dist/v2/renderers/xml.js +73 -0
  625. package/dist/v2/renderers/xml.js.map +1 -0
  626. package/package.json +49 -0
@@ -0,0 +1,127 @@
1
+ import { type ToolCall, type ToolResult, type ExecutableTool, type ToolConfirmationResult } from "../tool/tool";
2
+ import type { COM } from "../com/object-model";
3
+ import type { ToolHookRegistry } from "../tool/tool-hooks";
4
+ import { ClientToolCoordinator } from "./client-tool-coordinator";
5
+ import { ToolConfirmationCoordinator } from "./tool-confirmation-coordinator";
6
+ /**
7
+ * Result of checking if a tool requires confirmation.
8
+ */
9
+ export interface ConfirmationCheckResult {
10
+ /** Whether confirmation is required */
11
+ required: boolean;
12
+ /** Message to show user (if required) */
13
+ message?: string;
14
+ /** The tool that was checked */
15
+ tool: ExecutableTool;
16
+ }
17
+ /**
18
+ * Tool Execution Service
19
+ *
20
+ * Handles tool execution with error handling, parallel execution support,
21
+ * and structured error reporting. Designed to be extensible for future
22
+ * features like retries, timeouts, circuit breakers, etc.
23
+ */
24
+ export declare class ToolExecutor {
25
+ private toolHooks?;
26
+ private clientToolCoordinator;
27
+ private confirmationCoordinator;
28
+ constructor(toolHooks?: ToolHookRegistry | undefined);
29
+ /**
30
+ * Get the client tool coordinator for managing client-executed tools.
31
+ */
32
+ getClientToolCoordinator(): ClientToolCoordinator;
33
+ /**
34
+ * Get the confirmation coordinator for managing tool confirmations.
35
+ */
36
+ getConfirmationCoordinator(): ToolConfirmationCoordinator;
37
+ /**
38
+ * Check if a tool call requires confirmation.
39
+ * Evaluates the requiresConfirmation option (boolean or function).
40
+ *
41
+ * @param call - The tool call to check
42
+ * @param ctx - COM for tool resolution
43
+ * @param configTools - Optional config tools for fallback
44
+ * @returns ConfirmationCheckResult or null if tool not found
45
+ */
46
+ checkConfirmationRequired(call: ToolCall, ctx: COM, configTools?: ExecutableTool[]): Promise<ConfirmationCheckResult | null>;
47
+ /**
48
+ * Wait for confirmation for a tool call.
49
+ * Should be called after yielding 'tool_confirmation_required' event.
50
+ *
51
+ * @param call - The tool call awaiting confirmation
52
+ * @returns The confirmation result
53
+ */
54
+ waitForConfirmation(call: ToolCall): Promise<ToolConfirmationResult>;
55
+ /**
56
+ * Create a denial result for when user denies tool execution.
57
+ */
58
+ createDenialResult(call: ToolCall): ToolResult;
59
+ /**
60
+ * Wrap tool.run with hooks if hooks are registered.
61
+ * Since tool.run is already a Procedure, we apply middleware directly to it
62
+ * using applyRegistryMiddleware, which preserves the Procedure interface.
63
+ *
64
+ * Returns undefined if tool has no handler (e.g., client tools without server-side execution).
65
+ */
66
+ private wrapToolRun;
67
+ /**
68
+ * Execute tool calls sequentially or in parallel.
69
+ *
70
+ * @param toolCalls Array of tool calls to execute
71
+ * @param ctx COM for tool resolution
72
+ * @param parallel Whether to execute tools in parallel (default: false)
73
+ * @param configTools Optional array of tools from Engine config for fallback resolution
74
+ * @returns Array of tool results
75
+ */
76
+ executeToolCalls(toolCalls: ToolCall[], ctx: COM, parallel?: boolean, configTools?: ExecutableTool[]): Promise<ToolResult[]>;
77
+ /**
78
+ * Execute tools sequentially (current implementation).
79
+ * Provides better error isolation and easier debugging.
80
+ */
81
+ private executeSequential;
82
+ /**
83
+ * Execute tools in parallel.
84
+ */
85
+ private executeParallel;
86
+ /**
87
+ * Execute a single tool call with comprehensive error handling.
88
+ * This method does NOT handle confirmation - caller should check confirmation first.
89
+ *
90
+ * @param call - The tool call to execute
91
+ * @param ctx - COM for tool resolution
92
+ * @param configTools - Optional config tools for fallback
93
+ * @returns The tool result
94
+ */
95
+ executeSingleTool(call: ToolCall, ctx: COM, configTools?: ExecutableTool[]): Promise<ToolResult>;
96
+ /**
97
+ * Create an error result with structured error information.
98
+ */
99
+ private createErrorResult;
100
+ /**
101
+ * Process a single tool call with confirmation flow.
102
+ *
103
+ * This method handles the full lifecycle of a tool call:
104
+ * 1. Check if confirmation is required
105
+ * 2. If yes, emit confirmation_required event and wait for response
106
+ * 3. Execute tool (or create denial result if denied)
107
+ * 4. Return result with any events that occurred
108
+ *
109
+ * This is designed for parallel execution - each tool can independently
110
+ * wait for confirmation while other tools are being processed.
111
+ *
112
+ * @param call - The tool call to process
113
+ * @param ctx - COM for tool resolution
114
+ * @param configTools - Optional config tools for fallback
115
+ * @param callbacks - Callbacks for emitting events during processing
116
+ * @returns The tool result and metadata about the processing
117
+ */
118
+ processToolWithConfirmation(call: ToolCall, ctx: COM, configTools?: ExecutableTool[], callbacks?: {
119
+ onConfirmationRequired?: (call: ToolCall, message: string) => void | Promise<void>;
120
+ onConfirmationResult?: (confirmation: ToolConfirmationResult, call: ToolCall) => void | Promise<void>;
121
+ }): Promise<{
122
+ result: ToolResult;
123
+ confirmCheck: ConfirmationCheckResult | null;
124
+ confirmation: ToolConfirmationResult | null;
125
+ }>;
126
+ }
127
+ //# sourceMappingURL=tool-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/engine/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE5B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,cAAc,CAAC;CACtB;AAeD;;;;;;GAMG;AACH,qBAAa,YAAY;IAIX,OAAO,CAAC,SAAS,CAAC;IAH9B,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,uBAAuB,CAA8B;gBAEzC,SAAS,CAAC,EAAE,gBAAgB,YAAA;IAKhD;;OAEG;IACH,wBAAwB,IAAI,qBAAqB;IAIjD;;OAEG;IACH,0BAA0B,IAAI,2BAA2B;IAIzD;;;;;;;;OAQG;IACG,yBAAyB,CAC7B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,cAAc,EAAO,GACjC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IA0C1C;;;;;;OAMG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1E;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAe9C;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;;;;;OAQG;IACG,gBAAgB,CACpB,SAAS,EAAE,QAAQ,EAAE,EACrB,GAAG,EAAE,GAAG,EACR,QAAQ,GAAE,OAAe,EACzB,WAAW,GAAE,cAAc,EAAO,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC;IAOxB;;;OAGG;YACW,iBAAiB;IAe/B;;OAEG;YACW,eAAe;IAS7B;;;;;;;;OAQG;IACG,iBAAiB,CACrB,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,cAAc,EAAO,GACjC,OAAO,CAAC,UAAU,CAAC;IA0ItB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;;;;;;;;;;;;;;;;OAiBG;IACG,2BAA2B,CAC/B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,cAAc,EAAO,EAClC,SAAS,GAAE;QACT,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,oBAAoB,CAAC,EAAE,CACrB,YAAY,EAAE,sBAAsB,EACpC,IAAI,EAAE,QAAQ,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtB,GACL,OAAO,CAAC;QACT,MAAM,EAAE,UAAU,CAAC;QACnB,YAAY,EAAE,uBAAuB,GAAG,IAAI,CAAC;QAC7C,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;KAC7C,CAAC;CAsCH"}
@@ -0,0 +1,363 @@
1
+ import { ToolExecutionType, } from "../tool/tool";
2
+ import {} from "@agentick/shared";
3
+ import {} from "@agentick/kernel";
4
+ import {} from "../tool/tool-hooks";
5
+ import { applyRegistryMiddleware } from "../procedure";
6
+ import { classifyError } from "../utils/classify-error";
7
+ import { ClientToolCoordinator } from "./client-tool-coordinator";
8
+ import { ToolConfirmationCoordinator } from "./tool-confirmation-coordinator";
9
+ /**
10
+ * Normalize tool hook middleware to the format required by applyRegistryMiddleware.
11
+ * This is a type-cast helper since the middleware types are compatible at runtime.
12
+ */
13
+ function normalizeToolHookMiddleware(middleware) {
14
+ if (!middleware || middleware.length === 0) {
15
+ return [];
16
+ }
17
+ return middleware;
18
+ }
19
+ /**
20
+ * Tool Execution Service
21
+ *
22
+ * Handles tool execution with error handling, parallel execution support,
23
+ * and structured error reporting. Designed to be extensible for future
24
+ * features like retries, timeouts, circuit breakers, etc.
25
+ */
26
+ export class ToolExecutor {
27
+ toolHooks;
28
+ clientToolCoordinator;
29
+ confirmationCoordinator;
30
+ constructor(toolHooks) {
31
+ this.toolHooks = toolHooks;
32
+ this.clientToolCoordinator = new ClientToolCoordinator();
33
+ this.confirmationCoordinator = new ToolConfirmationCoordinator();
34
+ }
35
+ /**
36
+ * Get the client tool coordinator for managing client-executed tools.
37
+ */
38
+ getClientToolCoordinator() {
39
+ return this.clientToolCoordinator;
40
+ }
41
+ /**
42
+ * Get the confirmation coordinator for managing tool confirmations.
43
+ */
44
+ getConfirmationCoordinator() {
45
+ return this.confirmationCoordinator;
46
+ }
47
+ /**
48
+ * Check if a tool call requires confirmation.
49
+ * Evaluates the requiresConfirmation option (boolean or function).
50
+ *
51
+ * @param call - The tool call to check
52
+ * @param ctx - COM for tool resolution
53
+ * @param configTools - Optional config tools for fallback
54
+ * @returns ConfirmationCheckResult or null if tool not found
55
+ */
56
+ async checkConfirmationRequired(call, ctx, configTools = []) {
57
+ // Resolve tool
58
+ let tool = ctx.getTool(call.name);
59
+ if (!tool && configTools.length > 0) {
60
+ tool = configTools.find((t) => t.metadata.name === call.name);
61
+ }
62
+ if (!tool) {
63
+ return null;
64
+ }
65
+ const { requiresConfirmation, confirmationMessage } = tool.metadata;
66
+ // No confirmation configured
67
+ if (requiresConfirmation === undefined || requiresConfirmation === false) {
68
+ return { required: false, tool };
69
+ }
70
+ // Evaluate if it's a function
71
+ let required;
72
+ if (typeof requiresConfirmation === "function") {
73
+ required = await requiresConfirmation(call.input);
74
+ }
75
+ else {
76
+ required = requiresConfirmation;
77
+ }
78
+ if (!required) {
79
+ return { required: false, tool };
80
+ }
81
+ // Build confirmation message
82
+ let message;
83
+ if (typeof confirmationMessage === "function") {
84
+ message = confirmationMessage(call.input);
85
+ }
86
+ else if (confirmationMessage) {
87
+ message = confirmationMessage;
88
+ }
89
+ else {
90
+ message = `Allow ${call.name} to execute?`;
91
+ }
92
+ return { required: true, message, tool };
93
+ }
94
+ /**
95
+ * Wait for confirmation for a tool call.
96
+ * Should be called after yielding 'tool_confirmation_required' event.
97
+ *
98
+ * @param call - The tool call awaiting confirmation
99
+ * @returns The confirmation result
100
+ */
101
+ async waitForConfirmation(call) {
102
+ return this.confirmationCoordinator.waitForConfirmation(call.id, call.name);
103
+ }
104
+ /**
105
+ * Create a denial result for when user denies tool execution.
106
+ */
107
+ createDenialResult(call) {
108
+ return {
109
+ toolUseId: call.id,
110
+ name: call.name || call.id,
111
+ success: false,
112
+ content: [
113
+ {
114
+ type: "text",
115
+ text: "Tool execution was denied by user.",
116
+ },
117
+ ],
118
+ error: "User denied tool execution",
119
+ };
120
+ }
121
+ /**
122
+ * Wrap tool.run with hooks if hooks are registered.
123
+ * Since tool.run is already a Procedure, we apply middleware directly to it
124
+ * using applyRegistryMiddleware, which preserves the Procedure interface.
125
+ *
126
+ * Returns undefined if tool has no handler (e.g., client tools without server-side execution).
127
+ */
128
+ wrapToolRun(tool) {
129
+ if (!tool.run) {
130
+ return undefined; // Tool has no handler
131
+ }
132
+ if (!this.toolHooks) {
133
+ return tool.run;
134
+ }
135
+ const middleware = this.toolHooks.getMiddleware("run");
136
+ if (middleware.length === 0) {
137
+ return tool.run;
138
+ }
139
+ // Apply tool hooks middleware to the existing Procedure
140
+ // applyRegistryMiddleware preserves the Procedure interface while adding middleware
141
+ return applyRegistryMiddleware(tool.run, ...normalizeToolHookMiddleware(middleware));
142
+ }
143
+ /**
144
+ * Execute tool calls sequentially or in parallel.
145
+ *
146
+ * @param toolCalls Array of tool calls to execute
147
+ * @param ctx COM for tool resolution
148
+ * @param parallel Whether to execute tools in parallel (default: false)
149
+ * @param configTools Optional array of tools from Engine config for fallback resolution
150
+ * @returns Array of tool results
151
+ */
152
+ async executeToolCalls(toolCalls, ctx, parallel = false, configTools = []) {
153
+ if (parallel && toolCalls.length > 1) {
154
+ return this.executeParallel(toolCalls, ctx, configTools);
155
+ }
156
+ return this.executeSequential(toolCalls, ctx, configTools);
157
+ }
158
+ /**
159
+ * Execute tools sequentially (current implementation).
160
+ * Provides better error isolation and easier debugging.
161
+ */
162
+ async executeSequential(toolCalls, ctx, configTools = []) {
163
+ const results = [];
164
+ for (const call of toolCalls) {
165
+ const result = await this.executeSingleTool(call, ctx, configTools);
166
+ results.push(result);
167
+ }
168
+ return results;
169
+ }
170
+ /**
171
+ * Execute tools in parallel.
172
+ */
173
+ async executeParallel(toolCalls, ctx, configTools = []) {
174
+ const promises = toolCalls.map((call) => this.executeSingleTool(call, ctx, configTools));
175
+ return Promise.all(promises);
176
+ }
177
+ /**
178
+ * Execute a single tool call with comprehensive error handling.
179
+ * This method does NOT handle confirmation - caller should check confirmation first.
180
+ *
181
+ * @param call - The tool call to execute
182
+ * @param ctx - COM for tool resolution
183
+ * @param configTools - Optional config tools for fallback
184
+ * @returns The tool result
185
+ */
186
+ async executeSingleTool(call, ctx, configTools = []) {
187
+ // 1. Resolve tool
188
+ let tool = ctx.getTool(call.name);
189
+ // 2. Fallback to config tools
190
+ if (!tool && configTools.length > 0) {
191
+ tool = configTools.find((t) => t.metadata.name === call.name);
192
+ }
193
+ if (!tool) {
194
+ return this.createErrorResult(call, `Tool "${call.name}" is not available`, "TOOL_NOT_FOUND");
195
+ }
196
+ // 3. Check execution type and route accordingly
197
+ const executionType = tool.metadata.type ?? ToolExecutionType.SERVER;
198
+ // Provider tools should be handled in ModelAdapter, not here
199
+ if (executionType === ToolExecutionType.PROVIDER) {
200
+ return this.createErrorResult(call, `Provider-executed tool "${call.name}" should be handled by ModelAdapter`, "INVALID_EXECUTION_TYPE");
201
+ }
202
+ // Client tools - delegate to client and wait for result if needed
203
+ if (executionType === ToolExecutionType.CLIENT) {
204
+ const requiresResponse = tool.metadata.requiresResponse ?? false;
205
+ const timeout = tool.metadata.timeout ?? 30000;
206
+ const defaultResult = {
207
+ toolUseId: call.id,
208
+ name: call.name || call.id,
209
+ success: true,
210
+ content: tool.metadata.defaultResult ?? [
211
+ { type: "text", text: `[${call.name} rendered on client]` },
212
+ ],
213
+ };
214
+ // If doesn't require response, return default immediately
215
+ if (!requiresResponse) {
216
+ return defaultResult;
217
+ }
218
+ // Otherwise wait for client to send result
219
+ try {
220
+ return await this.clientToolCoordinator.waitForResult(call.id, defaultResult, requiresResponse, timeout);
221
+ }
222
+ catch (error) {
223
+ return this.createErrorResult(call, error.message || "Client tool execution failed", "CLIENT_TOOL_ERROR", error);
224
+ }
225
+ }
226
+ // 4. Execute tool with error handling (SERVER or MCP)
227
+ try {
228
+ // Wrap tool.run with hooks if hooks are registered
229
+ const wrappedRun = this.wrapToolRun(tool);
230
+ if (!wrappedRun) {
231
+ // Tool has no handler (e.g., client tool without server-side execution)
232
+ // Return error - tools without handlers cannot be executed server-side
233
+ return this.createErrorResult(call, `Tool "${call.name}" has no handler. Tools without handlers cannot be executed server-side.`, "TOOL_NO_HANDLER");
234
+ }
235
+ // Execute tool (execution type doesn't change the call pattern,
236
+ // but MCP/CLIENT tools have different run() implementations)
237
+ // Add per-call metadata (toolName is set at definition time by createTool)
238
+ const toolProcedure = wrappedRun.withMetadata({
239
+ toolCallId: call.id,
240
+ });
241
+ // Procedure returns ExecutionHandle by default - access .result for actual return value
242
+ // Pass ctx so tool handlers can access agent state during execution
243
+ const result = await toolProcedure(call.input, ctx).result;
244
+ // Handle async iterable result (shouldn't happen for tools, but be safe)
245
+ let content;
246
+ if (result && typeof result === "object" && Symbol.asyncIterator in result) {
247
+ // If it's an async iterable, collect all chunks
248
+ const chunks = [];
249
+ for await (const chunk of result) {
250
+ chunks.push(chunk);
251
+ }
252
+ content = chunks;
253
+ }
254
+ else {
255
+ content = result;
256
+ }
257
+ // Validate return type
258
+ if (!Array.isArray(content)) {
259
+ return this.createErrorResult(call, "Tool must return ContentBlock[]", "INVALID_RETURN_TYPE");
260
+ }
261
+ // Validate content blocks
262
+ for (const block of content) {
263
+ if (!block || typeof block !== "object" || !block.type) {
264
+ return this.createErrorResult(call, "Tool returned invalid ContentBlock", "INVALID_CONTENT_BLOCK");
265
+ }
266
+ }
267
+ const toolResult = {
268
+ toolUseId: call.id,
269
+ name: call.name || call.id,
270
+ success: true,
271
+ content,
272
+ };
273
+ call.result = toolResult;
274
+ return toolResult;
275
+ }
276
+ catch (error) {
277
+ // Enhanced error handling
278
+ const errorMessage = error?.message || "Tool execution failed";
279
+ const errorType = classifyError(error);
280
+ return this.createErrorResult(call, errorMessage, errorType, error);
281
+ }
282
+ }
283
+ /**
284
+ * Create an error result with structured error information.
285
+ */
286
+ createErrorResult(call, message, errorType, originalError) {
287
+ const errorContent = [
288
+ {
289
+ type: "text",
290
+ text: JSON.stringify({
291
+ error: message,
292
+ error_type: errorType,
293
+ ...(originalError && {
294
+ error_details: {
295
+ name: originalError?.name,
296
+ code: originalError?.code,
297
+ stack: process.env["NODE_ENV"] === "development" ? originalError?.stack : undefined,
298
+ },
299
+ }),
300
+ }),
301
+ },
302
+ ];
303
+ const toolResult = {
304
+ toolUseId: call.id,
305
+ name: call.name || call.id,
306
+ success: false,
307
+ content: errorContent,
308
+ error: message,
309
+ };
310
+ call.result = toolResult;
311
+ return toolResult;
312
+ }
313
+ /**
314
+ * Process a single tool call with confirmation flow.
315
+ *
316
+ * This method handles the full lifecycle of a tool call:
317
+ * 1. Check if confirmation is required
318
+ * 2. If yes, emit confirmation_required event and wait for response
319
+ * 3. Execute tool (or create denial result if denied)
320
+ * 4. Return result with any events that occurred
321
+ *
322
+ * This is designed for parallel execution - each tool can independently
323
+ * wait for confirmation while other tools are being processed.
324
+ *
325
+ * @param call - The tool call to process
326
+ * @param ctx - COM for tool resolution
327
+ * @param configTools - Optional config tools for fallback
328
+ * @param callbacks - Callbacks for emitting events during processing
329
+ * @returns The tool result and metadata about the processing
330
+ */
331
+ async processToolWithConfirmation(call, ctx, configTools = [], callbacks = {}) {
332
+ // Check if confirmation is required
333
+ const confirmCheck = await this.checkConfirmationRequired(call, ctx, configTools);
334
+ let result;
335
+ let confirmation = null;
336
+ if (confirmCheck?.required) {
337
+ // Notify that confirmation is required
338
+ if (callbacks.onConfirmationRequired) {
339
+ await callbacks.onConfirmationRequired(call, confirmCheck.message || `Allow ${call.name} to execute?`);
340
+ }
341
+ // Wait for confirmation (this blocks until client responds)
342
+ confirmation = await this.waitForConfirmation(call);
343
+ // Notify of confirmation result
344
+ if (callbacks.onConfirmationResult) {
345
+ await callbacks.onConfirmationResult(confirmation, call);
346
+ }
347
+ if (!confirmation.confirmed) {
348
+ // User denied - create denial result
349
+ result = this.createDenialResult(call);
350
+ }
351
+ else {
352
+ // User confirmed - execute the tool
353
+ result = await this.executeSingleTool(call, ctx, configTools);
354
+ }
355
+ }
356
+ else {
357
+ // No confirmation needed - execute directly
358
+ result = await this.executeSingleTool(call, ctx, configTools);
359
+ }
360
+ return { result, confirmCheck, confirmation };
361
+ }
362
+ }
363
+ //# sourceMappingURL=tool-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/engine/tool-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * V2 Session Hibernation
3
+ *
4
+ * Serialize and restore session state for persistence.
5
+ *
6
+ * Unlike React's hydration (which is about attaching to pre-rendered DOM),
7
+ * this is about serializing our state and restoring it later.
8
+ *
9
+ * Key insight: We don't need to serialize React's fiber tree. We serialize
10
+ * OUR state, and React rebuilds its tree from scratch on restore. Since our
11
+ * hooks (useData, etc.) read from our caches, the render produces the same
12
+ * output as before hibernation.
13
+ */
14
+ import type { FiberCompiler } from "../compiler/fiber-compiler";
15
+ import type { TimelineEntry } from "../hooks/types";
16
+ import type { SerializableCacheEntry } from "../hooks/runtime-context";
17
+ /**
18
+ * Serializable session snapshot.
19
+ * This is what gets persisted to storage.
20
+ */
21
+ export interface SessionSnapshot {
22
+ /** Version for migration support */
23
+ version: 1;
24
+ /** Session ID */
25
+ sessionId: string;
26
+ /** Current tick number */
27
+ tick: number;
28
+ /** Conversation timeline */
29
+ timeline: SerializableTimelineEntry[];
30
+ /** COM state (key-value pairs) */
31
+ comState: Record<string, unknown>;
32
+ /** Data cache from useData */
33
+ dataCache: Record<string, SerializableCacheEntry>;
34
+ /** Timestamp when snapshot was taken */
35
+ createdAt: string;
36
+ /** Optional metadata */
37
+ metadata?: Record<string, unknown>;
38
+ }
39
+ /**
40
+ * Timeline entry without non-serializable fields.
41
+ */
42
+ export interface SerializableTimelineEntry {
43
+ id: string;
44
+ role: "user" | "assistant" | "system" | "tool";
45
+ content: unknown;
46
+ createdAt: string;
47
+ }
48
+ export interface HibernateOptions {
49
+ /** Additional metadata to include in snapshot */
50
+ metadata?: Record<string, unknown>;
51
+ }
52
+ /**
53
+ * Create a serializable snapshot of the session state.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const snapshot = hibernate(compiler, {
58
+ * sessionId: session.id,
59
+ * tick: session.currentTick,
60
+ * timeline: session.timeline,
61
+ * comState: session.ctx.state,
62
+ * });
63
+ *
64
+ * // Store snapshot
65
+ * await db.sessions.save(session.id, JSON.stringify(snapshot));
66
+ * ```
67
+ */
68
+ export declare function hibernate(compiler: FiberCompiler, state: {
69
+ sessionId: string;
70
+ tick: number;
71
+ timeline: TimelineEntry[];
72
+ comState: Map<string, unknown>;
73
+ }, options?: HibernateOptions): SessionSnapshot;
74
+ export interface HydrateResult {
75
+ /** Session ID from snapshot */
76
+ sessionId: string;
77
+ /** Tick number to resume from */
78
+ tick: number;
79
+ /** Restored timeline */
80
+ timeline: TimelineEntry[];
81
+ /** Restored COM state */
82
+ comState: Map<string, unknown>;
83
+ /** Snapshot metadata */
84
+ metadata?: Record<string, unknown>;
85
+ /** When the snapshot was created */
86
+ snapshotCreatedAt: Date;
87
+ }
88
+ /**
89
+ * Restore session state from a snapshot.
90
+ *
91
+ * This restores our caches and returns the state to apply to a session.
92
+ * The session can then render and React will produce the same output
93
+ * because our hooks read from the restored caches.
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * // Load snapshot from storage
98
+ * const json = await db.sessions.get(sessionId);
99
+ * const snapshot = JSON.parse(json) as SessionSnapshot;
100
+ *
101
+ * // Create compiler first
102
+ * const compiler = new FiberCompiler(ctx);
103
+ *
104
+ * // Hydrate - restores data cache into compiler
105
+ * const state = hydrate(compiler, snapshot);
106
+ *
107
+ * // Now create/configure session with restored state
108
+ * session.timeline = state.timeline;
109
+ * session.currentTick = state.tick;
110
+ * // etc.
111
+ * ```
112
+ */
113
+ export declare function hydrate(compiler: FiberCompiler, snapshot: SessionSnapshot): HydrateResult;
114
+ /**
115
+ * Check if a snapshot is valid.
116
+ */
117
+ export declare function isValidSnapshot(obj: unknown): obj is SessionSnapshot;
118
+ /**
119
+ * Get snapshot age in milliseconds.
120
+ */
121
+ export declare function getSnapshotAge(snapshot: SessionSnapshot): number;
122
+ /**
123
+ * Create a deep clone of a snapshot (for testing/debugging).
124
+ */
125
+ export declare function cloneSnapshot(snapshot: SessionSnapshot): SessionSnapshot;
126
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hibernation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC;IAEX,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IAEtC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAElD,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAgBjB;AAMD,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B,yBAAyB;IACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,oCAAoC;IACpC,iBAAiB,EAAE,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,GAAG,aAAa,CA4BzF;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,eAAe,CAapE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,CAExE"}