@qduc/term2 0.17.0 → 0.19.0

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 (318) hide show
  1. package/dist/agent.d.ts +2 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +4 -1
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +12 -2
  7. package/dist/app.js.map +1 -1
  8. package/dist/commands/retry-failed-turn-command.d.ts +6 -0
  9. package/dist/commands/retry-failed-turn-command.d.ts.map +1 -0
  10. package/dist/commands/retry-failed-turn-command.js +12 -0
  11. package/dist/commands/retry-failed-turn-command.js.map +1 -0
  12. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  13. package/dist/components/layout/BackgroundTaskManager.js +4 -0
  14. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  15. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  16. package/dist/components/layout/BackgroundTasksPanel.js +11 -1
  17. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  18. package/dist/components/layout/BottomArea.d.ts +6 -0
  19. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  20. package/dist/components/layout/BottomArea.js +14 -5
  21. package/dist/components/layout/BottomArea.js.map +1 -1
  22. package/dist/components/layout/StatusBar.d.ts +6 -0
  23. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  24. package/dist/components/layout/StatusBar.js +15 -4
  25. package/dist/components/layout/StatusBar.js.map +1 -1
  26. package/dist/components/message/ChatMessage.js +3 -1
  27. package/dist/components/message/ChatMessage.js.map +1 -1
  28. package/dist/components/message/CommandGroupSummary.js +4 -5
  29. package/dist/components/message/CommandGroupSummary.js.map +1 -1
  30. package/dist/components/message/MessageList.d.ts.map +1 -1
  31. package/dist/components/message/MessageList.js +15 -2
  32. package/dist/components/message/MessageList.js.map +1 -1
  33. package/dist/components/message/command-grouping.d.ts +1 -0
  34. package/dist/components/message/command-grouping.d.ts.map +1 -1
  35. package/dist/components/message/command-grouping.js +14 -7
  36. package/dist/components/message/command-grouping.js.map +1 -1
  37. package/dist/components/message/command-message-helpers.d.ts +5 -5
  38. package/dist/contracts/conversation.d.ts +2 -0
  39. package/dist/contracts/conversation.d.ts.map +1 -1
  40. package/dist/contracts/conversation.js.map +1 -1
  41. package/dist/contracts/run-termination.d.ts +7 -0
  42. package/dist/contracts/run-termination.d.ts.map +1 -0
  43. package/dist/contracts/run-termination.js +2 -0
  44. package/dist/contracts/run-termination.js.map +1 -0
  45. package/dist/contracts/session-rollover.d.ts +32 -0
  46. package/dist/contracts/session-rollover.d.ts.map +1 -0
  47. package/dist/contracts/session-rollover.js +2 -0
  48. package/dist/contracts/session-rollover.js.map +1 -0
  49. package/dist/contracts/streamed-model-turn.d.ts +4 -0
  50. package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
  51. package/dist/hooks/conversation-ui-reducer.d.ts +7 -0
  52. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  53. package/dist/hooks/conversation-ui-reducer.js +6 -0
  54. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  55. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  56. package/dist/hooks/settings-completion-config.js +6 -0
  57. package/dist/hooks/settings-completion-config.js.map +1 -1
  58. package/dist/hooks/use-app-commands.d.ts +2 -1
  59. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  60. package/dist/hooks/use-app-commands.js +4 -1
  61. package/dist/hooks/use-app-commands.js.map +1 -1
  62. package/dist/hooks/use-conversation.d.ts +9 -1
  63. package/dist/hooks/use-conversation.d.ts.map +1 -1
  64. package/dist/hooks/use-conversation.js +42 -6
  65. package/dist/hooks/use-conversation.js.map +1 -1
  66. package/dist/hooks/use-model-selection.d.ts +2 -0
  67. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  68. package/dist/hooks/use-model-selection.js +3 -3
  69. package/dist/hooks/use-model-selection.js.map +1 -1
  70. package/dist/lib/agent-client.d.ts +4 -0
  71. package/dist/lib/agent-client.d.ts.map +1 -1
  72. package/dist/lib/agent-client.js +120 -23
  73. package/dist/lib/agent-client.js.map +1 -1
  74. package/dist/lib/agent-configuration.d.ts +2 -0
  75. package/dist/lib/agent-configuration.d.ts.map +1 -1
  76. package/dist/lib/agent-configuration.js +3 -0
  77. package/dist/lib/agent-configuration.js.map +1 -1
  78. package/dist/lib/agent-factory.d.ts +2 -0
  79. package/dist/lib/agent-factory.d.ts.map +1 -1
  80. package/dist/lib/agent-factory.js +1 -0
  81. package/dist/lib/agent-factory.js.map +1 -1
  82. package/dist/providers/aborted-stream-recorder.d.ts +26 -1
  83. package/dist/providers/aborted-stream-recorder.d.ts.map +1 -1
  84. package/dist/providers/aborted-stream-recorder.js +133 -0
  85. package/dist/providers/aborted-stream-recorder.js.map +1 -1
  86. package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
  87. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
  88. package/dist/providers/ai-sdk-streamed-model.js +90 -1
  89. package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
  90. package/dist/providers/codex-compact.d.ts +5 -4
  91. package/dist/providers/codex-compact.d.ts.map +1 -1
  92. package/dist/providers/codex-compact.js +5 -4
  93. package/dist/providers/codex-compact.js.map +1 -1
  94. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  95. package/dist/providers/codex-responses-model.js +103 -20
  96. package/dist/providers/codex-responses-model.js.map +1 -1
  97. package/dist/providers/codex.provider.d.ts +1 -0
  98. package/dist/providers/codex.provider.d.ts.map +1 -1
  99. package/dist/providers/codex.provider.js +59 -3
  100. package/dist/providers/codex.provider.js.map +1 -1
  101. package/dist/providers/fetch/logging-middleware.d.ts +1 -0
  102. package/dist/providers/fetch/logging-middleware.d.ts.map +1 -1
  103. package/dist/providers/fetch/logging-middleware.js +24 -1
  104. package/dist/providers/fetch/logging-middleware.js.map +1 -1
  105. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
  106. package/dist/providers/openai-chat-completions-model.js +99 -2
  107. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  108. package/dist/providers/openai-responses-model.d.ts.map +1 -1
  109. package/dist/providers/openai-responses-model.js +21 -13
  110. package/dist/providers/openai-responses-model.js.map +1 -1
  111. package/dist/providers/retrying-model.d.ts +5 -1
  112. package/dist/providers/retrying-model.d.ts.map +1 -1
  113. package/dist/providers/retrying-model.js +29 -6
  114. package/dist/providers/retrying-model.js.map +1 -1
  115. package/dist/providers/websocket-abort-race.d.ts +13 -0
  116. package/dist/providers/websocket-abort-race.d.ts.map +1 -0
  117. package/dist/providers/websocket-abort-race.js +34 -0
  118. package/dist/providers/websocket-abort-race.js.map +1 -0
  119. package/dist/services/agent-runtime/application-run-loop.d.ts +7 -0
  120. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  121. package/dist/services/agent-runtime/application-run-loop.js +56 -7
  122. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  123. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.d.ts +12 -0
  124. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.d.ts.map +1 -0
  125. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js +23 -0
  126. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js.map +1 -0
  127. package/dist/services/agent-runtime/executor.d.ts.map +1 -1
  128. package/dist/services/agent-runtime/executor.js +2 -0
  129. package/dist/services/agent-runtime/executor.js.map +1 -1
  130. package/dist/services/agent-runtime/types.d.ts +2 -2
  131. package/dist/services/agent-runtime/types.d.ts.map +1 -1
  132. package/dist/services/agent-stream.d.ts +13 -0
  133. package/dist/services/agent-stream.d.ts.map +1 -1
  134. package/dist/services/agent-stream.js +56 -0
  135. package/dist/services/agent-stream.js.map +1 -1
  136. package/dist/services/background-task-activity.d.ts +7 -0
  137. package/dist/services/background-task-activity.d.ts.map +1 -1
  138. package/dist/services/background-task-activity.js +17 -0
  139. package/dist/services/background-task-activity.js.map +1 -1
  140. package/dist/services/conversation/conversation-adapter.d.ts +1 -0
  141. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  142. package/dist/services/conversation/conversation-adapter.js +3 -0
  143. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  144. package/dist/services/conversation/conversation-decoder.d.ts.map +1 -1
  145. package/dist/services/conversation/conversation-decoder.js +3 -0
  146. package/dist/services/conversation/conversation-decoder.js.map +1 -1
  147. package/dist/services/conversation/conversation-events.d.ts +45 -2
  148. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  149. package/dist/services/conversation/conversation-events.js +30 -1
  150. package/dist/services/conversation/conversation-events.js.map +1 -1
  151. package/dist/services/conversation/conversation-orchestrator.d.ts +4 -0
  152. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  153. package/dist/services/conversation/conversation-orchestrator.js +74 -4
  154. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  155. package/dist/services/conversation/conversation-orchestrator.types.d.ts +4 -0
  156. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  157. package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
  158. package/dist/services/conversation/conversation-result-builder.js +9 -5
  159. package/dist/services/conversation/conversation-result-builder.js.map +1 -1
  160. package/dist/services/conversation/conversation-service.d.ts +5 -0
  161. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  162. package/dist/services/conversation/conversation-service.js +31 -0
  163. package/dist/services/conversation/conversation-service.js.map +1 -1
  164. package/dist/services/conversation/session-browser.d.ts +1 -0
  165. package/dist/services/conversation/session-browser.d.ts.map +1 -1
  166. package/dist/services/conversation/session-browser.js +32 -38
  167. package/dist/services/conversation/session-browser.js.map +1 -1
  168. package/dist/services/conversation-agent-client.d.ts +7 -0
  169. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  170. package/dist/services/logging/conversation-log-events.d.ts +6 -1
  171. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  172. package/dist/services/logging/conversation-log-events.js.map +1 -1
  173. package/dist/services/logging/conversation-log-writer.d.ts +1 -1
  174. package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
  175. package/dist/services/logging/conversation-log-writer.js +6 -1
  176. package/dist/services/logging/conversation-log-writer.js.map +1 -1
  177. package/dist/services/logging/provider-traffic.d.ts +6 -1
  178. package/dist/services/logging/provider-traffic.d.ts.map +1 -1
  179. package/dist/services/logging/provider-traffic.js +29 -4
  180. package/dist/services/logging/provider-traffic.js.map +1 -1
  181. package/dist/services/models/model-catalog-session.d.ts +1 -2
  182. package/dist/services/models/model-catalog-session.d.ts.map +1 -1
  183. package/dist/services/retry/committed-tool-continuation.d.ts +4 -0
  184. package/dist/services/retry/committed-tool-continuation.d.ts.map +1 -0
  185. package/dist/services/retry/committed-tool-continuation.js +12 -0
  186. package/dist/services/retry/committed-tool-continuation.js.map +1 -0
  187. package/dist/services/retry/in-loop-model-retry.d.ts.map +1 -1
  188. package/dist/services/retry/in-loop-model-retry.js +9 -0
  189. package/dist/services/retry/in-loop-model-retry.js.map +1 -1
  190. package/dist/services/retry/provider-failure-classification.d.ts +12 -0
  191. package/dist/services/retry/provider-failure-classification.d.ts.map +1 -0
  192. package/dist/services/retry/provider-failure-classification.js +55 -0
  193. package/dist/services/retry/provider-failure-classification.js.map +1 -0
  194. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  195. package/dist/services/retry/retry-classifier.js +68 -0
  196. package/dist/services/retry/retry-classifier.js.map +1 -1
  197. package/dist/services/retry/retry-contracts.d.ts +24 -3
  198. package/dist/services/retry/retry-contracts.d.ts.map +1 -1
  199. package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
  200. package/dist/services/retry/retry-event-presenter.js +14 -4
  201. package/dist/services/retry/retry-event-presenter.js.map +1 -1
  202. package/dist/services/retry/retry-recovery-budget.d.ts +51 -0
  203. package/dist/services/retry/retry-recovery-budget.d.ts.map +1 -0
  204. package/dist/services/retry/retry-recovery-budget.js +84 -0
  205. package/dist/services/retry/retry-recovery-budget.js.map +1 -0
  206. package/dist/services/service-interfaces.d.ts +67 -3
  207. package/dist/services/service-interfaces.d.ts.map +1 -1
  208. package/dist/services/session/background-check-in-scheduler.d.ts +5 -0
  209. package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -1
  210. package/dist/services/session/background-check-in-scheduler.js +83 -10
  211. package/dist/services/session/background-check-in-scheduler.js.map +1 -1
  212. package/dist/services/session/continuation-recovery-handler.d.ts +1 -0
  213. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  214. package/dist/services/session/continuation-recovery-handler.js +42 -0
  215. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  216. package/dist/services/session/continuation-state.d.ts +4 -1
  217. package/dist/services/session/continuation-state.d.ts.map +1 -1
  218. package/dist/services/session/continuation-state.js +5 -1
  219. package/dist/services/session/continuation-state.js.map +1 -1
  220. package/dist/services/session/initial-turn-recovery-handler.d.ts +3 -0
  221. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  222. package/dist/services/session/initial-turn-recovery-handler.js +70 -0
  223. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  224. package/dist/services/session/session-composition.d.ts.map +1 -1
  225. package/dist/services/session/session-composition.js +6 -0
  226. package/dist/services/session/session-composition.js.map +1 -1
  227. package/dist/services/session/session-tool-tracker.d.ts +6 -0
  228. package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
  229. package/dist/services/session/session-tool-tracker.js +17 -0
  230. package/dist/services/session/session-tool-tracker.js.map +1 -1
  231. package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
  232. package/dist/services/session/terminal-result-collector.js +3 -0
  233. package/dist/services/session/terminal-result-collector.js.map +1 -1
  234. package/dist/services/session/turn-attempt-factory.d.ts +2 -0
  235. package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
  236. package/dist/services/session/turn-attempt-factory.js +1 -0
  237. package/dist/services/session/turn-attempt-factory.js.map +1 -1
  238. package/dist/services/session/turn-attempt.d.ts +6 -0
  239. package/dist/services/session/turn-attempt.d.ts.map +1 -1
  240. package/dist/services/session/turn-attempt.js +16 -0
  241. package/dist/services/session/turn-attempt.js.map +1 -1
  242. package/dist/services/session/turn-workflow.d.ts +1 -1
  243. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  244. package/dist/services/session/turn-workflow.js +83 -19
  245. package/dist/services/session/turn-workflow.js.map +1 -1
  246. package/dist/services/session-rollover/session-rollover-brief.d.ts +6 -0
  247. package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -0
  248. package/dist/services/session-rollover/session-rollover-brief.js +27 -0
  249. package/dist/services/session-rollover/session-rollover-brief.js.map +1 -0
  250. package/dist/services/settings/settings-schema.d.ts +18 -0
  251. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  252. package/dist/services/settings/settings-schema.js +19 -0
  253. package/dist/services/settings/settings-schema.js.map +1 -1
  254. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  255. package/dist/services/settings/settings-sources.js +5 -0
  256. package/dist/services/settings/settings-sources.js.map +1 -1
  257. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +1 -0
  258. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  259. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +5 -0
  260. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  261. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  262. package/dist/services/subagents/execution-runner.js +39 -4
  263. package/dist/services/subagents/execution-runner.js.map +1 -1
  264. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  265. package/dist/services/subagents/nested-runner.js +23 -7
  266. package/dist/services/subagents/nested-runner.js.map +1 -1
  267. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
  268. package/dist/services/subagents/subagent-async-registry.js +28 -2
  269. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  270. package/dist/services/subagents/subagent-notification-store.d.ts +4 -14
  271. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  272. package/dist/services/subagents/subagent-notification-store.js +3 -2
  273. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  274. package/dist/services/subagents/types.d.ts +31 -8
  275. package/dist/services/subagents/types.d.ts.map +1 -1
  276. package/dist/services/subagents/types.js +11 -0
  277. package/dist/services/subagents/types.js.map +1 -1
  278. package/dist/services/subagents/utils.d.ts.map +1 -1
  279. package/dist/services/subagents/utils.js +3 -0
  280. package/dist/services/subagents/utils.js.map +1 -1
  281. package/dist/test-helpers/terminal-e2e.d.ts +2 -0
  282. package/dist/test-helpers/terminal-e2e.d.ts.map +1 -1
  283. package/dist/test-helpers/terminal-e2e.js +13 -6
  284. package/dist/test-helpers/terminal-e2e.js.map +1 -1
  285. package/dist/test-helpers/vitest-network-guard.d.ts +2 -0
  286. package/dist/test-helpers/vitest-network-guard.d.ts.map +1 -0
  287. package/dist/test-helpers/vitest-network-guard.js +24 -0
  288. package/dist/test-helpers/vitest-network-guard.js.map +1 -0
  289. package/dist/tools/agent/run-subagent-async.d.ts +1 -1
  290. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  291. package/dist/tools/agent/run-subagent-async.js +25 -4
  292. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  293. package/dist/tools/session-rollover/session-rollover-tool.d.ts +12 -0
  294. package/dist/tools/session-rollover/session-rollover-tool.d.ts.map +1 -0
  295. package/dist/tools/session-rollover/session-rollover-tool.js +35 -0
  296. package/dist/tools/session-rollover/session-rollover-tool.js.map +1 -0
  297. package/dist/tools/types.d.ts +4 -0
  298. package/dist/tools/types.d.ts.map +1 -1
  299. package/dist/tools/types.js.map +1 -1
  300. package/dist/types/message.d.ts +2 -0
  301. package/dist/types/message.d.ts.map +1 -1
  302. package/dist/types/message.js.map +1 -1
  303. package/dist/utils/ai/token-usage.d.ts +3 -0
  304. package/dist/utils/ai/token-usage.d.ts.map +1 -1
  305. package/dist/utils/ai/token-usage.js +29 -0
  306. package/dist/utils/ai/token-usage.js.map +1 -1
  307. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  308. package/dist/utils/conversation/conversation-event-handler.js +23 -1
  309. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  310. package/dist/utils/streaming/streaming-session-factory.d.ts +4 -0
  311. package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
  312. package/dist/utils/streaming/streaming-session-factory.js +59 -9
  313. package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
  314. package/dist/utils/streaming/streaming-speed-tracker.d.ts +99 -0
  315. package/dist/utils/streaming/streaming-speed-tracker.d.ts.map +1 -0
  316. package/dist/utils/streaming/streaming-speed-tracker.js +214 -0
  317. package/dist/utils/streaming/streaming-speed-tracker.js.map +1 -0
  318. package/package.json +1 -1
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Utility for tracking token streaming speed (tokens per second / TPS).
3
+ *
4
+ * Handles both:
5
+ * 1. Live generation speed during streaming (using exact token updates or character heuristics).
6
+ * 2. Settled decoding speed calculated at the end of a generation turn.
7
+ *
8
+ * A single agent turn can involve multiple separate model requests interleaved with tool
9
+ * execution (model generates, calls a tool, tool runs, model resumes with a fresh request).
10
+ * Tool-execution latency is not generation, so the tracker is reset at each such boundary
11
+ * (see `reset()`) rather than averaged across the whole turn — each request's speed is measured
12
+ * independently, starting from zero.
13
+ */
14
+ export interface StreamingSpeedSnapshot {
15
+ tps: number;
16
+ ttftMs?: number;
17
+ elapsedMs: number;
18
+ estimatedTokens: number;
19
+ }
20
+ export declare class StreamingSpeedTracker {
21
+ private startTime;
22
+ private firstTokenTime;
23
+ private lastUpdateTime;
24
+ private accumulatedChars;
25
+ private exactTokens;
26
+ /**
27
+ * Chars-per-token used for live estimates before exact usage arrives. Starts at
28
+ * `DEFAULT_CHARS_PER_TOKEN` and is recalibrated from each request's real usage in
29
+ * `recordUsageTokens`, so it survives `reset()` and carries forward to seed the next request's
30
+ * estimate within the same turn.
31
+ */
32
+ private charsPerToken;
33
+ /** Rolling history of (time, cumulative token count) samples, oldest first, used for windowed live TPS. */
34
+ private samples;
35
+ constructor(options?: {
36
+ startTime?: number;
37
+ charsPerToken?: number;
38
+ });
39
+ /**
40
+ * Reset all accumulated state so the next recorded token starts a brand-new measurement,
41
+ * unrelated to anything recorded before this call. Call this at request boundaries within a
42
+ * turn — e.g. when a tool starts executing — so tool latency never mixes into decode speed and
43
+ * the next model request's speed isn't diluted by a previous request's average.
44
+ *
45
+ * `charsPerToken` is deliberately NOT reset — it carries the last request's calibrated ratio
46
+ * forward to seed the next request's live estimate.
47
+ */
48
+ reset(now?: number): void;
49
+ private recordSample;
50
+ /**
51
+ * Record arrival of a text or reasoning delta string.
52
+ */
53
+ recordDelta(text?: string | null, now?: number): void;
54
+ /**
55
+ * Record cumulative characters streamed (e.g. from tool call argument streaming).
56
+ */
57
+ recordCumulativeChars(cumulativeChars: number, now?: number): void;
58
+ /**
59
+ * Record exact token counts if the provider streams usage updates.
60
+ */
61
+ recordUsageTokens(completionTokens: number, now?: number): void;
62
+ /**
63
+ * Recalibrate the chars-per-token ratio from this request's real accumulated chars vs. its
64
+ * exact token count, so the NEXT request's live estimate (before its own usage arrives) starts
65
+ * from an observed ratio instead of the generic default. Ignored if there isn't enough
66
+ * accumulated text to trust the sample (e.g. a tool-only request with no generated text).
67
+ */
68
+ private calibrateCharsPerToken;
69
+ /**
70
+ * Time to first token in milliseconds, or null if no tokens received yet.
71
+ */
72
+ getTtftMs(): number | null;
73
+ /**
74
+ * Current estimated or exact token count generated so far.
75
+ */
76
+ getEstimatedTokens(): number;
77
+ /**
78
+ * Get live tokens per second during an in-flight stream.
79
+ *
80
+ * Computed over a trailing window (LIVE_WINDOW_MS) of recent samples rather than the
81
+ * whole-request average, so the displayed number tracks current throughput instead of trailing
82
+ * behind a slow start. Falls back to the full-history average until enough time has elapsed
83
+ * since the first token to fill a window. `reset()` clears history at request boundaries, so
84
+ * this never spans across a tool-execution gap or a prior request.
85
+ */
86
+ getLiveTps(now?: number): number | null;
87
+ /**
88
+ * Calculate exact settled tokens per second when generation finishes.
89
+ *
90
+ * @param finalCompletionTokens Exact completion tokens from provider's final usage.
91
+ * @param endTime Generation end timestamp.
92
+ */
93
+ getSettledTps(finalCompletionTokens?: number, endTime?: number): number | null;
94
+ /**
95
+ * Returns a complete snapshot of current speed metrics.
96
+ */
97
+ getSnapshot(now?: number): StreamingSpeedSnapshot | null;
98
+ }
99
+ //# sourceMappingURL=streaming-speed-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-speed-tracker.d.ts","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-speed-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAmBD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,WAAW,CAAuB;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAS;IAC9B,2GAA2G;IAC3G,OAAO,CAAC,OAAO,CAAqB;IAEpC,YAAY,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAGnE;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,GAAG,GAAE,MAAmB,GAAG,IAAI,CAO3C;IAED,OAAO,CAAC,YAAY;IASpB;;OAEG;IACI,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CASvE;IAED;;OAEG;IACI,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAQpF;IAED;;OAEG;IACI,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAQjF;IAED;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACI,SAAS,IAAI,MAAM,GAAG,IAAI,CAGhC;IAED;;OAEG;IACI,kBAAkB,IAAI,MAAM,CAKlC;IAED;;;;;;;;OAQG;IACI,UAAU,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAkCzD;IAED;;;;;OAKG;IACI,aAAa,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAahG;IAED;;OAEG;IACI,WAAW,CAAC,GAAG,GAAE,MAAmB,GAAG,sBAAsB,GAAG,IAAI,CAU1E;CACF"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Utility for tracking token streaming speed (tokens per second / TPS).
3
+ *
4
+ * Handles both:
5
+ * 1. Live generation speed during streaming (using exact token updates or character heuristics).
6
+ * 2. Settled decoding speed calculated at the end of a generation turn.
7
+ *
8
+ * A single agent turn can involve multiple separate model requests interleaved with tool
9
+ * execution (model generates, calls a tool, tool runs, model resumes with a fresh request).
10
+ * Tool-execution latency is not generation, so the tracker is reset at each such boundary
11
+ * (see `reset()`) rather than averaged across the whole turn — each request's speed is measured
12
+ * independently, starting from zero.
13
+ */
14
+ /** Average characters per token heuristic for English/code text when provider does not stream token counts. */
15
+ const DEFAULT_CHARS_PER_TOKEN = 3.8;
16
+ /** Live speed is computed over a trailing window so it tracks current throughput, not the whole-request average. */
17
+ const LIVE_WINDOW_MS = 3000;
18
+ /** Bounds for a request's observed chars-per-token ratio, so one noisy request can't skew future estimates wildly. */
19
+ const MIN_CALIBRATED_CHARS_PER_TOKEN = 1;
20
+ const MAX_CALIBRATED_CHARS_PER_TOKEN = 10;
21
+ /** Minimum accumulated characters required before trusting a request's ratio for calibration. */
22
+ const MIN_CHARS_FOR_CALIBRATION = 20;
23
+ export class StreamingSpeedTracker {
24
+ startTime;
25
+ firstTokenTime = null;
26
+ lastUpdateTime = null;
27
+ accumulatedChars = 0;
28
+ exactTokens = null;
29
+ /**
30
+ * Chars-per-token used for live estimates before exact usage arrives. Starts at
31
+ * `DEFAULT_CHARS_PER_TOKEN` and is recalibrated from each request's real usage in
32
+ * `recordUsageTokens`, so it survives `reset()` and carries forward to seed the next request's
33
+ * estimate within the same turn.
34
+ */
35
+ charsPerToken;
36
+ /** Rolling history of (time, cumulative token count) samples, oldest first, used for windowed live TPS. */
37
+ samples = [];
38
+ constructor(options) {
39
+ this.startTime = options?.startTime ?? Date.now();
40
+ this.charsPerToken = options?.charsPerToken ?? DEFAULT_CHARS_PER_TOKEN;
41
+ }
42
+ /**
43
+ * Reset all accumulated state so the next recorded token starts a brand-new measurement,
44
+ * unrelated to anything recorded before this call. Call this at request boundaries within a
45
+ * turn — e.g. when a tool starts executing — so tool latency never mixes into decode speed and
46
+ * the next model request's speed isn't diluted by a previous request's average.
47
+ *
48
+ * `charsPerToken` is deliberately NOT reset — it carries the last request's calibrated ratio
49
+ * forward to seed the next request's live estimate.
50
+ */
51
+ reset(now = Date.now()) {
52
+ this.startTime = now;
53
+ this.firstTokenTime = null;
54
+ this.lastUpdateTime = null;
55
+ this.accumulatedChars = 0;
56
+ this.exactTokens = null;
57
+ this.samples = [];
58
+ }
59
+ recordSample(now) {
60
+ this.samples.push({ time: now, tokens: this.getEstimatedTokens() });
61
+ // Drop samples older than the window plus one extra so we always have a boundary sample to interpolate from.
62
+ const cutoff = now - LIVE_WINDOW_MS * 2;
63
+ while (this.samples.length > 1 && this.samples[0].time < cutoff) {
64
+ this.samples.shift();
65
+ }
66
+ }
67
+ /**
68
+ * Record arrival of a text or reasoning delta string.
69
+ */
70
+ recordDelta(text, now = Date.now()) {
71
+ const length = text?.length ?? 0;
72
+ if (length <= 0)
73
+ return;
74
+ if (this.firstTokenTime === null) {
75
+ this.firstTokenTime = now;
76
+ }
77
+ this.accumulatedChars += length;
78
+ this.lastUpdateTime = now;
79
+ this.recordSample(now);
80
+ }
81
+ /**
82
+ * Record cumulative characters streamed (e.g. from tool call argument streaming).
83
+ */
84
+ recordCumulativeChars(cumulativeChars, now = Date.now()) {
85
+ if (cumulativeChars <= 0)
86
+ return;
87
+ if (this.firstTokenTime === null) {
88
+ this.firstTokenTime = now;
89
+ }
90
+ this.accumulatedChars = Math.max(this.accumulatedChars, cumulativeChars);
91
+ this.lastUpdateTime = now;
92
+ this.recordSample(now);
93
+ }
94
+ /**
95
+ * Record exact token counts if the provider streams usage updates.
96
+ */
97
+ recordUsageTokens(completionTokens, now = Date.now()) {
98
+ if (this.firstTokenTime === null && completionTokens > 0) {
99
+ this.firstTokenTime = now;
100
+ }
101
+ this.exactTokens = completionTokens;
102
+ this.lastUpdateTime = now;
103
+ this.calibrateCharsPerToken(completionTokens);
104
+ this.recordSample(now);
105
+ }
106
+ /**
107
+ * Recalibrate the chars-per-token ratio from this request's real accumulated chars vs. its
108
+ * exact token count, so the NEXT request's live estimate (before its own usage arrives) starts
109
+ * from an observed ratio instead of the generic default. Ignored if there isn't enough
110
+ * accumulated text to trust the sample (e.g. a tool-only request with no generated text).
111
+ */
112
+ calibrateCharsPerToken(exactTokens) {
113
+ if (exactTokens <= 0 || this.accumulatedChars < MIN_CHARS_FOR_CALIBRATION)
114
+ return;
115
+ const ratio = this.accumulatedChars / exactTokens;
116
+ if (!Number.isFinite(ratio) || ratio <= 0)
117
+ return;
118
+ this.charsPerToken = Math.min(MAX_CALIBRATED_CHARS_PER_TOKEN, Math.max(MIN_CALIBRATED_CHARS_PER_TOKEN, ratio));
119
+ }
120
+ /**
121
+ * Time to first token in milliseconds, or null if no tokens received yet.
122
+ */
123
+ getTtftMs() {
124
+ if (this.firstTokenTime === null)
125
+ return null;
126
+ return Math.max(0, this.firstTokenTime - this.startTime);
127
+ }
128
+ /**
129
+ * Current estimated or exact token count generated so far.
130
+ */
131
+ getEstimatedTokens() {
132
+ if (this.exactTokens !== null) {
133
+ return this.exactTokens;
134
+ }
135
+ return Math.round(this.accumulatedChars / this.charsPerToken);
136
+ }
137
+ /**
138
+ * Get live tokens per second during an in-flight stream.
139
+ *
140
+ * Computed over a trailing window (LIVE_WINDOW_MS) of recent samples rather than the
141
+ * whole-request average, so the displayed number tracks current throughput instead of trailing
142
+ * behind a slow start. Falls back to the full-history average until enough time has elapsed
143
+ * since the first token to fill a window. `reset()` clears history at request boundaries, so
144
+ * this never spans across a tool-execution gap or a prior request.
145
+ */
146
+ getLiveTps(now = Date.now()) {
147
+ if (this.firstTokenTime === null)
148
+ return null;
149
+ const generationDurationMs = now - this.firstTokenTime;
150
+ // Require at least 200ms of generation to avoid huge spikes on the first chunk
151
+ if (generationDurationMs < 200) {
152
+ return null;
153
+ }
154
+ const tokensNow = this.getEstimatedTokens();
155
+ if (tokensNow <= 0)
156
+ return null;
157
+ const windowStart = now - LIVE_WINDOW_MS;
158
+ // Find the newest sample at or before windowStart to anchor the window; if none exists
159
+ // (turn is younger than the window), anchor at the first token instead.
160
+ let anchor = null;
161
+ for (const sample of this.samples) {
162
+ if (sample.time <= windowStart) {
163
+ anchor = sample;
164
+ }
165
+ else {
166
+ break;
167
+ }
168
+ }
169
+ const anchorTime = anchor ? anchor.time : this.firstTokenTime;
170
+ const anchorTokens = anchor ? anchor.tokens : 0;
171
+ const durationMs = now - anchorTime;
172
+ const tokens = tokensNow - anchorTokens;
173
+ if (durationMs < 200 || tokens <= 0)
174
+ return null;
175
+ const durationSec = durationMs / 1000;
176
+ const tps = tokens / durationSec;
177
+ return Number.isFinite(tps) && tps > 0 ? Math.round(tps * 10) / 10 : null;
178
+ }
179
+ /**
180
+ * Calculate exact settled tokens per second when generation finishes.
181
+ *
182
+ * @param finalCompletionTokens Exact completion tokens from provider's final usage.
183
+ * @param endTime Generation end timestamp.
184
+ */
185
+ getSettledTps(finalCompletionTokens, endTime = Date.now()) {
186
+ const tokens = finalCompletionTokens ?? this.getEstimatedTokens();
187
+ if (tokens <= 0)
188
+ return null;
189
+ // If firstTokenTime was never captured (e.g. non-streaming or instantaneous response),
190
+ // measure from request startTime.
191
+ const start = this.firstTokenTime ?? this.startTime;
192
+ const durationMs = endTime - start;
193
+ if (durationMs <= 0)
194
+ return null;
195
+ const durationSec = durationMs / 1000;
196
+ const tps = tokens / durationSec;
197
+ return Number.isFinite(tps) && tps > 0 ? Math.round(tps * 10) / 10 : null;
198
+ }
199
+ /**
200
+ * Returns a complete snapshot of current speed metrics.
201
+ */
202
+ getSnapshot(now = Date.now()) {
203
+ const tps = this.getLiveTps(now);
204
+ if (tps === null)
205
+ return null;
206
+ return {
207
+ tps,
208
+ ttftMs: this.getTtftMs() ?? undefined,
209
+ elapsedMs: Math.max(0, now - this.startTime),
210
+ estimatedTokens: this.getEstimatedTokens(),
211
+ };
212
+ }
213
+ }
214
+ //# sourceMappingURL=streaming-speed-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-speed-tracker.js","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-speed-tracker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qduc/term2",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "A terminal-based AI assistant that can help you get things done on your computer",
5
5
  "license": "MIT",
6
6
  "author": "qduc",