@pentoshi/clai 4.12.0 → 4.13.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 (609) hide show
  1. package/CODE_OF_CONDUCT.md +132 -0
  2. package/CONTRIBUTING.md +101 -0
  3. package/PROVIDERS.md +149 -0
  4. package/README.md +217 -426
  5. package/SECURITY.md +33 -0
  6. package/dist/agent/compaction/summary-execution.js +19 -4
  7. package/dist/agent/compaction/summary-execution.js.map +1 -1
  8. package/dist/agent/compaction-summary.d.ts +5 -2
  9. package/dist/agent/compaction-summary.js +10 -4
  10. package/dist/agent/compaction-summary.js.map +1 -1
  11. package/dist/agent/confirm-port.d.ts +3 -5
  12. package/dist/agent/confirm-port.js +12 -6
  13. package/dist/agent/confirm-port.js.map +1 -1
  14. package/dist/agent/context/compact-with-summary.d.ts +1 -0
  15. package/dist/agent/context/compact-with-summary.js +36 -7
  16. package/dist/agent/context/compact-with-summary.js.map +1 -1
  17. package/dist/agent/context/compaction-recent-history.d.ts +12 -0
  18. package/dist/agent/context/compaction-recent-history.js +114 -0
  19. package/dist/agent/context/compaction-recent-history.js.map +1 -0
  20. package/dist/agent/context/latest-user-message.d.ts +2 -0
  21. package/dist/agent/context/latest-user-message.js +10 -0
  22. package/dist/agent/context/latest-user-message.js.map +1 -0
  23. package/dist/agent/context/user-credentials.d.ts +1 -0
  24. package/dist/agent/context/user-credentials.js +3 -0
  25. package/dist/agent/context/user-credentials.js.map +1 -1
  26. package/dist/agent/context-manager.js +6 -2
  27. package/dist/agent/context-manager.js.map +1 -1
  28. package/dist/agent/evidence/task-classification.js +2 -5
  29. package/dist/agent/evidence/task-classification.js.map +1 -1
  30. package/dist/agent/evidence/tool-budgets.js +4 -14
  31. package/dist/agent/evidence/tool-budgets.js.map +1 -1
  32. package/dist/agent/loop-guard.js +1 -5
  33. package/dist/agent/loop-guard.js.map +1 -1
  34. package/dist/agent/outcomes.js +9 -1
  35. package/dist/agent/outcomes.js.map +1 -1
  36. package/dist/agent/parser/arg-formatting.js +3 -16
  37. package/dist/agent/parser/arg-formatting.js.map +1 -1
  38. package/dist/agent/parser/bare-recognition.js +12 -6
  39. package/dist/agent/parser/bare-recognition.js.map +1 -1
  40. package/dist/agent/parser/xml-protocol.js +0 -2
  41. package/dist/agent/parser/xml-protocol.js.map +1 -1
  42. package/dist/agent/plan-implement-compact.js +2 -1
  43. package/dist/agent/plan-implement-compact.js.map +1 -1
  44. package/dist/agent/request-budget.d.ts +1 -0
  45. package/dist/agent/request-budget.js +6 -1
  46. package/dist/agent/request-budget.js.map +1 -1
  47. package/dist/agent/runner.js +2 -2
  48. package/dist/agent/runner.js.map +1 -1
  49. package/dist/agent/session-policy.d.ts +1 -0
  50. package/dist/agent/session-policy.js +1 -4
  51. package/dist/agent/session-policy.js.map +1 -1
  52. package/dist/agent/subagents/manager.d.ts +5 -1
  53. package/dist/agent/subagents/manager.js +96 -15
  54. package/dist/agent/subagents/manager.js.map +1 -1
  55. package/dist/agent/subagents/read-only-tools.js +44 -20
  56. package/dist/agent/subagents/read-only-tools.js.map +1 -1
  57. package/dist/agent/subagents/tools.d.ts +8 -1
  58. package/dist/agent/subagents/tools.js +21 -13
  59. package/dist/agent/subagents/tools.js.map +1 -1
  60. package/dist/agent/subagents/types.d.ts +8 -0
  61. package/dist/agent/subagents/worker.js +48 -7
  62. package/dist/agent/subagents/worker.js.map +1 -1
  63. package/dist/agent/task-evidence.js +2 -11
  64. package/dist/agent/task-evidence.js.map +1 -1
  65. package/dist/agent/tool-output-formatting.js +8 -2
  66. package/dist/agent/tool-output-formatting.js.map +1 -1
  67. package/dist/agent/turn/automatic-compaction-execution.js +1 -0
  68. package/dist/agent/turn/automatic-compaction-execution.js.map +1 -1
  69. package/dist/agent/turn/compaction-coordinator.js +4 -4
  70. package/dist/agent/turn/compaction-coordinator.js.map +1 -1
  71. package/dist/agent/turn/compaction-replay-selection.js +1 -0
  72. package/dist/agent/turn/compaction-replay-selection.js.map +1 -1
  73. package/dist/agent/turn/loop/run-rounds.js +11 -3
  74. package/dist/agent/turn/loop/run-rounds.js.map +1 -1
  75. package/dist/agent/turn/prompt-sections.js +4 -9
  76. package/dist/agent/turn/prompt-sections.js.map +1 -1
  77. package/dist/agent/turn/setup/turn-messages.js +2 -1
  78. package/dist/agent/turn/setup/turn-messages.js.map +1 -1
  79. package/dist/agent/turn/subagent-inbox.d.ts +5 -5
  80. package/dist/agent/turn/subagent-inbox.js +90 -11
  81. package/dist/agent/turn/subagent-inbox.js.map +1 -1
  82. package/dist/agent/turn/system-sections.d.ts +1 -0
  83. package/dist/agent/turn/system-sections.js +1 -1
  84. package/dist/agent/turn/system-sections.js.map +1 -1
  85. package/dist/agent/turn/task-autostart.js +2 -0
  86. package/dist/agent/turn/task-autostart.js.map +1 -1
  87. package/dist/agent/turn/tool-execution/authorization.js +3 -39
  88. package/dist/agent/turn/tool-execution/authorization.js.map +1 -1
  89. package/dist/agent/turn/tool-execution/single-tool.js +2 -4
  90. package/dist/agent/turn/tool-execution/single-tool.js.map +1 -1
  91. package/dist/agent/turn/tool-result-recorder.js +5 -0
  92. package/dist/agent/turn/tool-result-recorder.js.map +1 -1
  93. package/dist/agent/turn/tool-routing.d.ts +1 -1
  94. package/dist/agent/turn/tool-routing.js +11 -11
  95. package/dist/agent/turn/tool-routing.js.map +1 -1
  96. package/dist/agent/workspace-orient.js +2 -2
  97. package/dist/agent/workspace-orient.js.map +1 -1
  98. package/dist/app/adapters/agent-event-adapter.js +5 -0
  99. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  100. package/dist/app/adapters/current-store-adapter.js +2 -2
  101. package/dist/app/adapters/current-store-adapter.js.map +1 -1
  102. package/dist/app/commands/catalog.js +9 -4
  103. package/dist/app/commands/catalog.js.map +1 -1
  104. package/dist/app/commands/registry.js +1 -1
  105. package/dist/app/commands/registry.js.map +1 -1
  106. package/dist/app/controllers/session-compact-helper.js +2 -1
  107. package/dist/app/controllers/session-compact-helper.js.map +1 -1
  108. package/dist/app/controllers/session-controller.d.ts +8 -0
  109. package/dist/app/controllers/session-controller.js +66 -12
  110. package/dist/app/controllers/session-controller.js.map +1 -1
  111. package/dist/app/controllers/session-naming.d.ts +4 -5
  112. package/dist/app/controllers/session-naming.js +38 -80
  113. package/dist/app/controllers/session-naming.js.map +1 -1
  114. package/dist/app/controllers/session-prompt-history.d.ts +4 -0
  115. package/dist/app/controllers/session-prompt-history.js +33 -0
  116. package/dist/app/controllers/session-prompt-history.js.map +1 -0
  117. package/dist/app/controllers/session-prompt-queue.d.ts +1 -0
  118. package/dist/app/controllers/session-prompt-queue.js +1 -1
  119. package/dist/app/controllers/session-prompt-queue.js.map +1 -1
  120. package/dist/app/events/artifact-output.d.ts +1 -0
  121. package/dist/app/events/artifact-output.js +32 -0
  122. package/dist/app/events/artifact-output.js.map +1 -0
  123. package/dist/app/events/event-buffer.d.ts +13 -1
  124. package/dist/app/events/event-buffer.js +92 -4
  125. package/dist/app/events/event-buffer.js.map +1 -1
  126. package/dist/app/operation-review.d.ts +7 -0
  127. package/dist/app/operation-review.js +61 -0
  128. package/dist/app/operation-review.js.map +1 -0
  129. package/dist/app/ports/confirm-port.d.ts +1 -1
  130. package/dist/app/ports/persistence-port.d.ts +2 -1
  131. package/dist/app/ports/secret-port.d.ts +2 -0
  132. package/dist/classic/app/ClassicApp.js +34 -3
  133. package/dist/classic/app/ClassicApp.js.map +1 -1
  134. package/dist/classic/app/action-handlers.js +0 -2
  135. package/dist/classic/app/action-handlers.js.map +1 -1
  136. package/dist/classic/app/app-wiring.d.ts +1 -2
  137. package/dist/classic/app/app-wiring.js +1 -8
  138. package/dist/classic/app/app-wiring.js.map +1 -1
  139. package/dist/classic/app/use-feed.js +2 -1
  140. package/dist/classic/app/use-feed.js.map +1 -1
  141. package/dist/classic/app/wiring-interactions.d.ts +0 -2
  142. package/dist/classic/app/wiring-interactions.js +5 -13
  143. package/dist/classic/app/wiring-interactions.js.map +1 -1
  144. package/dist/classic/app/wiring-types.d.ts +2 -2
  145. package/dist/classic/blocks/batch-lines.js +10 -8
  146. package/dist/classic/blocks/batch-lines.js.map +1 -1
  147. package/dist/classic/blocks/block-context.d.ts +1 -0
  148. package/dist/classic/blocks/block-context.js.map +1 -1
  149. package/dist/classic/blocks/tool-lines.js +20 -39
  150. package/dist/classic/blocks/tool-lines.js.map +1 -1
  151. package/dist/classic/bootstrap/renderer-handle.d.ts +5 -1
  152. package/dist/classic/bootstrap/renderer-handle.js.map +1 -1
  153. package/dist/classic/bootstrap/start-classic.js +12 -12
  154. package/dist/classic/bootstrap/start-classic.js.map +1 -1
  155. package/dist/classic/chrome/context-limit-editor.d.ts +7 -0
  156. package/dist/classic/chrome/context-limit-editor.js +5 -0
  157. package/dist/classic/chrome/context-limit-editor.js.map +1 -1
  158. package/dist/classic/chrome/status-rows.d.ts +4 -0
  159. package/dist/classic/chrome/status-rows.js +11 -0
  160. package/dist/classic/chrome/status-rows.js.map +1 -1
  161. package/dist/classic/feed/feed-blocks.d.ts +1 -1
  162. package/dist/classic/feed/feed-blocks.js +13 -6
  163. package/dist/classic/feed/feed-blocks.js.map +1 -1
  164. package/dist/classic/panels/confirm-panel.js +9 -3
  165. package/dist/classic/panels/confirm-panel.js.map +1 -1
  166. package/dist/classic/panels/keys-panel.js +12 -3
  167. package/dist/classic/panels/keys-panel.js.map +1 -1
  168. package/dist/classic/panels/pager-panel.js +0 -6
  169. package/dist/classic/panels/pager-panel.js.map +1 -1
  170. package/dist/classic/panels/pager-source-controller.d.ts +34 -0
  171. package/dist/classic/panels/pager-source-controller.js +209 -0
  172. package/dist/classic/panels/pager-source-controller.js.map +1 -0
  173. package/dist/classic/panels/panel-controller.d.ts +1 -5
  174. package/dist/classic/panels/panel-controller.js +44 -92
  175. package/dist/classic/panels/panel-controller.js.map +1 -1
  176. package/dist/classic/panels/panel-effect.d.ts +2 -4
  177. package/dist/classic/panels/panel-effect.js.map +1 -1
  178. package/dist/classic/panels/panel-effects.js +3 -6
  179. package/dist/classic/panels/panel-effects.js.map +1 -1
  180. package/dist/classic/panels/panel-types.d.ts +0 -2
  181. package/dist/classic/panels/picker-panel.js +1 -1
  182. package/dist/classic/panels/picker-panel.js.map +1 -1
  183. package/dist/classic/panels/secret-panel.d.ts +1 -0
  184. package/dist/classic/panels/secret-panel.js +8 -1
  185. package/dist/classic/panels/secret-panel.js.map +1 -1
  186. package/dist/commands/providers.d.ts +1 -0
  187. package/dist/commands/providers.js +1 -0
  188. package/dist/commands/providers.js.map +1 -1
  189. package/dist/commands/qoder.d.ts +8 -0
  190. package/dist/commands/qoder.js +85 -0
  191. package/dist/commands/qoder.js.map +1 -0
  192. package/dist/commands/update/installers.js +1 -0
  193. package/dist/commands/update/installers.js.map +1 -1
  194. package/dist/index.js +31 -15
  195. package/dist/index.js.map +1 -1
  196. package/dist/llm/capability/state.d.ts +1 -1
  197. package/dist/llm/capability/tool-dialect.js +1 -0
  198. package/dist/llm/capability/tool-dialect.js.map +1 -1
  199. package/dist/llm/capability/vision-patterns.js +1 -0
  200. package/dist/llm/capability/vision-patterns.js.map +1 -1
  201. package/dist/llm/catalog-facts.js +15 -8
  202. package/dist/llm/catalog-facts.js.map +1 -1
  203. package/dist/llm/codex-auth.d.ts +2 -0
  204. package/dist/llm/codex-auth.js +30 -0
  205. package/dist/llm/codex-auth.js.map +1 -1
  206. package/dist/llm/codex-config.js +18 -14
  207. package/dist/llm/codex-config.js.map +1 -1
  208. package/dist/llm/codex-models.d.ts +0 -1
  209. package/dist/llm/codex-models.js +0 -1
  210. package/dist/llm/codex-models.js.map +1 -1
  211. package/dist/llm/context-windows.js +2 -3
  212. package/dist/llm/context-windows.js.map +1 -1
  213. package/dist/llm/freebuff-run.d.ts +3 -0
  214. package/dist/llm/freebuff-run.js +9 -1
  215. package/dist/llm/freebuff-run.js.map +1 -1
  216. package/dist/llm/freebuff-session-api.d.ts +3 -1
  217. package/dist/llm/freebuff-session-api.js +14 -1
  218. package/dist/llm/freebuff-session-api.js.map +1 -1
  219. package/dist/llm/freebuff-session.d.ts +2 -0
  220. package/dist/llm/freebuff-session.js +61 -28
  221. package/dist/llm/freebuff-session.js.map +1 -1
  222. package/dist/llm/freebuff-wire.d.ts +3 -0
  223. package/dist/llm/freebuff-wire.js +82 -0
  224. package/dist/llm/freebuff-wire.js.map +1 -0
  225. package/dist/llm/freebuff.js +61 -117
  226. package/dist/llm/freebuff.js.map +1 -1
  227. package/dist/llm/provider-identity.js +5 -0
  228. package/dist/llm/provider-identity.js.map +1 -1
  229. package/dist/llm/provider-info-text.js +25 -0
  230. package/dist/llm/provider-info-text.js.map +1 -1
  231. package/dist/llm/provider-profile-layers.js +1 -1
  232. package/dist/llm/provider-profile-layers.js.map +1 -1
  233. package/dist/llm/qoder/qoder-accounts.d.ts +9 -0
  234. package/dist/llm/qoder/qoder-accounts.js +53 -0
  235. package/dist/llm/qoder/qoder-accounts.js.map +1 -0
  236. package/dist/llm/qoder/qoder-auth.d.ts +59 -0
  237. package/dist/llm/qoder/qoder-auth.js +203 -0
  238. package/dist/llm/qoder/qoder-auth.js.map +1 -0
  239. package/dist/llm/qoder/qoder-credential.d.ts +31 -0
  240. package/dist/llm/qoder/qoder-credential.js +82 -0
  241. package/dist/llm/qoder/qoder-credential.js.map +1 -0
  242. package/dist/llm/qoder/qoder-login.d.ts +28 -0
  243. package/dist/llm/qoder/qoder-login.js +153 -0
  244. package/dist/llm/qoder/qoder-login.js.map +1 -0
  245. package/dist/llm/qoder/qoder-refresh.d.ts +4 -0
  246. package/dist/llm/qoder/qoder-refresh.js +165 -0
  247. package/dist/llm/qoder/qoder-refresh.js.map +1 -0
  248. package/dist/llm/qoder/qoder-signer.d.ts +66 -0
  249. package/dist/llm/qoder/qoder-signer.js +119 -0
  250. package/dist/llm/qoder/qoder-signer.js.map +1 -0
  251. package/dist/llm/qoder/qoder.d.ts +20 -0
  252. package/dist/llm/qoder/qoder.js +441 -0
  253. package/dist/llm/qoder/qoder.js.map +1 -0
  254. package/dist/llm/qoder/signer-glue.generated.d.ts +1 -0
  255. package/dist/llm/qoder/signer-glue.generated.js +4 -0
  256. package/dist/llm/qoder/signer-glue.generated.js.map +1 -0
  257. package/dist/llm/qoder/signer-wasm.generated.d.ts +3 -0
  258. package/dist/llm/qoder/signer-wasm.generated.js +6 -0
  259. package/dist/llm/qoder/signer-wasm.generated.js.map +1 -0
  260. package/dist/llm/reasoning-capability.js +1 -0
  261. package/dist/llm/reasoning-capability.js.map +1 -1
  262. package/dist/llm/reasoning-controls.js +1 -3
  263. package/dist/llm/reasoning-controls.js.map +1 -1
  264. package/dist/llm/reasoning-errors.js +3 -1
  265. package/dist/llm/reasoning-errors.js.map +1 -1
  266. package/dist/llm/request-plan.js +18 -12
  267. package/dist/llm/request-plan.js.map +1 -1
  268. package/dist/llm/routing/attempt-complete.js +11 -4
  269. package/dist/llm/routing/attempt-complete.js.map +1 -1
  270. package/dist/llm/routing/attempt-request.d.ts +2 -1
  271. package/dist/llm/routing/attempt-request.js +37 -0
  272. package/dist/llm/routing/attempt-request.js.map +1 -1
  273. package/dist/llm/routing/attempt-stream.js +12 -4
  274. package/dist/llm/routing/attempt-stream.js.map +1 -1
  275. package/dist/llm/routing/provider-selection.js +3 -0
  276. package/dist/llm/routing/provider-selection.js.map +1 -1
  277. package/dist/llm/tool-protocol.js +6 -0
  278. package/dist/llm/tool-protocol.js.map +1 -1
  279. package/dist/llm/wire/chat-body.js +17 -0
  280. package/dist/llm/wire/chat-body.js.map +1 -1
  281. package/dist/llm/wire/reasoning-payload.d.ts +1 -1
  282. package/dist/llm/wire/reasoning-payload.js +6 -0
  283. package/dist/llm/wire/reasoning-payload.js.map +1 -1
  284. package/dist/modes/ask.js +26 -10
  285. package/dist/modes/ask.js.map +1 -1
  286. package/dist/noninteractive/readline-prompts.d.ts +2 -1
  287. package/dist/noninteractive/readline-prompts.js +34 -1
  288. package/dist/noninteractive/readline-prompts.js.map +1 -1
  289. package/dist/noninteractive/stdio-confirm-port.js +18 -6
  290. package/dist/noninteractive/stdio-confirm-port.js.map +1 -1
  291. package/dist/noninteractive/stream-blocks.d.ts +2 -4
  292. package/dist/noninteractive/stream-blocks.js +5 -5
  293. package/dist/noninteractive/stream-blocks.js.map +1 -1
  294. package/dist/noninteractive/stream-renderer.js +1 -1
  295. package/dist/noninteractive/stream-renderer.js.map +1 -1
  296. package/dist/prompts/embedded.js +2 -2
  297. package/dist/prompts/embedded.js.map +1 -1
  298. package/dist/prompts/index.d.ts +3 -1
  299. package/dist/prompts/index.js +27 -10
  300. package/dist/prompts/index.js.map +1 -1
  301. package/dist/prompts/system.agent.md +16 -16
  302. package/dist/prompts/system.ask.md +5 -3
  303. package/dist/safety/filesystem-permissions.d.ts +4 -0
  304. package/dist/safety/filesystem-permissions.js +113 -0
  305. package/dist/safety/filesystem-permissions.js.map +1 -0
  306. package/dist/safety/permission-mode.d.ts +5 -0
  307. package/dist/safety/permission-mode.js +22 -0
  308. package/dist/safety/permission-mode.js.map +1 -0
  309. package/dist/safety/shell-command-words.d.ts +11 -0
  310. package/dist/safety/shell-command-words.js +193 -0
  311. package/dist/safety/shell-command-words.js.map +1 -0
  312. package/dist/safety/shell-filesystem-effects.d.ts +14 -0
  313. package/dist/safety/shell-filesystem-effects.js +178 -0
  314. package/dist/safety/shell-filesystem-effects.js.map +1 -0
  315. package/dist/safety/shell-permission-words.d.ts +16 -0
  316. package/dist/safety/shell-permission-words.js +102 -0
  317. package/dist/safety/shell-permission-words.js.map +1 -0
  318. package/dist/safety/tool-classification.js +1 -15
  319. package/dist/safety/tool-classification.js.map +1 -1
  320. package/dist/session-runtime/binding.js +4 -1
  321. package/dist/session-runtime/binding.js.map +1 -1
  322. package/dist/session-runtime/client.js +111 -7
  323. package/dist/session-runtime/client.js.map +1 -1
  324. package/dist/session-runtime/discovery.d.ts +1 -1
  325. package/dist/session-runtime/discovery.js +2 -2
  326. package/dist/session-runtime/discovery.js.map +1 -1
  327. package/dist/session-runtime/host.d.ts +10 -2
  328. package/dist/session-runtime/host.js +206 -83
  329. package/dist/session-runtime/host.js.map +1 -1
  330. package/dist/session-runtime/input-commands.d.ts +2 -0
  331. package/dist/session-runtime/input-commands.js +11 -0
  332. package/dist/session-runtime/input-commands.js.map +1 -0
  333. package/dist/session-runtime/input-stream.d.ts +15 -0
  334. package/dist/session-runtime/input-stream.js +128 -0
  335. package/dist/session-runtime/input-stream.js.map +1 -0
  336. package/dist/session-runtime/types.d.ts +9 -0
  337. package/dist/store/config/endpoints.d.ts +2 -1
  338. package/dist/store/config/endpoints.js +4 -1
  339. package/dist/store/config/endpoints.js.map +1 -1
  340. package/dist/store/config.js +1 -0
  341. package/dist/store/config.js.map +1 -1
  342. package/dist/store/history/freshness.d.ts +9 -0
  343. package/dist/store/history/freshness.js +29 -0
  344. package/dist/store/history/freshness.js.map +1 -0
  345. package/dist/store/history/jsonl-backend.js +2 -16
  346. package/dist/store/history/jsonl-backend.js.map +1 -1
  347. package/dist/store/history/lifecycle.js +6 -2
  348. package/dist/store/history/lifecycle.js.map +1 -1
  349. package/dist/store/history/recovery.d.ts +1 -3
  350. package/dist/store/history/recovery.js +72 -111
  351. package/dist/store/history/recovery.js.map +1 -1
  352. package/dist/store/history/session-queries.js +5 -5
  353. package/dist/store/history/session-queries.js.map +1 -1
  354. package/dist/store/history-index.d.ts +5 -0
  355. package/dist/store/history-index.js +41 -9
  356. package/dist/store/history-index.js.map +1 -1
  357. package/dist/store/history.d.ts +7 -2
  358. package/dist/store/history.js +13 -7
  359. package/dist/store/history.js.map +1 -1
  360. package/dist/store/rtk-usage.d.ts +2 -0
  361. package/dist/store/rtk-usage.js +44 -0
  362. package/dist/store/rtk-usage.js.map +1 -0
  363. package/dist/store/session-model.js +0 -1
  364. package/dist/store/session-model.js.map +1 -1
  365. package/dist/store/session-prompts-format.d.ts +2 -0
  366. package/dist/store/session-prompts-format.js +29 -0
  367. package/dist/store/session-prompts-format.js.map +1 -0
  368. package/dist/store/session-prompts.d.ts +40 -0
  369. package/dist/store/session-prompts.js +213 -0
  370. package/dist/store/session-prompts.js.map +1 -0
  371. package/dist/store/subagents.d.ts +5 -1
  372. package/dist/store/subagents.js +67 -6
  373. package/dist/store/subagents.js.map +1 -1
  374. package/dist/tools/call-normalization.js +0 -3
  375. package/dist/tools/call-normalization.js.map +1 -1
  376. package/dist/tools/command-intent.d.ts +0 -1
  377. package/dist/tools/command-intent.js +3 -10
  378. package/dist/tools/command-intent.js.map +1 -1
  379. package/dist/tools/definitions/aggregate.js +0 -4
  380. package/dist/tools/definitions/aggregate.js.map +1 -1
  381. package/dist/tools/definitions/define.js +0 -3
  382. package/dist/tools/definitions/define.js.map +1 -1
  383. package/dist/tools/definitions/files.js +3 -111
  384. package/dist/tools/definitions/files.js.map +1 -1
  385. package/dist/tools/definitions/fs-read.d.ts +3 -0
  386. package/dist/tools/definitions/fs-read.js +43 -0
  387. package/dist/tools/definitions/fs-read.js.map +1 -0
  388. package/dist/tools/definitions/selection.js +0 -45
  389. package/dist/tools/definitions/selection.js.map +1 -1
  390. package/dist/tools/definitions/shell.js +6 -3
  391. package/dist/tools/definitions/shell.js.map +1 -1
  392. package/dist/tools/elevated-shell.d.ts +1 -0
  393. package/dist/tools/elevated-shell.js +2 -0
  394. package/dist/tools/elevated-shell.js.map +1 -1
  395. package/dist/tools/fs/read-budget.d.ts +8 -0
  396. package/dist/tools/fs/read-budget.js +30 -0
  397. package/dist/tools/fs/read-budget.js.map +1 -0
  398. package/dist/tools/fs/read-input.d.ts +16 -0
  399. package/dist/tools/fs/read-input.js +73 -0
  400. package/dist/tools/fs/read-input.js.map +1 -0
  401. package/dist/tools/fs/read-many.d.ts +6 -0
  402. package/dist/tools/fs/read-many.js +50 -0
  403. package/dist/tools/fs/read-many.js.map +1 -0
  404. package/dist/tools/fs/read-sections.d.ts +11 -0
  405. package/dist/tools/fs/read-sections.js +71 -0
  406. package/dist/tools/fs/read-sections.js.map +1 -0
  407. package/dist/tools/fs/read-window.d.ts +1 -1
  408. package/dist/tools/fs/read-window.js +57 -25
  409. package/dist/tools/fs/read-window.js.map +1 -1
  410. package/dist/tools/fs/read.d.ts +0 -4
  411. package/dist/tools/fs/read.js +34 -17
  412. package/dist/tools/fs/read.js.map +1 -1
  413. package/dist/tools/fs.d.ts +3 -2
  414. package/dist/tools/fs.js +23 -5
  415. package/dist/tools/fs.js.map +1 -1
  416. package/dist/tools/handlers/files-1.js +11 -35
  417. package/dist/tools/handlers/files-1.js.map +1 -1
  418. package/dist/tools/handlers/files-2.js.map +1 -1
  419. package/dist/tools/handlers/shell-1.js +26 -35
  420. package/dist/tools/handlers/shell-1.js.map +1 -1
  421. package/dist/tools/interactive-session-tools.js +1 -0
  422. package/dist/tools/interactive-session-tools.js.map +1 -1
  423. package/dist/tools/jobs/types.d.ts +4 -1
  424. package/dist/tools/jobs.js +9 -1
  425. package/dist/tools/jobs.js.map +1 -1
  426. package/dist/tools/read-only-shell.d.ts +2 -0
  427. package/dist/tools/read-only-shell.js +65 -0
  428. package/dist/tools/read-only-shell.js.map +1 -0
  429. package/dist/tools/registry.js +0 -9
  430. package/dist/tools/registry.js.map +1 -1
  431. package/dist/tools/retired-tools.js +1 -1
  432. package/dist/tools/retired-tools.js.map +1 -1
  433. package/dist/tools/rtk/rewrite.d.ts +3 -2
  434. package/dist/tools/rtk/rewrite.js +4 -5
  435. package/dist/tools/rtk/rewrite.js.map +1 -1
  436. package/dist/tools/shell/exec-attempt.js +1 -0
  437. package/dist/tools/shell/exec-attempt.js.map +1 -1
  438. package/dist/tools/shell/internals.d.ts +1 -1
  439. package/dist/tools/shell/internals.js +2 -1
  440. package/dist/tools/shell/internals.js.map +1 -1
  441. package/dist/tools/shell/spawn-argv.js +1 -1
  442. package/dist/tools/shell/spawn-argv.js.map +1 -1
  443. package/dist/tools/shell/timeout.d.ts +1 -0
  444. package/dist/tools/shell/timeout.js +2 -0
  445. package/dist/tools/shell/timeout.js.map +1 -0
  446. package/dist/tools/shell.d.ts +1 -0
  447. package/dist/tools/shell.js.map +1 -1
  448. package/dist/tools/sudo-session.d.ts +4 -5
  449. package/dist/tools/sudo-session.js +1 -0
  450. package/dist/tools/sudo-session.js.map +1 -1
  451. package/dist/tools/tool-types.d.ts +2 -4
  452. package/dist/tui-v2/app/App.js +5 -1
  453. package/dist/tui-v2/app/App.js.map +1 -1
  454. package/dist/tui-v2/bootstrap/start-tui-v2.js +0 -2
  455. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  456. package/dist/tui-v2/components/jobs/subagents-panel.js +14 -2
  457. package/dist/tui-v2/components/jobs/subagents-panel.js.map +1 -1
  458. package/dist/tui-v2/components/modal/confirm-modal.js +6 -2
  459. package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
  460. package/dist/tui-v2/components/modal/keys-modal.js +42 -6
  461. package/dist/tui-v2/components/modal/keys-modal.js.map +1 -1
  462. package/dist/tui-v2/components/modal/secret-modal.d.ts +8 -0
  463. package/dist/tui-v2/components/modal/secret-modal.js +27 -18
  464. package/dist/tui-v2/components/modal/secret-modal.js.map +1 -1
  465. package/dist/tui-v2/components/overlay/overlay-host.js +14 -3
  466. package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
  467. package/dist/tui-v2/components/pager/pager.js +43 -61
  468. package/dist/tui-v2/components/pager/pager.js.map +1 -1
  469. package/dist/tui-v2/components/picker/picker.js +17 -3
  470. package/dist/tui-v2/components/picker/picker.js.map +1 -1
  471. package/dist/tui-v2/components/transcript/intro-card.js +2 -1
  472. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
  473. package/dist/tui-v2/components/transcript/tool-card.js +21 -19
  474. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  475. package/dist/tui-v2/components/transcript/transcript-view.js +24 -21
  476. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
  477. package/dist/tui-v2/components/transcript/use-transcript-selection.d.ts +1 -0
  478. package/dist/tui-v2/components/transcript/use-transcript-selection.js +12 -1
  479. package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
  480. package/dist/tui-v2/composer/composer-editor.js +1 -1
  481. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  482. package/dist/types.d.ts +17 -2
  483. package/dist/types.js +1 -0
  484. package/dist/types.js.map +1 -1
  485. package/dist/ui/mentions/expand.js +1 -1
  486. package/dist/ui-core/actions/action-id.d.ts +1 -1
  487. package/dist/ui-core/actions/action-id.js +0 -2
  488. package/dist/ui-core/actions/action-id.js.map +1 -1
  489. package/dist/ui-core/actions/format-shortcuts.js +0 -2
  490. package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
  491. package/dist/ui-core/actions/keymap.js +0 -6
  492. package/dist/ui-core/actions/keymap.js.map +1 -1
  493. package/dist/ui-core/bootstrap/composition-root.d.ts +0 -3
  494. package/dist/ui-core/bootstrap/composition-root.js +0 -8
  495. package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
  496. package/dist/ui-core/bootstrap/overlay-ports.js +14 -5
  497. package/dist/ui-core/bootstrap/overlay-ports.js.map +1 -1
  498. package/dist/ui-core/bootstrap/session-resume.d.ts +5 -0
  499. package/dist/ui-core/bootstrap/session-resume.js +13 -35
  500. package/dist/ui-core/bootstrap/session-resume.js.map +1 -1
  501. package/dist/ui-core/commands/command-handlers.js +5 -2
  502. package/dist/ui-core/commands/command-handlers.js.map +1 -1
  503. package/dist/ui-core/commands/config-commands.js +5 -1
  504. package/dist/ui-core/commands/config-commands.js.map +1 -1
  505. package/dist/ui-core/commands/key-commands.js +50 -30
  506. package/dist/ui-core/commands/key-commands.js.map +1 -1
  507. package/dist/ui-core/commands/keys/auth-picker.d.ts +3 -0
  508. package/dist/ui-core/commands/keys/auth-picker.js +29 -0
  509. package/dist/ui-core/commands/keys/auth-picker.js.map +1 -0
  510. package/dist/ui-core/commands/keys/qoder.d.ts +4 -0
  511. package/dist/ui-core/commands/keys/qoder.js +194 -0
  512. package/dist/ui-core/commands/keys/qoder.js.map +1 -0
  513. package/dist/ui-core/commands/picker-commands.js +19 -1
  514. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  515. package/dist/ui-core/commands/pickers/output-pager.js +19 -8
  516. package/dist/ui-core/commands/pickers/output-pager.js.map +1 -1
  517. package/dist/ui-core/commands/pickers/search-reasoning.js +3 -4
  518. package/dist/ui-core/commands/pickers/search-reasoning.js.map +1 -1
  519. package/dist/ui-core/commands/prompt-commands.d.ts +2 -0
  520. package/dist/ui-core/commands/prompt-commands.js +10 -0
  521. package/dist/ui-core/commands/prompt-commands.js.map +1 -0
  522. package/dist/ui-core/commands/rtk-commands.js +35 -16
  523. package/dist/ui-core/commands/rtk-commands.js.map +1 -1
  524. package/dist/ui-core/commands/session-commands.js +22 -7
  525. package/dist/ui-core/commands/session-commands.js.map +1 -1
  526. package/dist/ui-core/commands/subagent-commands.js +5 -4
  527. package/dist/ui-core/commands/subagent-commands.js.map +1 -1
  528. package/dist/ui-core/composer/composer-meta.js +2 -5
  529. package/dist/ui-core/composer/composer-meta.js.map +1 -1
  530. package/dist/ui-core/controllers/overlay-controller.d.ts +13 -0
  531. package/dist/ui-core/controllers/overlay-controller.js +33 -6
  532. package/dist/ui-core/controllers/overlay-controller.js.map +1 -1
  533. package/dist/ui-core/rendering/batch-sections.d.ts +1 -1
  534. package/dist/ui-core/rendering/batch-sections.js +18 -4
  535. package/dist/ui-core/rendering/batch-sections.js.map +1 -1
  536. package/dist/ui-core/rendering/duration.d.ts +2 -0
  537. package/dist/ui-core/rendering/duration.js +9 -1
  538. package/dist/ui-core/rendering/duration.js.map +1 -1
  539. package/dist/ui-core/rendering/intro-header.js +5 -6
  540. package/dist/ui-core/rendering/intro-header.js.map +1 -1
  541. package/dist/ui-core/rendering/open-tool-output.js +4 -1
  542. package/dist/ui-core/rendering/open-tool-output.js.map +1 -1
  543. package/dist/ui-core/rendering/pager-source.js +3 -0
  544. package/dist/ui-core/rendering/pager-source.js.map +1 -1
  545. package/dist/ui-core/rendering/pager-text.js +3 -0
  546. package/dist/ui-core/rendering/pager-text.js.map +1 -1
  547. package/dist/ui-core/rendering/pager-view-policy.js +4 -2
  548. package/dist/ui-core/rendering/pager-view-policy.js.map +1 -1
  549. package/dist/ui-core/rendering/session-prompts-pager-source.d.ts +3 -0
  550. package/dist/ui-core/rendering/session-prompts-pager-source.js +40 -0
  551. package/dist/ui-core/rendering/session-prompts-pager-source.js.map +1 -0
  552. package/dist/ui-core/rendering/subagent-source.d.ts +4 -3
  553. package/dist/ui-core/rendering/subagent-source.js +79 -7
  554. package/dist/ui-core/rendering/subagent-source.js.map +1 -1
  555. package/dist/ui-core/rendering/text-width.d.ts +1 -0
  556. package/dist/ui-core/rendering/text-width.js +31 -0
  557. package/dist/ui-core/rendering/text-width.js.map +1 -1
  558. package/dist/ui-core/rendering/tool-presenter.d.ts +9 -4
  559. package/dist/ui-core/rendering/tool-presenter.js +43 -91
  560. package/dist/ui-core/rendering/tool-presenter.js.map +1 -1
  561. package/dist/ui-core/rendering/usage-pager-source.js +6 -2
  562. package/dist/ui-core/rendering/usage-pager-source.js.map +1 -1
  563. package/dist/ui-core/state/transcript-store.js +7 -2
  564. package/dist/ui-core/state/transcript-store.js.map +1 -1
  565. package/dist/ui-core/state/transcript-types.d.ts +1 -1
  566. package/dist/ui-core/state/transcript-types.js +4 -2
  567. package/dist/ui-core/state/transcript-types.js.map +1 -1
  568. package/dist/version.generated.d.ts +2 -2
  569. package/dist/version.generated.js +2 -2
  570. package/package.json +6 -2
  571. package/dist/agent/turn/pentest-tools.d.ts +0 -3
  572. package/dist/agent/turn/pentest-tools.js +0 -17
  573. package/dist/agent/turn/pentest-tools.js.map +0 -1
  574. package/dist/classic/bootstrap/suspend-port.d.ts +0 -14
  575. package/dist/classic/bootstrap/suspend-port.js +0 -29
  576. package/dist/classic/bootstrap/suspend-port.js.map +0 -1
  577. package/dist/tools/capabilities.d.ts +0 -12
  578. package/dist/tools/capabilities.js +0 -225
  579. package/dist/tools/capabilities.js.map +0 -1
  580. package/dist/tools/definitions/network.d.ts +0 -2
  581. package/dist/tools/definitions/network.js +0 -17
  582. package/dist/tools/definitions/network.js.map +0 -1
  583. package/dist/tools/definitions/orchestration.d.ts +0 -2
  584. package/dist/tools/definitions/orchestration.js +0 -27
  585. package/dist/tools/definitions/orchestration.js.map +0 -1
  586. package/dist/tools/fs/search.d.ts +0 -32
  587. package/dist/tools/fs/search.js +0 -427
  588. package/dist/tools/fs/search.js.map +0 -1
  589. package/dist/tools/handlers/network-3.d.ts +0 -2
  590. package/dist/tools/handlers/network-3.js +0 -13
  591. package/dist/tools/handlers/network-3.js.map +0 -1
  592. package/dist/tools/handlers/orchestration-2.d.ts +0 -2
  593. package/dist/tools/handlers/orchestration-2.js +0 -16
  594. package/dist/tools/handlers/orchestration-2.js.map +0 -1
  595. package/dist/tools/net-ping-sweep.d.ts +0 -18
  596. package/dist/tools/net-ping-sweep.js +0 -274
  597. package/dist/tools/net-ping-sweep.js.map +0 -1
  598. package/dist/tools/wordlists.d.ts +0 -6
  599. package/dist/tools/wordlists.js +0 -390
  600. package/dist/tools/wordlists.js.map +0 -1
  601. package/dist/tui-v2/bootstrap/pager-export.d.ts +0 -7
  602. package/dist/tui-v2/bootstrap/pager-export.js +0 -19
  603. package/dist/tui-v2/bootstrap/pager-export.js.map +0 -1
  604. package/dist/ui-core/ports/pager-export-port.d.ts +0 -16
  605. package/dist/ui-core/ports/pager-export-port.js +0 -68
  606. package/dist/ui-core/ports/pager-export-port.js.map +0 -1
  607. package/dist/ui-core/rendering/fs-search-summary.d.ts +0 -11
  608. package/dist/ui-core/rendering/fs-search-summary.js +0 -65
  609. package/dist/ui-core/rendering/fs-search-summary.js.map +0 -1
@@ -1,5 +1,9 @@
1
- import { createTextPagerSource, DEFAULT_ARTIFACT_PAGE_BYTES, } from "./artifact-pager-source.js";
1
+ import { createTextPagerSource, createArtifactPagerSource, DEFAULT_ARTIFACT_PAGE_BYTES, } from "./artifact-pager-source.js";
2
2
  import { SUBAGENT_TOOL_CONTINUATION_INDENT } from "./subagent-presentation.js";
3
+ import { subagentDurationLabel } from "./duration.js";
4
+ import { formatToolArgs } from "../../agent/parser/arg-formatting.js";
5
+ import { presentFsReadArgs } from "./tool-presenter.js";
6
+ import { parseFsReadSections } from "../../tools/fs/read-sections.js";
3
7
  function assistantText(text) {
4
8
  return text.replace(/```tool\b[^\n]*\n?[\s\S]*?(?:```|$)/gi, "").trim();
5
9
  }
@@ -16,6 +20,14 @@ function describeToolCall(name, rawArgs) {
16
20
  }
17
21
  if (!args || typeof args !== "object" || Array.isArray(args))
18
22
  return `→ ${name} ${rawArgs}`;
23
+ if (name === "fs.read" && Array.isArray(args.files)) {
24
+ const read = presentFsReadArgs(formatToolArgs({ name, args: args }));
25
+ const files = read.files ?? [read];
26
+ return [`→ ${name}`, ...files.flatMap((file, index) => [
27
+ ...(file.options ? [`options: ${file.options}`] : []),
28
+ `${read.files ? `file ${index + 1}/${files.length}` : "file"}: ${file.path}`,
29
+ ])].join("\n");
30
+ }
19
31
  const fields = Object.entries(args);
20
32
  const target = fields.find(([key]) => key === "path" || key === "url" || key === "command");
21
33
  const options = fields.filter(([key]) => key !== target?.[0]).map(([key, value]) => `${key}=${JSON.stringify(value)}`);
@@ -39,10 +51,27 @@ function activity(run) {
39
51
  }
40
52
  else if (event.kind === "tool") {
41
53
  const call = toolCall(event.text);
54
+ const reads = parseFsReadSections(event.text);
42
55
  if (call) {
43
56
  lines.push(call);
44
57
  pendingTool = lines.length - 1;
45
58
  }
59
+ else if (reads.length > 0) {
60
+ if (pendingTool !== undefined) {
61
+ let display = lines[pendingTool].replace(/^→/, reads.every((read) => read.ok) ? "✓" : "✗");
62
+ for (const read of reads) {
63
+ display = display.replace(new RegExp(`(^\\s*file ${read.index}/${read.total}: )`, "m"), `$1${read.ok ? "✓" : "✗"} `);
64
+ }
65
+ lines[pendingTool] = display;
66
+ }
67
+ else {
68
+ lines.push(...reads.map((read) => ` ${read.ok ? "✓" : "✗"} file ${read.index}/${read.total}: ${read.path}`));
69
+ }
70
+ for (const read of reads.filter((entry) => !entry.ok)) {
71
+ lines.push(` ✗ ${read.path}: ${read.body.split("\n")[0]?.slice(0, 240) ?? "read failed"}`);
72
+ }
73
+ pendingTool = undefined;
74
+ }
46
75
  else if (/^Success:/.test(event.text)) {
47
76
  if (pendingTool !== undefined)
48
77
  lines[pendingTool] = lines[pendingTool].replace(/^→/, "✓");
@@ -70,7 +99,7 @@ function activity(run) {
70
99
  lines.push(run.status === "running" ? " In progress" : " No result recorded");
71
100
  return lines;
72
101
  }
73
- const isLiveSubagentRun = (run) => run.status === "running" || run.status === "stopping";
102
+ export const isLiveSubagentRun = (run) => run.status === "running" || run.status === "stopping";
74
103
  export function subagentsBarVisible(runs) {
75
104
  return runs.some((run) => isLiveSubagentRun(run) || !run.resultAcknowledged);
76
105
  }
@@ -79,11 +108,13 @@ export function orderSubagentRuns(runs) {
79
108
  const settled = runs.filter((run) => !isLiveSubagentRun(run)).sort((a, b) => b.updatedAt - a.updatedAt);
80
109
  return [...live, ...settled];
81
110
  }
82
- export function formatSubagentRun(run) {
111
+ export function formatSubagentRun(run, now = Date.now()) {
83
112
  const events = activity(run);
113
+ const duration = subagentDurationLabel(run, now);
84
114
  return [
85
115
  `# ${run.title}`,
86
116
  `${run.status} · attempt ${run.attempt} · ${run.activeProvider ?? run.provider}/${run.activeModel ?? run.model}`,
117
+ ...(duration ? [`${duration[0].toUpperCase()}${duration.slice(1)}`] : []),
87
118
  `Workspace: ${run.cwd}`,
88
119
  `Agent: ${run.id}`,
89
120
  ...(run.recovery ? [`Recovery: ${run.recovery === "exact" ? "saved conversation checkpoint" : run.recovery === "history" ? "retained evidence; exact checkpoint unavailable" : "fresh investigation"}`] : []),
@@ -98,9 +129,27 @@ export function formatSubagentRun(run) {
98
129
  ...(run.error ? ["", run.status === "stopped" ? "## Stopped" : "## Error", run.error] : []),
99
130
  ].join("\n");
100
131
  }
101
- export function watchSubagents(manager, onChange) {
132
+ export function watchSubagents(manager, onChange, live) {
102
133
  let timer;
134
+ let clock;
135
+ const syncClock = () => {
136
+ if (live?.()) {
137
+ if (clock !== undefined)
138
+ return;
139
+ clock = setInterval(() => {
140
+ syncClock();
141
+ if (clock !== undefined)
142
+ onChange();
143
+ }, 1000);
144
+ clock.unref?.();
145
+ }
146
+ else if (clock !== undefined) {
147
+ clearInterval(clock);
148
+ clock = undefined;
149
+ }
150
+ };
103
151
  const unsubscribe = manager.subscribe(() => {
152
+ syncClock();
104
153
  if (timer)
105
154
  return;
106
155
  timer = setTimeout(() => {
@@ -109,11 +158,15 @@ export function watchSubagents(manager, onChange) {
109
158
  }, 75);
110
159
  timer.unref?.();
111
160
  });
161
+ syncClock();
112
162
  return () => {
113
163
  unsubscribe();
114
164
  if (timer)
115
165
  clearTimeout(timer);
166
+ if (clock !== undefined)
167
+ clearInterval(clock);
116
168
  timer = undefined;
169
+ clock = undefined;
117
170
  };
118
171
  }
119
172
  export function createSubagentPagerSource(manager, id, pageBytes = DEFAULT_ARTIFACT_PAGE_BYTES) {
@@ -121,16 +174,28 @@ export function createSubagentPagerSource(manager, id, pageBytes = DEFAULT_ARTIF
121
174
  let disposed = false;
122
175
  let text;
123
176
  let snapshot;
177
+ let duration;
124
178
  let delegate;
125
179
  const watchers = new Set();
126
180
  const active = () => {
127
181
  if (disposed)
128
182
  throw new Error("subagent pager source is disposed");
183
+ const activityPath = manager.activityPath?.(id);
184
+ if (activityPath) {
185
+ if (delegate?.path !== activityPath) {
186
+ delegate?.dispose();
187
+ delegate = createArtifactPagerSource(activityPath, pageBytes);
188
+ }
189
+ return delegate;
190
+ }
129
191
  const run = manager.get(id);
130
- if (delegate && run === snapshot)
192
+ const now = Date.now();
193
+ const nextDuration = run ? subagentDurationLabel(run, now) : undefined;
194
+ if (delegate && run === snapshot && nextDuration === duration)
131
195
  return delegate;
132
196
  snapshot = run;
133
- const next = run ? formatSubagentRun(run) : "This subagent is no longer available.";
197
+ duration = nextDuration;
198
+ const next = run ? formatSubagentRun(run, now) : "This subagent is no longer available.";
134
199
  if (!delegate || next !== text) {
135
200
  delegate?.dispose();
136
201
  text = next;
@@ -155,12 +220,18 @@ export function createSubagentPagerSource(manager, id, pageBytes = DEFAULT_ARTIF
155
220
  if (disposed)
156
221
  return () => undefined;
157
222
  let observed = manager.get(id);
223
+ let observedDuration = observed ? subagentDurationLabel(observed, Date.now()) : undefined;
158
224
  const stop = watchSubagents(manager, () => {
159
225
  const next = manager.get(id);
160
- if (next === observed)
226
+ const nextDuration = next ? subagentDurationLabel(next, Date.now()) : undefined;
227
+ if (next === observed && nextDuration === observedDuration)
161
228
  return;
162
229
  observed = next;
230
+ observedDuration = nextDuration;
163
231
  onChange();
232
+ }, () => {
233
+ const run = manager.get(id);
234
+ return run !== undefined && isLiveSubagentRun(run);
164
235
  });
165
236
  const cleanup = () => {
166
237
  stop();
@@ -179,6 +250,7 @@ export function createSubagentPagerSource(manager, id, pageBytes = DEFAULT_ARTIF
179
250
  delegate = undefined;
180
251
  text = undefined;
181
252
  snapshot = undefined;
253
+ duration = undefined;
182
254
  },
183
255
  };
184
256
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-source.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/subagent-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent-source.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/subagent-source.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export declare function renderColumns(text: string): number;
2
+ export declare function middleClipText(text: string, columns: number): string;
@@ -7,4 +7,35 @@ export function renderColumns(text) {
7
7
  const plain = text.includes("\x1b") ? text.replace(SGR, "") : text;
8
8
  return Math.max(stringWidth(plain), plain.length);
9
9
  }
10
+ export function middleClipText(text, columns) {
11
+ if (columns < 1)
12
+ return "";
13
+ if (stringWidth(text) <= columns)
14
+ return text;
15
+ if (columns === 1)
16
+ return "…";
17
+ const headBudget = Math.floor((columns - 1) * 0.45);
18
+ const tailBudget = columns - 1 - headBudget;
19
+ const chars = [...text];
20
+ let head = "";
21
+ let tail = "";
22
+ let used = 0;
23
+ for (const char of chars) {
24
+ const width = stringWidth(char);
25
+ if (used + width > headBudget)
26
+ break;
27
+ head += char;
28
+ used += width;
29
+ }
30
+ used = 0;
31
+ for (let index = chars.length - 1; index >= 0; index -= 1) {
32
+ const char = chars[index];
33
+ const width = stringWidth(char);
34
+ if (used + width > tailBudget)
35
+ break;
36
+ tail = char + tail;
37
+ used += width;
38
+ }
39
+ return `${head}…${tail}`;
40
+ }
10
41
  //# sourceMappingURL=text-width.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-width.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/text-width.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAE9B,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"text-width.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/text-width.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAE9B,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe;IAC1D,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,KAAK,GAAG,UAAU;YAAE,MAAM;QACrC,IAAI,IAAI,IAAI,CAAC;QACb,IAAI,IAAI,KAAK,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,CAAC,CAAC;IACT,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,KAAK,GAAG,UAAU;YAAE,MAAM;QACrC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -14,6 +14,7 @@ export declare function clampArgsDisplay(raw: string | undefined): string | unde
14
14
  export interface FsReadArgsPresentation {
15
15
  readonly path: string;
16
16
  readonly options: string | undefined;
17
+ readonly files?: readonly FsReadArgsPresentation[];
17
18
  }
18
19
  export declare function presentFsReadArgs(raw: string | undefined): FsReadArgsPresentation;
19
20
  export declare function presentTool(item: ToolItem): ToolPresentation;
@@ -26,9 +27,13 @@ export interface OutputPresentation {
26
27
  readonly hiddenAboveCount: number;
27
28
  readonly truncatedNotice: string | undefined;
28
29
  }
29
- export declare const TOOL_PREVIEW_HEAD_LINES = 3;
30
- export declare const TOOL_PREVIEW_TAIL_LINES = 3;
30
+ export declare const TOOL_PREVIEW_HEAD_LINES = 1;
31
+ export declare const TOOL_PREVIEW_TAIL_LINES = 2;
31
32
  export declare function sampleEnds(raw: string, eachEnd?: number): string;
32
33
  export declare function cleanToolOutputLines(raw: string): string[];
33
- export declare function evidencePreviewLines(toolName: string | undefined, cleaned: readonly string[]): string[] | undefined;
34
- export declare function presentOutput(tail: string, state: BoundedTextState | undefined, expanded: boolean, toolName?: string): OutputPresentation;
34
+ export declare function toolOutputGapLabel(hiddenLines: number): string;
35
+ export declare function collapseOutputLines<T>(lines: readonly T[], gapLine: (hiddenLines: number) => T, totalLines?: number): {
36
+ readonly lines: readonly T[];
37
+ readonly hiddenAboveCount: number;
38
+ };
39
+ export declare function presentOutput(tail: string, state: BoundedTextState | undefined, expanded: boolean): OutputPresentation;
@@ -1,5 +1,6 @@
1
1
  import { fileToolTitle, isFileMutationTool, } from "../../tools/file-diff.js";
2
2
  import { sanitizeDisplayText } from "./sanitize-display.js";
3
+ import { MAX_FS_READ_FILES } from "../../tools/fs/read-input.js";
3
4
  const STATUS_GLYPH = {
4
5
  queued: "○",
5
6
  running: "●",
@@ -46,18 +47,30 @@ export function clampArgsDisplay(raw) {
46
47
  }
47
48
  return kept.join("\n");
48
49
  }
50
+ function presentFsReadFile(parsed) {
51
+ if (typeof parsed.path !== "string")
52
+ return undefined;
53
+ const options = Object.entries(parsed)
54
+ .filter(([key, value]) => key !== "path" && value !== undefined)
55
+ .map(([key, value]) => `${key}=${typeof value === "string" ? JSON.stringify(value) : String(value)}`)
56
+ .join(" · ");
57
+ return { path: sanitizeDisplayText(parsed.path), options: options ? sanitizeDisplayText(options) : undefined };
58
+ }
49
59
  function optionsFromFsReadJson(raw) {
50
60
  if (!raw.startsWith("{"))
51
61
  return undefined;
52
62
  try {
53
63
  const parsed = JSON.parse(raw);
54
- if (typeof parsed.path !== "string")
55
- return undefined;
56
- const options = Object.entries(parsed)
57
- .filter(([key, value]) => key !== "path" && value !== undefined)
58
- .map(([key, value]) => `${key}=${typeof value === "string" ? JSON.stringify(value) : String(value)}`)
59
- .join(" · ");
60
- return { path: parsed.path, options: options || undefined };
64
+ if (Array.isArray(parsed.files)) {
65
+ const files = parsed.files.slice(0, MAX_FS_READ_FILES).flatMap((file) => {
66
+ if (!file || typeof file !== "object" || Array.isArray(file))
67
+ return [];
68
+ const presented = presentFsReadFile(file);
69
+ return presented ? [presented] : [];
70
+ });
71
+ return { path: `${parsed.files.length} file${parsed.files.length === 1 ? "" : "s"}`, options: undefined, files };
72
+ }
73
+ return presentFsReadFile(parsed);
61
74
  }
62
75
  catch {
63
76
  return undefined;
@@ -156,8 +169,9 @@ export function writeManyFileLabel(change) {
156
169
  const mark = change.kind === "create" ? "+" : change.kind === "overwrite" ? "~" : "·";
157
170
  return `${mark} ${base}`;
158
171
  }
159
- export const TOOL_PREVIEW_HEAD_LINES = 3;
160
- export const TOOL_PREVIEW_TAIL_LINES = 3;
172
+ export const TOOL_PREVIEW_HEAD_LINES = 1;
173
+ export const TOOL_PREVIEW_TAIL_LINES = 2;
174
+ const EXPANDED_OVERFLOW_LINES_PER_END = 3;
161
175
  const EXPANDED_SAFE_CHARS = 400_000;
162
176
  const EXPANDED_SAFE_LINES = 4_000;
163
177
  const SAMPLE_CHARS = 4_000;
@@ -205,7 +219,7 @@ function roughLineCount(raw) {
205
219
  if (raw.charCodeAt(i) === 10)
206
220
  n += 1;
207
221
  }
208
- return n;
222
+ return raw.endsWith("\n") ? n - 1 : n;
209
223
  }
210
224
  const PRINTABLE_CARET_CSI = /\^\[\[[0-9;?]*[ -/]*[@-~]/g;
211
225
  function stripPrintableCaretCsi(text) {
@@ -232,53 +246,19 @@ export function cleanToolOutputLines(raw) {
232
246
  out.pop();
233
247
  return out;
234
248
  }
235
- export function evidencePreviewLines(toolName, cleaned) {
236
- if (!toolName || cleaned.length === 0)
237
- return undefined;
238
- if (toolName === "web.search") {
239
- const out = [];
240
- for (const line of cleaned) {
241
- if (out.length >= 6)
242
- break;
243
- const t = line.trim();
244
- if (!t)
245
- continue;
246
- if (out.length < 2 ||
247
- /^https?:\/\//i.test(t) ||
248
- /"title"\s*:/i.test(t) ||
249
- /"url"\s*:/i.test(t) ||
250
- /^\d+\.\s/.test(t) ||
251
- /^[-*]\s/.test(t)) {
252
- out.push(line);
253
- }
254
- else if (out.length < 3) {
255
- out.push(line);
256
- }
257
- }
258
- return out.length >= 2 ? out.slice(0, 6) : undefined;
259
- }
260
- if (toolName === "web.fetch" || toolName === "http.fetch") {
261
- const out = [];
262
- let bodyLines = 0;
263
- for (const line of cleaned) {
264
- const t = line.trim();
265
- if (!t) {
266
- if (out.length > 0 && bodyLines > 0)
267
- break;
268
- continue;
269
- }
270
- out.push(line);
271
- if (out.length <= 2)
272
- continue;
273
- bodyLines += 1;
274
- if (bodyLines >= 4 || out.length >= 8)
275
- break;
276
- }
277
- return out.length >= 2 ? out : undefined;
278
- }
279
- return undefined;
249
+ export function toolOutputGapLabel(hiddenLines) {
250
+ return `… ${hiddenLines} more line${hiddenLines === 1 ? "" : "s"}`;
280
251
  }
281
- export function presentOutput(tail, state, expanded, toolName) {
252
+ export function collapseOutputLines(lines, gapLine, totalLines = lines.length) {
253
+ const head = lines.slice(0, TOOL_PREVIEW_HEAD_LINES);
254
+ const tail = lines.slice(Math.max(head.length, lines.length - TOOL_PREVIEW_TAIL_LINES));
255
+ const hiddenAboveCount = Math.max(0, totalLines - head.length - tail.length);
256
+ return {
257
+ lines: hiddenAboveCount > 0 ? [...head, gapLine(hiddenAboveCount), ...tail] : [...head, ...tail],
258
+ hiddenAboveCount,
259
+ };
260
+ }
261
+ export function presentOutput(tail, state, expanded) {
282
262
  const totalLines = roughLineCount(tail);
283
263
  const truncatedNotice = state?.truncated
284
264
  ? `output truncated in memory (${formatBytes(state.droppedBytes)} dropped; full output saved to disk)`
@@ -294,9 +274,9 @@ export function presentOutput(tail, state, expanded, toolName) {
294
274
  : 0;
295
275
  return { lines: cleaned, hiddenAboveCount: hidden, truncatedNotice };
296
276
  }
297
- const head = cleaned.slice(0, TOOL_PREVIEW_HEAD_LINES);
298
- const visibleTail = cleaned.slice(-TOOL_PREVIEW_TAIL_LINES);
299
- const hiddenAboveCount = Math.max(0, cleaned.length - TOOL_PREVIEW_HEAD_LINES - TOOL_PREVIEW_TAIL_LINES);
277
+ const head = cleaned.slice(0, EXPANDED_OVERFLOW_LINES_PER_END);
278
+ const visibleTail = cleaned.slice(-EXPANDED_OVERFLOW_LINES_PER_END);
279
+ const hiddenAboveCount = Math.max(0, cleaned.length - EXPANDED_OVERFLOW_LINES_PER_END * 2);
300
280
  return {
301
281
  lines: [...head, `··· ${hiddenAboveCount} lines more · open pager ···`, ...visibleTail],
302
282
  hiddenAboveCount,
@@ -305,37 +285,9 @@ export function presentOutput(tail, state, expanded, toolName) {
305
285
  }
306
286
  const source = sampleEnds(tail, SAMPLE_CHARS);
307
287
  const cleaned = cleanToolOutputLines(source);
308
- const headCount = TOOL_PREVIEW_HEAD_LINES;
309
- const tailCount = TOOL_PREVIEW_TAIL_LINES;
310
- const budget = headCount + tailCount;
311
- let lines;
312
- let hiddenAboveCount = 0;
313
- const evidence = !expanded
314
- ? evidencePreviewLines(toolName, cleaned)
315
- : undefined;
316
- if (evidence && evidence.length > 0 && cleaned.length > budget) {
317
- const rest = cleaned.length - evidence.length;
318
- hiddenAboveCount = Math.max(0, totalLines - evidence.length, rest);
319
- lines =
320
- hiddenAboveCount > 0
321
- ? [...evidence, `··· ${hiddenAboveCount} lines more ···`]
322
- : evidence;
323
- }
324
- else if (cleaned.length <= budget) {
325
- lines = cleaned;
326
- if (source !== tail && totalLines > cleaned.length) {
327
- hiddenAboveCount = Math.max(0, totalLines - cleaned.length);
328
- }
329
- }
330
- else {
331
- const head = cleaned.slice(0, headCount);
332
- const visibleTail = cleaned.slice(-tailCount);
333
- hiddenAboveCount = Math.max(totalLines - headCount - tailCount, cleaned.length - headCount - tailCount);
334
- lines =
335
- hiddenAboveCount > 0
336
- ? [...head, `··· ${hiddenAboveCount} lines more ···`, ...visibleTail]
337
- : [...head, ...visibleTail];
338
- }
339
- return { lines, hiddenAboveCount, truncatedNotice };
288
+ return {
289
+ ...collapseOutputLines(cleaned, toolOutputGapLabel, source === tail ? cleaned.length : totalLines),
290
+ truncatedNotice,
291
+ };
340
292
  }
341
293
  //# sourceMappingURL=tool-presenter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-presenter.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/tool-presenter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,YAAY,GAA+B;IAC/C,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,GAAG;IACZ,EAAE,EAAE,GAAG;IACP,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,MAAM,YAAY,GAA+B;IAC/C,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAaF,SAAS,mBAAmB,CAC1B,QAAgB,EAChB,WAA+B;IAE/B,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC;QACvE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IACT,CAAC;IACD,OAAO,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,MAAM,UAAU,gBAAgB,CAAC,GAAuB;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,IAAI,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,aAAa,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAOD,SAAS,qBAAqB,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;aACpG,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACtF,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1D,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,QAAQ,GACZ,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,SAAS,GAAuB,IAAI,CAAC,WAAW;QAClD,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO;QACX,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;IAClE,IAAI,QAA4B,CAAC;IAEjC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAkC,CAAC;QACvE,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC7D,aAAa,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,UAAU,CAAC;QACvD,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACxC,aAAa;gBACX,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC1E,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QACpB,QAAQ;YACN,IAAI,CAAC,IAAI,KAAK,cAAc;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACrD,SAAS,GAAG,SAAS,CAAC;QACtB,WAAW,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,MAA0B,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAClD,IAAI,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM;gBACJ,KAAK,CAAC,MAAM,IAAI,oBAAoB;oBAClC,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;QACjE,CAAC;IACH,CAAC;IACD,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,IACE,IAAI,CAAC,QAAQ,KAAK,SAAS;QAC3B,IAAI,CAAC,QAAQ,KAAK,CAAC;QACnB,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,EAClD,CAAC;QACD,MAAM,GAAG,GACP,IAAI,CAAC,QAAQ,KAAK,GAAG;YACnB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG;gBACrB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,SAAS,CAAC;QAClB,WAAW,GAAG,GAAG;YACf,CAAC,CAAC,GAAG,WAAW,MAAM,IAAI,CAAC,QAAQ,MAAM,GAAG,EAAE;YAC9C,CAAC,CAAC,GAAG,WAAW,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,WAAW;QACX,IAAI;QACJ,SAAS;QACT,WAAW;QACX,MAAM;QACN,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAGlC;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC;IAC7D,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3E,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAQD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IACrC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,OAAO,GAAG,YAAY;IAC5D,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1C,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAEzD,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,IAAI,GAAG,sBAAsB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,QAA4B,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,gBAAgB,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC;YAAE,SAAS;QAC1E,IAAI,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IACvE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA4B,EAC5B,OAA0B;IAE1B,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,IACE,GAAG,CAAC,MAAM,GAAG,CAAC;gBACd,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EACjB,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC;oBAAE,MAAM;gBAC3C,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAC9B,SAAS,IAAI,CAAC,CAAC;YACf,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;QAC/C,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,KAAmC,EACnC,QAAiB,EACjB,QAAiB;IAEjB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,KAAK,EAAE,SAAS;QACtC,CAAC,CAAC,+BAA+B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,sCAAsC;QACtG,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,IAAI,mBAAmB;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAC1C,MAAM,MAAM,GACV,MAAM,KAAK,IAAI;gBACb,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC1C,CAAC,CAAC,CAAC,CAAC;YACR,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACvE,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,OAAO,CAAC,MAAM,GAAG,uBAAuB,GAAG,uBAAuB,CACnE,CAAC;QACF,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,gBAAgB,8BAA8B,EAAE,GAAG,WAAW,CAAC;YACvF,gBAAgB;YAChB,eAAe;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,uBAAuB,CAAC;IAC1C,MAAM,SAAS,GAAG,uBAAuB,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAErC,IAAI,KAAe,CAAC;IACpB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,MAAM,QAAQ,GAAG,CAAC,QAAQ;QACxB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9C,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK;YACH,gBAAgB,GAAG,CAAC;gBAClB,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,gBAAgB,iBAAiB,CAAC;gBACzD,CAAC,CAAC,QAAQ,CAAC;IACjB,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;QACpC,KAAK,GAAG,OAAO,CAAC;QAChB,IAAI,MAAM,KAAK,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnD,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9C,gBAAgB,GAAG,IAAI,CAAC,GAAG,CACzB,UAAU,GAAG,SAAS,GAAG,SAAS,EAClC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CACvC,CAAC;QACF,KAAK;YACH,gBAAgB,GAAG,CAAC;gBAClB,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,gBAAgB,iBAAiB,EAAE,GAAG,WAAW,CAAC;gBACrE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"tool-presenter.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/tool-presenter.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export function createUsagePagerSource(ports, pageBytes = DEFAULT_ARTIFACT_PAGE_
4
4
  let body = ports.renderBody();
5
5
  let disposed = false;
6
6
  const listeners = new Set();
7
- const unsubscribe = ports.subscribe(() => {
7
+ const refresh = () => {
8
8
  if (disposed)
9
9
  return;
10
10
  const next = ports.renderBody();
@@ -13,7 +13,10 @@ export function createUsagePagerSource(ports, pageBytes = DEFAULT_ARTIFACT_PAGE_
13
13
  body = next;
14
14
  for (const listener of [...listeners])
15
15
  listener();
16
- });
16
+ };
17
+ const unsubscribe = ports.subscribe(refresh);
18
+ const timer = setInterval(refresh, 1000);
19
+ timer.unref?.();
17
20
  const readPage = async (offset) => {
18
21
  if (disposed)
19
22
  throw new Error("usage pager source is disposed");
@@ -68,6 +71,7 @@ export function createUsagePagerSource(ports, pageBytes = DEFAULT_ARTIFACT_PAGE_
68
71
  isGrowing: () => true,
69
72
  dispose() {
70
73
  disposed = true;
74
+ clearInterval(timer);
71
75
  unsubscribe();
72
76
  listeners.clear();
73
77
  },
@@ -1 +1 @@
1
- {"version":3,"file":"usage-pager-source.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/usage-pager-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-pager-source.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/usage-pager-source.ts"],"names":[],"mappings":"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"}
@@ -178,9 +178,14 @@ export class TranscriptStore {
178
178
  if (this.persistBase.length === 0) {
179
179
  return fresh;
180
180
  }
181
- const merged = [...this.persistBase, ...fresh];
181
+ const updates = new Map(fresh.map((item) => [item.id, item]));
182
+ const merged = this.persistBase.map((item) => {
183
+ const update = updates.get(item.id);
184
+ updates.delete(item.id);
185
+ return update ?? item;
186
+ });
187
+ merged.push(...updates.values());
182
188
  this.persistBase = merged;
183
- this.persistHydratedIds = new Set(merged.map((item) => item.id));
184
189
  return merged;
185
190
  }
186
191
  setState(next) {