@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,755 @@
1
+ /**
2
+ * New Procedure Implementation - Variable Arity, Decorators, Pipelines
3
+ *
4
+ * Design Principles:
5
+ * - Everything is a Procedure
6
+ * - Variable arity support (0, 1, N args)
7
+ * - Decorator = Function (same type)
8
+ * - Hooks are Procedures (@hook decorator)
9
+ * - Pipelines for middleware bundles
10
+ * - Direct calls (no registration)
11
+ * - Automatic tracking (execution graph, telemetry)
12
+ */
13
+ import { z } from "zod";
14
+ import { type KernelContext } from "./context";
15
+ import { type ExecutionBoundaryConfig } from "./execution-tracker";
16
+ import type { ExecutionStatus } from "../engine/execution-types";
17
+ import { EventBuffer, type TypedEvent } from "./event-buffer";
18
+ /**
19
+ * Extract the result type from a handle-like object.
20
+ * If T has a `result` property that is a Promise, extract its resolved type.
21
+ */
22
+ export type ResultOf<T> = T extends {
23
+ result: Promise<infer R>;
24
+ } ? R : T;
25
+ /**
26
+ * Enhanced Promise returned by all procedures.
27
+ *
28
+ * ProcedurePromise extends Promise<T> with a `.result` property that chains
29
+ * through to the inner result. This allows ergonomic access to final values
30
+ * without losing access to the handle.
31
+ *
32
+ * @typeParam T - The type the promise resolves to (usually a handle or value)
33
+ *
34
+ * @example Get the handle
35
+ * ```typescript
36
+ * const handle = await run(<Agent />, opts);
37
+ * handle.status; // 'running'
38
+ * for await (const event of handle) { }
39
+ * ```
40
+ *
41
+ * @example Get the result directly
42
+ * ```typescript
43
+ * const result = await run(<Agent />, opts).result;
44
+ * // Equivalent to: (await run(<Agent />, opts)).result
45
+ * ```
46
+ *
47
+ * @example Both work
48
+ * ```typescript
49
+ * const promise = run(<Agent />, opts);
50
+ * const handle = await promise; // Get handle
51
+ * const result = await promise.result; // Get final result
52
+ * ```
53
+ */
54
+ export interface ProcedurePromise<T> extends Promise<T> {
55
+ /**
56
+ * Promise that resolves to the final result.
57
+ * Chains through to T.result if T has a result property.
58
+ */
59
+ readonly result: Promise<ResultOf<T>>;
60
+ }
61
+ /**
62
+ * Create a ProcedurePromise from a regular Promise.
63
+ *
64
+ * Adds a `.result` property that chains through to the inner handle's result.
65
+ * If the resolved value has a `.result` property, `.result` resolves to that.
66
+ * Otherwise, `.result` resolves to the value itself.
67
+ *
68
+ * @param promise - The base promise to enhance
69
+ * @returns Enhanced ProcedurePromise with .result chaining
70
+ */
71
+ export declare function createProcedurePromise<T>(promise: Promise<T>): ProcedurePromise<T>;
72
+ /**
73
+ * Symbol used to brand Procedure objects for deterministic type checking.
74
+ * Using Symbol.for() ensures the same symbol across module instances.
75
+ */
76
+ export declare const PROCEDURE_SYMBOL: unique symbol;
77
+ /**
78
+ * Check if a value is a Procedure using Symbol branding.
79
+ *
80
+ * This is more reliable than duck typing because it uses a unique Symbol
81
+ * that can only be present on objects created by the procedure system.
82
+ *
83
+ * @param value - The value to check
84
+ * @returns True if the value is a branded Procedure
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const proc = createProcedure(async (x: number) => x * 2);
89
+ * isProcedure(proc); // true
90
+ * isProcedure(() => {}); // false
91
+ * isProcedure({ use: () => {} }); // false (duck typing would say true)
92
+ * ```
93
+ */
94
+ export declare function isProcedure(value: any): value is Procedure<any>;
95
+ /**
96
+ * Middleware function that can intercept and transform procedure execution.
97
+ *
98
+ * Middleware can:
99
+ * - Transform input arguments before passing to the next middleware/handler
100
+ * - Modify the result after `next()` returns
101
+ * - Short-circuit execution by not calling `next()`
102
+ * - Handle or transform errors
103
+ *
104
+ * @typeParam TArgs - The argument types of the procedure
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const loggingMiddleware: Middleware<[string]> = async (args, envelope, next) => {
109
+ * console.log(`${envelope.operationName} called with:`, args);
110
+ * const start = Date.now();
111
+ * try {
112
+ * const result = await next();
113
+ * console.log(`Completed in ${Date.now() - start}ms`);
114
+ * return result;
115
+ * } catch (error) {
116
+ * console.error(`Failed:`, error);
117
+ * throw error;
118
+ * }
119
+ * };
120
+ * ```
121
+ *
122
+ * @example Transform arguments
123
+ * ```typescript
124
+ * const upperMiddleware: Middleware<[string]> = async (args, envelope, next) => {
125
+ * return next([args[0].toUpperCase()]);
126
+ * };
127
+ * ```
128
+ *
129
+ * @see {@link ProcedureEnvelope} - The envelope containing execution metadata
130
+ * @see {@link createPipeline} - Bundle multiple middleware for reuse
131
+ */
132
+ export type Middleware<TArgs extends any[] = any[]> = (args: TArgs, envelope: ProcedureEnvelope<TArgs>, next: (transformedArgs?: TArgs) => Promise<any>) => Promise<any>;
133
+ /**
134
+ * Metadata envelope passed to middleware containing execution context.
135
+ *
136
+ * @typeParam TArgs - The argument types of the procedure
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const middleware: Middleware<[string]> = async (args, envelope, next) => {
141
+ * if (envelope.sourceType === 'hook') {
142
+ * console.log(`Hook ${envelope.operationName} from ${envelope.sourceId}`);
143
+ * }
144
+ * return next();
145
+ * };
146
+ * ```
147
+ */
148
+ export interface ProcedureEnvelope<TArgs extends any[]> {
149
+ /** Whether this is a regular procedure or a hook */
150
+ sourceType: "procedure" | "hook";
151
+ /** Identifier of the source (e.g., class name for decorated methods) */
152
+ sourceId?: string;
153
+ /** Name of the operation being executed */
154
+ operationName: string;
155
+ /** The arguments passed to the procedure */
156
+ args: TArgs;
157
+ /** The current kernel context */
158
+ context: KernelContext;
159
+ }
160
+ /**
161
+ * Handle for monitoring and controlling a running procedure execution.
162
+ *
163
+ * ExecutionHandle is AsyncIterable for streaming events.
164
+ * Use `.result` to get the final value as a Promise.
165
+ *
166
+ * NOTE: ExecutionHandle is NOT PromiseLike. This is intentional - it allows
167
+ * procedures to return ProcedurePromise<ExecutionHandle> where `await proc()`
168
+ * gives you the handle (not the result). Use `await handle.result` for the
169
+ * final value, or `await proc().result` for a one-liner.
170
+ *
171
+ * @typeParam TResult - The return type of the procedure
172
+ * @typeParam TEvent - The event type for streaming (defaults to any)
173
+ *
174
+ * @example Get handle, then result
175
+ * ```typescript
176
+ * const handle = await myProc('input');
177
+ * handle.status; // 'running'
178
+ * const result = await handle.result;
179
+ * ```
180
+ *
181
+ * @example Get result directly
182
+ * ```typescript
183
+ * const result = await myProc('input').result;
184
+ * ```
185
+ *
186
+ * @example Stream events
187
+ * ```typescript
188
+ * const handle = await myProc('input');
189
+ * for await (const event of handle) {
190
+ * console.log('Event:', event);
191
+ * }
192
+ * ```
193
+ *
194
+ * @example Access status and control
195
+ * ```typescript
196
+ * const handle = await myProc('input');
197
+ * console.log('Status:', handle.status); // 'running'
198
+ * handle.abort('user cancelled');
199
+ * console.log('Status:', handle.status); // 'aborted'
200
+ * ```
201
+ *
202
+ * @see {@link ExecutionHandleImpl} - Default implementation
203
+ * @see {@link HandleFactory} - Custom handle factory function type
204
+ */
205
+ export interface ExecutionHandle<TResult, TEvent extends TypedEvent = any> extends AsyncIterable<TEvent> {
206
+ /** Current execution status */
207
+ readonly status: "running" | "completed" | "error" | "aborted" | ExecutionStatus;
208
+ /** Trace ID for distributed tracing correlation */
209
+ readonly traceId: string;
210
+ /**
211
+ * Event buffer for streaming execution events.
212
+ * Supports dual consumption - multiple iterators can independently consume all events.
213
+ * Late subscribers receive replayed events from the start.
214
+ *
215
+ * API is compatible with EventEmitter: on, once, off, emit, addListener, removeListener.
216
+ * Use `on('eventType', handler)` to subscribe to specific event types.
217
+ * Use `on(handler)` or `on('*', handler)` for wildcard subscription.
218
+ */
219
+ readonly events: EventBuffer<TEvent>;
220
+ /**
221
+ * @deprecated Use `events` instead. This is now an alias for backwards compatibility.
222
+ */
223
+ readonly eventBuffer: EventBuffer<TEvent>;
224
+ /** Abort the execution */
225
+ abort(reason?: string): void;
226
+ /**
227
+ * Promise that resolves with the final result.
228
+ * Use `await handle.result` to get the value.
229
+ */
230
+ readonly result: Promise<TResult>;
231
+ [Symbol.asyncIterator](): AsyncIterator<TEvent>;
232
+ }
233
+ /**
234
+ * Default implementation of ExecutionHandle.
235
+ *
236
+ * Creates a handle that wraps a result promise and event stream.
237
+ * Uses EventBuffer for dual consumption - multiple iterators can independently
238
+ * consume all events, and late subscribers receive replayed events.
239
+ *
240
+ * @typeParam TResult - The return type of the procedure
241
+ * @typeParam TEvent - The event type for streaming
242
+ */
243
+ export declare class ExecutionHandleImpl<TResult, TEvent extends TypedEvent = any> implements ExecutionHandle<TResult, TEvent> {
244
+ readonly result: Promise<TResult>;
245
+ readonly traceId: string;
246
+ private _status;
247
+ private _abortController;
248
+ readonly events: EventBuffer<TEvent>;
249
+ constructor(result: Promise<TResult>, events: EventBuffer<TEvent>, traceId: string, abortController?: AbortController);
250
+ /**
251
+ * @deprecated Use `events` instead. This getter exists for backwards compatibility.
252
+ */
253
+ get eventBuffer(): EventBuffer<TEvent>;
254
+ get status(): "running" | "completed" | "error" | "aborted";
255
+ abort(reason?: string): void;
256
+ /**
257
+ * Push an event to the buffer.
258
+ * This is the primary way to emit events from procedure handlers.
259
+ */
260
+ pushEvent(event: TEvent): void;
261
+ [Symbol.asyncIterator](): AsyncIterator<TEvent>;
262
+ }
263
+ /**
264
+ * Factory function for creating custom execution handles.
265
+ *
266
+ * Use this to provide custom handle implementations with additional
267
+ * functionality like cancellation, status tracking, or specialized events.
268
+ *
269
+ * @typeParam THandle - The custom handle type (must extend ExecutionHandle)
270
+ * @typeParam TContext - The context type (must extend KernelContext)
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * const customHandleFactory: HandleFactory = (events, traceId, result, context, abortController) => {
275
+ * const handle = new ExecutionHandleImpl(result, events, traceId, abortController);
276
+ * // Add custom properties/methods
277
+ * return Object.assign(handle, {
278
+ * customMethod() { ... }
279
+ * });
280
+ * };
281
+ *
282
+ * const proc = createProcedure(
283
+ * { handleFactory: customHandleFactory },
284
+ * async (input) => input
285
+ * );
286
+ * ```
287
+ *
288
+ * @see {@link ExecutionHandle} - The base handle interface
289
+ * @see {@link ExecutionHandleImpl} - Default implementation
290
+ */
291
+ export type HandleFactory<THandle extends ExecutionHandle<any, any> = ExecutionHandle<any, any>, TContext extends KernelContext = KernelContext> = (events: EventBuffer<any>, traceId: string, result: Promise<any>, context: TContext, abortController?: AbortController) => THandle;
292
+ /**
293
+ * Configuration options for creating a procedure.
294
+ *
295
+ * @example
296
+ * ```typescript
297
+ * const proc = createProcedure({
298
+ * name: 'myProcedure',
299
+ * schema: z.object({ input: z.string() }),
300
+ * middleware: [loggingMiddleware],
301
+ * timeout: 5000,
302
+ * }, async ({ input }) => input.toUpperCase());
303
+ * ```
304
+ *
305
+ * @see {@link createProcedure} - Create a procedure with these options
306
+ */
307
+ export interface ProcedureOptions {
308
+ /** Name of the procedure (used in telemetry and logging) */
309
+ name?: string;
310
+ /** Middleware pipeline to apply to this procedure */
311
+ middleware?: (Middleware<any[]> | MiddlewarePipeline)[];
312
+ /**
313
+ * Factory for creating execution handles.
314
+ *
315
+ * - `undefined` (default): Creates ExecutionHandleImpl, returns ExecutionHandle
316
+ * - `HandleFactory`: Creates custom handle, returns that handle type
317
+ * - `false`: Pass-through mode - no handle created, returns handler result directly
318
+ *
319
+ * Use `false` for procedures that delegate to other procedures returning handles,
320
+ * avoiding double-wrapping.
321
+ *
322
+ * @example Pass-through procedure
323
+ * ```typescript
324
+ * const run = createProcedure(
325
+ * { name: 'tentickle:run', handleFactory: false },
326
+ * (element, input) => app.run(input) // Returns SessionExecutionHandle directly
327
+ * );
328
+ * ```
329
+ */
330
+ handleFactory?: HandleFactory | true | false;
331
+ /** Zod schema for input validation */
332
+ schema?: z.ZodType<any>;
333
+ /** Parent procedure name (for hooks) */
334
+ parentProcedure?: string;
335
+ /** @internal Whether this is a procedure or hook */
336
+ sourceType?: "procedure" | "hook";
337
+ /** @internal Source identifier (e.g., class name) */
338
+ sourceId?: string;
339
+ /** Metadata for telemetry span attributes (e.g., { type: 'tool', id: 'myTool' }) */
340
+ metadata?: Record<string, any>;
341
+ /** Timeout in milliseconds. If exceeded, throws AbortError.timeout() */
342
+ timeout?: number;
343
+ /**
344
+ * Skip ExecutionTracker procedure tracking for this procedure.
345
+ * Used for transparent wrappers like withContext() that delegate to another procedure.
346
+ * @internal
347
+ */
348
+ skipTracking?: boolean;
349
+ /**
350
+ * Declarative execution boundary configuration.
351
+ *
352
+ * - `'always'`: Always create a new root execution (engine:execute, engine:stream)
353
+ * - `'child'`: Always create a new child execution (component_tool, fork, spawn)
354
+ * - `'auto'`: Create only if not already in an execution (model:generate, model:stream)
355
+ * - `false`: Never create an execution boundary (compile:tick, internal procedures)
356
+ *
357
+ * @default 'auto'
358
+ */
359
+ executionBoundary?: ExecutionBoundaryConfig;
360
+ /**
361
+ * Explicit execution type (e.g., 'engine', 'model', 'component_tool', 'fork', 'spawn').
362
+ * If not provided, derived from procedure name.
363
+ * Only used when this procedure becomes an execution boundary.
364
+ */
365
+ executionType?: string;
366
+ }
367
+ /**
368
+ * A callable function wrapper with middleware, validation, and execution control.
369
+ *
370
+ * Procedures are the core execution primitive in Tentickle. They wrap any async function
371
+ * and provide:
372
+ * - **Middleware pipeline** - Transform args, intercept results, handle errors
373
+ * - **Schema validation** - Zod-based input validation
374
+ * - **Execution handles** - Every call returns ExecutionHandle for control
375
+ * - **Automatic tracking** - Every call is tracked in the procedure graph
376
+ * - **Composition** - Chain procedures with `.pipe()`
377
+ *
378
+ * Procedures return ExecutionHandle which is both PromiseLike AND AsyncIterable:
379
+ * - `await proc(args)` → resolves to the result
380
+ * - `for await (const event of proc(args))` → streams events
381
+ *
382
+ * @typeParam THandler - The function type being wrapped
383
+ *
384
+ * @example Direct call - await for result
385
+ * ```typescript
386
+ * const greet = createProcedure(async (name: string) => `Hello, ${name}!`);
387
+ * const result = await greet('World'); // 'Hello, World!'
388
+ * ```
389
+ *
390
+ * @example Stream events
391
+ * ```typescript
392
+ * const handle = proc(input);
393
+ * for await (const event of handle) {
394
+ * console.log('Event:', event);
395
+ * }
396
+ * ```
397
+ *
398
+ * @example Access handle status
399
+ * ```typescript
400
+ * const handle = proc(input);
401
+ * console.log('Status:', handle.status); // 'running'
402
+ * handle.abort('cancelled');
403
+ * ```
404
+ *
405
+ * @example With middleware
406
+ * ```typescript
407
+ * const proc = createProcedure(async (x: number) => x * 2)
408
+ * .use(loggingMiddleware)
409
+ * .use(timingMiddleware);
410
+ * ```
411
+ *
412
+ * @see {@link createProcedure} - Create a new procedure
413
+ * @see {@link Middleware} - Middleware function type
414
+ * @see {@link ExecutionHandle} - Handle for execution control
415
+ */
416
+ export interface Procedure<THandler extends (...args: any[]) => any, TPassThrough extends boolean = false> {
417
+ /**
418
+ * Call the procedure directly.
419
+ * Returns ProcedurePromise<ExecutionHandle<T>>.
420
+ *
421
+ * Usage:
422
+ * - `await proc()` → ExecutionHandle (with status, streaming, abort)
423
+ * - `await proc().result` → T (the final value)
424
+ */
425
+ (...args: ExtractArgs<THandler>): TPassThrough extends true ? Promise<ExtractReturn<THandler>> : ProcedurePromise<ExecutionHandle<ExtractReturn<THandler>>>;
426
+ /**
427
+ * Execute the procedure with explicit arguments.
428
+ * Equivalent to direct call.
429
+ */
430
+ exec(...args: ExtractArgs<THandler>): TPassThrough extends true ? Promise<ExtractReturn<THandler>> : ProcedurePromise<ExecutionHandle<ExtractReturn<THandler>>>;
431
+ /**
432
+ * Add middleware to the procedure. Returns a new Procedure (immutable).
433
+ * @param middleware - Middleware functions or pipelines to add
434
+ */
435
+ use(...middleware: (Middleware<ExtractArgs<THandler>> | MiddlewarePipeline)[]): Procedure<THandler, TPassThrough>;
436
+ /**
437
+ * Create a procedure variant with merged context. Returns a new Procedure.
438
+ * @param ctx - Partial context to merge with the current context
439
+ */
440
+ withContext(ctx: Partial<KernelContext>): Procedure<THandler, TPassThrough>;
441
+ /**
442
+ * Add a single middleware. Returns a new Procedure.
443
+ * Convenience method equivalent to `.use(mw)`.
444
+ */
445
+ withMiddleware(mw: Middleware<ExtractArgs<THandler>> | MiddlewarePipeline): Procedure<THandler, TPassThrough>;
446
+ /**
447
+ * Create a procedure variant with a timeout. Returns a new Procedure.
448
+ * Throws `AbortError.timeout()` if the timeout is exceeded.
449
+ * @param ms - Timeout in milliseconds
450
+ */
451
+ withTimeout(ms: number): Procedure<THandler, TPassThrough>;
452
+ /**
453
+ * Create a procedure variant with merged metadata. Returns a new Procedure.
454
+ * Metadata is passed to ExecutionTracker and included in procedure events.
455
+ * Useful for passing model IDs, tool names, or other execution-specific info.
456
+ *
457
+ * @param metadata - Metadata to merge with existing procedure metadata
458
+ *
459
+ * @example
460
+ * ```typescript
461
+ * // Model adapter passes model info
462
+ * const result = await model.generate
463
+ * .withMetadata({ modelId: 'gpt-4o', provider: 'openai' })
464
+ * .exec(messages);
465
+ *
466
+ * // Tool passes tool info
467
+ * const result = await tool.execute
468
+ * .withMetadata({ toolName: 'search', toolId: 'search-v2' })
469
+ * .exec(input);
470
+ * ```
471
+ */
472
+ withMetadata(metadata: Record<string, unknown>): Procedure<THandler, TPassThrough>;
473
+ /**
474
+ * Pipe the output of this procedure to another procedure.
475
+ * Creates a new procedure that runs this procedure, then passes its result to the next.
476
+ *
477
+ * @example
478
+ * ```typescript
479
+ * const parse = createProcedure(async (input: string) => JSON.parse(input));
480
+ * const validate = createProcedure(async (data: object) => schema.parse(data));
481
+ * const transform = createProcedure(async (valid: Valid) => transform(valid));
482
+ *
483
+ * const pipeline = parse.pipe(validate).pipe(transform);
484
+ * const result = await pipeline('{"name": "test"}');
485
+ * ```
486
+ */
487
+ pipe<TNext extends (arg: ExtractReturn<THandler>) => any>(next: Procedure<TNext>): Procedure<(...args: ExtractArgs<THandler>) => Promise<ExtractReturn<TNext>>, TPassThrough>;
488
+ }
489
+ /**
490
+ * Helper type to extract argument types from a function signature.
491
+ * Handles functions with `this` parameters and generator functions.
492
+ *
493
+ * @example
494
+ * ```typescript
495
+ * type Args1 = ExtractArgs<(input: string) => void>; // [string]
496
+ * type Args2 = ExtractArgs<(this: Test, input: string) => void>; // [string]
497
+ * type Args3 = ExtractArgs<() => Generator<string>>; // []
498
+ * ```
499
+ */
500
+ export type ExtractArgs<T> = T extends {
501
+ (this: infer _This, ...args: infer Args): any;
502
+ } ? Args : T extends {
503
+ (...args: infer Args): any;
504
+ } ? Args : T extends {
505
+ (this: infer _This, ...args: infer Args): Generator<infer _Y, infer _R, infer _N>;
506
+ } ? Args : T extends {
507
+ (...args: infer Args): Generator<infer _Y, infer _R, infer _N>;
508
+ } ? Args : T extends {
509
+ (this: infer _This, ...args: infer Args): AsyncGenerator<infer _Y, infer _R, infer _N>;
510
+ } ? Args : T extends {
511
+ (...args: infer Args): AsyncGenerator<infer _Y, infer _R, infer _N>;
512
+ } ? Args : never;
513
+ /**
514
+ * Helper type to extract return type from a function signature.
515
+ * Handles both Promise and direct returns, and unwraps Promise.
516
+ * Preserves AsyncIterable as-is.
517
+ */
518
+ export type ExtractReturn<T> = T extends (...args: any[]) => infer Return ? Return extends Promise<infer U> ? U : Return extends AsyncIterable<any> ? Return : Return : never;
519
+ /**
520
+ * Helper type to transform a method signature to Procedure type.
521
+ * Extracts args and return type, then creates Procedure<TArgs, TOutput>.
522
+ *
523
+ * Use this type to get proper IntelliSense for decorated methods:
524
+ *
525
+ * @example
526
+ * ```typescript
527
+ * class Model {
528
+ * @procedure()
529
+ * async execute(input: string): Promise<string> { ... }
530
+ * }
531
+ *
532
+ * // For IntelliSense, you can use:
533
+ * type ModelWithProcedures = {
534
+ * execute: AsProcedure<Model['execute']>;
535
+ * };
536
+ *
537
+ * // Or cast at usage:
538
+ * const model = new Model();
539
+ * const execute = model.execute as AsProcedure<typeof model.execute>;
540
+ * ```
541
+ */
542
+ export type AsProcedure<T extends (...args: any[]) => any> = Procedure<T>;
543
+ /**
544
+ * Helper type to transform all methods in a class to Procedures.
545
+ *
546
+ * **Primary Use Case**: Use with decorators when you need IntelliSense.
547
+ *
548
+ * ```typescript
549
+ * class Model {
550
+ * @procedure()
551
+ * async execute(input: string): Promise<string> { ... }
552
+ * }
553
+ *
554
+ * // Most of the time - runtime works perfectly, no types needed
555
+ * const model = new Model();
556
+ * await model.execute('test'); // ✅ Works
557
+ *
558
+ * // When you need IntelliSense - cast once
559
+ * const typedModel = model as WithProcedures<Model>;
560
+ * typedModel.execute.use(...); // ✅ Full IntelliSense
561
+ * typedModel.execute.withHandle(); // ✅ Full IntelliSense
562
+ * ```
563
+ *
564
+ * **Alternative**: Use property initializers for full types everywhere:
565
+ * ```typescript
566
+ * class Model {
567
+ * execute = createProcedure(async (input: string) => input);
568
+ * // ✅ Full types always, but more verbose
569
+ * }
570
+ * ```
571
+ */
572
+ export type WithProcedures<T> = {
573
+ [K in keyof T]: T[K] extends (...args: any[]) => any ? AsProcedure<T[K]> : T[K];
574
+ };
575
+ /**
576
+ * A reusable bundle of middleware that can be applied to procedures.
577
+ *
578
+ * Pipelines allow you to define common middleware combinations once
579
+ * and reuse them across multiple procedures.
580
+ *
581
+ * @example
582
+ * ```typescript
583
+ * const commonPipeline = createPipeline()
584
+ * .use(loggingMiddleware)
585
+ * .use(timingMiddleware)
586
+ * .use(errorHandlingMiddleware);
587
+ *
588
+ * const proc1 = createProcedure(handler1).use(commonPipeline);
589
+ * const proc2 = createProcedure(handler2).use(commonPipeline);
590
+ * ```
591
+ *
592
+ * @see {@link createPipeline} - Create a new middleware pipeline
593
+ * @see {@link Middleware} - Individual middleware function type
594
+ */
595
+ export interface MiddlewarePipeline {
596
+ /** Add middleware to this pipeline. Returns the pipeline for chaining. */
597
+ use(...middleware: Middleware<any[]>[]): MiddlewarePipeline;
598
+ /** Get all middleware in this pipeline. */
599
+ getMiddleware(): Middleware<any[]>[];
600
+ }
601
+ /**
602
+ * Create a reusable middleware pipeline.
603
+ *
604
+ * Pipelines bundle multiple middleware together for reuse across procedures.
605
+ * They can be passed to `procedure.use()` just like individual middleware.
606
+ *
607
+ * @param middleware - Initial middleware to include in the pipeline
608
+ * @returns A new MiddlewarePipeline
609
+ *
610
+ * @example
611
+ * ```typescript
612
+ * // Create a pipeline with initial middleware
613
+ * const authPipeline = createPipeline([authMiddleware, rateLimitMiddleware]);
614
+ *
615
+ * // Or build it up with .use()
616
+ * const logPipeline = createPipeline()
617
+ * .use(requestLogging)
618
+ * .use(responseLogging);
619
+ *
620
+ * // Apply to procedures
621
+ * const proc = createProcedure(handler)
622
+ * .use(authPipeline)
623
+ * .use(logPipeline);
624
+ * ```
625
+ *
626
+ * @see {@link MiddlewarePipeline} - The pipeline interface
627
+ */
628
+ export declare function createPipeline(middleware?: Middleware<any[]>[]): MiddlewarePipeline;
629
+ export declare function isAsyncIterable(obj: any): obj is AsyncIterable<any>;
630
+ /**
631
+ * Helper to create a generator procedure that captures 'this' context.
632
+ */
633
+ type Handler<TArgs extends any[]> = ((...args: TArgs) => any) | ((this: any, ...args: TArgs) => any);
634
+ export declare function generatorProcedure<TThis, TArgs extends any[], THandler extends Handler<TArgs>>(optionsOrFn?: ProcedureOptions | THandler, fn?: THandler): Procedure<THandler>;
635
+ /**
636
+ * Create a Procedure from a function.
637
+ *
638
+ * By default, calling the procedure returns an ExecutionHandle.
639
+ * Use `handleFactory: false` for pass-through mode where the handler's
640
+ * return value is returned directly (useful for delegating to other procedures).
641
+ *
642
+ * @example Standard procedure (returns ExecutionHandle)
643
+ * ```typescript
644
+ * const greet = createProcedure(async (name: string) => `Hello, ${name}!`);
645
+ * const handle = greet('World'); // ExecutionHandle
646
+ * const result = await handle; // "Hello, World!"
647
+ * ```
648
+ *
649
+ * @example Pass-through procedure (returns handler result directly)
650
+ * ```typescript
651
+ * const run = createProcedure(
652
+ * { name: 'tentickle:run', handleFactory: false },
653
+ * (element, input) => app.run(input) // Returns SessionExecutionHandle
654
+ * );
655
+ * const handle = run(<jsx />, opts); // SessionExecutionHandle directly
656
+ * ```
657
+ */
658
+ export declare function createProcedure<THandler extends (...args: any[]) => any>(handler: THandler): Procedure<THandler>;
659
+ export declare function createProcedure<THandler extends (...args: any[]) => any>(options: ProcedureOptions & {
660
+ handleFactory: false;
661
+ }, handler: THandler): Procedure<THandler, true>;
662
+ export declare function createProcedure<THandler extends (...args: any[]) => any>(options: ProcedureOptions, handler: THandler): Procedure<THandler>;
663
+ /**
664
+ * Pipe multiple procedures together, passing the output of each to the next.
665
+ *
666
+ * @example
667
+ * ```typescript
668
+ * const parse = createProcedure(async (json: string) => JSON.parse(json));
669
+ * const validate = createProcedure(async (data: unknown) => schema.parse(data));
670
+ * const transform = createProcedure(async (valid: Valid) => transform(valid));
671
+ *
672
+ * // Create a pipeline that parses, validates, then transforms
673
+ * const pipeline = pipe(parse, validate, transform);
674
+ * const result = await pipeline('{"name": "test"}');
675
+ * ```
676
+ */
677
+ export declare function pipe<T1 extends (...args: any[]) => any>(p1: Procedure<T1>): Procedure<T1>;
678
+ export declare function pipe<T1 extends (...args: any[]) => any, T2 extends (arg: ExtractReturn<T1>) => any>(p1: Procedure<T1>, p2: Procedure<T2>): Procedure<(...args: ExtractArgs<T1>) => Promise<ExtractReturn<T2>>>;
679
+ export declare function pipe<T1 extends (...args: any[]) => any, T2 extends (arg: ExtractReturn<T1>) => any, T3 extends (arg: ExtractReturn<T2>) => any>(p1: Procedure<T1>, p2: Procedure<T2>, p3: Procedure<T3>): Procedure<(...args: ExtractArgs<T1>) => Promise<ExtractReturn<T3>>>;
680
+ export declare function pipe<T1 extends (...args: any[]) => any, T2 extends (arg: ExtractReturn<T1>) => any, T3 extends (arg: ExtractReturn<T2>) => any, T4 extends (arg: ExtractReturn<T3>) => any>(p1: Procedure<T1>, p2: Procedure<T2>, p3: Procedure<T3>, p4: Procedure<T4>): Procedure<(...args: ExtractArgs<T1>) => Promise<ExtractReturn<T4>>>;
681
+ export declare function pipe<T1 extends (...args: any[]) => any, T2 extends (arg: ExtractReturn<T1>) => any, T3 extends (arg: ExtractReturn<T2>) => any, T4 extends (arg: ExtractReturn<T3>) => any, T5 extends (arg: ExtractReturn<T4>) => any>(p1: Procedure<T1>, p2: Procedure<T2>, p3: Procedure<T3>, p4: Procedure<T4>, p5: Procedure<T5>): Procedure<(...args: ExtractArgs<T1>) => Promise<ExtractReturn<T5>>>;
682
+ /**
683
+ * Compose multiple procedures into a single procedure (right-to-left execution).
684
+ * This is the functional programming convention: compose(a, b, c)(x) = a(b(c(x)))
685
+ *
686
+ * For left-to-right execution, use `pipe()` instead.
687
+ *
688
+ * @example
689
+ * ```typescript
690
+ * const format = createProcedure((s: string) => s.toUpperCase());
691
+ * const validate = createProcedure((s: string) => s.trim());
692
+ * const parse = createProcedure((input: string) => input);
693
+ *
694
+ * // compose executes right-to-left: parse -> validate -> format
695
+ * const pipeline = compose(format, validate, parse);
696
+ * const result = await pipeline(' hello '); // "HELLO"
697
+ * ```
698
+ */
699
+ export declare function compose<T1 extends (...args: any[]) => any>(p1: Procedure<T1>): Procedure<T1>;
700
+ export declare function compose<T1 extends (arg: ExtractReturn<T2>) => any, T2 extends (...args: any[]) => any>(p1: Procedure<T1>, p2: Procedure<T2>): Procedure<(...args: ExtractArgs<T2>) => Promise<ExtractReturn<T1>>>;
701
+ export declare function compose<T1 extends (arg: ExtractReturn<T2>) => any, T2 extends (arg: ExtractReturn<T3>) => any, T3 extends (...args: any[]) => any>(p1: Procedure<T1>, p2: Procedure<T2>, p3: Procedure<T3>): Procedure<(...args: ExtractArgs<T3>) => Promise<ExtractReturn<T1>>>;
702
+ export declare function compose<T1 extends (arg: ExtractReturn<T2>) => any, T2 extends (arg: ExtractReturn<T3>) => any, T3 extends (arg: ExtractReturn<T4>) => any, T4 extends (...args: any[]) => any>(p1: Procedure<T1>, p2: Procedure<T2>, p3: Procedure<T3>, p4: Procedure<T4>): Procedure<(...args: ExtractArgs<T4>) => Promise<ExtractReturn<T1>>>;
703
+ export declare function compose<T1 extends (arg: ExtractReturn<T2>) => any, T2 extends (arg: ExtractReturn<T3>) => any, T3 extends (arg: ExtractReturn<T4>) => any, T4 extends (arg: ExtractReturn<T5>) => any, T5 extends (...args: any[]) => any>(p1: Procedure<T1>, p2: Procedure<T2>, p3: Procedure<T3>, p4: Procedure<T4>, p5: Procedure<T5>): Procedure<(...args: ExtractArgs<T5>) => Promise<ExtractReturn<T1>>>;
704
+ /**
705
+ * Create a Hook Procedure from a function.
706
+ *
707
+ * @example
708
+ * ```typescript
709
+ * const processChunk = createHook(async (chunk: string) => chunk.toUpperCase());
710
+ * // Type inferred: Procedure<[string], string>
711
+ * ```
712
+ */
713
+ export declare function createHook<THandler extends (...args: any[]) => any>(handler: THandler): Procedure<THandler>;
714
+ export declare function createHook<THandler extends (...args: any[]) => any>(options: ProcedureOptions, handler: THandler): Procedure<THandler>;
715
+ /**
716
+ * Type-safe helper to apply middleware to a Procedure while preserving types.
717
+ *
718
+ * This helper ensures that middleware types are correctly matched to the Procedure's
719
+ * argument types, avoiding the need for type assertions.
720
+ *
721
+ * @example
722
+ * ```typescript
723
+ * const proc = createProcedure({ name: 'test' }, async (input: string) => input);
724
+ * const middleware: Middleware<[string]>[] = [...];
725
+ * const procWithMw = applyMiddleware(proc, middleware);
726
+ * // procWithMw is still Procedure<[string], string> - types preserved!
727
+ * ```
728
+ */
729
+ export declare function applyMiddleware<TArgs extends any[], TOutput>(procedure: Procedure<(...args: TArgs) => TOutput>, ...middleware: (Middleware<TArgs> | MiddlewarePipeline)[]): Procedure<(...args: TArgs) => TOutput>;
730
+ /**
731
+ * Type-safe helper to apply middleware from a registry/hook system.
732
+ *
733
+ * This is useful when middleware comes from hook registries where types might
734
+ * be unions or `Middleware<any[]>`. The helper ensures type safety by requiring
735
+ * the middleware to match the Procedure's argument types.
736
+ *
737
+ * @example
738
+ * ```typescript
739
+ * const proc = createProcedure({ name: 'test' }, async (input: string) => input);
740
+ * const registryMiddleware = registry.getMiddleware('test'); // Middleware<any[]>[]
741
+ * const procWithMw = applyRegistryMiddleware(proc, registryMiddleware);
742
+ * // Types are preserved and validated
743
+ * ```
744
+ */
745
+ export declare function applyRegistryMiddleware<THandler extends (...args: any[]) => any>(procedure: Procedure<THandler>, ...middleware: (Middleware<any[]> | MiddlewarePipeline)[]): Procedure<THandler>;
746
+ export declare function wrapProcedure(middleware: Middleware<any[]>[]): {
747
+ <THandler extends (...args: any[]) => any>(handler: THandler): Procedure<THandler>;
748
+ <THandler extends (...args: any[]) => any>(config: ProcedureOptions, handler: THandler): Procedure<THandler>;
749
+ };
750
+ export declare function wrapHook(middleware: Middleware<any[]>[]): {
751
+ <THandler extends (...args: any[]) => any>(handler: THandler): Procedure<THandler>;
752
+ <THandler extends (...args: any[]) => any>(config: ProcedureOptions, handler: THandler): Procedure<THandler>;
753
+ };
754
+ export {};
755
+ //# sourceMappingURL=procedure.d.ts.map