@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,157 @@
1
+ /**
2
+ * Timeline Component
3
+ *
4
+ * Renders conversation history with optional pending messages.
5
+ * Supports token budget compaction via maxTokens/strategy props.
6
+ * Uses React context to provide timeline access to descendants.
7
+ *
8
+ * @module agentick/components
9
+ */
10
+ import { type ReactNode } from "react";
11
+ import type { JSX } from "react";
12
+ import type { COMTimelineEntry } from "../../com/types";
13
+ import type { ExecutionMessage } from "../../engine/execution-types";
14
+ import { type CompactionStrategy, type TokenBudgetInfo } from "./token-budget";
15
+ /**
16
+ * Render function signature for Timeline component.
17
+ *
18
+ * @param history - Executed timeline entries (previous + current)
19
+ * @param pending - Messages queued for the next tick
20
+ * @param budget - Token budget info (present when maxTokens is set)
21
+ */
22
+ export type TimelineRenderFn = (history: COMTimelineEntry[], pending: ExecutionMessage[], budget: TokenBudgetInfo | null) => JSX.Element | (JSX.Element | null)[] | null;
23
+ /**
24
+ * Context value for Timeline provider.
25
+ */
26
+ export interface TimelineContextValue {
27
+ /** All timeline entries (history) */
28
+ entries: COMTimelineEntry[];
29
+ /** Pending messages queued for next tick */
30
+ pending: ExecutionMessage[];
31
+ /** Number of messages in timeline */
32
+ messageCount: number;
33
+ /** Filter entries by role */
34
+ byRole: (role: "user" | "assistant" | "tool" | "system") => COMTimelineEntry[];
35
+ /** Token budget info (present when maxTokens is set) */
36
+ budget: TokenBudgetInfo | null;
37
+ }
38
+ /**
39
+ * Conversation history options.
40
+ */
41
+ export interface ConversationHistoryOptions {
42
+ /** Filter function for entries */
43
+ filter?: (entry: COMTimelineEntry) => boolean;
44
+ /** Maximum number of entries to return */
45
+ limit?: number;
46
+ /** Only include these roles */
47
+ roles?: ("user" | "assistant" | "tool" | "system" | "event")[];
48
+ }
49
+ /**
50
+ * Token budget options for Timeline.
51
+ */
52
+ export interface TimelineBudgetOptions {
53
+ /** Maximum tokens for timeline entries. Enables compaction. */
54
+ maxTokens?: number;
55
+ /** Compaction strategy (default: "sliding-window") */
56
+ strategy?: CompactionStrategy;
57
+ /** Callback when entries are evicted */
58
+ onEvict?: (entries: COMTimelineEntry[]) => void;
59
+ /** Guidance string passed to custom compaction functions */
60
+ guidance?: string;
61
+ /** Roles that are never evicted (default: ["system"]) */
62
+ preserveRoles?: Array<"user" | "assistant" | "system" | "tool">;
63
+ /** Reserve tokens for safety margin (default: 0) */
64
+ headroom?: number;
65
+ }
66
+ /**
67
+ * Props for the Timeline component.
68
+ */
69
+ export interface TimelineProps extends ConversationHistoryOptions, TimelineBudgetOptions {
70
+ /**
71
+ * Render prop for custom rendering.
72
+ * If not provided, renders default message components.
73
+ */
74
+ children?: TimelineRenderFn | JSX.Element;
75
+ }
76
+ /**
77
+ * Renders conversation history from the COM timeline.
78
+ *
79
+ * @example Basic usage
80
+ * ```tsx
81
+ * <Timeline />
82
+ * ```
83
+ *
84
+ * @example With filtering
85
+ * ```tsx
86
+ * <Timeline roles={['user', 'assistant']} limit={10} />
87
+ * ```
88
+ *
89
+ * @example With token budget
90
+ * ```tsx
91
+ * <Timeline maxTokens={4000} strategy="truncate" />
92
+ * ```
93
+ *
94
+ * @example With render prop
95
+ * ```tsx
96
+ * <Timeline maxTokens={8000} headroom={500}>
97
+ * {(entries) => entries.map(entry => <Message key={entry.id} entry={entry} />)}
98
+ * </Timeline>
99
+ * ```
100
+ */
101
+ export declare function Timeline(props: TimelineProps): JSX.Element;
102
+ export declare namespace Timeline {
103
+ var Provider: (props: TimelineProviderProps) => JSX.Element;
104
+ var Messages: (props: TimelineMessagesProps) => JSX.Element;
105
+ }
106
+ interface TimelineProviderProps extends ConversationHistoryOptions {
107
+ children: ReactNode;
108
+ /** Override entries (useful for testing) */
109
+ entries?: COMTimelineEntry[];
110
+ /** Override pending messages */
111
+ pending?: ExecutionMessage[];
112
+ }
113
+ interface TimelineMessagesProps {
114
+ /** Custom renderer for each entry */
115
+ renderEntry?: (entry: COMTimelineEntry, index: number) => JSX.Element | null;
116
+ }
117
+ /**
118
+ * Access timeline context from within Timeline.Provider.
119
+ *
120
+ * @example
121
+ * ```tsx
122
+ * function MessageCount() {
123
+ * const { messageCount, byRole } = useTimelineContext();
124
+ * const userMessages = byRole('user');
125
+ * return <div>User messages: {userMessages.length} / {messageCount}</div>;
126
+ * }
127
+ * ```
128
+ */
129
+ export declare function useTimelineContext(): TimelineContextValue;
130
+ /**
131
+ * Access timeline context, returning null if not within provider.
132
+ * Useful for optional timeline access.
133
+ */
134
+ export declare function useTimelineContextOptional(): TimelineContextValue | null;
135
+ /**
136
+ * Get the full conversation history from the COM.
137
+ *
138
+ * This hook returns all timeline entries directly from the COM,
139
+ * without needing to be within a Timeline.Provider.
140
+ *
141
+ * @example
142
+ * ```tsx
143
+ * function HistoryViewer() {
144
+ * const history = useConversationHistory();
145
+ * return (
146
+ * <div>
147
+ * {history.map(entry => (
148
+ * <div key={entry.id}>{entry.message.role}: ...</div>
149
+ * ))}
150
+ * </div>
151
+ * );
152
+ * }
153
+ * ```
154
+ */
155
+ export declare function useConversationHistory(): COMTimelineEntry[];
156
+ export {};
157
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/timeline.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Timeline Component
3
+ *
4
+ * Renders conversation history with optional pending messages.
5
+ * Supports token budget compaction via maxTokens/strategy props.
6
+ * Uses React context to provide timeline access to descendants.
7
+ *
8
+ * @module agentick/components
9
+ */
10
+ import React, { createContext, useContext, useEffect, useMemo, useRef, } from "react";
11
+ import { useTickState } from "../../hooks/context";
12
+ import { compactEntries } from "./token-budget";
13
+ import { Logger } from "@agentick/kernel";
14
+ const log = Logger.for("Timeline");
15
+ // Helper for createElement
16
+ const h = React.createElement;
17
+ // ============================================================================
18
+ // React Context
19
+ // ============================================================================
20
+ const TimelineContext = createContext(null);
21
+ // ============================================================================
22
+ // Default Message Renderer
23
+ // ============================================================================
24
+ /**
25
+ * Default renderer for a single timeline entry.
26
+ *
27
+ * Renders directly to the "entry" intrinsic element to avoid
28
+ * React trying to render Agentick components that return Agentick elements.
29
+ */
30
+ function DefaultMessage({ entry, }) {
31
+ if (!entry.message)
32
+ return h(React.Fragment, null);
33
+ const { role, content } = entry.message;
34
+ // Extract text content
35
+ const textContent = content
36
+ .filter((block) => block.type === "text")
37
+ .map((block) => block.text)
38
+ .join("\n");
39
+ if (!textContent)
40
+ return h(React.Fragment, null);
41
+ // Render the "entry" intrinsic element directly
42
+ // This avoids going through User/Assistant which return Agentick elements
43
+ if (role === "user" || role === "assistant" || role === "tool") {
44
+ return h("entry", {
45
+ kind: "message",
46
+ message: {
47
+ role,
48
+ content: [{ type: "text", text: textContent }],
49
+ // Preserve message ID for deduplication in complete()
50
+ id: entry.message.id,
51
+ },
52
+ });
53
+ }
54
+ // System and others - skip in default rendering
55
+ return h(React.Fragment, null);
56
+ }
57
+ /**
58
+ * Default renderer for a pending (queued) message.
59
+ *
60
+ * ExecutionMessage.content contains the actual Message object.
61
+ */
62
+ function DefaultPendingMessage({ message, }) {
63
+ // The content is the actual Message object
64
+ const msg = message.content;
65
+ if (!msg)
66
+ return h(React.Fragment, null);
67
+ const { role, content } = msg;
68
+ if (!Array.isArray(content))
69
+ return h(React.Fragment, null);
70
+ // Extract text content
71
+ const textContent = content
72
+ .filter((block) => typeof block === "object" && block !== null && block.type === "text")
73
+ .map((block) => block.text)
74
+ .join("\n");
75
+ if (!textContent)
76
+ return h(React.Fragment, null);
77
+ // Render the "entry" intrinsic element
78
+ // Preserve message ID for deduplication in complete()
79
+ const msgWithId = msg;
80
+ return h("entry", {
81
+ kind: "message",
82
+ message: {
83
+ role,
84
+ content: [{ type: "text", text: textContent }],
85
+ id: msgWithId.id,
86
+ },
87
+ });
88
+ }
89
+ // ============================================================================
90
+ // Helper: Apply filtering to entries
91
+ // ============================================================================
92
+ function applyFilters(entries, options) {
93
+ let filtered = entries;
94
+ // Apply role filter
95
+ if (options.roles && options.roles.length > 0) {
96
+ const allowedRoles = options.roles;
97
+ filtered = filtered.filter((entry) => allowedRoles.includes(entry.message.role));
98
+ }
99
+ // Apply custom filter
100
+ if (options.filter) {
101
+ filtered = filtered.filter(options.filter);
102
+ }
103
+ // Apply limit (take from end to get most recent)
104
+ if (options.limit && options.limit > 0 && filtered.length > options.limit) {
105
+ filtered = filtered.slice(-options.limit);
106
+ }
107
+ return filtered;
108
+ }
109
+ // ============================================================================
110
+ // Timeline Component
111
+ // ============================================================================
112
+ /**
113
+ * Renders conversation history from the COM timeline.
114
+ *
115
+ * @example Basic usage
116
+ * ```tsx
117
+ * <Timeline />
118
+ * ```
119
+ *
120
+ * @example With filtering
121
+ * ```tsx
122
+ * <Timeline roles={['user', 'assistant']} limit={10} />
123
+ * ```
124
+ *
125
+ * @example With token budget
126
+ * ```tsx
127
+ * <Timeline maxTokens={4000} strategy="truncate" />
128
+ * ```
129
+ *
130
+ * @example With render prop
131
+ * ```tsx
132
+ * <Timeline maxTokens={8000} headroom={500}>
133
+ * {(entries) => entries.map(entry => <Message key={entry.id} entry={entry} />)}
134
+ * </Timeline>
135
+ * ```
136
+ */
137
+ export function Timeline(props) {
138
+ // Get tickState from context (contains previous timeline and queued messages)
139
+ let tickState = null;
140
+ try {
141
+ tickState = useTickState();
142
+ }
143
+ catch {
144
+ // Outside of AgentickProvider - return empty
145
+ }
146
+ // Get raw timeline entries, apply filters
147
+ const filteredEntries = useMemo(() => {
148
+ if (!tickState?.previous?.timeline) {
149
+ log.debug({ tick: tickState?.tick, hasPrevious: !!tickState?.previous }, "Timeline: No previous timeline available");
150
+ return [];
151
+ }
152
+ const rawEntries = tickState.previous.timeline;
153
+ log.debug({
154
+ tick: tickState.tick,
155
+ rawCount: rawEntries.length,
156
+ roles: rawEntries.map((e) => e.message?.role),
157
+ }, "Timeline: Processing previous timeline");
158
+ return applyFilters(rawEntries, props);
159
+ }, [tickState?.previous?.timeline, props.filter, props.limit, props.roles]);
160
+ // Apply token budget compaction (when maxTokens is set)
161
+ const { entries, evicted, budgetInfo } = useMemo(() => {
162
+ if (props.maxTokens == null) {
163
+ return { entries: filteredEntries, evicted: [], budgetInfo: null };
164
+ }
165
+ const result = compactEntries(filteredEntries, {
166
+ maxTokens: props.maxTokens,
167
+ strategy: props.strategy,
168
+ headroom: props.headroom,
169
+ preserveRoles: props.preserveRoles,
170
+ guidance: props.guidance,
171
+ });
172
+ const info = {
173
+ maxTokens: props.maxTokens,
174
+ effectiveBudget: props.maxTokens - (props.headroom ?? 0),
175
+ currentTokens: result.currentTokens,
176
+ evictedCount: result.evicted.length,
177
+ isCompacted: result.evicted.length > 0,
178
+ };
179
+ return { entries: result.kept, evicted: result.evicted, budgetInfo: info };
180
+ }, [
181
+ filteredEntries,
182
+ props.maxTokens,
183
+ props.headroom,
184
+ props.strategy,
185
+ props.preserveRoles,
186
+ props.guidance,
187
+ ]);
188
+ // Fire onEvict callback as an effect — not a side effect in memo
189
+ const onEvictRef = useRef(props.onEvict);
190
+ onEvictRef.current = props.onEvict;
191
+ useEffect(() => {
192
+ if (evicted.length > 0 && onEvictRef.current) {
193
+ onEvictRef.current(evicted);
194
+ }
195
+ }, [evicted]);
196
+ // Pending messages (queued for this tick)
197
+ const pending = useMemo(() => {
198
+ return (tickState?.queuedMessages ?? []);
199
+ }, [tickState?.queuedMessages]);
200
+ log.debug({ entriesCount: entries.length, pendingCount: pending.length }, "Timeline: Rendering with entries and pending");
201
+ // Render based on children type
202
+ if (props.children !== undefined) {
203
+ if (typeof props.children === "function") {
204
+ // Render prop pattern
205
+ const result = props.children(entries, pending, budgetInfo);
206
+ return h(React.Fragment, null, result);
207
+ }
208
+ // Regular children
209
+ return h(React.Fragment, null, props.children);
210
+ }
211
+ // Default rendering: render history AND pending messages
212
+ return h(React.Fragment, null,
213
+ // Render history entries
214
+ ...entries.map((entry, index) => h(DefaultMessage, { key: `history-${entry.id ?? index}`, entry })),
215
+ // Render pending (queued) messages
216
+ ...pending.map((message, index) => h(DefaultPendingMessage, { key: `pending-${message.id ?? index}`, message })));
217
+ }
218
+ /**
219
+ * Provider that exposes timeline context to descendants.
220
+ *
221
+ * @example
222
+ * ```tsx
223
+ * <Timeline.Provider>
224
+ * <MyComponent />
225
+ * </Timeline.Provider>
226
+ * ```
227
+ *
228
+ * Children can then use:
229
+ * ```tsx
230
+ * const { entries, byRole } = useTimelineContext();
231
+ * ```
232
+ */
233
+ Timeline.Provider = function TimelineProvider(props) {
234
+ // Get tickState from context if not overridden
235
+ let tickState = null;
236
+ try {
237
+ tickState = useTickState();
238
+ }
239
+ catch {
240
+ // Outside of AgentickProvider
241
+ }
242
+ // Use provided entries or get from tickState.previous.timeline
243
+ const rawEntries = props.entries ?? (tickState?.previous?.timeline ?? []);
244
+ const pending = props.pending ?? (tickState?.queuedMessages ?? []);
245
+ // Apply filters
246
+ const entries = useMemo(() => {
247
+ return applyFilters(rawEntries, props);
248
+ }, [rawEntries, props.filter, props.limit, props.roles]);
249
+ // Create context value
250
+ const contextValue = useMemo(() => {
251
+ return {
252
+ entries,
253
+ pending,
254
+ messageCount: entries.length,
255
+ byRole: (role) => entries.filter((e) => e.message.role === role),
256
+ budget: null,
257
+ };
258
+ }, [entries, pending]);
259
+ return h(TimelineContext.Provider, { value: contextValue }, props.children);
260
+ };
261
+ /**
262
+ * Renders messages from Timeline.Provider context.
263
+ *
264
+ * @example
265
+ * ```tsx
266
+ * <Timeline.Provider>
267
+ * <Timeline.Messages />
268
+ * </Timeline.Provider>
269
+ * ```
270
+ *
271
+ * @example With custom renderer
272
+ * ```tsx
273
+ * <Timeline.Provider>
274
+ * <Timeline.Messages
275
+ * renderEntry={(entry) => <CustomMessage entry={entry} />}
276
+ * />
277
+ * </Timeline.Provider>
278
+ * ```
279
+ */
280
+ Timeline.Messages = function TimelineMessages(props) {
281
+ const context = useContext(TimelineContext);
282
+ if (!context) {
283
+ return h(React.Fragment, null);
284
+ }
285
+ const { entries, pending } = context;
286
+ if (props.renderEntry) {
287
+ return h(React.Fragment, null, entries.map((entry, index) => props.renderEntry(entry, index)));
288
+ }
289
+ // Default rendering: history + pending
290
+ return h(React.Fragment, null, ...entries.map((entry, index) => h(DefaultMessage, { key: `history-${entry.id ?? index}`, entry })), ...pending.map((message, index) => h(DefaultPendingMessage, { key: `pending-${message.id ?? index}`, message })));
291
+ };
292
+ // ============================================================================
293
+ // useTimelineContext
294
+ // ============================================================================
295
+ /**
296
+ * Access timeline context from within Timeline.Provider.
297
+ *
298
+ * @example
299
+ * ```tsx
300
+ * function MessageCount() {
301
+ * const { messageCount, byRole } = useTimelineContext();
302
+ * const userMessages = byRole('user');
303
+ * return <div>User messages: {userMessages.length} / {messageCount}</div>;
304
+ * }
305
+ * ```
306
+ */
307
+ export function useTimelineContext() {
308
+ const context = useContext(TimelineContext);
309
+ if (!context) {
310
+ throw new Error("useTimelineContext must be used within a Timeline.Provider");
311
+ }
312
+ return context;
313
+ }
314
+ /**
315
+ * Access timeline context, returning null if not within provider.
316
+ * Useful for optional timeline access.
317
+ */
318
+ export function useTimelineContextOptional() {
319
+ return useContext(TimelineContext);
320
+ }
321
+ // ============================================================================
322
+ // useConversationHistory
323
+ // ============================================================================
324
+ /**
325
+ * Get the full conversation history from the COM.
326
+ *
327
+ * This hook returns all timeline entries directly from the COM,
328
+ * without needing to be within a Timeline.Provider.
329
+ *
330
+ * @example
331
+ * ```tsx
332
+ * function HistoryViewer() {
333
+ * const history = useConversationHistory();
334
+ * return (
335
+ * <div>
336
+ * {history.map(entry => (
337
+ * <div key={entry.id}>{entry.message.role}: ...</div>
338
+ * ))}
339
+ * </div>
340
+ * );
341
+ * }
342
+ * ```
343
+ */
344
+ export function useConversationHistory() {
345
+ // Get tickState from context
346
+ let tickState = null;
347
+ try {
348
+ tickState = useTickState();
349
+ }
350
+ catch {
351
+ // Outside of AgentickProvider
352
+ return [];
353
+ }
354
+ // Return timeline entries from tickState.previous
355
+ return (tickState?.previous?.timeline ?? []);
356
+ }
357
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/jsx/components/timeline.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Token Budget — Compaction utilities for timeline entries.
3
+ *
4
+ * Pure functions and types for managing token budgets. No components,
5
+ * no contexts, no hooks. Used internally by Timeline when budget
6
+ * props (maxTokens, strategy, etc.) are provided.
7
+ *
8
+ * Uses `.tokens` field from token estimation when available,
9
+ * falls back to char/4 heuristic.
10
+ */
11
+ import type { COMTimelineEntry } from "../../com/types";
12
+ /**
13
+ * Compaction strategy for handling token budget overflow.
14
+ *
15
+ * - `"none"`: No compaction, entries pass through unchanged
16
+ * - `"truncate"`: Keep newest entries that fit within budget
17
+ * - `"sliding-window"`: Preserve specific roles, then fill remaining budget with newest entries
18
+ * - Custom function: Full control over compaction logic
19
+ */
20
+ export type CompactionStrategy = "none" | "truncate" | "sliding-window" | CompactionFunction;
21
+ /**
22
+ * Custom compaction function signature.
23
+ */
24
+ export type CompactionFunction = (entries: COMTimelineEntry[], budget: {
25
+ maxTokens: number;
26
+ currentTokens: number;
27
+ }, guidance?: string) => CompactionResult;
28
+ /**
29
+ * Result from a compaction operation.
30
+ */
31
+ export interface CompactionResult {
32
+ kept: COMTimelineEntry[];
33
+ evicted: COMTimelineEntry[];
34
+ }
35
+ /**
36
+ * Token budget info exposed via TimelineContextValue.
37
+ */
38
+ export interface TokenBudgetInfo {
39
+ /** Configured max tokens */
40
+ maxTokens: number;
41
+ /** Effective budget after headroom */
42
+ effectiveBudget: number;
43
+ /** Current token count of kept entries */
44
+ currentTokens: number;
45
+ /** Number of entries evicted */
46
+ evictedCount: number;
47
+ /** Whether compaction was applied */
48
+ isCompacted: boolean;
49
+ }
50
+ /** Get token count for an entry. Uses .tokens field if available, falls back to char/4. */
51
+ export declare function getEntryTokens(entry: COMTimelineEntry): number;
52
+ export interface CompactOptions {
53
+ maxTokens: number;
54
+ strategy?: CompactionStrategy;
55
+ headroom?: number;
56
+ preserveRoles?: string[];
57
+ guidance?: string;
58
+ }
59
+ export interface CompactResult {
60
+ kept: COMTimelineEntry[];
61
+ evicted: COMTimelineEntry[];
62
+ currentTokens: number;
63
+ }
64
+ /**
65
+ * Apply token budget compaction to a set of entries.
66
+ *
67
+ * Pure function — no side effects, no React, no hooks.
68
+ */
69
+ export declare function compactEntries(entries: COMTimelineEntry[], options: CompactOptions): CompactResult;
70
+ //# sourceMappingURL=token-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-budget.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/token-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMxD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE7F;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACpD,QAAQ,CAAC,EAAE,MAAM,KACd,gBAAgB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;CACtB;AAMD,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsB9D;AA+ED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,OAAO,EAAE,cAAc,GACtB,aAAa,CAuCf"}