@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,700 @@
1
+ /**
2
+ * Agentick Configuration Instance
3
+ *
4
+ * `Agentick` is the default global instance. Users interact with instances, never the class directly.
5
+ *
6
+ * ```typescript
7
+ * import { Agentick, createApp } from 'agentick';
8
+ *
9
+ * // Configure global instance
10
+ * Agentick.use('*', loggingMiddleware);
11
+ * Agentick.use('tool:*', authMiddleware);
12
+ *
13
+ * // createApp uses Agentick by default
14
+ * const app = createApp(MyAgent, { model });
15
+ *
16
+ * // Create a scoped instance (inherits from Agentick)
17
+ * const scoped = Agentick.create();
18
+ * scoped.use('model:generate', rateLimitMiddleware);
19
+ * const scopedApp = scoped.createApp(MyAgent, { model });
20
+ *
21
+ * // Create isolated instance (no inheritance)
22
+ * const isolated = Agentick.create({ inheritDefaults: false });
23
+ * ```
24
+ *
25
+ * @module agentick/@agentick/instance
26
+ */
27
+ import { createProcedure, } from "@agentick/kernel";
28
+ import { SessionImpl } from "./app/session";
29
+ import { createSessionStore } from "./app/sqlite-session-store";
30
+ class SessionRegistry {
31
+ options;
32
+ sessions = new Map();
33
+ lastActivity = new Map();
34
+ sweepTimer;
35
+ // Resolved options
36
+ store;
37
+ idleTimeout;
38
+ maxActive;
39
+ autoHibernate;
40
+ constructor(options) {
41
+ this.options = options;
42
+ // Resolve options with backwards compatibility
43
+ const sessionsConfig = options.sessions ?? {};
44
+ // Resolve store configuration (string path, config object, or SessionStore instance)
45
+ this.store = createSessionStore(sessionsConfig.store);
46
+ this.idleTimeout = sessionsConfig.idleTimeout ?? 0;
47
+ this.maxActive = sessionsConfig.maxActive ?? 0;
48
+ this.autoHibernate = sessionsConfig.autoHibernate ?? !!this.store;
49
+ // Start sweep timer if we have an idle timeout
50
+ if (this.idleTimeout > 0) {
51
+ const interval = Math.max(1000, Math.min(this.idleTimeout, 30000));
52
+ this.sweepTimer = setInterval(() => this.sweep(), interval);
53
+ }
54
+ }
55
+ get(sessionId) {
56
+ const session = this.sessions.get(sessionId);
57
+ if (session) {
58
+ this.touch(sessionId);
59
+ }
60
+ return session;
61
+ }
62
+ /**
63
+ * Try to get a session, hydrating from store if necessary.
64
+ * Returns undefined if session doesn't exist anywhere.
65
+ */
66
+ async getOrHydrate(sessionId, createSession) {
67
+ // Check in-memory first
68
+ const existing = this.get(sessionId);
69
+ if (existing) {
70
+ return existing;
71
+ }
72
+ // Try to hydrate from store
73
+ if (!this.store) {
74
+ return undefined;
75
+ }
76
+ const snapshot = await this.store.load(sessionId);
77
+ if (!snapshot) {
78
+ return undefined;
79
+ }
80
+ // Call onBeforeHydrate hook
81
+ if (this.options.onBeforeHydrate) {
82
+ const result = await this.options.onBeforeHydrate(sessionId, snapshot);
83
+ if (result === false) {
84
+ return undefined; // Hydration cancelled
85
+ }
86
+ if (result && typeof result === "object" && "version" in result) {
87
+ // Use modified snapshot
88
+ const session = createSession(result);
89
+ this.register(session.id, session);
90
+ // Call onAfterHydrate
91
+ await this.options.onAfterHydrate?.(session, result);
92
+ // Delete from store since it's now in memory
93
+ await this.store.delete(sessionId);
94
+ return session;
95
+ }
96
+ }
97
+ // Create session from snapshot
98
+ const session = createSession(snapshot);
99
+ this.register(session.id, session);
100
+ // Call onAfterHydrate
101
+ await this.options.onAfterHydrate?.(session, snapshot);
102
+ // Delete from store since it's now in memory
103
+ await this.store.delete(sessionId);
104
+ return session;
105
+ }
106
+ register(sessionId, session) {
107
+ this.sessions.set(sessionId, session);
108
+ this.touch(sessionId);
109
+ this.enforceMaxActive();
110
+ }
111
+ has(sessionId) {
112
+ return this.sessions.has(sessionId);
113
+ }
114
+ async isHibernated(sessionId) {
115
+ if (!this.store) {
116
+ return false;
117
+ }
118
+ if (this.store.has) {
119
+ return this.store.has(sessionId);
120
+ }
121
+ // Fallback: try to load
122
+ const snapshot = await this.store.load(sessionId);
123
+ return snapshot !== null;
124
+ }
125
+ list() {
126
+ return Array.from(this.sessions.keys());
127
+ }
128
+ async listHibernated() {
129
+ if (!this.store?.list) {
130
+ return [];
131
+ }
132
+ return this.store.list();
133
+ }
134
+ /**
135
+ * Hibernate a session (save to store and remove from memory).
136
+ * Returns the snapshot if successful, null if cancelled or no store.
137
+ */
138
+ async hibernate(sessionId) {
139
+ const session = this.sessions.get(sessionId);
140
+ if (!session) {
141
+ return null;
142
+ }
143
+ if (!this.store) {
144
+ // No store configured - just close the session
145
+ this.remove(sessionId, true);
146
+ return null;
147
+ }
148
+ // Get snapshot
149
+ const snapshot = session.snapshot();
150
+ // Call onBeforeHibernate hook
151
+ if (this.options.onBeforeHibernate) {
152
+ const result = await this.options.onBeforeHibernate(session, snapshot);
153
+ if (result === false) {
154
+ return null; // Hibernation cancelled
155
+ }
156
+ if (result && typeof result === "object" && "version" in result) {
157
+ // Use modified snapshot
158
+ await this.store.save(sessionId, result);
159
+ this.remove(sessionId, true);
160
+ await this.options.onAfterHibernate?.(sessionId, result);
161
+ return result;
162
+ }
163
+ }
164
+ // Save to store
165
+ await this.store.save(sessionId, snapshot);
166
+ // Remove from memory (close session)
167
+ this.remove(sessionId, true);
168
+ // Call onAfterHibernate
169
+ await this.options.onAfterHibernate?.(sessionId, snapshot);
170
+ return snapshot;
171
+ }
172
+ remove(sessionId, closeSession = true) {
173
+ const session = this.sessions.get(sessionId);
174
+ if (!session)
175
+ return;
176
+ this.sessions.delete(sessionId);
177
+ this.lastActivity.delete(sessionId);
178
+ if (closeSession) {
179
+ session.close();
180
+ }
181
+ this.options.onSessionClose?.(sessionId);
182
+ }
183
+ /**
184
+ * Permanently delete a session from both memory and store.
185
+ */
186
+ async delete(sessionId) {
187
+ this.remove(sessionId, true);
188
+ if (this.store) {
189
+ await this.store.delete(sessionId);
190
+ }
191
+ }
192
+ destroy() {
193
+ if (this.sweepTimer) {
194
+ clearInterval(this.sweepTimer);
195
+ this.sweepTimer = undefined;
196
+ }
197
+ for (const sessionId of this.sessions.keys()) {
198
+ this.remove(sessionId, true);
199
+ }
200
+ }
201
+ touch(sessionId) {
202
+ const session = this.sessions.get(sessionId);
203
+ if (!session)
204
+ return;
205
+ this.lastActivity.set(sessionId, Date.now());
206
+ // Maintain LRU order by re-inserting
207
+ this.sessions.delete(sessionId);
208
+ this.sessions.set(sessionId, session);
209
+ }
210
+ markActive(sessionId) {
211
+ this.touch(sessionId);
212
+ }
213
+ async sweep() {
214
+ if (this.idleTimeout <= 0)
215
+ return;
216
+ const now = Date.now();
217
+ const toHibernate = [];
218
+ for (const [sessionId, last] of this.lastActivity.entries()) {
219
+ if (now - last >= this.idleTimeout) {
220
+ toHibernate.push(sessionId);
221
+ }
222
+ }
223
+ // Hibernate idle sessions
224
+ for (const sessionId of toHibernate) {
225
+ if (this.autoHibernate && this.store) {
226
+ await this.hibernate(sessionId);
227
+ }
228
+ else {
229
+ this.remove(sessionId, true);
230
+ }
231
+ }
232
+ }
233
+ async enforceMaxActive() {
234
+ if (this.maxActive <= 0)
235
+ return;
236
+ while (this.sessions.size > this.maxActive) {
237
+ const oldestId = this.sessions.keys().next().value;
238
+ if (!oldestId)
239
+ break;
240
+ if (this.autoHibernate && this.store) {
241
+ await this.hibernate(oldestId);
242
+ }
243
+ else {
244
+ this.remove(oldestId, true);
245
+ }
246
+ }
247
+ }
248
+ }
249
+ // ============================================================================
250
+ // App Implementation
251
+ // ============================================================================
252
+ class AppImpl {
253
+ Component;
254
+ options;
255
+ run;
256
+ registry;
257
+ sessionCreateHandlers = new Set();
258
+ sessionCloseHandlers = new Set();
259
+ constructor(Component, options) {
260
+ this.Component = Component;
261
+ this.options = options;
262
+ this.registry = new SessionRegistry({
263
+ sessions: options.sessions,
264
+ // Callbacks
265
+ onSessionClose: (sessionId) => {
266
+ this.options.onSessionClose?.(sessionId);
267
+ for (const handler of this.sessionCloseHandlers) {
268
+ handler(sessionId);
269
+ }
270
+ },
271
+ onBeforeHibernate: options.onBeforeHibernate,
272
+ onAfterHibernate: options.onAfterHibernate,
273
+ onBeforeHydrate: options.onBeforeHydrate,
274
+ onAfterHydrate: options.onAfterHydrate,
275
+ });
276
+ this.run = createProcedure({
277
+ name: "app:run",
278
+ handleFactory: false,
279
+ }, async (input) => {
280
+ const { props = {}, messages = [], history = [], maxTicks, signal, devTools, recording, } = input;
281
+ const sessionOptions = {
282
+ initialTimeline: history.length > 0 ? history : undefined,
283
+ devTools: devTools ?? this.options.devTools,
284
+ recording,
285
+ };
286
+ const executionOptions = {
287
+ maxTicks,
288
+ signal,
289
+ };
290
+ const session = this.createSession(undefined, sessionOptions);
291
+ for (const message of messages) {
292
+ session.queue.exec(message);
293
+ }
294
+ const handle = await session.render(props, executionOptions);
295
+ handle.result
296
+ .finally(() => session.close())
297
+ .catch(() => {
298
+ // Prevent unhandled rejection - errors are captured in handle
299
+ });
300
+ return handle;
301
+ });
302
+ }
303
+ async send(input, options) {
304
+ const sessionId = options?.sessionId;
305
+ if (!sessionId) {
306
+ const session = this.createSession(undefined, {});
307
+ const handle = await session.send(input);
308
+ handle.result
309
+ .finally(() => session.close())
310
+ .catch(() => {
311
+ // Prevent unhandled rejection - errors are captured in handle
312
+ });
313
+ return handle;
314
+ }
315
+ const session = await this.session(sessionId);
316
+ const maybeModified = this.options.onBeforeSend?.(session, input) ?? input;
317
+ const handle = await session.send(maybeModified);
318
+ handle.result
319
+ .then((result) => {
320
+ this.options.onAfterSend?.(session, result);
321
+ })
322
+ .catch(() => {
323
+ // Errors are already surfaced via lifecycle callbacks
324
+ });
325
+ return handle;
326
+ }
327
+ async session(idOrOptions) {
328
+ // Parse arguments: string is ID, object is options
329
+ let sessionId;
330
+ let options = {};
331
+ if (typeof idOrOptions === "string") {
332
+ sessionId = idOrOptions;
333
+ }
334
+ else if (idOrOptions !== undefined) {
335
+ options = idOrOptions;
336
+ sessionId = options.sessionId;
337
+ }
338
+ // If we have an ID, try to get existing or hydrate from store
339
+ if (sessionId) {
340
+ const existing = await this.registry.getOrHydrate(sessionId, (snapshot) => this.createSessionFromSnapshot(snapshot, options));
341
+ if (existing)
342
+ return existing;
343
+ }
344
+ // Create new session (ID will be generated if undefined)
345
+ return this.createSession(sessionId, options);
346
+ }
347
+ async close(sessionId) {
348
+ this.registry.remove(sessionId, true);
349
+ }
350
+ get sessions() {
351
+ return this.registry.list();
352
+ }
353
+ has(sessionId) {
354
+ return this.registry.has(sessionId);
355
+ }
356
+ async isHibernated(sessionId) {
357
+ return this.registry.isHibernated(sessionId);
358
+ }
359
+ async hibernate(sessionId) {
360
+ return this.registry.hibernate(sessionId);
361
+ }
362
+ async hibernatedSessions() {
363
+ return this.registry.listHibernated();
364
+ }
365
+ onSessionCreate(handler) {
366
+ this.sessionCreateHandlers.add(handler);
367
+ return () => {
368
+ this.sessionCreateHandlers.delete(handler);
369
+ };
370
+ }
371
+ onSessionClose(handler) {
372
+ this.sessionCloseHandlers.add(handler);
373
+ return () => {
374
+ this.sessionCloseHandlers.delete(handler);
375
+ };
376
+ }
377
+ createSession(sessionId, options) {
378
+ const sessionOptions = {
379
+ ...options,
380
+ sessionId,
381
+ devTools: options.devTools ?? this.options.devTools,
382
+ };
383
+ const session = new SessionImpl(this.Component, this.options, sessionOptions);
384
+ this.initializeSession(session);
385
+ this.registry.register(session.id, session);
386
+ return session;
387
+ }
388
+ /**
389
+ * Create a session from a hibernation snapshot.
390
+ * Used by registry.getOrHydrate() - does NOT register (getOrHydrate handles that).
391
+ */
392
+ createSessionFromSnapshot(snapshot, options) {
393
+ const sessionOptions = {
394
+ ...options,
395
+ sessionId: snapshot.sessionId,
396
+ snapshot,
397
+ devTools: options.devTools ?? this.options.devTools,
398
+ };
399
+ const session = new SessionImpl(this.Component, this.options, sessionOptions);
400
+ this.initializeSession(session);
401
+ return session;
402
+ }
403
+ /**
404
+ * Initialize session with callbacks and listeners.
405
+ * Shared by createSession and createSessionFromSnapshot.
406
+ */
407
+ initializeSession(session) {
408
+ // Set hibernate callback so session.hibernate() delegates to the registry
409
+ session.setHibernateCallback(() => this.registry.hibernate(session.id));
410
+ session.on("event", () => {
411
+ this.registry.markActive(session.id);
412
+ });
413
+ session.once("close", () => {
414
+ this.registry.remove(session.id, false);
415
+ });
416
+ this.options.onSessionCreate?.(session);
417
+ for (const handler of this.sessionCreateHandlers) {
418
+ handler(session);
419
+ }
420
+ }
421
+ }
422
+ /**
423
+ * Agentick configuration instance.
424
+ *
425
+ * Users interact with instances, never the class directly.
426
+ * `Agentick` is the default global instance.
427
+ */
428
+ export class AgentickInstance {
429
+ middlewareRegistry = new Map();
430
+ _telemetryProvider;
431
+ /**
432
+ * One-shot execution of a JSX component.
433
+ *
434
+ * Accepts a JSX element and optional RunInput. Creates a temporary app and session,
435
+ * runs to completion, then cleans up.
436
+ *
437
+ * **Prop merging:** Element props are defaults, `input.props` override them.
438
+ * `{ ...element.props, ...input.props }` — so `<Agent query="default" />` with
439
+ * `{ props: { query: "override" } }` uses `"override"`.
440
+ *
441
+ * Returns SessionExecutionHandle (AsyncIterable, not PromiseLike):
442
+ * - `await run(...).result` → SendResult
443
+ * - `for await (const event of await run(...))` → StreamEvent
444
+ *
445
+ * @example Get result
446
+ * ```typescript
447
+ * const result = await Agentick.run(
448
+ * <MyAgent />,
449
+ * { messages: [{ role: "user", content: [...] }], model }
450
+ * ).result;
451
+ * ```
452
+ *
453
+ * @example Stream events
454
+ * ```typescript
455
+ * const handle = await Agentick.run(<MyAgent />, { messages, model });
456
+ * for await (const event of handle) {
457
+ * if (event.type === 'content_delta') {
458
+ * process.stdout.write(event.delta);
459
+ * }
460
+ * }
461
+ * ```
462
+ *
463
+ * @example Add middleware to run
464
+ * ```typescript
465
+ * const loggedRun = Agentick.run.use(loggingMiddleware);
466
+ * const result = await loggedRun(<MyAgent />, { messages, model }).result;
467
+ * ```
468
+ */
469
+ run;
470
+ /**
471
+ * @internal
472
+ */
473
+ constructor(options) {
474
+ this._telemetryProvider = options?.telemetryProvider;
475
+ // Create the run procedure bound to this instance
476
+ const instance = this;
477
+ this.run = createProcedure({ name: "agentick:run", handleFactory: false }, async (element, input = {}) => {
478
+ const { model, props, ...runInput } = input;
479
+ // Extract component and element props, input props override element props
480
+ const Component = element.type;
481
+ const mergedProps = { ...element.props, ...props };
482
+ // Create app options
483
+ const appOptions = {};
484
+ if (model)
485
+ appOptions.model = model;
486
+ // Create app and run using this instance
487
+ const app = instance.createApp(Component, appOptions);
488
+ return app.run({
489
+ ...runInput,
490
+ props: mergedProps,
491
+ });
492
+ });
493
+ }
494
+ /**
495
+ * Register middleware for a procedure pattern.
496
+ *
497
+ * Keys can be:
498
+ * - `'*'` - all procedures
499
+ * - `'tool:*'` - all tool procedures (tool:run, etc.)
500
+ * - `'model:*'` - all model procedures (model:generate, model:stream)
501
+ * - `'tool:run'` - specific procedure name
502
+ * - `'model:generate'` - specific procedure name
503
+ *
504
+ * Middleware is executed in order: global → category → specific
505
+ *
506
+ * @param key - Procedure pattern to match
507
+ * @param middleware - Middleware functions to register
508
+ * @returns this for chaining
509
+ *
510
+ * @example
511
+ * ```typescript
512
+ * Agentick
513
+ * .use('*', loggingMiddleware)
514
+ * .use('tool:*', authMiddleware)
515
+ * .use('model:generate', rateLimitMiddleware);
516
+ * ```
517
+ */
518
+ use(key, ...middleware) {
519
+ const existing = this.middlewareRegistry.get(key) || [];
520
+ this.middlewareRegistry.set(key, [...existing, ...middleware]);
521
+ return this;
522
+ }
523
+ /**
524
+ * Get middleware matching a procedure name.
525
+ *
526
+ * Resolution order:
527
+ * 1. Global ('*')
528
+ * 2. Category wildcard (e.g., 'tool:*' matches 'tool:run')
529
+ * 3. Exact match (e.g., 'tool:run')
530
+ *
531
+ * @param procedureName - The procedure name to match (e.g., 'tool:run', 'model:generate')
532
+ * @returns Array of middleware functions in execution order
533
+ */
534
+ getMiddlewareFor(procedureName) {
535
+ const result = [];
536
+ // 1. Global middleware ('*')
537
+ const global = this.middlewareRegistry.get("*");
538
+ if (global)
539
+ result.push(...global);
540
+ // 2. Category wildcard (e.g., 'tool:*' matches 'tool:run')
541
+ const colonIndex = procedureName.indexOf(":");
542
+ if (colonIndex > 0) {
543
+ const category = procedureName.slice(0, colonIndex);
544
+ const categoryWildcard = this.middlewareRegistry.get(`${category}:*`);
545
+ if (categoryWildcard)
546
+ result.push(...categoryWildcard);
547
+ }
548
+ // 3. Exact match
549
+ const exact = this.middlewareRegistry.get(procedureName);
550
+ if (exact)
551
+ result.push(...exact);
552
+ return result;
553
+ }
554
+ /**
555
+ * Clear all registered middleware.
556
+ * Useful for testing or resetting state.
557
+ */
558
+ clear() {
559
+ this.middlewareRegistry.clear();
560
+ return this;
561
+ }
562
+ /**
563
+ * Get the telemetry provider.
564
+ */
565
+ get telemetryProvider() {
566
+ return this._telemetryProvider;
567
+ }
568
+ /**
569
+ * Set the telemetry provider.
570
+ */
571
+ set telemetryProvider(provider) {
572
+ this._telemetryProvider = provider;
573
+ }
574
+ /**
575
+ * Create a child instance.
576
+ *
577
+ * By default, the child inherits all middleware from this instance.
578
+ * Use `inheritDefaults: false` for a completely isolated instance.
579
+ *
580
+ * @param options - Instance options
581
+ * @returns A new AgentickInstance
582
+ *
583
+ * @example
584
+ * ```typescript
585
+ * // Create scoped instance that inherits global middleware
586
+ * const scoped = Agentick.create();
587
+ * scoped.use('model:generate', rateLimitMiddleware);
588
+ * const app = scoped.createApp(MyAgent);
589
+ *
590
+ * // Create isolated instance (no inheritance)
591
+ * const isolated = Agentick.create({ inheritDefaults: false });
592
+ * ```
593
+ */
594
+ create(options = {}) {
595
+ const child = new AgentickInstance({
596
+ telemetryProvider: options.telemetryProvider ?? this._telemetryProvider,
597
+ });
598
+ // Copy middleware from parent unless inheritDefaults: false
599
+ if (options.inheritDefaults !== false) {
600
+ for (const [key, mws] of this.middlewareRegistry) {
601
+ child.middlewareRegistry.set(key, [...mws]);
602
+ }
603
+ }
604
+ return child;
605
+ }
606
+ /**
607
+ * Create an app from a component function.
608
+ *
609
+ * The app inherits middleware from this Agentick instance.
610
+ *
611
+ * @param Component - The component function that defines the Model Interface
612
+ * @param options - App configuration options
613
+ * @returns An App instance with run, send, and session methods
614
+ *
615
+ * @example
616
+ * ```typescript
617
+ * const MyAgent = ({ query }) => (
618
+ * <>
619
+ * <System>You are helpful.</System>
620
+ * <Timeline />
621
+ * <User>{query}</User>
622
+ * </>
623
+ * );
624
+ *
625
+ * // Use global Agentick
626
+ * const app = createApp(MyAgent, { model });
627
+ *
628
+ * // Use scoped instance
629
+ * const scoped = Agentick.create();
630
+ * scoped.use('tool:*', authMiddleware);
631
+ * const scopedApp = scoped.createApp(MyAgent, { model });
632
+ * ```
633
+ */
634
+ createApp(Component, options = {}) {
635
+ const optionsWithInstance = { ...options, _agentickInstance: this };
636
+ return new AppImpl(Component, optionsWithInstance);
637
+ }
638
+ }
639
+ /**
640
+ * The default global Agentick instance.
641
+ *
642
+ * All configuration and middleware registration starts here.
643
+ * The exported `createApp` and `run` are bound to this instance.
644
+ *
645
+ * @example
646
+ * ```typescript
647
+ * import { Agentick, createApp, run } from 'agentick';
648
+ *
649
+ * // Configure global middleware
650
+ * Agentick.use('*', loggingMiddleware);
651
+ * Agentick.telemetryProvider = myProvider;
652
+ *
653
+ * // createApp and run use Agentick
654
+ * const app = createApp(MyAgent, { model });
655
+ * const result = await run(<MyAgent />, { messages, model });
656
+ *
657
+ * // Create scoped instance with its own middleware
658
+ * const scoped = Agentick.create();
659
+ * scoped.use('model:generate', specialMiddleware);
660
+ * const scopedResult = await scoped.run(<MyAgent />, { messages, model });
661
+ * ```
662
+ */
663
+ export const Agentick = new AgentickInstance();
664
+ /**
665
+ * Create an app from a component function.
666
+ *
667
+ * This is `Agentick.createApp` - apps inherit middleware from the global Agentick instance.
668
+ *
669
+ * @example
670
+ * ```typescript
671
+ * import { createApp } from 'agentick';
672
+ *
673
+ * const app = createApp(MyAgent, { model });
674
+ * const result = await app.run({ props: { query: "Hello!" } });
675
+ * ```
676
+ */
677
+ export const createApp = Agentick.createApp.bind(Agentick);
678
+ /**
679
+ * One-shot execution of a JSX component.
680
+ *
681
+ * This is `Agentick.run` - the simplest way to run an agent.
682
+ * Returns SessionExecutionHandle (AsyncIterable, not PromiseLike).
683
+ *
684
+ * @example
685
+ * ```typescript
686
+ * import { run } from 'agentick';
687
+ *
688
+ * // Get result
689
+ * const result = await run(<MyAgent />, { messages, model }).result;
690
+ *
691
+ * // Stream events
692
+ * const handle = await run(<MyAgent />, { messages, model });
693
+ * for await (const event of handle) {
694
+ * console.log(event);
695
+ * }
696
+ * ```
697
+ */
698
+ export const run = Agentick.run.bind(Agentick);
699
+ // RunInput is now defined in ./app/types and exported from the package index.
700
+ //# sourceMappingURL=agentick-instance.js.map