@evalops/maestro 0.10.51 → 0.10.53

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 (1502) hide show
  1. package/README.md +1 -3
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js.map +1 -1
  4. package/dist/agent/compaction.d.ts.map +1 -1
  5. package/dist/agent/compaction.js +1 -1
  6. package/dist/agent/compaction.js.map +1 -1
  7. package/dist/agent/context-handoff.d.ts.map +1 -1
  8. package/dist/agent/context-handoff.js +2 -1
  9. package/dist/agent/context-handoff.js.map +1 -1
  10. package/dist/agent/index.d.ts +8 -1
  11. package/dist/agent/index.d.ts.map +1 -1
  12. package/dist/agent/index.js +8 -1
  13. package/dist/agent/index.js.map +1 -1
  14. package/dist/agent/modes.d.ts +1 -1
  15. package/dist/agent/modes.d.ts.map +1 -1
  16. package/dist/agent/modes.js +56 -0
  17. package/dist/agent/modes.js.map +1 -1
  18. package/dist/agent/oracle-consultation-policy.d.ts +22 -0
  19. package/dist/agent/oracle-consultation-policy.d.ts.map +1 -0
  20. package/dist/agent/oracle-consultation-policy.js +72 -0
  21. package/dist/agent/oracle-consultation-policy.js.map +1 -0
  22. package/dist/agent/oracle-policy-experiment.d.ts +27 -0
  23. package/dist/agent/oracle-policy-experiment.d.ts.map +1 -0
  24. package/dist/agent/oracle-policy-experiment.js +59 -0
  25. package/dist/agent/oracle-policy-experiment.js.map +1 -0
  26. package/dist/agent/oracle-policy-rollout.d.ts +42 -0
  27. package/dist/agent/oracle-policy-rollout.d.ts.map +1 -0
  28. package/dist/agent/oracle-policy-rollout.js +80 -0
  29. package/dist/agent/oracle-policy-rollout.js.map +1 -0
  30. package/dist/agent/plugin-agent-api.d.ts +13 -0
  31. package/dist/agent/plugin-agent-api.d.ts.map +1 -0
  32. package/dist/agent/plugin-agent-api.js +11 -0
  33. package/dist/agent/plugin-agent-api.js.map +1 -0
  34. package/dist/agent/plugin-agent-loader.d.ts +17 -0
  35. package/dist/agent/plugin-agent-loader.d.ts.map +1 -0
  36. package/dist/agent/plugin-agent-loader.js +81 -0
  37. package/dist/agent/plugin-agent-loader.js.map +1 -0
  38. package/dist/agent/plugin-agent-registry.d.ts +62 -0
  39. package/dist/agent/plugin-agent-registry.d.ts.map +1 -0
  40. package/dist/agent/plugin-agent-registry.js +109 -0
  41. package/dist/agent/plugin-agent-registry.js.map +1 -0
  42. package/dist/agent/profile-loader.d.ts +7 -0
  43. package/dist/agent/profile-loader.d.ts.map +1 -0
  44. package/dist/agent/profile-loader.js +115 -0
  45. package/dist/agent/profile-loader.js.map +1 -0
  46. package/dist/agent/profiles.d.ts +30 -0
  47. package/dist/agent/profiles.d.ts.map +1 -0
  48. package/dist/agent/profiles.js +146 -0
  49. package/dist/agent/profiles.js.map +1 -0
  50. package/dist/agent/prompt-cache.d.ts +0 -4
  51. package/dist/agent/prompt-cache.d.ts.map +1 -1
  52. package/dist/agent/prompt-cache.js +1 -7
  53. package/dist/agent/prompt-cache.js.map +1 -1
  54. package/dist/agent/providers/google-gemini-cli.js +1 -0
  55. package/dist/agent/providers/google.js +1 -0
  56. package/dist/agent/providers/vertex.js +1 -0
  57. package/dist/agent/routing-receipt.d.ts +34 -0
  58. package/dist/agent/routing-receipt.d.ts.map +1 -0
  59. package/dist/agent/routing-receipt.js +55 -0
  60. package/dist/agent/routing-receipt.js.map +1 -0
  61. package/dist/{skills/artifact-metadata.d.ts → agent/skill-artifact-metadata.d.ts} +2 -4
  62. package/dist/agent/skill-artifact-metadata.d.ts.map +1 -0
  63. package/dist/{skills/artifact-metadata.js → agent/skill-artifact-metadata.js} +1 -38
  64. package/dist/agent/skill-artifact-metadata.js.map +1 -0
  65. package/dist/agent/subagent-specs.d.ts +1 -1
  66. package/dist/agent/subagent-specs.js +2 -2
  67. package/dist/agent/subagent-specs.js.map +1 -1
  68. package/dist/agent/token-counter.d.ts +40 -0
  69. package/dist/agent/token-counter.d.ts.map +1 -0
  70. package/dist/agent/token-counter.js +74 -0
  71. package/dist/agent/token-counter.js.map +1 -0
  72. package/dist/agent/transport/events.d.ts +1 -1
  73. package/dist/agent/transport/events.d.ts.map +1 -1
  74. package/dist/agent/transport/events.js +1 -1
  75. package/dist/agent/transport/events.js.map +1 -1
  76. package/dist/agent/types.d.ts +4 -2
  77. package/dist/agent/types.d.ts.map +1 -1
  78. package/dist/agent/types.js.map +1 -1
  79. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -1
  80. package/dist/app-server/plugin-bundle-api.js +1 -0
  81. package/dist/app-server/plugin-bundle-api.js.map +1 -1
  82. package/dist/app-server/session-api.d.ts.map +1 -1
  83. package/dist/app-server/session-api.js +15 -2
  84. package/dist/app-server/session-api.js.map +1 -1
  85. package/dist/audit/logger.d.ts +5 -5
  86. package/dist/cli/args.d.ts +2 -0
  87. package/dist/cli/args.d.ts.map +1 -1
  88. package/dist/cli/args.js +18 -1
  89. package/dist/cli/args.js.map +1 -1
  90. package/dist/cli/direct-runtime-command.d.ts +1 -0
  91. package/dist/cli/direct-runtime-command.d.ts.map +1 -1
  92. package/dist/cli/direct-runtime-command.js +25 -3
  93. package/dist/cli/direct-runtime-command.js.map +1 -1
  94. package/dist/cli/headless.d.ts +3 -19
  95. package/dist/cli/headless.d.ts.map +1 -1
  96. package/dist/cli/headless.js +8 -619
  97. package/dist/cli/headless.js.map +1 -1
  98. package/dist/cli/help.d.ts.map +1 -1
  99. package/dist/cli/help.js +3 -0
  100. package/dist/cli/help.js.map +1 -1
  101. package/dist/cli/native-tui-launcher.d.ts +126 -0
  102. package/dist/cli/native-tui-launcher.d.ts.map +1 -0
  103. package/dist/cli/native-tui-launcher.js +425 -0
  104. package/dist/cli/native-tui-launcher.js.map +1 -0
  105. package/dist/cli/rpc-mode.d.ts +3 -27
  106. package/dist/cli/rpc-mode.d.ts.map +1 -1
  107. package/dist/cli/rpc-mode.js +8 -177
  108. package/dist/cli/rpc-mode.js.map +1 -1
  109. package/dist/cli/session.d.ts +11 -19
  110. package/dist/cli/session.d.ts.map +1 -1
  111. package/dist/cli/session.js +6 -64
  112. package/dist/cli/session.js.map +1 -1
  113. package/dist/cli-command-runtime.d.ts.map +1 -1
  114. package/dist/cli-command-runtime.js +26 -24
  115. package/dist/cli-command-runtime.js.map +1 -1
  116. package/dist/cli-runtime.js +52529 -137615
  117. package/dist/config/env-vars.d.ts +12 -0
  118. package/dist/config/env-vars.d.ts.map +1 -1
  119. package/dist/config/env-vars.js +12 -0
  120. package/dist/config/env-vars.js.map +1 -1
  121. package/dist/{cli-tui → config}/ui-state.d.ts +6 -1
  122. package/dist/config/ui-state.d.ts.map +1 -0
  123. package/dist/{cli-tui → config}/ui-state.js +1 -1
  124. package/dist/config/ui-state.js.map +1 -0
  125. package/dist/context/repo-map.d.ts.map +1 -1
  126. package/dist/context/repo-map.js +1 -7
  127. package/dist/context/repo-map.js.map +1 -1
  128. package/dist/context/token-optimizer.d.ts.map +1 -1
  129. package/dist/context/token-optimizer.js +1 -8
  130. package/dist/context/token-optimizer.js.map +1 -1
  131. package/dist/db/schema.d.ts +2 -2
  132. package/dist/hooks/notification-hooks.d.ts +1 -1
  133. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  134. package/dist/hooks/notification-hooks.js.map +1 -1
  135. package/dist/hooks/tui-surface.d.ts +35 -0
  136. package/dist/hooks/tui-surface.d.ts.map +1 -0
  137. package/dist/hooks/tui-surface.js +11 -0
  138. package/dist/hooks/tui-surface.js.map +1 -0
  139. package/dist/hooks/types.d.ts +2 -1
  140. package/dist/hooks/types.d.ts.map +1 -1
  141. package/dist/hooks/types.js.map +1 -1
  142. package/dist/hooks/typescript-loader.d.ts.map +1 -1
  143. package/dist/hooks/typescript-loader.js.map +1 -1
  144. package/dist/hooks/ui-context.d.ts.map +1 -1
  145. package/dist/hooks/ui-context.js.map +1 -1
  146. package/dist/main.d.ts.map +1 -1
  147. package/dist/main.js +154 -882
  148. package/dist/main.js.map +1 -1
  149. package/dist/models/config-loader.d.ts +5 -5
  150. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +45 -0
  151. package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  152. package/dist/node_modules/@evalops/contracts/dist/index.js +2 -0
  153. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  154. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +284 -0
  155. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  156. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +41 -0
  157. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  158. package/dist/node_modules/@evalops/contracts/dist/schemas.d.ts +986 -0
  159. package/dist/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  160. package/dist/node_modules/@evalops/contracts/dist/schemas.js +49 -0
  161. package/dist/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  162. package/dist/node_modules/@evalops/contracts/dist/token-estimation.d.ts +56 -0
  163. package/dist/node_modules/@evalops/contracts/dist/token-estimation.d.ts.map +1 -0
  164. package/dist/node_modules/@evalops/contracts/dist/token-estimation.js +86 -0
  165. package/dist/node_modules/@evalops/contracts/dist/token-estimation.js.map +1 -0
  166. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  167. package/dist/packages/discovery.d.ts.map +1 -1
  168. package/dist/packages/discovery.js +1 -0
  169. package/dist/packages/discovery.js.map +1 -1
  170. package/dist/packages/inspection.d.ts.map +1 -1
  171. package/dist/packages/inspection.js +7 -1
  172. package/dist/packages/inspection.js.map +1 -1
  173. package/dist/packages/loader.d.ts.map +1 -1
  174. package/dist/packages/loader.js +8 -1
  175. package/dist/packages/loader.js.map +1 -1
  176. package/dist/packages/runtime.d.ts +1 -0
  177. package/dist/packages/runtime.d.ts.map +1 -1
  178. package/dist/packages/runtime.js +9 -1
  179. package/dist/packages/runtime.js.map +1 -1
  180. package/dist/packages/types.d.ts +6 -0
  181. package/dist/packages/types.d.ts.map +1 -1
  182. package/dist/packages/types.js.map +1 -1
  183. package/dist/runtime/agent-runtime.d.ts +22 -6
  184. package/dist/runtime/agent-runtime.d.ts.map +1 -1
  185. package/dist/runtime/agent-runtime.js +1 -1
  186. package/dist/runtime/agent-runtime.js.map +1 -1
  187. package/dist/runtime/env.d.ts +1 -0
  188. package/dist/runtime/env.d.ts.map +1 -1
  189. package/dist/runtime/env.js +1 -0
  190. package/dist/runtime/env.js.map +1 -1
  191. package/dist/{cli-tui → runtime}/prompt-queue.d.ts.map +1 -1
  192. package/dist/{cli-tui → runtime}/prompt-queue.js.map +1 -1
  193. package/dist/server/handlers/chat-ws.d.ts +2 -1
  194. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  195. package/dist/server/handlers/chat-ws.js +150 -5
  196. package/dist/server/handlers/chat-ws.js.map +1 -1
  197. package/dist/server/handlers/chat.d.ts.map +1 -1
  198. package/dist/server/handlers/chat.js +78 -5
  199. package/dist/server/handlers/chat.js.map +1 -1
  200. package/dist/server/handlers/package.d.ts.map +1 -1
  201. package/dist/server/handlers/package.js +1 -0
  202. package/dist/server/handlers/package.js.map +1 -1
  203. package/dist/server/handlers/queue.js +1 -1
  204. package/dist/server/handlers/queue.js.map +1 -1
  205. package/dist/server/handlers/ui.js +1 -1
  206. package/dist/server/handlers/ui.js.map +1 -1
  207. package/dist/server/handlers/zen.js +1 -1
  208. package/dist/server/handlers/zen.js.map +1 -1
  209. package/dist/server/hosted-session-manager.d.ts +3 -0
  210. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  211. package/dist/server/hosted-session-manager.js +26 -0
  212. package/dist/server/hosted-session-manager.js.map +1 -1
  213. package/dist/server/model-selection.d.ts +1 -0
  214. package/dist/server/model-selection.d.ts.map +1 -1
  215. package/dist/server/model-selection.js +4 -0
  216. package/dist/server/model-selection.js.map +1 -1
  217. package/dist/server/session-serialization.d.ts.map +1 -1
  218. package/dist/server/session-serialization.js +3 -0
  219. package/dist/server/session-serialization.js.map +1 -1
  220. package/dist/server/session-timeline.d.ts.map +1 -1
  221. package/dist/server/session-timeline.js +1 -1
  222. package/dist/server/session-timeline.js.map +1 -1
  223. package/dist/server/sse-session.d.ts +2 -0
  224. package/dist/server/sse-session.d.ts.map +1 -1
  225. package/dist/server/sse-session.js +3 -0
  226. package/dist/server/sse-session.js.map +1 -1
  227. package/dist/server/stores/ui-store.d.ts +1 -1
  228. package/dist/server/stores/ui-store.d.ts.map +1 -1
  229. package/dist/server/stores/ui-store.js.map +1 -1
  230. package/dist/server/utils/token-estimator.d.ts +2 -2
  231. package/dist/server/utils/token-estimator.d.ts.map +1 -1
  232. package/dist/server/utils/token-estimator.js +2 -12
  233. package/dist/server/utils/token-estimator.js.map +1 -1
  234. package/dist/server/validation.d.ts +54 -0
  235. package/dist/server/validation.d.ts.map +1 -1
  236. package/dist/services/image-providers/cost.d.ts +70 -0
  237. package/dist/services/image-providers/cost.d.ts.map +1 -0
  238. package/dist/services/image-providers/cost.js +164 -0
  239. package/dist/services/image-providers/cost.js.map +1 -0
  240. package/dist/services/image-providers/flux.d.ts +40 -0
  241. package/dist/services/image-providers/flux.d.ts.map +1 -0
  242. package/dist/services/image-providers/flux.js +99 -0
  243. package/dist/services/image-providers/flux.js.map +1 -0
  244. package/dist/services/image-providers/index.d.ts +24 -0
  245. package/dist/services/image-providers/index.d.ts.map +1 -0
  246. package/dist/services/image-providers/index.js +27 -0
  247. package/dist/services/image-providers/index.js.map +1 -0
  248. package/dist/services/image-providers/masks.d.ts +51 -0
  249. package/dist/services/image-providers/masks.d.ts.map +1 -0
  250. package/dist/services/image-providers/masks.js +132 -0
  251. package/dist/services/image-providers/masks.js.map +1 -0
  252. package/dist/services/image-providers/openai.d.ts +35 -0
  253. package/dist/services/image-providers/openai.d.ts.map +1 -0
  254. package/dist/services/image-providers/openai.js +93 -0
  255. package/dist/services/image-providers/openai.js.map +1 -0
  256. package/dist/services/image-providers/types.d.ts +61 -0
  257. package/dist/services/image-providers/types.d.ts.map +1 -0
  258. package/dist/services/image-providers/types.js +17 -0
  259. package/dist/services/image-providers/types.js.map +1 -0
  260. package/dist/services/intelligent-router/index.d.ts +1 -0
  261. package/dist/services/intelligent-router/index.d.ts.map +1 -1
  262. package/dist/services/intelligent-router/index.js +1 -0
  263. package/dist/services/intelligent-router/index.js.map +1 -1
  264. package/dist/services/intelligent-router/normalize.d.ts +1 -0
  265. package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
  266. package/dist/services/intelligent-router/normalize.js +17 -0
  267. package/dist/services/intelligent-router/normalize.js.map +1 -1
  268. package/dist/services/intelligent-router/outcome.d.ts +19 -0
  269. package/dist/services/intelligent-router/outcome.d.ts.map +1 -0
  270. package/dist/services/intelligent-router/outcome.js +51 -0
  271. package/dist/services/intelligent-router/outcome.js.map +1 -0
  272. package/dist/services/intelligent-router/recorder.d.ts +2 -0
  273. package/dist/services/intelligent-router/recorder.d.ts.map +1 -1
  274. package/dist/services/intelligent-router/recorder.js +72 -1
  275. package/dist/services/intelligent-router/recorder.js.map +1 -1
  276. package/dist/services/intelligent-router/service.d.ts +1 -0
  277. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  278. package/dist/services/intelligent-router/service.js +60 -11
  279. package/dist/services/intelligent-router/service.js.map +1 -1
  280. package/dist/services/intelligent-router/types.d.ts +18 -0
  281. package/dist/services/intelligent-router/types.d.ts.map +1 -1
  282. package/dist/services/intelligent-router/types.js.map +1 -1
  283. package/dist/services/workspace-config/middleware.d.ts +2 -0
  284. package/dist/services/workspace-config/middleware.d.ts.map +1 -1
  285. package/dist/services/workspace-config/middleware.js +25 -28
  286. package/dist/services/workspace-config/middleware.js.map +1 -1
  287. package/dist/session/agent-lineage-projection.d.ts +30 -0
  288. package/dist/session/agent-lineage-projection.d.ts.map +1 -0
  289. package/dist/session/agent-lineage-projection.js +109 -0
  290. package/dist/session/agent-lineage-projection.js.map +1 -0
  291. package/dist/session/manager.d.ts +3 -0
  292. package/dist/session/manager.d.ts.map +1 -1
  293. package/dist/session/manager.js +24 -0
  294. package/dist/session/manager.js.map +1 -1
  295. package/dist/session/session-graph-projection.d.ts +11 -0
  296. package/dist/session/session-graph-projection.d.ts.map +1 -1
  297. package/dist/session/session-graph-projection.js +28 -0
  298. package/dist/session/session-graph-projection.js.map +1 -1
  299. package/dist/session/types.d.ts +2 -0
  300. package/dist/session/types.d.ts.map +1 -1
  301. package/dist/session/types.js.map +1 -1
  302. package/dist/telemetry/maestro-event-bus.d.ts +1 -1
  303. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  304. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  305. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  306. package/dist/telemetry/oracle-policy.d.ts +6 -0
  307. package/dist/telemetry/oracle-policy.d.ts.map +1 -0
  308. package/dist/telemetry/oracle-policy.js +17 -0
  309. package/dist/telemetry/oracle-policy.js.map +1 -0
  310. package/dist/telemetry/wide-events.d.ts +1 -1
  311. package/dist/telemetry/wide-events.d.ts.map +1 -1
  312. package/dist/telemetry/wide-events.js.map +1 -1
  313. package/dist/theme/theme.d.ts +2 -8
  314. package/dist/theme/theme.d.ts.map +1 -1
  315. package/dist/theme/theme.js +7 -0
  316. package/dist/theme/theme.js.map +1 -1
  317. package/dist/theme/tui-theme-helpers.d.ts +2 -1
  318. package/dist/theme/tui-theme-helpers.d.ts.map +1 -1
  319. package/dist/theme/tui-theme-helpers.js.map +1 -1
  320. package/dist/theme/tui-theme-types.d.ts +39 -0
  321. package/dist/theme/tui-theme-types.d.ts.map +1 -0
  322. package/dist/theme/tui-theme-types.js +10 -0
  323. package/dist/theme/tui-theme-types.js.map +1 -0
  324. package/dist/tools/index.d.ts +199 -160
  325. package/dist/tools/index.d.ts.map +1 -1
  326. package/dist/tools/index.js +4 -0
  327. package/dist/tools/index.js.map +1 -1
  328. package/dist/tools/lazy-registry.d.ts.map +1 -1
  329. package/dist/tools/lazy-registry.js +1 -0
  330. package/dist/tools/lazy-registry.js.map +1 -1
  331. package/dist/tools/oracle.d.ts +9 -0
  332. package/dist/tools/oracle.d.ts.map +1 -1
  333. package/dist/tools/oracle.js +26 -24
  334. package/dist/tools/oracle.js.map +1 -1
  335. package/dist/tools/painter.d.ts +73 -0
  336. package/dist/tools/painter.d.ts.map +1 -0
  337. package/dist/tools/painter.js +283 -0
  338. package/dist/tools/painter.js.map +1 -0
  339. package/dist/tools/typebox-tool.d.ts.map +1 -1
  340. package/dist/tools/typebox-tool.js +1 -1
  341. package/dist/tools/typebox-tool.js.map +1 -1
  342. package/dist/utils/terminal-image.d.ts +52 -0
  343. package/dist/utils/terminal-image.d.ts.map +1 -0
  344. package/dist/utils/terminal-image.js +95 -0
  345. package/dist/utils/terminal-image.js.map +1 -0
  346. package/dist/utils/terminal-text.d.ts +11 -0
  347. package/dist/utils/terminal-text.d.ts.map +1 -0
  348. package/dist/utils/terminal-text.js +21 -0
  349. package/dist/utils/terminal-text.js.map +1 -0
  350. package/dist/version.json +2 -2
  351. package/dist/web-server.d.ts.map +1 -1
  352. package/dist/web-server.js +24 -2
  353. package/dist/web-server.js.map +1 -1
  354. package/package.json +13 -11
  355. package/skills/incident-triage/SKILL.md +4 -3
  356. package/dist/cli/commands/agents.d.ts +0 -24
  357. package/dist/cli/commands/agents.d.ts.map +0 -1
  358. package/dist/cli/commands/agents.js +0 -429
  359. package/dist/cli/commands/agents.js.map +0 -1
  360. package/dist/cli/commands/anthropic.d.ts +0 -2
  361. package/dist/cli/commands/anthropic.d.ts.map +0 -1
  362. package/dist/cli/commands/anthropic.js +0 -6
  363. package/dist/cli/commands/anthropic.js.map +0 -1
  364. package/dist/cli/commands/cost.d.ts +0 -13
  365. package/dist/cli/commands/cost.d.ts.map +0 -1
  366. package/dist/cli/commands/cost.js +0 -143
  367. package/dist/cli/commands/cost.js.map +0 -1
  368. package/dist/cli/commands/exec-constants.d.ts +0 -3
  369. package/dist/cli/commands/exec-constants.d.ts.map +0 -1
  370. package/dist/cli/commands/exec-constants.js +0 -3
  371. package/dist/cli/commands/exec-constants.js.map +0 -1
  372. package/dist/cli/commands/exec.d.ts +0 -19
  373. package/dist/cli/commands/exec.d.ts.map +0 -1
  374. package/dist/cli/commands/exec.js +0 -207
  375. package/dist/cli/commands/exec.js.map +0 -1
  376. package/dist/cli/commands/hooks.d.ts +0 -2
  377. package/dist/cli/commands/hooks.d.ts.map +0 -1
  378. package/dist/cli/commands/hooks.js +0 -25
  379. package/dist/cli/commands/hooks.js.map +0 -1
  380. package/dist/cli/commands/hosted-runner.d.ts +0 -25
  381. package/dist/cli/commands/hosted-runner.d.ts.map +0 -1
  382. package/dist/cli/commands/hosted-runner.js +0 -278
  383. package/dist/cli/commands/hosted-runner.js.map +0 -1
  384. package/dist/cli/commands/memory.d.ts +0 -2
  385. package/dist/cli/commands/memory.d.ts.map +0 -1
  386. package/dist/cli/commands/memory.js +0 -208
  387. package/dist/cli/commands/memory.js.map +0 -1
  388. package/dist/cli/commands/models.d.ts +0 -3
  389. package/dist/cli/commands/models.d.ts.map +0 -1
  390. package/dist/cli/commands/models.js +0 -154
  391. package/dist/cli/commands/models.js.map +0 -1
  392. package/dist/cli/commands/modes.d.ts +0 -8
  393. package/dist/cli/commands/modes.d.ts.map +0 -1
  394. package/dist/cli/commands/modes.js +0 -151
  395. package/dist/cli/commands/modes.js.map +0 -1
  396. package/dist/cli/commands/openai.d.ts +0 -2
  397. package/dist/cli/commands/openai.d.ts.map +0 -1
  398. package/dist/cli/commands/openai.js +0 -116
  399. package/dist/cli/commands/openai.js.map +0 -1
  400. package/dist/cli/commands/session-transfer.d.ts +0 -5
  401. package/dist/cli/commands/session-transfer.d.ts.map +0 -1
  402. package/dist/cli/commands/session-transfer.js +0 -43
  403. package/dist/cli/commands/session-transfer.js.map +0 -1
  404. package/dist/cli/commands/sessions.d.ts +0 -8
  405. package/dist/cli/commands/sessions.d.ts.map +0 -1
  406. package/dist/cli/commands/sessions.js +0 -152
  407. package/dist/cli/commands/sessions.js.map +0 -1
  408. package/dist/cli/commands/skill.d.ts +0 -10
  409. package/dist/cli/commands/skill.d.ts.map +0 -1
  410. package/dist/cli/commands/skill.js +0 -303
  411. package/dist/cli/commands/skill.js.map +0 -1
  412. package/dist/cli/commands/stats.d.ts +0 -7
  413. package/dist/cli/commands/stats.d.ts.map +0 -1
  414. package/dist/cli/commands/stats.js +0 -167
  415. package/dist/cli/commands/stats.js.map +0 -1
  416. package/dist/cli/commands/status.d.ts +0 -2
  417. package/dist/cli/commands/status.d.ts.map +0 -1
  418. package/dist/cli/commands/status.js +0 -11
  419. package/dist/cli/commands/status.js.map +0 -1
  420. package/dist/cli/commands/update.d.ts +0 -12
  421. package/dist/cli/commands/update.d.ts.map +0 -1
  422. package/dist/cli/commands/update.js +0 -148
  423. package/dist/cli/commands/update.js.map +0 -1
  424. package/dist/cli-tui/about-view.d.ts +0 -48
  425. package/dist/cli-tui/about-view.d.ts.map +0 -1
  426. package/dist/cli-tui/about-view.js +0 -206
  427. package/dist/cli-tui/about-view.js.map +0 -1
  428. package/dist/cli-tui/agent-event-router.d.ts +0 -28
  429. package/dist/cli-tui/agent-event-router.d.ts.map +0 -1
  430. package/dist/cli-tui/agent-event-router.js +0 -126
  431. package/dist/cli-tui/agent-event-router.js.map +0 -1
  432. package/dist/cli-tui/approval/approval-controller.d.ts +0 -28
  433. package/dist/cli-tui/approval/approval-controller.d.ts.map +0 -1
  434. package/dist/cli-tui/approval/approval-controller.js +0 -99
  435. package/dist/cli-tui/approval/approval-controller.js.map +0 -1
  436. package/dist/cli-tui/approval/approval-modal.d.ts +0 -26
  437. package/dist/cli-tui/approval/approval-modal.d.ts.map +0 -1
  438. package/dist/cli-tui/approval/approval-modal.js +0 -143
  439. package/dist/cli-tui/approval/approval-modal.js.map +0 -1
  440. package/dist/cli-tui/assistant-message.d.ts +0 -41
  441. package/dist/cli-tui/assistant-message.d.ts.map +0 -1
  442. package/dist/cli-tui/assistant-message.js +0 -236
  443. package/dist/cli-tui/assistant-message.js.map +0 -1
  444. package/dist/cli-tui/auth-state.d.ts +0 -7
  445. package/dist/cli-tui/auth-state.d.ts.map +0 -1
  446. package/dist/cli-tui/auth-state.js +0 -46
  447. package/dist/cli-tui/auth-state.js.map +0 -1
  448. package/dist/cli-tui/background/background-tasks-controller.d.ts +0 -31
  449. package/dist/cli-tui/background/background-tasks-controller.d.ts.map +0 -1
  450. package/dist/cli-tui/background/background-tasks-controller.js +0 -84
  451. package/dist/cli-tui/background/background-tasks-controller.js.map +0 -1
  452. package/dist/cli-tui/base-view.d.ts +0 -111
  453. package/dist/cli-tui/base-view.d.ts.map +0 -1
  454. package/dist/cli-tui/base-view.js +0 -145
  455. package/dist/cli-tui/base-view.js.map +0 -1
  456. package/dist/cli-tui/bash/background-launcher.d.ts +0 -14
  457. package/dist/cli-tui/bash/background-launcher.d.ts.map +0 -1
  458. package/dist/cli-tui/bash/background-launcher.js +0 -50
  459. package/dist/cli-tui/bash/background-launcher.js.map +0 -1
  460. package/dist/cli-tui/bash/bash-autocomplete.d.ts +0 -40
  461. package/dist/cli-tui/bash/bash-autocomplete.d.ts.map +0 -1
  462. package/dist/cli-tui/bash/bash-autocomplete.js +0 -347
  463. package/dist/cli-tui/bash/bash-autocomplete.js.map +0 -1
  464. package/dist/cli-tui/bash/bash-history.d.ts +0 -21
  465. package/dist/cli-tui/bash/bash-history.d.ts.map +0 -1
  466. package/dist/cli-tui/bash/bash-history.js +0 -72
  467. package/dist/cli-tui/bash/bash-history.js.map +0 -1
  468. package/dist/cli-tui/bash/bash-syntax.d.ts +0 -5
  469. package/dist/cli-tui/bash/bash-syntax.d.ts.map +0 -1
  470. package/dist/cli-tui/bash/bash-syntax.js +0 -176
  471. package/dist/cli-tui/bash/bash-syntax.js.map +0 -1
  472. package/dist/cli-tui/bash/index.d.ts +0 -4
  473. package/dist/cli-tui/bash/index.d.ts.map +0 -1
  474. package/dist/cli-tui/bash/index.js +0 -4
  475. package/dist/cli-tui/bash/index.js.map +0 -1
  476. package/dist/cli-tui/bash-mode-view.d.ts +0 -86
  477. package/dist/cli-tui/bash-mode-view.d.ts.map +0 -1
  478. package/dist/cli-tui/bash-mode-view.js +0 -560
  479. package/dist/cli-tui/bash-mode-view.js.map +0 -1
  480. package/dist/cli-tui/bash-shell-block.d.ts +0 -50
  481. package/dist/cli-tui/bash-shell-block.d.ts.map +0 -1
  482. package/dist/cli-tui/bash-shell-block.js +0 -119
  483. package/dist/cli-tui/bash-shell-block.js.map +0 -1
  484. package/dist/cli-tui/changelog-view.d.ts +0 -13
  485. package/dist/cli-tui/changelog-view.d.ts.map +0 -1
  486. package/dist/cli-tui/changelog-view.js +0 -34
  487. package/dist/cli-tui/changelog-view.js.map +0 -1
  488. package/dist/cli-tui/clean-mode.d.ts +0 -13
  489. package/dist/cli-tui/clean-mode.d.ts.map +0 -1
  490. package/dist/cli-tui/clean-mode.js +0 -32
  491. package/dist/cli-tui/clean-mode.js.map +0 -1
  492. package/dist/cli-tui/client-tools/client-tool-controller.d.ts +0 -41
  493. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +0 -1
  494. package/dist/cli-tui/client-tools/client-tool-controller.js +0 -860
  495. package/dist/cli-tui/client-tools/client-tool-controller.js.map +0 -1
  496. package/dist/cli-tui/client-tools/local-client-tool-service.d.ts +0 -33
  497. package/dist/cli-tui/client-tools/local-client-tool-service.d.ts.map +0 -1
  498. package/dist/cli-tui/client-tools/local-client-tool-service.js +0 -94
  499. package/dist/cli-tui/client-tools/local-client-tool-service.js.map +0 -1
  500. package/dist/cli-tui/commands/a2a-handlers.d.ts +0 -7
  501. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +0 -1
  502. package/dist/cli-tui/commands/a2a-handlers.js +0 -215
  503. package/dist/cli-tui/commands/a2a-handlers.js.map +0 -1
  504. package/dist/cli-tui/commands/access-command.d.ts +0 -3
  505. package/dist/cli-tui/commands/access-command.d.ts.map +0 -1
  506. package/dist/cli-tui/commands/access-command.js +0 -89
  507. package/dist/cli-tui/commands/access-command.js.map +0 -1
  508. package/dist/cli-tui/commands/argument-parser.d.ts +0 -12
  509. package/dist/cli-tui/commands/argument-parser.d.ts.map +0 -1
  510. package/dist/cli-tui/commands/argument-parser.js +0 -135
  511. package/dist/cli-tui/commands/argument-parser.js.map +0 -1
  512. package/dist/cli-tui/commands/audit-command.d.ts +0 -5
  513. package/dist/cli-tui/commands/audit-command.d.ts.map +0 -1
  514. package/dist/cli-tui/commands/audit-command.js +0 -35
  515. package/dist/cli-tui/commands/audit-command.js.map +0 -1
  516. package/dist/cli-tui/commands/background-handlers.d.ts +0 -14
  517. package/dist/cli-tui/commands/background-handlers.d.ts.map +0 -1
  518. package/dist/cli-tui/commands/background-handlers.js +0 -115
  519. package/dist/cli-tui/commands/background-handlers.js.map +0 -1
  520. package/dist/cli-tui/commands/command-catalog.d.ts +0 -29
  521. package/dist/cli-tui/commands/command-catalog.d.ts.map +0 -1
  522. package/dist/cli-tui/commands/command-catalog.js +0 -666
  523. package/dist/cli-tui/commands/command-catalog.js.map +0 -1
  524. package/dist/cli-tui/commands/command-registry-adapter.d.ts +0 -12
  525. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +0 -1
  526. package/dist/cli-tui/commands/command-registry-adapter.js +0 -129
  527. package/dist/cli-tui/commands/command-registry-adapter.js.map +0 -1
  528. package/dist/cli-tui/commands/command-suite-catalog.d.ts +0 -14
  529. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +0 -1
  530. package/dist/cli-tui/commands/command-suite-catalog.js +0 -147
  531. package/dist/cli-tui/commands/command-suite-catalog.js.map +0 -1
  532. package/dist/cli-tui/commands/command-suite-handlers.d.ts +0 -111
  533. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +0 -1
  534. package/dist/cli-tui/commands/command-suite-handlers.js +0 -110
  535. package/dist/cli-tui/commands/command-suite-handlers.js.map +0 -1
  536. package/dist/cli-tui/commands/composer-handlers.d.ts +0 -8
  537. package/dist/cli-tui/commands/composer-handlers.d.ts.map +0 -1
  538. package/dist/cli-tui/commands/composer-handlers.js +0 -90
  539. package/dist/cli-tui/commands/composer-handlers.js.map +0 -1
  540. package/dist/cli-tui/commands/framework-handlers.d.ts +0 -18
  541. package/dist/cli-tui/commands/framework-handlers.d.ts.map +0 -1
  542. package/dist/cli-tui/commands/framework-handlers.js +0 -57
  543. package/dist/cli-tui/commands/framework-handlers.js.map +0 -1
  544. package/dist/cli-tui/commands/guardian-handlers.d.ts +0 -20
  545. package/dist/cli-tui/commands/guardian-handlers.d.ts.map +0 -1
  546. package/dist/cli-tui/commands/guardian-handlers.js +0 -48
  547. package/dist/cli-tui/commands/guardian-handlers.js.map +0 -1
  548. package/dist/cli-tui/commands/handlers/mode-handler.d.ts +0 -32
  549. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +0 -1
  550. package/dist/cli-tui/commands/handlers/mode-handler.js +0 -153
  551. package/dist/cli-tui/commands/handlers/mode-handler.js.map +0 -1
  552. package/dist/cli-tui/commands/hotkeys-command.d.ts +0 -8
  553. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +0 -1
  554. package/dist/cli-tui/commands/hotkeys-command.js +0 -61
  555. package/dist/cli-tui/commands/hotkeys-command.js.map +0 -1
  556. package/dist/cli-tui/commands/limits-command.d.ts +0 -3
  557. package/dist/cli-tui/commands/limits-command.d.ts.map +0 -1
  558. package/dist/cli-tui/commands/limits-command.js +0 -88
  559. package/dist/cli-tui/commands/limits-command.js.map +0 -1
  560. package/dist/cli-tui/commands/mcp-handlers.d.ts +0 -12
  561. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +0 -1
  562. package/dist/cli-tui/commands/mcp-handlers.js +0 -1306
  563. package/dist/cli-tui/commands/mcp-handlers.js.map +0 -1
  564. package/dist/cli-tui/commands/memory-handlers.d.ts +0 -28
  565. package/dist/cli-tui/commands/memory-handlers.d.ts.map +0 -1
  566. package/dist/cli-tui/commands/memory-handlers.js +0 -414
  567. package/dist/cli-tui/commands/memory-handlers.js.map +0 -1
  568. package/dist/cli-tui/commands/otel-handlers.d.ts +0 -11
  569. package/dist/cli-tui/commands/otel-handlers.d.ts.map +0 -1
  570. package/dist/cli-tui/commands/otel-handlers.js +0 -20
  571. package/dist/cli-tui/commands/otel-handlers.js.map +0 -1
  572. package/dist/cli-tui/commands/package-handlers.d.ts +0 -30
  573. package/dist/cli-tui/commands/package-handlers.d.ts.map +0 -1
  574. package/dist/cli-tui/commands/package-handlers.js +0 -499
  575. package/dist/cli-tui/commands/package-handlers.js.map +0 -1
  576. package/dist/cli-tui/commands/pii-command.d.ts +0 -3
  577. package/dist/cli-tui/commands/pii-command.d.ts.map +0 -1
  578. package/dist/cli-tui/commands/pii-command.js +0 -54
  579. package/dist/cli-tui/commands/pii-command.js.map +0 -1
  580. package/dist/cli-tui/commands/registry.d.ts +0 -3
  581. package/dist/cli-tui/commands/registry.d.ts.map +0 -1
  582. package/dist/cli-tui/commands/registry.js +0 -36
  583. package/dist/cli-tui/commands/registry.js.map +0 -1
  584. package/dist/cli-tui/commands/safety-handlers.d.ts +0 -36
  585. package/dist/cli-tui/commands/safety-handlers.d.ts.map +0 -1
  586. package/dist/cli-tui/commands/safety-handlers.js +0 -62
  587. package/dist/cli-tui/commands/safety-handlers.js.map +0 -1
  588. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +0 -26
  589. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +0 -1
  590. package/dist/cli-tui/commands/subcommands/auth-commands.js +0 -79
  591. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +0 -1
  592. package/dist/cli-tui/commands/subcommands/config-commands.d.ts +0 -23
  593. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +0 -1
  594. package/dist/cli-tui/commands/subcommands/config-commands.js +0 -61
  595. package/dist/cli-tui/commands/subcommands/config-commands.js.map +0 -1
  596. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts +0 -46
  597. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +0 -1
  598. package/dist/cli-tui/commands/subcommands/diag-commands.js +0 -163
  599. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +0 -1
  600. package/dist/cli-tui/commands/subcommands/git-commands.d.ts +0 -18
  601. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +0 -1
  602. package/dist/cli-tui/commands/subcommands/git-commands.js +0 -50
  603. package/dist/cli-tui/commands/subcommands/git-commands.js.map +0 -1
  604. package/dist/cli-tui/commands/subcommands/index.d.ts +0 -18
  605. package/dist/cli-tui/commands/subcommands/index.d.ts.map +0 -1
  606. package/dist/cli-tui/commands/subcommands/index.js +0 -18
  607. package/dist/cli-tui/commands/subcommands/index.js.map +0 -1
  608. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts +0 -26
  609. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +0 -1
  610. package/dist/cli-tui/commands/subcommands/safety-commands.js +0 -149
  611. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +0 -1
  612. package/dist/cli-tui/commands/subcommands/session-commands.d.ts +0 -36
  613. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +0 -1
  614. package/dist/cli-tui/commands/subcommands/session-commands.js +0 -112
  615. package/dist/cli-tui/commands/subcommands/session-commands.js.map +0 -1
  616. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts +0 -27
  617. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +0 -1
  618. package/dist/cli-tui/commands/subcommands/tools-commands.js +0 -80
  619. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +0 -1
  620. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts +0 -30
  621. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +0 -1
  622. package/dist/cli-tui/commands/subcommands/ui-commands.js +0 -74
  623. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +0 -1
  624. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts +0 -25
  625. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +0 -1
  626. package/dist/cli-tui/commands/subcommands/undo-commands.js +0 -74
  627. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +0 -1
  628. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts +0 -19
  629. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +0 -1
  630. package/dist/cli-tui/commands/subcommands/usage-commands.js +0 -63
  631. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +0 -1
  632. package/dist/cli-tui/commands/subcommands/utils.d.ts +0 -127
  633. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +0 -1
  634. package/dist/cli-tui/commands/subcommands/utils.js +0 -395
  635. package/dist/cli-tui/commands/subcommands/utils.js.map +0 -1
  636. package/dist/cli-tui/commands/types.d.ts +0 -105
  637. package/dist/cli-tui/commands/types.d.ts.map +0 -1
  638. package/dist/cli-tui/commands/types.js +0 -2
  639. package/dist/cli-tui/commands/types.js.map +0 -1
  640. package/dist/cli-tui/commands/undo-handlers.d.ts +0 -29
  641. package/dist/cli-tui/commands/undo-handlers.d.ts.map +0 -1
  642. package/dist/cli-tui/commands/undo-handlers.js +0 -305
  643. package/dist/cli-tui/commands/undo-handlers.js.map +0 -1
  644. package/dist/cli-tui/commands/utility-handlers.d.ts +0 -55
  645. package/dist/cli-tui/commands/utility-handlers.d.ts.map +0 -1
  646. package/dist/cli-tui/commands/utility-handlers.js +0 -137
  647. package/dist/cli-tui/commands/utility-handlers.js.map +0 -1
  648. package/dist/cli-tui/commands/workflow-handlers.d.ts +0 -22
  649. package/dist/cli-tui/commands/workflow-handlers.d.ts.map +0 -1
  650. package/dist/cli-tui/commands/workflow-handlers.js +0 -227
  651. package/dist/cli-tui/commands/workflow-handlers.js.map +0 -1
  652. package/dist/cli-tui/compact-boundary-message.d.ts +0 -9
  653. package/dist/cli-tui/compact-boundary-message.d.ts.map +0 -1
  654. package/dist/cli-tui/compact-boundary-message.js +0 -18
  655. package/dist/cli-tui/compact-boundary-message.js.map +0 -1
  656. package/dist/cli-tui/compaction-recovery.d.ts +0 -6
  657. package/dist/cli-tui/compaction-recovery.d.ts.map +0 -1
  658. package/dist/cli-tui/compaction-recovery.js +0 -13
  659. package/dist/cli-tui/compaction-recovery.js.map +0 -1
  660. package/dist/cli-tui/config-view.d.ts +0 -30
  661. package/dist/cli-tui/config-view.d.ts.map +0 -1
  662. package/dist/cli-tui/config-view.js +0 -255
  663. package/dist/cli-tui/config-view.js.map +0 -1
  664. package/dist/cli-tui/context-view.d.ts +0 -20
  665. package/dist/cli-tui/context-view.d.ts.map +0 -1
  666. package/dist/cli-tui/context-view.js +0 -191
  667. package/dist/cli-tui/context-view.js.map +0 -1
  668. package/dist/cli-tui/custom-editor.d.ts +0 -25
  669. package/dist/cli-tui/custom-editor.d.ts.map +0 -1
  670. package/dist/cli-tui/custom-editor.js +0 -241
  671. package/dist/cli-tui/custom-editor.js.map +0 -1
  672. package/dist/cli-tui/editor-view.d.ts +0 -34
  673. package/dist/cli-tui/editor-view.d.ts.map +0 -1
  674. package/dist/cli-tui/editor-view.js +0 -102
  675. package/dist/cli-tui/editor-view.js.map +0 -1
  676. package/dist/cli-tui/feedback-view.d.ts +0 -35
  677. package/dist/cli-tui/feedback-view.d.ts.map +0 -1
  678. package/dist/cli-tui/feedback-view.js +0 -271
  679. package/dist/cli-tui/feedback-view.js.map +0 -1
  680. package/dist/cli-tui/footer.d.ts +0 -56
  681. package/dist/cli-tui/footer.d.ts.map +0 -1
  682. package/dist/cli-tui/footer.js +0 -228
  683. package/dist/cli-tui/footer.js.map +0 -1
  684. package/dist/cli-tui/git/commit-modal.d.ts +0 -14
  685. package/dist/cli-tui/git/commit-modal.d.ts.map +0 -1
  686. package/dist/cli-tui/git/commit-modal.js +0 -56
  687. package/dist/cli-tui/git/commit-modal.js.map +0 -1
  688. package/dist/cli-tui/git/git-preview-modal.d.ts +0 -40
  689. package/dist/cli-tui/git/git-preview-modal.d.ts.map +0 -1
  690. package/dist/cli-tui/git/git-preview-modal.js +0 -123
  691. package/dist/cli-tui/git/git-preview-modal.js.map +0 -1
  692. package/dist/cli-tui/git/git-view.d.ts +0 -65
  693. package/dist/cli-tui/git/git-view.d.ts.map +0 -1
  694. package/dist/cli-tui/git/git-view.js +0 -529
  695. package/dist/cli-tui/git/git-view.js.map +0 -1
  696. package/dist/cli-tui/history/history-config.d.ts +0 -7
  697. package/dist/cli-tui/history/history-config.d.ts.map +0 -1
  698. package/dist/cli-tui/history/history-config.js +0 -49
  699. package/dist/cli-tui/history/history-config.js.map +0 -1
  700. package/dist/cli-tui/history/prompt-history.d.ts +0 -33
  701. package/dist/cli-tui/history/prompt-history.d.ts.map +0 -1
  702. package/dist/cli-tui/history/prompt-history.js +0 -185
  703. package/dist/cli-tui/history/prompt-history.js.map +0 -1
  704. package/dist/cli-tui/history/tool-history.d.ts +0 -50
  705. package/dist/cli-tui/history/tool-history.d.ts.map +0 -1
  706. package/dist/cli-tui/history/tool-history.js +0 -253
  707. package/dist/cli-tui/history/tool-history.js.map +0 -1
  708. package/dist/cli-tui/hook-message.d.ts +0 -13
  709. package/dist/cli-tui/hook-message.d.ts.map +0 -1
  710. package/dist/cli-tui/hook-message.js +0 -56
  711. package/dist/cli-tui/hook-message.js.map +0 -1
  712. package/dist/cli-tui/hooks/hook-input-modal.d.ts +0 -22
  713. package/dist/cli-tui/hooks/hook-input-modal.d.ts.map +0 -1
  714. package/dist/cli-tui/hooks/hook-input-modal.js +0 -63
  715. package/dist/cli-tui/hooks/hook-input-modal.js.map +0 -1
  716. package/dist/cli-tui/hotkeys-view.d.ts +0 -13
  717. package/dist/cli-tui/hotkeys-view.d.ts.map +0 -1
  718. package/dist/cli-tui/hotkeys-view.js +0 -96
  719. package/dist/cli-tui/hotkeys-view.js.map +0 -1
  720. package/dist/cli-tui/import-view.d.ts +0 -28
  721. package/dist/cli-tui/import-view.d.ts.map +0 -1
  722. package/dist/cli-tui/import-view.js +0 -184
  723. package/dist/cli-tui/import-view.js.map +0 -1
  724. package/dist/cli-tui/info-view.d.ts +0 -18
  725. package/dist/cli-tui/info-view.d.ts.map +0 -1
  726. package/dist/cli-tui/info-view.js +0 -107
  727. package/dist/cli-tui/info-view.js.map +0 -1
  728. package/dist/cli-tui/instruction-panel.d.ts +0 -11
  729. package/dist/cli-tui/instruction-panel.d.ts.map +0 -1
  730. package/dist/cli-tui/instruction-panel.js +0 -86
  731. package/dist/cli-tui/instruction-panel.js.map +0 -1
  732. package/dist/cli-tui/interrupt-controller.d.ts +0 -78
  733. package/dist/cli-tui/interrupt-controller.d.ts.map +0 -1
  734. package/dist/cli-tui/interrupt-controller.js +0 -104
  735. package/dist/cli-tui/interrupt-controller.js.map +0 -1
  736. package/dist/cli-tui/keybindings-config.d.ts +0 -27
  737. package/dist/cli-tui/keybindings-config.d.ts.map +0 -1
  738. package/dist/cli-tui/keybindings-config.js +0 -372
  739. package/dist/cli-tui/keybindings-config.js.map +0 -1
  740. package/dist/cli-tui/keybindings-watcher.d.ts +0 -8
  741. package/dist/cli-tui/keybindings-watcher.d.ts.map +0 -1
  742. package/dist/cli-tui/keybindings-watcher.js +0 -56
  743. package/dist/cli-tui/keybindings-watcher.js.map +0 -1
  744. package/dist/cli-tui/keybindings.d.ts +0 -13
  745. package/dist/cli-tui/keybindings.d.ts.map +0 -1
  746. package/dist/cli-tui/keybindings.js +0 -223
  747. package/dist/cli-tui/keybindings.js.map +0 -1
  748. package/dist/cli-tui/loader/loader-stage-manager.d.ts +0 -43
  749. package/dist/cli-tui/loader/loader-stage-manager.d.ts.map +0 -1
  750. package/dist/cli-tui/loader/loader-stage-manager.js +0 -241
  751. package/dist/cli-tui/loader/loader-stage-manager.js.map +0 -1
  752. package/dist/cli-tui/loader/loader-stage-telemetry.d.ts +0 -14
  753. package/dist/cli-tui/loader/loader-stage-telemetry.d.ts.map +0 -1
  754. package/dist/cli-tui/loader/loader-stage-telemetry.js +0 -34
  755. package/dist/cli-tui/loader/loader-stage-telemetry.js.map +0 -1
  756. package/dist/cli-tui/loader/loader-view.d.ts +0 -41
  757. package/dist/cli-tui/loader/loader-view.d.ts.map +0 -1
  758. package/dist/cli-tui/loader/loader-view.js +0 -162
  759. package/dist/cli-tui/loader/loader-view.js.map +0 -1
  760. package/dist/cli-tui/lsp-view.d.ts +0 -21
  761. package/dist/cli-tui/lsp-view.d.ts.map +0 -1
  762. package/dist/cli-tui/lsp-view.js +0 -183
  763. package/dist/cli-tui/lsp-view.js.map +0 -1
  764. package/dist/cli-tui/mermaid-renderer.d.ts +0 -2
  765. package/dist/cli-tui/mermaid-renderer.d.ts.map +0 -1
  766. package/dist/cli-tui/mermaid-renderer.js +0 -391
  767. package/dist/cli-tui/mermaid-renderer.js.map +0 -1
  768. package/dist/cli-tui/message-view.d.ts +0 -27
  769. package/dist/cli-tui/message-view.d.ts.map +0 -1
  770. package/dist/cli-tui/message-view.js +0 -169
  771. package/dist/cli-tui/message-view.js.map +0 -1
  772. package/dist/cli-tui/modal-manager.d.ts +0 -77
  773. package/dist/cli-tui/modal-manager.d.ts.map +0 -1
  774. package/dist/cli-tui/modal-manager.js +0 -131
  775. package/dist/cli-tui/modal-manager.js.map +0 -1
  776. package/dist/cli-tui/notification-view.d.ts +0 -16
  777. package/dist/cli-tui/notification-view.d.ts.map +0 -1
  778. package/dist/cli-tui/notification-view.js +0 -53
  779. package/dist/cli-tui/notification-view.js.map +0 -1
  780. package/dist/cli-tui/oauth/index.d.ts +0 -2
  781. package/dist/cli-tui/oauth/index.d.ts.map +0 -1
  782. package/dist/cli-tui/oauth/index.js +0 -2
  783. package/dist/cli-tui/oauth/index.js.map +0 -1
  784. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +0 -65
  785. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +0 -1
  786. package/dist/cli-tui/oauth/oauth-flow-controller.js +0 -400
  787. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +0 -1
  788. package/dist/cli-tui/ollama-view.d.ts +0 -38
  789. package/dist/cli-tui/ollama-view.d.ts.map +0 -1
  790. package/dist/cli-tui/ollama-view.js +0 -395
  791. package/dist/cli-tui/ollama-view.js.map +0 -1
  792. package/dist/cli-tui/paste/index.d.ts +0 -2
  793. package/dist/cli-tui/paste/index.d.ts.map +0 -1
  794. package/dist/cli-tui/paste/index.js +0 -2
  795. package/dist/cli-tui/paste/index.js.map +0 -1
  796. package/dist/cli-tui/paste/paste-handler.d.ts +0 -54
  797. package/dist/cli-tui/paste/paste-handler.d.ts.map +0 -1
  798. package/dist/cli-tui/paste/paste-handler.js +0 -128
  799. package/dist/cli-tui/paste/paste-handler.js.map +0 -1
  800. package/dist/cli-tui/plan/plan-controller.d.ts +0 -28
  801. package/dist/cli-tui/plan/plan-controller.d.ts.map +0 -1
  802. package/dist/cli-tui/plan/plan-controller.js +0 -66
  803. package/dist/cli-tui/plan/plan-controller.js.map +0 -1
  804. package/dist/cli-tui/plan-panel-modal.d.ts +0 -28
  805. package/dist/cli-tui/plan-panel-modal.d.ts.map +0 -1
  806. package/dist/cli-tui/plan-panel-modal.js +0 -193
  807. package/dist/cli-tui/plan-panel-modal.js.map +0 -1
  808. package/dist/cli-tui/plan-view.d.ts +0 -57
  809. package/dist/cli-tui/plan-view.d.ts.map +0 -1
  810. package/dist/cli-tui/plan-view.js +0 -404
  811. package/dist/cli-tui/plan-view.js.map +0 -1
  812. package/dist/cli-tui/queue/follow-up-shortcut.d.ts +0 -6
  813. package/dist/cli-tui/queue/follow-up-shortcut.d.ts.map +0 -1
  814. package/dist/cli-tui/queue/follow-up-shortcut.js +0 -12
  815. package/dist/cli-tui/queue/follow-up-shortcut.js.map +0 -1
  816. package/dist/cli-tui/queue/index.d.ts +0 -3
  817. package/dist/cli-tui/queue/index.d.ts.map +0 -1
  818. package/dist/cli-tui/queue/index.js +0 -3
  819. package/dist/cli-tui/queue/index.js.map +0 -1
  820. package/dist/cli-tui/queue/queue-controller.d.ts +0 -109
  821. package/dist/cli-tui/queue/queue-controller.d.ts.map +0 -1
  822. package/dist/cli-tui/queue/queue-controller.js +0 -327
  823. package/dist/cli-tui/queue/queue-controller.js.map +0 -1
  824. package/dist/cli-tui/queue/queue-panel-controller.d.ts +0 -34
  825. package/dist/cli-tui/queue/queue-panel-controller.d.ts.map +0 -1
  826. package/dist/cli-tui/queue/queue-panel-controller.js +0 -163
  827. package/dist/cli-tui/queue/queue-panel-controller.js.map +0 -1
  828. package/dist/cli-tui/queue/queued-follow-up-edit-binding.d.ts +0 -7
  829. package/dist/cli-tui/queue/queued-follow-up-edit-binding.d.ts.map +0 -1
  830. package/dist/cli-tui/queue/queued-follow-up-edit-binding.js +0 -14
  831. package/dist/cli-tui/queue/queued-follow-up-edit-binding.js.map +0 -1
  832. package/dist/cli-tui/queue-panel-modal.d.ts +0 -26
  833. package/dist/cli-tui/queue-panel-modal.d.ts.map +0 -1
  834. package/dist/cli-tui/queue-panel-modal.js +0 -159
  835. package/dist/cli-tui/queue-panel-modal.js.map +0 -1
  836. package/dist/cli-tui/run/run-command-view.d.ts +0 -17
  837. package/dist/cli-tui/run/run-command-view.d.ts.map +0 -1
  838. package/dist/cli-tui/run/run-command-view.js +0 -62
  839. package/dist/cli-tui/run/run-command-view.js.map +0 -1
  840. package/dist/cli-tui/run/run-controller.d.ts +0 -24
  841. package/dist/cli-tui/run/run-controller.d.ts.map +0 -1
  842. package/dist/cli-tui/run/run-controller.js +0 -38
  843. package/dist/cli-tui/run/run-controller.js.map +0 -1
  844. package/dist/cli-tui/run/run-shell-command.d.ts +0 -13
  845. package/dist/cli-tui/run/run-shell-command.d.ts.map +0 -1
  846. package/dist/cli-tui/run/run-shell-command.js +0 -51
  847. package/dist/cli-tui/run/run-shell-command.js.map +0 -1
  848. package/dist/cli-tui/run/streaming-shell-command.d.ts +0 -19
  849. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +0 -1
  850. package/dist/cli-tui/run/streaming-shell-command.js +0 -107
  851. package/dist/cli-tui/run/streaming-shell-command.js.map +0 -1
  852. package/dist/cli-tui/search/file-search-view.d.ts +0 -22
  853. package/dist/cli-tui/search/file-search-view.d.ts.map +0 -1
  854. package/dist/cli-tui/search/file-search-view.js +0 -68
  855. package/dist/cli-tui/search/file-search-view.js.map +0 -1
  856. package/dist/cli-tui/search/file-search.d.ts +0 -13
  857. package/dist/cli-tui/search/file-search.d.ts.map +0 -1
  858. package/dist/cli-tui/search/file-search.js +0 -52
  859. package/dist/cli-tui/search/file-search.js.map +0 -1
  860. package/dist/cli-tui/security-status.d.ts +0 -83
  861. package/dist/cli-tui/security-status.d.ts.map +0 -1
  862. package/dist/cli-tui/security-status.js +0 -214
  863. package/dist/cli-tui/security-status.js.map +0 -1
  864. package/dist/cli-tui/selectors/base-selector.d.ts +0 -27
  865. package/dist/cli-tui/selectors/base-selector.d.ts.map +0 -1
  866. package/dist/cli-tui/selectors/base-selector.js +0 -47
  867. package/dist/cli-tui/selectors/base-selector.js.map +0 -1
  868. package/dist/cli-tui/selectors/branch-summary-modal.d.ts +0 -18
  869. package/dist/cli-tui/selectors/branch-summary-modal.d.ts.map +0 -1
  870. package/dist/cli-tui/selectors/branch-summary-modal.js +0 -24
  871. package/dist/cli-tui/selectors/branch-summary-modal.js.map +0 -1
  872. package/dist/cli-tui/selectors/model-selector-view.d.ts +0 -22
  873. package/dist/cli-tui/selectors/model-selector-view.d.ts.map +0 -1
  874. package/dist/cli-tui/selectors/model-selector-view.js +0 -31
  875. package/dist/cli-tui/selectors/model-selector-view.js.map +0 -1
  876. package/dist/cli-tui/selectors/model-selector.d.ts +0 -30
  877. package/dist/cli-tui/selectors/model-selector.d.ts.map +0 -1
  878. package/dist/cli-tui/selectors/model-selector.js +0 -218
  879. package/dist/cli-tui/selectors/model-selector.js.map +0 -1
  880. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +0 -20
  881. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +0 -1
  882. package/dist/cli-tui/selectors/oauth-selector-view.js +0 -28
  883. package/dist/cli-tui/selectors/oauth-selector-view.js.map +0 -1
  884. package/dist/cli-tui/selectors/oauth-selector.d.ts +0 -19
  885. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +0 -1
  886. package/dist/cli-tui/selectors/oauth-selector.js +0 -120
  887. package/dist/cli-tui/selectors/oauth-selector.js.map +0 -1
  888. package/dist/cli-tui/selectors/queue-mode-selector-view.d.ts +0 -19
  889. package/dist/cli-tui/selectors/queue-mode-selector-view.d.ts.map +0 -1
  890. package/dist/cli-tui/selectors/queue-mode-selector-view.js +0 -29
  891. package/dist/cli-tui/selectors/queue-mode-selector-view.js.map +0 -1
  892. package/dist/cli-tui/selectors/queue-mode-selector.d.ts +0 -5
  893. package/dist/cli-tui/selectors/queue-mode-selector.d.ts.map +0 -1
  894. package/dist/cli-tui/selectors/queue-mode-selector.js +0 -34
  895. package/dist/cli-tui/selectors/queue-mode-selector.js.map +0 -1
  896. package/dist/cli-tui/selectors/report-selector-view.d.ts +0 -17
  897. package/dist/cli-tui/selectors/report-selector-view.d.ts.map +0 -1
  898. package/dist/cli-tui/selectors/report-selector-view.js +0 -29
  899. package/dist/cli-tui/selectors/report-selector-view.js.map +0 -1
  900. package/dist/cli-tui/selectors/report-selector.d.ts +0 -7
  901. package/dist/cli-tui/selectors/report-selector.d.ts.map +0 -1
  902. package/dist/cli-tui/selectors/report-selector.js +0 -31
  903. package/dist/cli-tui/selectors/report-selector.js.map +0 -1
  904. package/dist/cli-tui/selectors/theme-selector-view.d.ts +0 -19
  905. package/dist/cli-tui/selectors/theme-selector-view.d.ts.map +0 -1
  906. package/dist/cli-tui/selectors/theme-selector-view.js +0 -41
  907. package/dist/cli-tui/selectors/theme-selector-view.js.map +0 -1
  908. package/dist/cli-tui/selectors/theme-selector.d.ts +0 -14
  909. package/dist/cli-tui/selectors/theme-selector.d.ts.map +0 -1
  910. package/dist/cli-tui/selectors/theme-selector.js +0 -46
  911. package/dist/cli-tui/selectors/theme-selector.js.map +0 -1
  912. package/dist/cli-tui/selectors/thinking-selector-view.d.ts +0 -20
  913. package/dist/cli-tui/selectors/thinking-selector-view.d.ts.map +0 -1
  914. package/dist/cli-tui/selectors/thinking-selector-view.js +0 -31
  915. package/dist/cli-tui/selectors/thinking-selector-view.js.map +0 -1
  916. package/dist/cli-tui/selectors/thinking-selector.d.ts +0 -9
  917. package/dist/cli-tui/selectors/thinking-selector.d.ts.map +0 -1
  918. package/dist/cli-tui/selectors/thinking-selector.js +0 -47
  919. package/dist/cli-tui/selectors/thinking-selector.js.map +0 -1
  920. package/dist/cli-tui/selectors/tree-selector-view.d.ts +0 -32
  921. package/dist/cli-tui/selectors/tree-selector-view.d.ts.map +0 -1
  922. package/dist/cli-tui/selectors/tree-selector-view.js +0 -407
  923. package/dist/cli-tui/selectors/tree-selector-view.js.map +0 -1
  924. package/dist/cli-tui/selectors/tree-selector.d.ts +0 -27
  925. package/dist/cli-tui/selectors/tree-selector.d.ts.map +0 -1
  926. package/dist/cli-tui/selectors/tree-selector.js +0 -194
  927. package/dist/cli-tui/selectors/tree-selector.js.map +0 -1
  928. package/dist/cli-tui/selectors/user-message-selector-view.d.ts +0 -25
  929. package/dist/cli-tui/selectors/user-message-selector-view.d.ts.map +0 -1
  930. package/dist/cli-tui/selectors/user-message-selector-view.js +0 -101
  931. package/dist/cli-tui/selectors/user-message-selector-view.js.map +0 -1
  932. package/dist/cli-tui/selectors/user-message-selector.d.ts +0 -30
  933. package/dist/cli-tui/selectors/user-message-selector.d.ts.map +0 -1
  934. package/dist/cli-tui/selectors/user-message-selector.js +0 -114
  935. package/dist/cli-tui/selectors/user-message-selector.js.map +0 -1
  936. package/dist/cli-tui/session/branch-controller.d.ts +0 -65
  937. package/dist/cli-tui/session/branch-controller.d.ts.map +0 -1
  938. package/dist/cli-tui/session/branch-controller.js +0 -125
  939. package/dist/cli-tui/session/branch-controller.js.map +0 -1
  940. package/dist/cli-tui/session/conversation-compactor.d.ts +0 -64
  941. package/dist/cli-tui/session/conversation-compactor.d.ts.map +0 -1
  942. package/dist/cli-tui/session/conversation-compactor.js +0 -77
  943. package/dist/cli-tui/session/conversation-compactor.js.map +0 -1
  944. package/dist/cli-tui/session/session-context.d.ts +0 -59
  945. package/dist/cli-tui/session/session-context.d.ts.map +0 -1
  946. package/dist/cli-tui/session/session-context.js +0 -79
  947. package/dist/cli-tui/session/session-context.js.map +0 -1
  948. package/dist/cli-tui/session/session-data-provider.d.ts +0 -23
  949. package/dist/cli-tui/session/session-data-provider.d.ts.map +0 -1
  950. package/dist/cli-tui/session/session-data-provider.js +0 -22
  951. package/dist/cli-tui/session/session-data-provider.js.map +0 -1
  952. package/dist/cli-tui/session/session-list.d.ts +0 -18
  953. package/dist/cli-tui/session/session-list.d.ts.map +0 -1
  954. package/dist/cli-tui/session/session-list.js +0 -103
  955. package/dist/cli-tui/session/session-list.js.map +0 -1
  956. package/dist/cli-tui/session/session-selector.d.ts +0 -12
  957. package/dist/cli-tui/session/session-selector.d.ts.map +0 -1
  958. package/dist/cli-tui/session/session-selector.js +0 -37
  959. package/dist/cli-tui/session/session-selector.js.map +0 -1
  960. package/dist/cli-tui/session/session-summary-controller.d.ts +0 -24
  961. package/dist/cli-tui/session/session-summary-controller.d.ts.map +0 -1
  962. package/dist/cli-tui/session/session-summary-controller.js +0 -96
  963. package/dist/cli-tui/session/session-summary-controller.js.map +0 -1
  964. package/dist/cli-tui/session/session-switcher-view.d.ts +0 -20
  965. package/dist/cli-tui/session/session-switcher-view.d.ts.map +0 -1
  966. package/dist/cli-tui/session/session-switcher-view.js +0 -43
  967. package/dist/cli-tui/session/session-switcher-view.js.map +0 -1
  968. package/dist/cli-tui/session/session-switcher.d.ts +0 -38
  969. package/dist/cli-tui/session/session-switcher.d.ts.map +0 -1
  970. package/dist/cli-tui/session/session-switcher.js +0 -204
  971. package/dist/cli-tui/session/session-switcher.js.map +0 -1
  972. package/dist/cli-tui/session/session-view.d.ts +0 -46
  973. package/dist/cli-tui/session/session-view.d.ts.map +0 -1
  974. package/dist/cli-tui/session/session-view.js +0 -311
  975. package/dist/cli-tui/session/session-view.js.map +0 -1
  976. package/dist/cli-tui/slash/index.d.ts +0 -2
  977. package/dist/cli-tui/slash/index.d.ts.map +0 -1
  978. package/dist/cli-tui/slash/index.js +0 -2
  979. package/dist/cli-tui/slash/index.js.map +0 -1
  980. package/dist/cli-tui/slash/slash-command-matcher.d.ts +0 -55
  981. package/dist/cli-tui/slash/slash-command-matcher.d.ts.map +0 -1
  982. package/dist/cli-tui/slash/slash-command-matcher.js +0 -113
  983. package/dist/cli-tui/slash/slash-command-matcher.js.map +0 -1
  984. package/dist/cli-tui/smart-autocomplete-provider.d.ts +0 -5
  985. package/dist/cli-tui/smart-autocomplete-provider.d.ts.map +0 -1
  986. package/dist/cli-tui/smart-autocomplete-provider.js +0 -44
  987. package/dist/cli-tui/smart-autocomplete-provider.js.map +0 -1
  988. package/dist/cli-tui/startup-announcements.d.ts +0 -15
  989. package/dist/cli-tui/startup-announcements.d.ts.map +0 -1
  990. package/dist/cli-tui/startup-announcements.js +0 -75
  991. package/dist/cli-tui/startup-announcements.js.map +0 -1
  992. package/dist/cli-tui/status/cost-view.d.ts +0 -27
  993. package/dist/cli-tui/status/cost-view.d.ts.map +0 -1
  994. package/dist/cli-tui/status/cost-view.js +0 -212
  995. package/dist/cli-tui/status/cost-view.js.map +0 -1
  996. package/dist/cli-tui/status/diagnostics-templates.d.ts +0 -34
  997. package/dist/cli-tui/status/diagnostics-templates.d.ts.map +0 -1
  998. package/dist/cli-tui/status/diagnostics-templates.js +0 -167
  999. package/dist/cli-tui/status/diagnostics-templates.js.map +0 -1
  1000. package/dist/cli-tui/status/diagnostics-view.d.ts +0 -48
  1001. package/dist/cli-tui/status/diagnostics-view.d.ts.map +0 -1
  1002. package/dist/cli-tui/status/diagnostics-view.js +0 -249
  1003. package/dist/cli-tui/status/diagnostics-view.js.map +0 -1
  1004. package/dist/cli-tui/status/diagnostics.d.ts +0 -39
  1005. package/dist/cli-tui/status/diagnostics.d.ts.map +0 -1
  1006. package/dist/cli-tui/status/diagnostics.js +0 -286
  1007. package/dist/cli-tui/status/diagnostics.js.map +0 -1
  1008. package/dist/cli-tui/status/health-snapshot.d.ts +0 -17
  1009. package/dist/cli-tui/status/health-snapshot.d.ts.map +0 -1
  1010. package/dist/cli-tui/status/health-snapshot.js +0 -28
  1011. package/dist/cli-tui/status/health-snapshot.js.map +0 -1
  1012. package/dist/cli-tui/status/quota-view.d.ts +0 -37
  1013. package/dist/cli-tui/status/quota-view.d.ts.map +0 -1
  1014. package/dist/cli-tui/status/quota-view.js +0 -309
  1015. package/dist/cli-tui/status/quota-view.js.map +0 -1
  1016. package/dist/cli-tui/status/telemetry-view.d.ts +0 -23
  1017. package/dist/cli-tui/status/telemetry-view.d.ts.map +0 -1
  1018. package/dist/cli-tui/status/telemetry-view.js +0 -77
  1019. package/dist/cli-tui/status/telemetry-view.js.map +0 -1
  1020. package/dist/cli-tui/status/training-view.d.ts +0 -23
  1021. package/dist/cli-tui/status/training-view.d.ts.map +0 -1
  1022. package/dist/cli-tui/status/training-view.js +0 -71
  1023. package/dist/cli-tui/status/training-view.js.map +0 -1
  1024. package/dist/cli-tui/streaming-view.d.ts +0 -43
  1025. package/dist/cli-tui/streaming-view.d.ts.map +0 -1
  1026. package/dist/cli-tui/streaming-view.js +0 -176
  1027. package/dist/cli-tui/streaming-view.js.map +0 -1
  1028. package/dist/cli-tui/terminal/index.d.ts +0 -2
  1029. package/dist/cli-tui/terminal/index.d.ts.map +0 -1
  1030. package/dist/cli-tui/terminal/index.js +0 -2
  1031. package/dist/cli-tui/terminal/index.js.map +0 -1
  1032. package/dist/cli-tui/terminal/terminal-utils.d.ts +0 -44
  1033. package/dist/cli-tui/terminal/terminal-utils.d.ts.map +0 -1
  1034. package/dist/cli-tui/terminal/terminal-utils.js +0 -145
  1035. package/dist/cli-tui/terminal/terminal-utils.js.map +0 -1
  1036. package/dist/cli-tui/tips/tip-scheduler.d.ts +0 -19
  1037. package/dist/cli-tui/tips/tip-scheduler.d.ts.map +0 -1
  1038. package/dist/cli-tui/tips/tip-scheduler.js +0 -135
  1039. package/dist/cli-tui/tips/tip-scheduler.js.map +0 -1
  1040. package/dist/cli-tui/tool-execution.d.ts +0 -76
  1041. package/dist/cli-tui/tool-execution.d.ts.map +0 -1
  1042. package/dist/cli-tui/tool-execution.js +0 -217
  1043. package/dist/cli-tui/tool-execution.js.map +0 -1
  1044. package/dist/cli-tui/tool-output-view.d.ts +0 -22
  1045. package/dist/cli-tui/tool-output-view.d.ts.map +0 -1
  1046. package/dist/cli-tui/tool-output-view.js +0 -71
  1047. package/dist/cli-tui/tool-output-view.js.map +0 -1
  1048. package/dist/cli-tui/tool-renderers/index.d.ts +0 -4
  1049. package/dist/cli-tui/tool-renderers/index.d.ts.map +0 -1
  1050. package/dist/cli-tui/tool-renderers/index.js +0 -19
  1051. package/dist/cli-tui/tool-renderers/index.js.map +0 -1
  1052. package/dist/cli-tui/tool-renderers/render-bash.d.ts +0 -6
  1053. package/dist/cli-tui/tool-renderers/render-bash.d.ts.map +0 -1
  1054. package/dist/cli-tui/tool-renderers/render-bash.js +0 -90
  1055. package/dist/cli-tui/tool-renderers/render-bash.js.map +0 -1
  1056. package/dist/cli-tui/tool-renderers/render-batch.d.ts +0 -12
  1057. package/dist/cli-tui/tool-renderers/render-batch.d.ts.map +0 -1
  1058. package/dist/cli-tui/tool-renderers/render-batch.js +0 -133
  1059. package/dist/cli-tui/tool-renderers/render-batch.js.map +0 -1
  1060. package/dist/cli-tui/tool-renderers/render-edit.d.ts +0 -6
  1061. package/dist/cli-tui/tool-renderers/render-edit.d.ts.map +0 -1
  1062. package/dist/cli-tui/tool-renderers/render-edit.js +0 -125
  1063. package/dist/cli-tui/tool-renderers/render-edit.js.map +0 -1
  1064. package/dist/cli-tui/tool-renderers/render-generic.d.ts +0 -6
  1065. package/dist/cli-tui/tool-renderers/render-generic.d.ts.map +0 -1
  1066. package/dist/cli-tui/tool-renderers/render-generic.js +0 -66
  1067. package/dist/cli-tui/tool-renderers/render-generic.js.map +0 -1
  1068. package/dist/cli-tui/tool-renderers/render-read.d.ts +0 -9
  1069. package/dist/cli-tui/tool-renderers/render-read.d.ts.map +0 -1
  1070. package/dist/cli-tui/tool-renderers/render-read.js +0 -108
  1071. package/dist/cli-tui/tool-renderers/render-read.js.map +0 -1
  1072. package/dist/cli-tui/tool-renderers/render-style.d.ts +0 -21
  1073. package/dist/cli-tui/tool-renderers/render-style.d.ts.map +0 -1
  1074. package/dist/cli-tui/tool-renderers/render-style.js +0 -51
  1075. package/dist/cli-tui/tool-renderers/render-style.js.map +0 -1
  1076. package/dist/cli-tui/tool-renderers/render-write.d.ts +0 -5
  1077. package/dist/cli-tui/tool-renderers/render-write.d.ts.map +0 -1
  1078. package/dist/cli-tui/tool-renderers/render-write.js +0 -60
  1079. package/dist/cli-tui/tool-renderers/render-write.js.map +0 -1
  1080. package/dist/cli-tui/tool-renderers/types.d.ts +0 -20
  1081. package/dist/cli-tui/tool-renderers/types.d.ts.map +0 -1
  1082. package/dist/cli-tui/tool-renderers/types.js +0 -2
  1083. package/dist/cli-tui/tool-renderers/types.js.map +0 -1
  1084. package/dist/cli-tui/tool-retry/tool-retry-controller.d.ts +0 -29
  1085. package/dist/cli-tui/tool-retry/tool-retry-controller.d.ts.map +0 -1
  1086. package/dist/cli-tui/tool-retry/tool-retry-controller.js +0 -110
  1087. package/dist/cli-tui/tool-retry/tool-retry-controller.js.map +0 -1
  1088. package/dist/cli-tui/tool-retry/tool-retry-modal.d.ts +0 -27
  1089. package/dist/cli-tui/tool-retry/tool-retry-modal.d.ts.map +0 -1
  1090. package/dist/cli-tui/tool-retry/tool-retry-modal.js +0 -118
  1091. package/dist/cli-tui/tool-retry/tool-retry-modal.js.map +0 -1
  1092. package/dist/cli-tui/tool-status-view.d.ts +0 -32
  1093. package/dist/cli-tui/tool-status-view.d.ts.map +0 -1
  1094. package/dist/cli-tui/tool-status-view.js +0 -86
  1095. package/dist/cli-tui/tool-status-view.js.map +0 -1
  1096. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +0 -59
  1097. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +0 -1
  1098. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +0 -129
  1099. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +0 -1
  1100. package/dist/cli-tui/tui-renderer/approval-setup.d.ts +0 -13
  1101. package/dist/cli-tui/tui-renderer/approval-setup.d.ts.map +0 -1
  1102. package/dist/cli-tui/tui-renderer/approval-setup.js +0 -5
  1103. package/dist/cli-tui/tui-renderer/approval-setup.js.map +0 -1
  1104. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts +0 -54
  1105. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts.map +0 -1
  1106. package/dist/cli-tui/tui-renderer/attachment-controller.js +0 -160
  1107. package/dist/cli-tui/tui-renderer/attachment-controller.js.map +0 -1
  1108. package/dist/cli-tui/tui-renderer/background-tasks-setup.d.ts +0 -9
  1109. package/dist/cli-tui/tui-renderer/background-tasks-setup.d.ts.map +0 -1
  1110. package/dist/cli-tui/tui-renderer/background-tasks-setup.js +0 -7
  1111. package/dist/cli-tui/tui-renderer/background-tasks-setup.js.map +0 -1
  1112. package/dist/cli-tui/tui-renderer/branch-controller.d.ts +0 -41
  1113. package/dist/cli-tui/tui-renderer/branch-controller.d.ts.map +0 -1
  1114. package/dist/cli-tui/tui-renderer/branch-controller.js +0 -102
  1115. package/dist/cli-tui/tui-renderer/branch-controller.js.map +0 -1
  1116. package/dist/cli-tui/tui-renderer/clear-controller.d.ts +0 -75
  1117. package/dist/cli-tui/tui-renderer/clear-controller.d.ts.map +0 -1
  1118. package/dist/cli-tui/tui-renderer/clear-controller.js +0 -75
  1119. package/dist/cli-tui/tui-renderer/clear-controller.js.map +0 -1
  1120. package/dist/cli-tui/tui-renderer/client-tools-setup.d.ts +0 -14
  1121. package/dist/cli-tui/tui-renderer/client-tools-setup.d.ts.map +0 -1
  1122. package/dist/cli-tui/tui-renderer/client-tools-setup.js +0 -5
  1123. package/dist/cli-tui/tui-renderer/client-tools-setup.js.map +0 -1
  1124. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +0 -111
  1125. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +0 -1
  1126. package/dist/cli-tui/tui-renderer/command-registry-options.js +0 -163
  1127. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +0 -1
  1128. package/dist/cli-tui/tui-renderer/command-registry.d.ts +0 -16
  1129. package/dist/cli-tui/tui-renderer/command-registry.d.ts.map +0 -1
  1130. package/dist/cli-tui/tui-renderer/command-registry.js +0 -23
  1131. package/dist/cli-tui/tui-renderer/command-registry.js.map +0 -1
  1132. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +0 -29
  1133. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +0 -1
  1134. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +0 -108
  1135. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +0 -1
  1136. package/dist/cli-tui/tui-renderer/compaction-controller.d.ts +0 -100
  1137. package/dist/cli-tui/tui-renderer/compaction-controller.d.ts.map +0 -1
  1138. package/dist/cli-tui/tui-renderer/compaction-controller.js +0 -160
  1139. package/dist/cli-tui/tui-renderer/compaction-controller.js.map +0 -1
  1140. package/dist/cli-tui/tui-renderer/custom-commands-controller.d.ts +0 -42
  1141. package/dist/cli-tui/tui-renderer/custom-commands-controller.d.ts.map +0 -1
  1142. package/dist/cli-tui/tui-renderer/custom-commands-controller.js +0 -106
  1143. package/dist/cli-tui/tui-renderer/custom-commands-controller.js.map +0 -1
  1144. package/dist/cli-tui/tui-renderer/delegating-command-handlers.d.ts +0 -37
  1145. package/dist/cli-tui/tui-renderer/delegating-command-handlers.d.ts.map +0 -1
  1146. package/dist/cli-tui/tui-renderer/delegating-command-handlers.js +0 -139
  1147. package/dist/cli-tui/tui-renderer/delegating-command-handlers.js.map +0 -1
  1148. package/dist/cli-tui/tui-renderer/editor-bindings.d.ts +0 -21
  1149. package/dist/cli-tui/tui-renderer/editor-bindings.d.ts.map +0 -1
  1150. package/dist/cli-tui/tui-renderer/editor-bindings.js +0 -76
  1151. package/dist/cli-tui/tui-renderer/editor-bindings.js.map +0 -1
  1152. package/dist/cli-tui/tui-renderer/footer-hints-controller.d.ts +0 -90
  1153. package/dist/cli-tui/tui-renderer/footer-hints-controller.d.ts.map +0 -1
  1154. package/dist/cli-tui/tui-renderer/footer-hints-controller.js +0 -152
  1155. package/dist/cli-tui/tui-renderer/footer-hints-controller.js.map +0 -1
  1156. package/dist/cli-tui/tui-renderer/history-controller.d.ts +0 -35
  1157. package/dist/cli-tui/tui-renderer/history-controller.d.ts.map +0 -1
  1158. package/dist/cli-tui/tui-renderer/history-controller.js +0 -153
  1159. package/dist/cli-tui/tui-renderer/history-controller.js.map +0 -1
  1160. package/dist/cli-tui/tui-renderer/hook-ui-controller.d.ts +0 -83
  1161. package/dist/cli-tui/tui-renderer/hook-ui-controller.d.ts.map +0 -1
  1162. package/dist/cli-tui/tui-renderer/hook-ui-controller.js +0 -309
  1163. package/dist/cli-tui/tui-renderer/hook-ui-controller.js.map +0 -1
  1164. package/dist/cli-tui/tui-renderer/initial-preferences.d.ts +0 -19
  1165. package/dist/cli-tui/tui-renderer/initial-preferences.d.ts.map +0 -1
  1166. package/dist/cli-tui/tui-renderer/initial-preferences.js +0 -54
  1167. package/dist/cli-tui/tui-renderer/initial-preferences.js.map +0 -1
  1168. package/dist/cli-tui/tui-renderer/input-controller.d.ts +0 -56
  1169. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +0 -1
  1170. package/dist/cli-tui/tui-renderer/input-controller.js +0 -104
  1171. package/dist/cli-tui/tui-renderer/input-controller.js.map +0 -1
  1172. package/dist/cli-tui/tui-renderer/interrupt-setup.d.ts +0 -19
  1173. package/dist/cli-tui/tui-renderer/interrupt-setup.d.ts.map +0 -1
  1174. package/dist/cli-tui/tui-renderer/interrupt-setup.js +0 -18
  1175. package/dist/cli-tui/tui-renderer/interrupt-setup.js.map +0 -1
  1176. package/dist/cli-tui/tui-renderer/loader-setup.d.ts +0 -14
  1177. package/dist/cli-tui/tui-renderer/loader-setup.d.ts.map +0 -1
  1178. package/dist/cli-tui/tui-renderer/loader-setup.js +0 -13
  1179. package/dist/cli-tui/tui-renderer/loader-setup.js.map +0 -1
  1180. package/dist/cli-tui/tui-renderer/mcp-events-setup.d.ts +0 -55
  1181. package/dist/cli-tui/tui-renderer/mcp-events-setup.d.ts.map +0 -1
  1182. package/dist/cli-tui/tui-renderer/mcp-events-setup.js +0 -143
  1183. package/dist/cli-tui/tui-renderer/mcp-events-setup.js.map +0 -1
  1184. package/dist/cli-tui/tui-renderer/misc-handlers.d.ts +0 -59
  1185. package/dist/cli-tui/tui-renderer/misc-handlers.d.ts.map +0 -1
  1186. package/dist/cli-tui/tui-renderer/misc-handlers.js +0 -143
  1187. package/dist/cli-tui/tui-renderer/misc-handlers.js.map +0 -1
  1188. package/dist/cli-tui/tui-renderer/oauth-setup.d.ts +0 -14
  1189. package/dist/cli-tui/tui-renderer/oauth-setup.d.ts.map +0 -1
  1190. package/dist/cli-tui/tui-renderer/oauth-setup.js +0 -26
  1191. package/dist/cli-tui/tui-renderer/oauth-setup.js.map +0 -1
  1192. package/dist/cli-tui/tui-renderer/plan-setup.d.ts +0 -19
  1193. package/dist/cli-tui/tui-renderer/plan-setup.d.ts.map +0 -1
  1194. package/dist/cli-tui/tui-renderer/plan-setup.js +0 -23
  1195. package/dist/cli-tui/tui-renderer/plan-setup.js.map +0 -1
  1196. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.d.ts +0 -21
  1197. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.d.ts.map +0 -1
  1198. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.js +0 -64
  1199. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.js.map +0 -1
  1200. package/dist/cli-tui/tui-renderer/queue-setup.d.ts +0 -18
  1201. package/dist/cli-tui/tui-renderer/queue-setup.d.ts.map +0 -1
  1202. package/dist/cli-tui/tui-renderer/queue-setup.js +0 -42
  1203. package/dist/cli-tui/tui-renderer/queue-setup.js.map +0 -1
  1204. package/dist/cli-tui/tui-renderer/quick-settings-controller.d.ts +0 -53
  1205. package/dist/cli-tui/tui-renderer/quick-settings-controller.d.ts.map +0 -1
  1206. package/dist/cli-tui/tui-renderer/quick-settings-controller.js +0 -100
  1207. package/dist/cli-tui/tui-renderer/quick-settings-controller.js.map +0 -1
  1208. package/dist/cli-tui/tui-renderer/session-setup.d.ts +0 -31
  1209. package/dist/cli-tui/tui-renderer/session-setup.d.ts.map +0 -1
  1210. package/dist/cli-tui/tui-renderer/session-setup.js +0 -45
  1211. package/dist/cli-tui/tui-renderer/session-setup.js.map +0 -1
  1212. package/dist/cli-tui/tui-renderer/session-state-controller.d.ts +0 -66
  1213. package/dist/cli-tui/tui-renderer/session-state-controller.d.ts.map +0 -1
  1214. package/dist/cli-tui/tui-renderer/session-state-controller.js +0 -139
  1215. package/dist/cli-tui/tui-renderer/session-state-controller.js.map +0 -1
  1216. package/dist/cli-tui/tui-renderer/skills-controller.d.ts +0 -73
  1217. package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +0 -1
  1218. package/dist/cli-tui/tui-renderer/skills-controller.js +0 -455
  1219. package/dist/cli-tui/tui-renderer/skills-controller.js.map +0 -1
  1220. package/dist/cli-tui/tui-renderer/slash-hint-controller.d.ts +0 -90
  1221. package/dist/cli-tui/tui-renderer/slash-hint-controller.d.ts.map +0 -1
  1222. package/dist/cli-tui/tui-renderer/slash-hint-controller.js +0 -131
  1223. package/dist/cli-tui/tui-renderer/slash-hint-controller.js.map +0 -1
  1224. package/dist/cli-tui/tui-renderer/tool-retry-setup.d.ts +0 -13
  1225. package/dist/cli-tui/tui-renderer/tool-retry-setup.d.ts.map +0 -1
  1226. package/dist/cli-tui/tui-renderer/tool-retry-setup.js +0 -5
  1227. package/dist/cli-tui/tui-renderer/tool-retry-setup.js.map +0 -1
  1228. package/dist/cli-tui/tui-renderer/tooling-views-setup.d.ts +0 -38
  1229. package/dist/cli-tui/tui-renderer/tooling-views-setup.d.ts.map +0 -1
  1230. package/dist/cli-tui/tui-renderer/tooling-views-setup.js +0 -48
  1231. package/dist/cli-tui/tui-renderer/tooling-views-setup.js.map +0 -1
  1232. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +0 -70
  1233. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts.map +0 -1
  1234. package/dist/cli-tui/tui-renderer/ui-state-controller.js +0 -184
  1235. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +0 -1
  1236. package/dist/cli-tui/tui-renderer/ui-state-setup.d.ts +0 -13
  1237. package/dist/cli-tui/tui-renderer/ui-state-setup.d.ts.map +0 -1
  1238. package/dist/cli-tui/tui-renderer/ui-state-setup.js +0 -11
  1239. package/dist/cli-tui/tui-renderer/ui-state-setup.js.map +0 -1
  1240. package/dist/cli-tui/tui-renderer/utility-views-setup.d.ts +0 -26
  1241. package/dist/cli-tui/tui-renderer/utility-views-setup.d.ts.map +0 -1
  1242. package/dist/cli-tui/tui-renderer/utility-views-setup.js +0 -23
  1243. package/dist/cli-tui/tui-renderer/utility-views-setup.js.map +0 -1
  1244. package/dist/cli-tui/tui-renderer/viewport-controller.d.ts +0 -33
  1245. package/dist/cli-tui/tui-renderer/viewport-controller.d.ts.map +0 -1
  1246. package/dist/cli-tui/tui-renderer/viewport-controller.js +0 -98
  1247. package/dist/cli-tui/tui-renderer/viewport-controller.js.map +0 -1
  1248. package/dist/cli-tui/tui-renderer.d.ts +0 -268
  1249. package/dist/cli-tui/tui-renderer.d.ts.map +0 -1
  1250. package/dist/cli-tui/tui-renderer.js +0 -2131
  1251. package/dist/cli-tui/tui-renderer.js.map +0 -1
  1252. package/dist/cli-tui/ui-state.d.ts.map +0 -1
  1253. package/dist/cli-tui/ui-state.js.map +0 -1
  1254. package/dist/cli-tui/update-view.d.ts +0 -16
  1255. package/dist/cli-tui/update-view.d.ts.map +0 -1
  1256. package/dist/cli-tui/update-view.js +0 -45
  1257. package/dist/cli-tui/update-view.js.map +0 -1
  1258. package/dist/cli-tui/user-message.d.ts +0 -17
  1259. package/dist/cli-tui/user-message.d.ts.map +0 -1
  1260. package/dist/cli-tui/user-message.js +0 -83
  1261. package/dist/cli-tui/user-message.js.map +0 -1
  1262. package/dist/cli-tui/utils/borders.d.ts +0 -131
  1263. package/dist/cli-tui/utils/borders.d.ts.map +0 -1
  1264. package/dist/cli-tui/utils/borders.js +0 -254
  1265. package/dist/cli-tui/utils/borders.js.map +0 -1
  1266. package/dist/cli-tui/utils/commands/command-palette-view.d.ts +0 -22
  1267. package/dist/cli-tui/utils/commands/command-palette-view.d.ts.map +0 -1
  1268. package/dist/cli-tui/utils/commands/command-palette-view.js +0 -31
  1269. package/dist/cli-tui/utils/commands/command-palette-view.js.map +0 -1
  1270. package/dist/cli-tui/utils/commands/command-palette.d.ts +0 -29
  1271. package/dist/cli-tui/utils/commands/command-palette.d.ts.map +0 -1
  1272. package/dist/cli-tui/utils/commands/command-palette.js +0 -213
  1273. package/dist/cli-tui/utils/commands/command-palette.js.map +0 -1
  1274. package/dist/cli-tui/utils/commands/command-registry-builder.d.ts +0 -8
  1275. package/dist/cli-tui/utils/commands/command-registry-builder.d.ts.map +0 -1
  1276. package/dist/cli-tui/utils/commands/command-registry-builder.js +0 -9
  1277. package/dist/cli-tui/utils/commands/command-registry-builder.js.map +0 -1
  1278. package/dist/cli-tui/utils/commands/review-prompt.d.ts +0 -10
  1279. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +0 -1
  1280. package/dist/cli-tui/utils/commands/review-prompt.js +0 -90
  1281. package/dist/cli-tui/utils/commands/review-prompt.js.map +0 -1
  1282. package/dist/cli-tui/utils/commands/slash-hint-bar.d.ts +0 -15
  1283. package/dist/cli-tui/utils/commands/slash-hint-bar.d.ts.map +0 -1
  1284. package/dist/cli-tui/utils/commands/slash-hint-bar.js +0 -106
  1285. package/dist/cli-tui/utils/commands/slash-hint-bar.js.map +0 -1
  1286. package/dist/cli-tui/utils/env-detect.d.ts +0 -11
  1287. package/dist/cli-tui/utils/env-detect.d.ts.map +0 -1
  1288. package/dist/cli-tui/utils/env-detect.js +0 -107
  1289. package/dist/cli-tui/utils/env-detect.js.map +0 -1
  1290. package/dist/cli-tui/utils/external-editor.d.ts +0 -7
  1291. package/dist/cli-tui/utils/external-editor.d.ts.map +0 -1
  1292. package/dist/cli-tui/utils/external-editor.js +0 -53
  1293. package/dist/cli-tui/utils/external-editor.js.map +0 -1
  1294. package/dist/cli-tui/utils/footer-utils.d.ts +0 -169
  1295. package/dist/cli-tui/utils/footer-utils.d.ts.map +0 -1
  1296. package/dist/cli-tui/utils/footer-utils.js +0 -716
  1297. package/dist/cli-tui/utils/footer-utils.js.map +0 -1
  1298. package/dist/cli-tui/utils/footer-visual-widgets.d.ts +0 -38
  1299. package/dist/cli-tui/utils/footer-visual-widgets.d.ts.map +0 -1
  1300. package/dist/cli-tui/utils/footer-visual-widgets.js +0 -141
  1301. package/dist/cli-tui/utils/footer-visual-widgets.js.map +0 -1
  1302. package/dist/cli-tui/utils/git-branch-tracker.d.ts +0 -38
  1303. package/dist/cli-tui/utils/git-branch-tracker.d.ts.map +0 -1
  1304. package/dist/cli-tui/utils/git-branch-tracker.js +0 -90
  1305. package/dist/cli-tui/utils/git-branch-tracker.js.map +0 -1
  1306. package/dist/cli-tui/utils/glyphs.d.ts +0 -207
  1307. package/dist/cli-tui/utils/glyphs.d.ts.map +0 -1
  1308. package/dist/cli-tui/utils/glyphs.js +0 -249
  1309. package/dist/cli-tui/utils/glyphs.js.map +0 -1
  1310. package/dist/cli-tui/utils/layout.d.ts +0 -77
  1311. package/dist/cli-tui/utils/layout.d.ts.map +0 -1
  1312. package/dist/cli-tui/utils/layout.js +0 -83
  1313. package/dist/cli-tui/utils/layout.js.map +0 -1
  1314. package/dist/cli-tui/utils/links.d.ts +0 -2
  1315. package/dist/cli-tui/utils/links.d.ts.map +0 -1
  1316. package/dist/cli-tui/utils/links.js +0 -14
  1317. package/dist/cli-tui/utils/links.js.map +0 -1
  1318. package/dist/cli-tui/utils/motion.d.ts +0 -4
  1319. package/dist/cli-tui/utils/motion.d.ts.map +0 -1
  1320. package/dist/cli-tui/utils/motion.js +0 -28
  1321. package/dist/cli-tui/utils/motion.js.map +0 -1
  1322. package/dist/cli-tui/utils/runtime-badges.d.ts +0 -26
  1323. package/dist/cli-tui/utils/runtime-badges.d.ts.map +0 -1
  1324. package/dist/cli-tui/utils/runtime-badges.js +0 -178
  1325. package/dist/cli-tui/utils/runtime-badges.js.map +0 -1
  1326. package/dist/cli-tui/utils/shimmer.d.ts +0 -12
  1327. package/dist/cli-tui/utils/shimmer.d.ts.map +0 -1
  1328. package/dist/cli-tui/utils/shimmer.js +0 -57
  1329. package/dist/cli-tui/utils/shimmer.js.map +0 -1
  1330. package/dist/cli-tui/utils/stage-labels.d.ts +0 -9
  1331. package/dist/cli-tui/utils/stage-labels.d.ts.map +0 -1
  1332. package/dist/cli-tui/utils/stage-labels.js +0 -65
  1333. package/dist/cli-tui/utils/stage-labels.js.map +0 -1
  1334. package/dist/cli-tui/utils/text-formatting.d.ts +0 -13
  1335. package/dist/cli-tui/utils/text-formatting.d.ts.map +0 -1
  1336. package/dist/cli-tui/utils/text-formatting.js +0 -109
  1337. package/dist/cli-tui/utils/text-formatting.js.map +0 -1
  1338. package/dist/cli-tui/utils/text-preview.d.ts +0 -10
  1339. package/dist/cli-tui/utils/text-preview.d.ts.map +0 -1
  1340. package/dist/cli-tui/utils/text-preview.js +0 -26
  1341. package/dist/cli-tui/utils/text-preview.js.map +0 -1
  1342. package/dist/cli-tui/utils/tool-text-utils.d.ts +0 -42
  1343. package/dist/cli-tui/utils/tool-text-utils.d.ts.map +0 -1
  1344. package/dist/cli-tui/utils/tool-text-utils.js +0 -361
  1345. package/dist/cli-tui/utils/tool-text-utils.js.map +0 -1
  1346. package/dist/cli-tui/welcome-animation.d.ts +0 -24
  1347. package/dist/cli-tui/welcome-animation.d.ts.map +0 -1
  1348. package/dist/cli-tui/welcome-animation.js +0 -99
  1349. package/dist/cli-tui/welcome-animation.js.map +0 -1
  1350. package/dist/cli-tui/welcome-colors.d.ts +0 -3
  1351. package/dist/cli-tui/welcome-colors.d.ts.map +0 -1
  1352. package/dist/cli-tui/welcome-colors.js +0 -39
  1353. package/dist/cli-tui/welcome-colors.js.map +0 -1
  1354. package/dist/node_modules/@evalops/tui/dist/autocomplete.d.ts +0 -304
  1355. package/dist/node_modules/@evalops/tui/dist/autocomplete.d.ts.map +0 -1
  1356. package/dist/node_modules/@evalops/tui/dist/autocomplete.js +0 -712
  1357. package/dist/node_modules/@evalops/tui/dist/autocomplete.js.map +0 -1
  1358. package/dist/node_modules/@evalops/tui/dist/components/editor.d.ts +0 -185
  1359. package/dist/node_modules/@evalops/tui/dist/components/editor.d.ts.map +0 -1
  1360. package/dist/node_modules/@evalops/tui/dist/components/editor.js +0 -1460
  1361. package/dist/node_modules/@evalops/tui/dist/components/editor.js.map +0 -1
  1362. package/dist/node_modules/@evalops/tui/dist/components/input.d.ts +0 -117
  1363. package/dist/node_modules/@evalops/tui/dist/components/input.d.ts.map +0 -1
  1364. package/dist/node_modules/@evalops/tui/dist/components/input.js +0 -391
  1365. package/dist/node_modules/@evalops/tui/dist/components/input.js.map +0 -1
  1366. package/dist/node_modules/@evalops/tui/dist/components/layout.d.ts +0 -256
  1367. package/dist/node_modules/@evalops/tui/dist/components/layout.d.ts.map +0 -1
  1368. package/dist/node_modules/@evalops/tui/dist/components/layout.js +0 -478
  1369. package/dist/node_modules/@evalops/tui/dist/components/layout.js.map +0 -1
  1370. package/dist/node_modules/@evalops/tui/dist/components/loader.d.ts +0 -199
  1371. package/dist/node_modules/@evalops/tui/dist/components/loader.d.ts.map +0 -1
  1372. package/dist/node_modules/@evalops/tui/dist/components/loader.js +0 -374
  1373. package/dist/node_modules/@evalops/tui/dist/components/loader.js.map +0 -1
  1374. package/dist/node_modules/@evalops/tui/dist/components/markdown.d.ts +0 -65
  1375. package/dist/node_modules/@evalops/tui/dist/components/markdown.d.ts.map +0 -1
  1376. package/dist/node_modules/@evalops/tui/dist/components/markdown.js +0 -562
  1377. package/dist/node_modules/@evalops/tui/dist/components/markdown.js.map +0 -1
  1378. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.d.ts +0 -262
  1379. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.d.ts.map +0 -1
  1380. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.js +0 -575
  1381. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.js.map +0 -1
  1382. package/dist/node_modules/@evalops/tui/dist/components/select-list.d.ts +0 -131
  1383. package/dist/node_modules/@evalops/tui/dist/components/select-list.d.ts.map +0 -1
  1384. package/dist/node_modules/@evalops/tui/dist/components/select-list.js +0 -257
  1385. package/dist/node_modules/@evalops/tui/dist/components/select-list.js.map +0 -1
  1386. package/dist/node_modules/@evalops/tui/dist/components/spacer.d.ts +0 -11
  1387. package/dist/node_modules/@evalops/tui/dist/components/spacer.d.ts.map +0 -1
  1388. package/dist/node_modules/@evalops/tui/dist/components/spacer.js +0 -19
  1389. package/dist/node_modules/@evalops/tui/dist/components/spacer.js.map +0 -1
  1390. package/dist/node_modules/@evalops/tui/dist/components/status-bar.d.ts +0 -22
  1391. package/dist/node_modules/@evalops/tui/dist/components/status-bar.d.ts.map +0 -1
  1392. package/dist/node_modules/@evalops/tui/dist/components/status-bar.js +0 -44
  1393. package/dist/node_modules/@evalops/tui/dist/components/status-bar.js.map +0 -1
  1394. package/dist/node_modules/@evalops/tui/dist/components/text.d.ts +0 -26
  1395. package/dist/node_modules/@evalops/tui/dist/components/text.d.ts.map +0 -1
  1396. package/dist/node_modules/@evalops/tui/dist/components/text.js +0 -181
  1397. package/dist/node_modules/@evalops/tui/dist/components/text.js.map +0 -1
  1398. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.d.ts +0 -15
  1399. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.d.ts.map +0 -1
  1400. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.js +0 -84
  1401. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.js.map +0 -1
  1402. package/dist/node_modules/@evalops/tui/dist/index.d.ts +0 -87
  1403. package/dist/node_modules/@evalops/tui/dist/index.d.ts.map +0 -1
  1404. package/dist/node_modules/@evalops/tui/dist/index.js +0 -85
  1405. package/dist/node_modules/@evalops/tui/dist/index.js.map +0 -1
  1406. package/dist/node_modules/@evalops/tui/dist/keymap.d.ts +0 -189
  1407. package/dist/node_modules/@evalops/tui/dist/keymap.d.ts.map +0 -1
  1408. package/dist/node_modules/@evalops/tui/dist/keymap.js +0 -363
  1409. package/dist/node_modules/@evalops/tui/dist/keymap.js.map +0 -1
  1410. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.d.ts +0 -25
  1411. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.d.ts.map +0 -1
  1412. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.js +0 -828
  1413. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.js.map +0 -1
  1414. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.d.ts +0 -40
  1415. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.d.ts.map +0 -1
  1416. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.js +0 -474
  1417. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.js.map +0 -1
  1418. package/dist/node_modules/@evalops/tui/dist/terminal.d.ts +0 -201
  1419. package/dist/node_modules/@evalops/tui/dist/terminal.d.ts.map +0 -1
  1420. package/dist/node_modules/@evalops/tui/dist/terminal.js +0 -241
  1421. package/dist/node_modules/@evalops/tui/dist/terminal.js.map +0 -1
  1422. package/dist/node_modules/@evalops/tui/dist/tui.d.ts +0 -263
  1423. package/dist/node_modules/@evalops/tui/dist/tui.d.ts.map +0 -1
  1424. package/dist/node_modules/@evalops/tui/dist/tui.js +0 -694
  1425. package/dist/node_modules/@evalops/tui/dist/tui.js.map +0 -1
  1426. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.d.ts +0 -14
  1427. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.d.ts.map +0 -1
  1428. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.js +0 -44
  1429. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.js.map +0 -1
  1430. package/dist/node_modules/@evalops/tui/dist/utils.d.ts +0 -32
  1431. package/dist/node_modules/@evalops/tui/dist/utils.d.ts.map +0 -1
  1432. package/dist/node_modules/@evalops/tui/dist/utils.js +0 -556
  1433. package/dist/node_modules/@evalops/tui/dist/utils.js.map +0 -1
  1434. package/dist/node_modules/@evalops/tui/package.json +0 -58
  1435. package/dist/skills/artifact-metadata.d.ts.map +0 -1
  1436. package/dist/skills/artifact-metadata.js.map +0 -1
  1437. package/dist/skills/composer-diagnostics.d.ts +0 -69
  1438. package/dist/skills/composer-diagnostics.d.ts.map +0 -1
  1439. package/dist/skills/composer-diagnostics.js +0 -78
  1440. package/dist/skills/composer-diagnostics.js.map +0 -1
  1441. package/dist/skills/composer.d.ts +0 -19
  1442. package/dist/skills/composer.d.ts.map +0 -1
  1443. package/dist/skills/composer.js +0 -64
  1444. package/dist/skills/composer.js.map +0 -1
  1445. package/dist/skills/eval-harness.d.ts +0 -38
  1446. package/dist/skills/eval-harness.d.ts.map +0 -1
  1447. package/dist/skills/eval-harness.js +0 -112
  1448. package/dist/skills/eval-harness.js.map +0 -1
  1449. package/dist/skills/index.d.ts +0 -41
  1450. package/dist/skills/index.d.ts.map +0 -1
  1451. package/dist/skills/index.js +0 -41
  1452. package/dist/skills/index.js.map +0 -1
  1453. package/dist/skills/learned-guidelines.d.ts +0 -33
  1454. package/dist/skills/learned-guidelines.d.ts.map +0 -1
  1455. package/dist/skills/learned-guidelines.js +0 -291
  1456. package/dist/skills/learned-guidelines.js.map +0 -1
  1457. package/dist/skills/linter.d.ts +0 -36
  1458. package/dist/skills/linter.d.ts.map +0 -1
  1459. package/dist/skills/linter.js +0 -397
  1460. package/dist/skills/linter.js.map +0 -1
  1461. package/dist/skills/loader.d.ts +0 -252
  1462. package/dist/skills/loader.d.ts.map +0 -1
  1463. package/dist/skills/loader.js +0 -957
  1464. package/dist/skills/loader.js.map +0 -1
  1465. package/dist/skills/package-contract.d.ts +0 -45
  1466. package/dist/skills/package-contract.d.ts.map +0 -1
  1467. package/dist/skills/package-contract.js +0 -153
  1468. package/dist/skills/package-contract.js.map +0 -1
  1469. package/dist/skills/runtime-activation.d.ts +0 -69
  1470. package/dist/skills/runtime-activation.d.ts.map +0 -1
  1471. package/dist/skills/runtime-activation.js +0 -227
  1472. package/dist/skills/runtime-activation.js.map +0 -1
  1473. package/dist/skills/scaffold-from-template.d.ts +0 -58
  1474. package/dist/skills/scaffold-from-template.d.ts.map +0 -1
  1475. package/dist/skills/scaffold-from-template.js +0 -72
  1476. package/dist/skills/scaffold-from-template.js.map +0 -1
  1477. package/dist/skills/scaffolder.d.ts +0 -65
  1478. package/dist/skills/scaffolder.d.ts.map +0 -1
  1479. package/dist/skills/scaffolder.js +0 -167
  1480. package/dist/skills/scaffolder.js.map +0 -1
  1481. package/dist/skills/service-client.d.ts +0 -56
  1482. package/dist/skills/service-client.d.ts.map +0 -1
  1483. package/dist/skills/service-client.js +0 -266
  1484. package/dist/skills/service-client.js.map +0 -1
  1485. package/dist/skills/skill-templates.d.ts +0 -70
  1486. package/dist/skills/skill-templates.d.ts.map +0 -1
  1487. package/dist/skills/skill-templates.js +0 -154
  1488. package/dist/skills/skill-templates.js.map +0 -1
  1489. package/dist/skills/tool.d.ts +0 -21
  1490. package/dist/skills/tool.d.ts.map +0 -1
  1491. package/dist/skills/tool.js +0 -339
  1492. package/dist/skills/tool.js.map +0 -1
  1493. package/dist/skills/trust-cache.d.ts +0 -65
  1494. package/dist/skills/trust-cache.d.ts.map +0 -1
  1495. package/dist/skills/trust-cache.js +0 -146
  1496. package/dist/skills/trust-cache.js.map +0 -1
  1497. package/dist/skills/types.d.ts +0 -91
  1498. package/dist/skills/types.d.ts.map +0 -1
  1499. package/dist/skills/types.js +0 -8
  1500. package/dist/skills/types.js.map +0 -1
  1501. /package/dist/{cli-tui → runtime}/prompt-queue.d.ts +0 -0
  1502. /package/dist/{cli-tui → runtime}/prompt-queue.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/agent/compaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/agent/compaction.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,6 @@
35
35
  import { realpathSync } from "node:fs";
36
36
  import { resolve as resolvePath } from "node:path";
37
37
  import { resolveExistingAppendSystemPromptPaths, resolvePromptLoadedProjectDocPaths, } from "../config/index.js";
38
- import { getSkillArtifactMetadataFromDetails } from "../skills/artifact-metadata.js";
39
38
  import { readTool } from "../tools/read.js";
40
39
  import { createLogger } from "../utils/logger.js";
41
40
  import { expandUserPath } from "../utils/path-validation.js";
@@ -43,6 +42,7 @@ import { sanitizeWithStaticMask } from "../utils/secret-redactor.js";
43
42
  import { runPostCompactionCleanup } from "./compaction-cleanup.js";
44
43
  import { createCompactionHookService, } from "./compaction-hooks.js";
45
44
  import { DEFAULT_COMPACTION_SETTINGS, adjustBoundaryForToolResults, calculateContextTokens, findCutPoint, findTurnBoundaries, getLastAssistantUsage, } from "./compaction/cut-points.js";
45
+ import { getSkillArtifactMetadataFromDetails } from "./skill-artifact-metadata.js";
46
46
  export { DEFAULT_COMPACTION_SETTINGS, adjustBoundaryForToolResults, calculateContextTokens, calculateUsagePercent, findCutPoint, findCutPointWithSplitInfo, findTurnStartIndex, getLastAssistantUsage, getLastAssistantUsageFromEntries, shouldCompact, } from "./compaction/cut-points.js";
47
47
  import { BACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE, HEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE, MCP_SERVERS_COMPACTION_CUSTOM_TYPE, PLAN_FILE_COMPACTION_CUSTOM_TYPE, PLAN_MODE_COMPACTION_CUSTOM_TYPE, } from "./compaction-restoration.js";
48
48
  export { COMPACTION_RESUME_PROMPT, isCompactionResumePromptMessage, isCompactionResumePromptText, isDecoratedCompactionSummaryMessage, isDecoratedCompactionSummaryText, } from "./compaction-markers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/agent/compaction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Context Compaction - Pure Functions for Long Session Management\n *\n * This module provides pure functions for context compaction logic. Context\n * compaction summarizes older conversation history when approaching token limits,\n * allowing conversations to continue indefinitely while preserving important context.\n *\n * ## Architecture\n *\n * The compaction system follows a separation of concerns:\n * - **This module**: Pure functions for token calculation, cut point detection, and\n * determining when compaction should trigger. No I/O or side effects.\n * - **SessionManager**: Handles persistence of compaction entries to session files.\n * - **ConversationCompactor**: Orchestrates the compaction process with TUI integration.\n *\n * ## Token-Based Cut Point Detection\n *\n * Instead of using a fixed message count, cut point detection uses actual token usage\n * from assistant messages. The algorithm walks backwards from the newest message,\n * calculating cumulative token differences until `keepRecentTokens` is exceeded.\n *\n * This approach:\n * - Preserves more context when messages are small\n * - Compacts more aggressively when messages are large\n * - Respects turn boundaries (never splits user/assistant/toolResult groups)\n *\n * ## Summarization Strategy\n *\n * When compacting, older messages are summarized using the LLM with a handoff-style\n * prompt. If a previous compaction exists, its summary is included as context for\n * the new summarization (cascading summaries).\n *\n * @module agent/compaction\n */\n\nimport { realpathSync } from \"node:fs\";\nimport { resolve as resolvePath } from \"node:path\";\nimport {\n\tresolveExistingAppendSystemPromptPaths,\n\tresolvePromptLoadedProjectDocPaths,\n} from \"../config/index.js\";\nimport type {\n\tComposerConfig,\n\tPromptProjectDocManifest,\n} from \"../config/index.js\";\nimport { getSkillArtifactMetadataFromDetails } from \"../skills/artifact-metadata.js\";\nimport { readTool } from \"../tools/read.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { expandUserPath } from \"../utils/path-validation.js\";\nimport { sanitizeWithStaticMask } from \"../utils/secret-redactor.js\";\nimport { runPostCompactionCleanup } from \"./compaction-cleanup.js\";\nimport {\n\ttype CompactionHookContext,\n\ttype CompactionHookService,\n\tcreateCompactionHookService,\n} from \"./compaction-hooks.js\";\nimport {\n\tDEFAULT_COMPACTION_SETTINGS,\n\tadjustBoundaryForToolResults,\n\tcalculateContextTokens,\n\tfindCutPoint,\n\tfindTurnBoundaries,\n\tgetLastAssistantUsage,\n} from \"./compaction/cut-points.js\";\nimport type { CompactionSettings } from \"./compaction/cut-points.js\";\nexport {\n\tDEFAULT_COMPACTION_SETTINGS,\n\tadjustBoundaryForToolResults,\n\tcalculateContextTokens,\n\tcalculateUsagePercent,\n\tfindCutPoint,\n\tfindCutPointWithSplitInfo,\n\tfindTurnStartIndex,\n\tgetLastAssistantUsage,\n\tgetLastAssistantUsageFromEntries,\n\tshouldCompact,\n} from \"./compaction/cut-points.js\";\nexport type {\n\tCompactionSettings,\n\tCutPointResult,\n} from \"./compaction/cut-points.js\";\nimport {\n\tBACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE,\n\tHEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE,\n\tMCP_SERVERS_COMPACTION_CUSTOM_TYPE,\n\tPLAN_FILE_COMPACTION_CUSTOM_TYPE,\n\tPLAN_MODE_COMPACTION_CUSTOM_TYPE,\n} from \"./compaction-restoration.js\";\nexport {\n\tCOMPACTION_RESUME_PROMPT,\n\tisCompactionResumePromptMessage,\n\tisCompactionResumePromptText,\n\tisDecoratedCompactionSummaryMessage,\n\tisDecoratedCompactionSummaryText,\n} from \"./compaction-markers.js\";\nimport {\n\tCOMPACTION_RESUME_PROMPT,\n\tisCompactionResumePromptMessage,\n\tisCompactionResumePromptText,\n\tisDecoratedCompactionSummaryMessage,\n\tisDecoratedCompactionSummaryText,\n} from \"./compaction-markers.js\";\nimport {\n\tisContextOverflow as isCompactionOverflowMessage,\n\tisOverflowErrorMessage,\n\tparseOverflowDetails,\n} from \"./context-overflow.js\";\nimport {\n\tconvertAppMessageToLlm,\n\tcreateHookMessage,\n} from \"./custom-messages.js\";\nimport { getPlanFilePathForCompactionRestore } from \"./plan-mode.js\";\nimport { SESSION_START_INITIAL_USER_METADATA_KIND } from \"./session-start-metadata.js\";\nimport type {\n\tApi,\n\tAppMessage,\n\tAssistantMessage,\n\tHookMessage,\n\tImageContent,\n\tTextContent,\n\tToolResultMessage,\n\tUserMessage,\n\tUserMessageWithAttachments,\n} from \"./types.js\";\n\nconst logger = createLogger(\"agent:compaction\");\n\n// ============================================================================\n// Types\n// ============================================================================\n\nconst MAX_COMPACTION_OVERFLOW_RETRIES = 3;\nconst PREVIOUS_SUMMARY_PREFIX = \"Previous session summary:\\n\";\nconst COMPACTION_OVERFLOW_RETRY_MARKER =\n\t\"[earlier conversation truncated for compaction retry]\";\nconst READ_RESTORE_COMPACTION_CUSTOM_TYPE = \"read-file\";\nconst MAX_READ_RESTORE_MESSAGES = 5;\nconst READ_RESTORE_TOKEN_BUDGET = 50_000;\nconst READ_RESTORE_MAX_TOKENS_PER_FILE = 5_000;\nconst READ_RESTORE_TRUNCATION_MARKER =\n\t\"\\n\\n[... restored read result truncated for compaction; use `read` on the path again if you need the full contents]\";\nconst SKILL_RESTORE_TOKEN_BUDGET = 25_000;\nconst SKILL_RESTORE_MAX_TOKENS_PER_SKILL = 5_000;\nconst SKILL_RESTORE_TRUNCATION_MARKER =\n\t\"\\n\\n[... restored skill truncated for compaction; use the `Skill` tool again if you need the full instructions]\";\n\n/**\n * Result of a compaction operation, ready to be persisted.\n */\nexport interface CompactionResult {\n\t/** Generated summary of compacted messages */\n\tsummary: string;\n\t/** Index of first entry to keep (entries before this are summarized) */\n\tfirstKeptEntryIndex: number;\n\t/** Token count before compaction (for metrics) */\n\ttokensBefore: number;\n\t/** Messages that were summarized */\n\tsummarizedMessages: AppMessage[];\n\t/** Messages to keep verbatim */\n\tkeptMessages: AppMessage[];\n}\n\n// ============================================================================\n// Token Calculation\n// ============================================================================\n\nfunction shouldSkipAssistantCompactionMessage(message: AppMessage): boolean {\n\treturn (\n\t\tmessage.role === \"assistant\" &&\n\t\t(message.stopReason === \"aborted\" || message.stopReason === \"error\")\n\t);\n}\n\nfunction shouldSkipReinjectedCompactionMessage(message: AppMessage): boolean {\n\treturn (\n\t\t(message.role === \"hookMessage\" &&\n\t\t\t((message.customType === \"skill\" && message.display === false) ||\n\t\t\t\tmessage.customType === READ_RESTORE_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === PLAN_FILE_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === BACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType ===\n\t\t\t\t\tHEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === MCP_SERVERS_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === \"PostCompact\" ||\n\t\t\t\tmessage.customType === \"SessionStart\" ||\n\t\t\t\tmessage.customType === PLAN_MODE_COMPACTION_CUSTOM_TYPE)) ||\n\t\tisSessionStartInitialUserMessage(message)\n\t);\n}\n\nfunction isSessionStartInitialUserMessage(message: AppMessage): boolean {\n\treturn (\n\t\tmessage.role === \"user\" &&\n\t\ttypeof message.metadata === \"object\" &&\n\t\tmessage.metadata !== null &&\n\t\tmessage.metadata.kind === SESSION_START_INITIAL_USER_METADATA_KIND\n\t);\n}\n\nfunction stripRuntimeRestoreMessages(messages: AppMessage[]): AppMessage[] {\n\treturn messages.filter(\n\t\t(message) =>\n\t\t\t(message.role !== \"hookMessage\" ||\n\t\t\t\t(message.customType !== BACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE &&\n\t\t\t\t\tmessage.customType !==\n\t\t\t\t\t\tHEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE &&\n\t\t\t\t\tmessage.customType !== MCP_SERVERS_COMPACTION_CUSTOM_TYPE &&\n\t\t\t\t\tmessage.customType !== \"SessionStart\")) &&\n\t\t\t!isSessionStartInitialUserMessage(message),\n\t);\n}\n\nfunction normalizeReadPath(path: string): string {\n\treturn resolvePath(expandUserPath(path));\n}\n\nfunction normalizeComparableReadPath(path: string): string {\n\tconst normalizedPath = normalizeReadPath(path);\n\ttry {\n\t\treturn realpathSync.native(normalizedPath);\n\t} catch {\n\t\treturn normalizedPath;\n\t}\n}\n\nfunction getExcludedReadRestorePaths(\n\tadditionalPaths: string[] = [],\n\tprofileName?: string,\n\tcwd: string = process.cwd(),\n\tcliOverrides?: Partial<ComposerConfig>,\n): Set<string> {\n\tconst appendSystemPromptPaths = resolveExistingAppendSystemPromptPaths(\n\t\tcwd,\n\t\tprofileName,\n\t\tcliOverrides,\n\t);\n\tconst trackedPlanFilePath = getPlanFilePathForCompactionRestore();\n\treturn new Set(\n\t\t[\n\t\t\t...appendSystemPromptPaths,\n\t\t\t...(trackedPlanFilePath ? [trackedPlanFilePath] : []),\n\t\t\t...additionalPaths,\n\t\t].map((path) => normalizeComparableReadPath(path)),\n\t);\n}\n\nfunction shouldExcludeReadRestorePath(\n\tfilePath: string,\n\texcludedPaths: Set<string>,\n): boolean {\n\treturn excludedPaths.has(normalizeComparableReadPath(filePath));\n}\n\ntype ReadRestoreRequest = {\n\tpath: string;\n\toffset?: number;\n\tlimit?: number;\n\tmode?: \"normal\" | \"head\" | \"tail\";\n\tlineNumbers?: boolean;\n\twrapInCodeFence?: boolean;\n\tlanguage?: string;\n\tencoding?: \"utf-8\" | \"utf-16le\" | \"latin1\" | \"ascii\";\n};\n\ntype ReadRestoreExecutor = typeof readTool.execute;\n\nfunction parseOptionalInteger(value: unknown, minimum = 1): number | undefined {\n\treturn typeof value === \"number\" &&\n\t\tNumber.isInteger(value) &&\n\t\tvalue >= minimum\n\t\t? value\n\t\t: undefined;\n}\n\nfunction parseReadRestoreRequest(\n\targuments_: Record<string, unknown>,\n): ReadRestoreRequest | null {\n\tconst rawPath = arguments_.path;\n\tif (typeof rawPath !== \"string\") {\n\t\treturn null;\n\t}\n\n\tconst mode =\n\t\targuments_.mode === \"normal\" ||\n\t\targuments_.mode === \"head\" ||\n\t\targuments_.mode === \"tail\"\n\t\t\t? arguments_.mode\n\t\t\t: undefined;\n\tconst lineNumbers =\n\t\ttypeof arguments_.lineNumbers === \"boolean\"\n\t\t\t? arguments_.lineNumbers\n\t\t\t: undefined;\n\tconst wrapInCodeFence =\n\t\ttypeof arguments_.wrapInCodeFence === \"boolean\"\n\t\t\t? arguments_.wrapInCodeFence\n\t\t\t: undefined;\n\tconst language =\n\t\ttypeof arguments_.language === \"string\" ? arguments_.language : undefined;\n\tconst encoding =\n\t\targuments_.encoding === \"utf-8\" ||\n\t\targuments_.encoding === \"utf-16le\" ||\n\t\targuments_.encoding === \"latin1\" ||\n\t\targuments_.encoding === \"ascii\"\n\t\t\t? arguments_.encoding\n\t\t\t: undefined;\n\n\treturn {\n\t\tpath: normalizeReadPath(rawPath),\n\t\toffset: parseOptionalInteger(arguments_.offset),\n\t\tlimit: parseOptionalInteger(arguments_.limit),\n\t\tmode,\n\t\tlineNumbers,\n\t\twrapInCodeFence,\n\t\tlanguage,\n\t\tencoding,\n\t};\n}\n\nfunction collectReadRestoreRequestsByCallId(\n\tmessages: AppMessage[],\n): Map<string, ReadRestoreRequest> {\n\tconst requestsByCallId = new Map<string, ReadRestoreRequest>();\n\tfor (const message of messages) {\n\t\tif (message.role !== \"assistant\") {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const part of message.content) {\n\t\t\tif (part.type !== \"toolCall\" || part.name !== \"read\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst request = parseReadRestoreRequest(part.arguments);\n\t\t\tif (!request) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trequestsByCallId.set(part.id, request);\n\t\t}\n\t}\n\treturn requestsByCallId;\n}\n\nfunction collectVisibleReadPaths(messages: AppMessage[]): Set<string> {\n\tconst requestsByCallId = collectReadRestoreRequestsByCallId(messages);\n\tconst visiblePaths = new Set<string>();\n\tfor (const message of messages) {\n\t\tif (\n\t\t\tmessage.role !== \"toolResult\" ||\n\t\t\tmessage.toolName !== \"read\" ||\n\t\t\tmessage.isError\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst request = requestsByCallId.get(message.toolCallId);\n\t\tif (request) {\n\t\t\tvisiblePaths.add(request.path);\n\t\t}\n\t}\n\treturn visiblePaths;\n}\n\nfunction collectRestoredReadPaths(messages: AppMessage[]): Set<string> {\n\tconst restoredPaths = new Set<string>();\n\tfor (const message of messages) {\n\t\tconst filePath = getReadRestoreFilePath(message);\n\t\tif (filePath) {\n\t\t\trestoredPaths.add(normalizeReadPath(filePath));\n\t\t}\n\t}\n\treturn restoredPaths;\n}\n\nfunction extractSkillRestoreName(\n\tcontent: string | (TextContent | ImageContent)[],\n): string | null {\n\tconst text =\n\t\ttypeof content === \"string\"\n\t\t\t? content\n\t\t\t: content\n\t\t\t\t\t.filter((block): block is TextContent => block.type === \"text\")\n\t\t\t\t\t.map((block) => block.text)\n\t\t\t\t\t.join(\"\\n\");\n\tconst match = text.match(/^# Skill:\\s+(.+)$/m);\n\treturn match?.[1]?.trim() || null;\n}\n\nfunction normalizeSkillRestoreContent(\n\tcontent: string | (TextContent | ImageContent)[],\n): (TextContent | ImageContent)[] {\n\treturn typeof content === \"string\"\n\t\t? [{ type: \"text\", text: content }]\n\t\t: content;\n}\n\nfunction getSkillRestoreNameFromMessage(message: AppMessage): string | null {\n\tif (\n\t\tmessage.role === \"toolResult\" &&\n\t\tmessage.toolName === \"Skill\" &&\n\t\t!message.isError\n\t) {\n\t\treturn extractSkillRestoreName(message.content);\n\t}\n\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\tif (\n\t\ttypeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"name\" in details &&\n\t\ttypeof details.name === \"string\"\n\t) {\n\t\treturn details.name;\n\t}\n\n\treturn extractSkillRestoreName(message.content);\n}\n\nfunction collectSuccessfulSkillToolCallIds(\n\tmessages: AppMessage[],\n): Set<string> {\n\tconst toolCallIds = new Set<string>();\n\tfor (const message of messages) {\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\ttoolCallIds.add(message.toolCallId);\n\t\t}\n\t}\n\treturn toolCallIds;\n}\n\nfunction stripSuccessfulSkillToolCallsForCompactionSummary(\n\tmessage: AssistantMessage,\n\tsuccessfulSkillToolCallIds: ReadonlySet<string>,\n): AppMessage[] {\n\tif (successfulSkillToolCallIds.size === 0) {\n\t\treturn [message];\n\t}\n\n\tconst filteredContent = message.content.filter(\n\t\t(part) =>\n\t\t\tpart.type !== \"toolCall\" ||\n\t\t\tpart.name !== \"Skill\" ||\n\t\t\t!successfulSkillToolCallIds.has(part.id),\n\t);\n\tif (filteredContent.length === message.content.length) {\n\t\treturn [message];\n\t}\n\tif (filteredContent.length === 0) {\n\t\treturn [];\n\t}\n\treturn [{ ...message, content: filteredContent }];\n}\n\nfunction isToolSkillRestoreHookMessage(\n\tmessage: AppMessage,\n): message is HookMessage {\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn false;\n\t}\n\n\tconst details = message.details;\n\treturn (\n\t\ttypeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"source\" in details &&\n\t\tdetails.source === \"tool\"\n\t);\n}\n\nfunction isActiveSkillHookMessage(message: AppMessage): message is HookMessage {\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn false;\n\t}\n\n\tconst details = message.details;\n\treturn (\n\t\ttypeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"action\" in details &&\n\t\tdetails.action === \"activate\"\n\t);\n}\n\nfunction hasMatchingSkillRestoreContent(\n\tmessage: AppMessage,\n\texpectedContent: (TextContent | ImageContent)[],\n): boolean {\n\tif (\n\t\tmessage.role === \"toolResult\" &&\n\t\tmessage.toolName === \"Skill\" &&\n\t\t!message.isError\n\t) {\n\t\treturn (\n\t\t\tJSON.stringify(normalizeSkillRestoreContent(message.content)) ===\n\t\t\tJSON.stringify(expectedContent)\n\t\t);\n\t}\n\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\tJSON.stringify(normalizeSkillRestoreContent(message.content)) ===\n\t\tJSON.stringify(expectedContent)\n\t);\n}\n\nfunction getPreservedSkillRestoreState(\n\tmessages: AppMessage[],\n\tskillName: string,\n\tcontent: (TextContent | ImageContent)[],\n): \"visible\" | \"replace\" | \"absent\" {\n\tlet hasStaleToolSkillHook = false;\n\n\tfor (const message of messages) {\n\t\tconst visibleSkillName = getSkillRestoreNameFromMessage(message);\n\t\tif (visibleSkillName !== skillName) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\treturn \"visible\";\n\t\t}\n\n\t\tif (hasMatchingSkillRestoreContent(message, content)) {\n\t\t\treturn \"visible\";\n\t\t}\n\n\t\tif (isToolSkillRestoreHookMessage(message)) {\n\t\t\thasStaleToolSkillHook = true;\n\t\t}\n\t}\n\n\treturn hasStaleToolSkillHook ? \"replace\" : \"absent\";\n}\n\nasync function refreshReadRestoreContent(\n\trequest: ReadRestoreRequest,\n\ttoolCallId: string,\n\treadRestoreExecute: ReadRestoreExecutor,\n): Promise<(TextContent | ImageContent)[] | null> {\n\ttry {\n\t\tconst result = await readRestoreExecute(toolCallId, {\n\t\t\tpath: request.path,\n\t\t\toffset: request.offset,\n\t\t\tlimit: request.limit,\n\t\t\tmode: request.mode,\n\t\t\tlineNumbers: request.lineNumbers,\n\t\t\twrapInCodeFence: request.wrapInCodeFence,\n\t\t\tlanguage: request.language,\n\t\t\tencoding: request.encoding,\n\t\t\twithDiagnostics: false,\n\t\t});\n\t\tif (result.isError) {\n\t\t\treturn null;\n\t\t}\n\t\treturn result.content.filter(\n\t\t\t(\n\t\t\t\tblock,\n\t\t\t): block is\n\t\t\t\t| { type: \"text\"; text: string }\n\t\t\t\t| { type: \"image\"; data: string; mimeType: string } =>\n\t\t\t\tblock.type === \"text\" || block.type === \"image\",\n\t\t);\n\t} catch (error) {\n\t\tlogger.warn(\"Failed to refresh read restore content during compaction\", {\n\t\t\tfilePath: request.path,\n\t\t\ttoolCallId,\n\t\t\terror: sanitizeWithStaticMask(\n\t\t\t\terror instanceof Error ? error.message : String(error),\n\t\t\t),\n\t\t});\n\t\treturn null;\n\t}\n}\n\nfunction buildReadRestoreContent(\n\tfilePath: string,\n\tcontent: (TextContent | ImageContent)[],\n): (TextContent | ImageContent)[] {\n\tconst header: TextContent = {\n\t\ttype: \"text\",\n\t\ttext: [\n\t\t\t\"# Recently read file restored after compaction\",\n\t\t\t\"\",\n\t\t\t`File: ${filePath}`,\n\t\t\t\"\",\n\t\t\t\"Last read result:\",\n\t\t].join(\"\\n\"),\n\t};\n\tconst remainingTokens = Math.max(\n\t\t0,\n\t\tREAD_RESTORE_MAX_TOKENS_PER_FILE - estimateHookContentTokens([header]),\n\t);\n\n\treturn [header, ...truncateReadRestoreBlocks(content, remainingTokens)];\n}\n\nfunction hasReadRestoreMessage(\n\tmessages: AppMessage[],\n\tfilePath: string,\n\tcontent: (TextContent | ImageContent)[],\n): boolean {\n\tconst expectedContent = JSON.stringify(content);\n\treturn messages.some((message) => {\n\t\tif (\n\t\t\tmessage.role !== \"hookMessage\" ||\n\t\t\tmessage.customType !== READ_RESTORE_COMPACTION_CUSTOM_TYPE\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst details = message.details;\n\t\tif (\n\t\t\ttypeof details === \"object\" &&\n\t\t\tdetails !== null &&\n\t\t\t\"filePath\" in details &&\n\t\t\ttypeof details.filePath === \"string\" &&\n\t\t\tdetails.filePath !== filePath\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn JSON.stringify(message.content) === expectedContent;\n\t});\n}\n\nfunction isReadRestoreHookMessage(message: AppMessage): message is HookMessage {\n\treturn (\n\t\tmessage.role === \"hookMessage\" &&\n\t\tmessage.customType === READ_RESTORE_COMPACTION_CUSTOM_TYPE\n\t);\n}\n\nfunction getReadRestoreFilePath(message: AppMessage): string | null {\n\tif (!isReadRestoreHookMessage(message)) {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\treturn typeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"filePath\" in details &&\n\t\ttypeof details.filePath === \"string\"\n\t\t? details.filePath\n\t\t: null;\n}\n\nfunction collectReadRestorePathsToReplace(\n\tpreservedMessages: AppMessage[],\n\trestoredMessages: AppMessage[],\n): Set<string> {\n\tconst filePathsToReplace = new Set<string>();\n\n\tfor (const message of restoredMessages) {\n\t\tif (!isReadRestoreHookMessage(message)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst filePath = getReadRestoreFilePath(message);\n\t\tif (!filePath || !Array.isArray(message.content)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const preservedMessage of preservedMessages) {\n\t\t\tif (getReadRestoreFilePath(preservedMessage) !== filePath) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!hasReadRestoreMessage([preservedMessage], filePath, message.content)\n\t\t\t) {\n\t\t\t\tfilePathsToReplace.add(filePath);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn filePathsToReplace;\n}\n\nfunction shouldReplacePreservedReadRestoreMessage(\n\tmessage: AppMessage,\n\treplacedFilePaths: Set<string>,\n): boolean {\n\tconst filePath = getReadRestoreFilePath(message);\n\treturn filePath !== null && replacedFilePaths.has(filePath);\n}\n\nfunction isPlanFileRestoreHookMessage(\n\tmessage: AppMessage,\n): message is HookMessage {\n\treturn (\n\t\tmessage.role === \"hookMessage\" &&\n\t\tmessage.customType === PLAN_FILE_COMPACTION_CUSTOM_TYPE\n\t);\n}\n\nfunction getPlanFileRestorePath(message: AppMessage): string | null {\n\tif (!isPlanFileRestoreHookMessage(message)) {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\treturn typeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"filePath\" in details &&\n\t\ttypeof details.filePath === \"string\"\n\t\t? details.filePath\n\t\t: null;\n}\n\nfunction isPlanModeRestoreHookMessage(\n\tmessage: AppMessage,\n): message is HookMessage {\n\treturn (\n\t\tmessage.role === \"hookMessage\" &&\n\t\tmessage.customType === PLAN_MODE_COMPACTION_CUSTOM_TYPE\n\t);\n}\n\nfunction getPlanModeRestorePath(message: AppMessage): string | null {\n\tif (!isPlanModeRestoreHookMessage(message)) {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\treturn typeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"filePath\" in details &&\n\t\ttypeof details.filePath === \"string\"\n\t\t? details.filePath\n\t\t: null;\n}\n\nfunction collectPlanRestorePaths(\n\trestoredMessages: AppMessage[],\n\tgetPath: (message: AppMessage) => string | null,\n): Set<string> {\n\tconst filePaths = new Set<string>();\n\tfor (const message of restoredMessages) {\n\t\tconst filePath = getPath(message);\n\t\tif (filePath) {\n\t\t\tfilePaths.add(filePath);\n\t\t}\n\t}\n\treturn filePaths;\n}\n\nfunction hasPlanFileRestoreMessage(\n\tmessages: AppMessage[],\n\tfilePath: string,\n\tcontent: string | (TextContent | ImageContent)[],\n): boolean {\n\tconst expectedContent = JSON.stringify(content);\n\treturn messages.some((message) => {\n\t\tif (!isPlanFileRestoreHookMessage(message)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (getPlanFileRestorePath(message) !== filePath) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn JSON.stringify(message.content) === expectedContent;\n\t});\n}\n\nfunction collectPlanFilePathsToReplace(\n\tpreservedMessages: AppMessage[],\n\trestoredMessages: AppMessage[],\n): Set<string> {\n\tconst filePathsToReplace = new Set<string>();\n\n\tfor (const message of restoredMessages) {\n\t\tif (!isPlanFileRestoreHookMessage(message)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst filePath = getPlanFileRestorePath(message);\n\t\tif (!filePath) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const preservedMessage of preservedMessages) {\n\t\t\tif (getPlanFileRestorePath(preservedMessage) !== filePath) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!hasPlanFileRestoreMessage(\n\t\t\t\t\t[preservedMessage],\n\t\t\t\t\tfilePath,\n\t\t\t\t\tmessage.content,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tfilePathsToReplace.add(filePath);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn filePathsToReplace;\n}\n\nfunction shouldReplacePreservedPlanFileMessage(\n\tmessage: AppMessage,\n\treplacedFilePaths: Set<string>,\n\tcurrentPlanFilePaths: Set<string>,\n): boolean {\n\tconst filePath = getPlanFileRestorePath(message);\n\treturn (\n\t\tfilePath !== null &&\n\t\t(replacedFilePaths.has(filePath) ||\n\t\t\t(currentPlanFilePaths.size > 0 && !currentPlanFilePaths.has(filePath)))\n\t);\n}\n\nfunction shouldReplacePreservedPlanModeMessage(\n\tmessage: AppMessage,\n\tcurrentPlanModePaths: Set<string>,\n): boolean {\n\tconst filePath = getPlanModeRestorePath(message);\n\treturn (\n\t\tfilePath !== null &&\n\t\tcurrentPlanModePaths.size > 0 &&\n\t\t!currentPlanModePaths.has(filePath)\n\t);\n}\n\nfunction estimateHookContentTokens(\n\tcontent: string | (TextContent | ImageContent)[],\n): number {\n\treturn Math.max(1, Math.ceil(JSON.stringify(content).length / 4));\n}\n\nfunction buildRestoreTruncationBlock(text: string): TextContent | null {\n\treturn estimateHookContentTokens([{ type: \"text\", text }]) > 0\n\t\t? { type: \"text\", text }\n\t\t: null;\n}\n\nfunction truncateRestoredHookBlocks(\n\tcontent: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n\toptions: {\n\t\ttextMarker: string;\n\t\timageMarker: string;\n\t},\n): (TextContent | ImageContent)[] {\n\tconst restored: (TextContent | ImageContent)[] = [];\n\tlet usedTokens = 0;\n\n\tfor (const block of content) {\n\t\tconst blockTokens = estimateHookContentTokens([block]);\n\t\tif (usedTokens + blockTokens <= maxTokens) {\n\t\t\trestored.push(block);\n\t\t\tusedTokens += blockTokens;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst remainingTokens = maxTokens - usedTokens;\n\t\tif (remainingTokens <= 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (block.type === \"text\") {\n\t\t\tconst charBudget = Math.max(\n\t\t\t\t0,\n\t\t\t\tremainingTokens * 4 - options.textMarker.length,\n\t\t\t);\n\t\t\tconst truncatedText =\n\t\t\t\tcharBudget > 0\n\t\t\t\t\t? `${block.text.slice(0, charBudget)}${options.textMarker}`\n\t\t\t\t\t: options.textMarker;\n\t\t\tconst truncationBlock = buildRestoreTruncationBlock(truncatedText);\n\t\t\tif (truncationBlock) {\n\t\t\t\trestored.push(truncationBlock);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tconst imageMarker = buildRestoreTruncationBlock(options.imageMarker);\n\t\tif (imageMarker) {\n\t\t\trestored.push(imageMarker);\n\t\t}\n\t\tbreak;\n\t}\n\n\treturn restored;\n}\n\nfunction truncateReadRestoreBlocks(\n\tcontent: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n): (TextContent | ImageContent)[] {\n\treturn truncateRestoredHookBlocks(content, maxTokens, {\n\t\ttextMarker: READ_RESTORE_TRUNCATION_MARKER,\n\t\timageMarker:\n\t\t\t\"[image omitted from restored read result due to compaction budget; use `read` on the path again if needed]\",\n\t});\n}\n\nfunction truncateSkillRestoreBlocks(\n\tcontent: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n): (TextContent | ImageContent)[] {\n\treturn truncateRestoredHookBlocks(content, maxTokens, {\n\t\ttextMarker: SKILL_RESTORE_TRUNCATION_MARKER,\n\t\timageMarker:\n\t\t\t\"[image omitted from restored skill due to compaction budget; use the `Skill` tool again if needed]\",\n\t});\n}\n\nasync function collectRecentReadRestoreMessages(\n\tcompactedMessages: AppMessage[],\n\tpreservedMessages: AppMessage[],\n\tadditionalExcludedPaths: string[] = [],\n\treadRestoreExecute: ReadRestoreExecutor = readTool.execute,\n\tprofileName?: string,\n\tcwd: string = process.cwd(),\n\tcliOverrides?: Partial<ComposerConfig>,\n): Promise<AppMessage[]> {\n\tconst visiblePaths = collectVisibleReadPaths(preservedMessages);\n\tconst requestsByCallId =\n\t\tcollectReadRestoreRequestsByCallId(compactedMessages);\n\tconst excludedPaths = getExcludedReadRestorePaths(\n\t\tadditionalExcludedPaths,\n\t\tprofileName,\n\t\tcwd,\n\t\tcliOverrides,\n\t);\n\tconst restoredMessages: AppMessage[] = [];\n\tconst seenPaths = new Set<string>();\n\tlet usedTokens = 0;\n\n\tfor (let i = compactedMessages.length - 1; i >= 0; i -= 1) {\n\t\tif (restoredMessages.length >= MAX_READ_RESTORE_MESSAGES) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst message = compactedMessages[i];\n\t\tif (!message) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet filePath: string | null = null;\n\t\tlet content: (TextContent | ImageContent)[] | null = null;\n\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"read\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\tconst request = requestsByCallId.get(message.toolCallId);\n\t\t\tfilePath = request?.path ?? null;\n\t\t\tconst refreshedContent = request\n\t\t\t\t? await refreshReadRestoreContent(\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\t`compaction-read-restore-${message.toolCallId}`,\n\t\t\t\t\t\treadRestoreExecute,\n\t\t\t\t\t)\n\t\t\t\t: null;\n\t\t\tcontent = buildReadRestoreContent(\n\t\t\t\tfilePath ?? \"\",\n\t\t\t\trefreshedContent ?? message.content,\n\t\t\t);\n\t\t} else if (\n\t\t\tmessage.role === \"hookMessage\" &&\n\t\t\tmessage.customType === READ_RESTORE_COMPACTION_CUSTOM_TYPE &&\n\t\t\tArray.isArray(message.content)\n\t\t) {\n\t\t\tconst details = message.details;\n\t\t\tfilePath =\n\t\t\t\ttypeof details === \"object\" &&\n\t\t\t\tdetails !== null &&\n\t\t\t\t\"filePath\" in details &&\n\t\t\t\ttypeof details.filePath === \"string\"\n\t\t\t\t\t? normalizeReadPath(details.filePath)\n\t\t\t\t\t: null;\n\t\t\tcontent = message.content;\n\t\t}\n\n\t\tif (\n\t\t\t!filePath ||\n\t\t\t!content ||\n\t\t\tvisiblePaths.has(filePath) ||\n\t\t\tseenPaths.has(filePath) ||\n\t\t\tshouldExcludeReadRestorePath(filePath, excludedPaths)\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst dedupeMessages = [...preservedMessages, ...restoredMessages];\n\t\tif (hasReadRestoreMessage(dedupeMessages, filePath, content)) {\n\t\t\tseenPaths.add(filePath);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst estimatedTokens = estimateHookContentTokens(content);\n\t\tif (usedTokens + estimatedTokens > READ_RESTORE_TOKEN_BUDGET) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tusedTokens += estimatedTokens;\n\t\tseenPaths.add(filePath);\n\t\trestoredMessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\tREAD_RESTORE_COMPACTION_CUSTOM_TYPE,\n\t\t\t\tcontent,\n\t\t\t\tfalse,\n\t\t\t\t{ filePath },\n\t\t\t\tnew Date().toISOString(),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn restoredMessages;\n}\n\ntype SkillRestoreCollectionResult = {\n\treplacedPreservedToolSkillNames: Set<string>;\n\trestoredMessages: AppMessage[];\n};\n\nasync function collectRecentSkillRestoreMessages(\n\tcompactedMessages: AppMessage[],\n\tpreservedMessages: AppMessage[],\n): Promise<SkillRestoreCollectionResult> {\n\tconst restoredMessages: AppMessage[] = [];\n\tconst seenSkillNames = new Set<string>();\n\tconst replacedPreservedToolSkillNames = new Set<string>();\n\tlet usedTokens = 0;\n\n\tfor (let i = compactedMessages.length - 1; i >= 0; i -= 1) {\n\t\tconst message = compactedMessages[i];\n\t\tif (!message) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet skillName: string | null = null;\n\t\tlet content: (TextContent | ImageContent)[] | null = null;\n\t\tlet skillMetadata: ReturnType<typeof getSkillArtifactMetadataFromDetails>;\n\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\tskillName = extractSkillRestoreName(message.content);\n\t\t\tcontent = truncateSkillRestoreBlocks(\n\t\t\t\tmessage.content,\n\t\t\t\tSKILL_RESTORE_MAX_TOKENS_PER_SKILL,\n\t\t\t);\n\t\t\tskillMetadata = getSkillArtifactMetadataFromDetails(message.details);\n\t\t} else if (\n\t\t\tmessage.role === \"hookMessage\" &&\n\t\t\tmessage.customType === \"skill\" &&\n\t\t\tmessage.display === false &&\n\t\t\tArray.isArray(message.content)\n\t\t) {\n\t\t\tconst details = message.details;\n\t\t\tconst sourcedFromTool =\n\t\t\t\ttypeof details === \"object\" &&\n\t\t\t\tdetails !== null &&\n\t\t\t\t\"source\" in details &&\n\t\t\t\tdetails.source === \"tool\";\n\t\t\tif (!sourcedFromTool) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tskillName =\n\t\t\t\ttypeof details === \"object\" &&\n\t\t\t\tdetails !== null &&\n\t\t\t\t\"name\" in details &&\n\t\t\t\ttypeof details.name === \"string\"\n\t\t\t\t\t? details.name\n\t\t\t\t\t: extractSkillRestoreName(message.content);\n\t\t\tcontent = message.content;\n\t\t\tskillMetadata = getSkillArtifactMetadataFromDetails(details);\n\t\t}\n\n\t\tif (!skillName || !content || seenSkillNames.has(skillName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst preservedState = getPreservedSkillRestoreState(\n\t\t\tpreservedMessages,\n\t\t\tskillName,\n\t\t\tcontent,\n\t\t);\n\t\tif (preservedState === \"visible\") {\n\t\t\tseenSkillNames.add(skillName);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst estimatedTokens = estimateHookContentTokens(content);\n\t\tif (usedTokens + estimatedTokens > SKILL_RESTORE_TOKEN_BUDGET) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tusedTokens += estimatedTokens;\n\t\tseenSkillNames.add(skillName);\n\t\tif (preservedState === \"replace\") {\n\t\t\treplacedPreservedToolSkillNames.add(skillName);\n\t\t}\n\t\trestoredMessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\t\"skill\",\n\t\t\t\tcontent,\n\t\t\t\tfalse,\n\t\t\t\t{\n\t\t\t\t\tname: skillName,\n\t\t\t\t\tsource: \"tool\",\n\t\t\t\t\tskillMetadata,\n\t\t\t\t},\n\t\t\t\tnew Date().toISOString(),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn { replacedPreservedToolSkillNames, restoredMessages };\n}\n\nfunction shouldReplacePreservedToolSkillMessage(\n\tmessage: AppMessage,\n\treplacedSkillNames: Set<string>,\n): boolean {\n\tif (!isToolSkillRestoreHookMessage(message)) {\n\t\treturn false;\n\t}\n\n\tconst skillName = getSkillRestoreNameFromMessage(message);\n\treturn skillName !== null && replacedSkillNames.has(skillName);\n}\n\nfunction collectActiveSkillNamesToReplace(\n\tpreservedMessages: AppMessage[],\n\tpostKeepMessages: AppMessage[],\n): Set<string> {\n\tconst activeSkillNamesToReplace = new Set<string>();\n\n\tfor (const message of postKeepMessages) {\n\t\tif (!isActiveSkillHookMessage(message)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst skillName = getSkillRestoreNameFromMessage(message);\n\t\tif (!skillName) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst expectedContent = normalizeSkillRestoreContent(message.content);\n\t\tfor (const preservedMessage of preservedMessages) {\n\t\t\tif (!isActiveSkillHookMessage(preservedMessage)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (getSkillRestoreNameFromMessage(preservedMessage) !== skillName) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!hasMatchingSkillRestoreContent(preservedMessage, expectedContent)) {\n\t\t\t\tactiveSkillNamesToReplace.add(skillName);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn activeSkillNamesToReplace;\n}\n\nfunction shouldReplacePreservedActiveSkillMessage(\n\tmessage: AppMessage,\n\treplacedSkillNames: Set<string>,\n): boolean {\n\tif (!isActiveSkillHookMessage(message)) {\n\t\treturn false;\n\t}\n\n\tconst skillName = getSkillRestoreNameFromMessage(message);\n\treturn skillName !== null && replacedSkillNames.has(skillName);\n}\n\nfunction buildAttachmentMarkers(message: UserMessageWithAttachments): string[] {\n\tif (!Array.isArray(message.attachments) || message.attachments.length === 0) {\n\t\treturn [];\n\t}\n\treturn message.attachments.map((attachment) =>\n\t\tattachment.type === \"document\" ? \"[document]\" : \"[image]\",\n\t);\n}\n\nfunction replaceImageBlocksWithMarkers(\n\tcontent: (TextContent | ImageContent)[],\n): (TextContent | ImageContent)[] {\n\treturn content.map((block) =>\n\t\tblock.type === \"image\" ? { type: \"text\", text: \"[image]\" } : block,\n\t);\n}\n\nfunction stripInlineImagesForCompactionSummary<\n\tT extends\n\t\t| UserMessage\n\t\t| UserMessageWithAttachments\n\t\t| HookMessage\n\t\t| ToolResultMessage,\n>(message: T): T {\n\tif (!Array.isArray(message.content)) {\n\t\treturn message;\n\t}\n\n\tlet hasImage = false;\n\tfor (const block of message.content) {\n\t\tif (block.type === \"image\") {\n\t\t\thasImage = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!hasImage) {\n\t\treturn message;\n\t}\n\n\treturn {\n\t\t...message,\n\t\tcontent: replaceImageBlocksWithMarkers(message.content),\n\t} as T;\n}\n\nfunction stripAttachmentsForCompactionSummary(\n\tmessage: UserMessageWithAttachments,\n): AppMessage {\n\tconst attachmentMarkers = buildAttachmentMarkers(message);\n\tif (attachmentMarkers.length === 0) {\n\t\treturn message;\n\t}\n\n\tconst { attachments: _attachments, ...rest } = message;\n\tconst markerText = attachmentMarkers.join(\"\\n\");\n\tif (typeof rest.content === \"string\") {\n\t\treturn {\n\t\t\t...rest,\n\t\t\tcontent: `${rest.content}\\n\\n${markerText}`,\n\t\t};\n\t}\n\n\treturn {\n\t\t...rest,\n\t\tcontent: [\n\t\t\t...rest.content,\n\t\t\t{\n\t\t\t\ttype: \"text\" as const,\n\t\t\t\ttext: markerText,\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction prepareMessagesForCompactionSummary(\n\tmessages: AppMessage[],\n\treadPathsRestoredAfterCompaction: ReadonlySet<string> = new Set(),\n): AppMessage[] {\n\tconst readRequestsByCallId =\n\t\treadPathsRestoredAfterCompaction.size > 0\n\t\t\t? collectReadRestoreRequestsByCallId(messages)\n\t\t\t: new Map<string, ReadRestoreRequest>();\n\tconst successfulSkillToolCallIds =\n\t\tcollectSuccessfulSkillToolCallIds(messages);\n\treturn messages.flatMap((message) => {\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"read\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\tconst request = readRequestsByCallId.get(message.toolCallId);\n\t\t\tif (request && readPathsRestoredAfterCompaction.has(request.path)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\tif (\n\t\t\tshouldSkipAssistantCompactionMessage(message) ||\n\t\t\tshouldSkipReinjectedCompactionMessage(message)\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\tif (message.role === \"assistant\") {\n\t\t\treturn stripSuccessfulSkillToolCallsForCompactionSummary(\n\t\t\t\tmessage,\n\t\t\t\tsuccessfulSkillToolCallIds,\n\t\t\t);\n\t\t}\n\t\tif (message.role === \"user\") {\n\t\t\tconst sanitizedMessage = stripInlineImagesForCompactionSummary(message);\n\t\t\tif (\"attachments\" in sanitizedMessage) {\n\t\t\t\treturn [stripAttachmentsForCompactionSummary(sanitizedMessage)];\n\t\t\t}\n\t\t\treturn [sanitizedMessage];\n\t\t}\n\t\tif (message.role === \"toolResult\" || message.role === \"hookMessage\") {\n\t\t\treturn [stripInlineImagesForCompactionSummary(message)];\n\t\t}\n\t\treturn [message];\n\t});\n}\n\nfunction isPreviousSummaryPreamble(message: AppMessage | undefined): boolean {\n\treturn (\n\t\tmessage?.role === \"user\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\tmessage.content.startsWith(PREVIOUS_SUMMARY_PREFIX)\n\t);\n}\n\nfunction isOverflowRetryMarker(message: AppMessage | undefined): boolean {\n\treturn (\n\t\tmessage?.role === \"user\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\tmessage.content === COMPACTION_OVERFLOW_RETRY_MARKER\n\t);\n}\n\nfunction stripRedundantPreviousCompactionMessages(\n\tmessages: AppMessage[],\n\tpreviousSummary: string | undefined,\n): AppMessage[] {\n\tif (!previousSummary) {\n\t\treturn messages;\n\t}\n\n\treturn messages.filter(\n\t\t(message) =>\n\t\t\t!isDecoratedCompactionSummaryMessage(message) &&\n\t\t\t!isCompactionResumePromptMessage(message),\n\t);\n}\n\nfunction getOverflowTokenGap(errorMessage: string): number | undefined {\n\tconst parsed = parseOverflowDetails(errorMessage);\n\tif (parsed?.requestedTokens === undefined || parsed.maxTokens === undefined) {\n\t\treturn undefined;\n\t}\n\tconst gap = parsed.requestedTokens - parsed.maxTokens;\n\treturn gap > 0 ? gap : undefined;\n}\n\nfunction estimateRetryMessageTokens(message: AppMessage): number {\n\tconst llmMessage = convertAppMessageToLlm(message);\n\tif (!llmMessage) {\n\t\treturn 0;\n\t}\n\treturn Math.max(1, Math.ceil(JSON.stringify(llmMessage).length / 4));\n}\n\nfunction truncateSummaryInputForOverflowRetry(\n\tmessages: AppMessage[],\n\toverflowErrorMessage?: string,\n): AppMessage[] | null {\n\tif (messages.length < 2) {\n\t\treturn null;\n\t}\n\n\tconst preamble = isPreviousSummaryPreamble(messages[0]) ? messages[0] : null;\n\tconst bodyWithMarker = preamble ? messages.slice(1) : messages;\n\tconst body = isOverflowRetryMarker(bodyWithMarker[0])\n\t\t? bodyWithMarker.slice(1)\n\t\t: bodyWithMarker;\n\tif (body.length < 2) {\n\t\treturn null;\n\t}\n\n\tconst turnBoundaries = findTurnBoundaries(body, 0, body.length).filter(\n\t\t(index) => index > 0,\n\t);\n\tconst approximateDropCount = Math.max(1, Math.floor(body.length * 0.2));\n\tconst fallbackBoundary =\n\t\tturnBoundaries.find((index) => index >= approximateDropCount) ??\n\t\tapproximateDropCount;\n\tconst tokenGap = overflowErrorMessage\n\t\t? getOverflowTokenGap(overflowErrorMessage)\n\t\t: undefined;\n\tlet boundary = 0;\n\tif (tokenGap !== undefined) {\n\t\tlet coveredTokens = 0;\n\t\tconst segmentEnds = [...turnBoundaries, body.length];\n\t\tfor (const segmentEnd of segmentEnds) {\n\t\t\tif (segmentEnd <= boundary) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcoveredTokens += body\n\t\t\t\t.slice(boundary, segmentEnd)\n\t\t\t\t.reduce(\n\t\t\t\t\t(total, message) => total + estimateRetryMessageTokens(message),\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\tboundary = segmentEnd;\n\t\t\tif (coveredTokens >= tokenGap) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tboundary = fallbackBoundary;\n\t}\n\tif (boundary >= body.length) {\n\t\tboundary = fallbackBoundary;\n\t}\n\tboundary = adjustBoundaryForToolResults(body, boundary);\n\tif (boundary >= body.length) {\n\t\treturn null;\n\t}\n\n\tconst truncatedBody = body.slice(boundary);\n\tif (truncatedBody.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst markerMessage: AppMessage = {\n\t\trole: \"user\",\n\t\tcontent: COMPACTION_OVERFLOW_RETRY_MARKER,\n\t\ttimestamp: Date.now(),\n\t};\n\treturn preamble\n\t\t? [preamble, markerMessage, ...truncatedBody]\n\t\t: [markerMessage, ...truncatedBody];\n}\n\n// ============================================================================\n// Summarization\n// ============================================================================\n\n/**\n * Default prompt for generating compaction summaries.\n *\n * Based on research into Claude Code, Codex (OpenAI), and OpenCode (SST).\n * Focused on creating actionable handoff summaries for the resuming LLM.\n */\nexport const SUMMARIZATION_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION. Create a handoff summary for another LLM that will resume the task.\n\nInclude:\n- Current progress and key decisions made\n- Important context, constraints, or user preferences\n- Absolute file paths of any relevant files that were read or modified\n- What remains to be done (clear next steps)\n- Any critical data, examples, or references needed to continue\n\nBe concise, structured, and focused on helping the next LLM seamlessly continue the work.`;\n\n/**\n * Prompt for summarizing the prefix of a split turn.\n *\n * Used when compaction cuts in the middle of a turn (at an assistant message\n * rather than a user message). The prefix of the turn needs summarization\n * to provide context for the kept suffix.\n */\nexport const TURN_PREFIX_SUMMARIZATION_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION for a split turn.\nThis is the PREFIX of a turn that was too large to keep in full. The SUFFIX (recent work) is being kept.\n\nCreate a handoff summary that captures:\n- What the user originally asked for in this turn\n- Key decisions and progress made early in this turn\n- Important context needed to understand the kept suffix\n\nBe concise. Focus on information needed to understand the retained recent work.`;\n\n/**\n * Build the turn prefix summarization prompt.\n *\n * @returns Complete turn prefix summarization prompt\n */\nexport function buildTurnPrefixSummarizationPrompt(): string {\n\treturn TURN_PREFIX_SUMMARIZATION_PROMPT;\n}\n\n/**\n * Build the summarization prompt, optionally with custom instructions.\n *\n * @param customInstructions - Optional additional focus for the summary\n * @returns Complete summarization prompt\n */\nexport function buildSummarizationPrompt(customInstructions?: string): string {\n\tif (customInstructions) {\n\t\treturn `${SUMMARIZATION_PROMPT}\\n\\nAdditional focus: ${customInstructions}`;\n\t}\n\treturn SUMMARIZATION_PROMPT;\n}\n\n/**\n * Decorate a summary with handoff context.\n *\n * Adds a prefix that instructs the resuming LLM to build on existing work,\n * and a footer with compaction metadata.\n *\n * @param summaryText - The generated summary content\n * @param compactedCount - Number of messages that were compacted\n * @param fromModel - Whether the summary was generated by the LLM (vs local fallback)\n * @returns Decorated summary text\n */\nexport function decorateSummaryText(\n\tsummaryText: string,\n\tcompactedCount: number,\n\tfromModel: boolean,\n): string {\n\t// OAI-style handoff prefix that tells the resuming model it's continuing work\n\tconst handoffPrefix = fromModel\n\t\t? \"Another language model started to solve this problem and produced a summary of its thinking process. You also have access to the state of the tools that were used by that language model. Use this to build on the work that has already been done and avoid duplicating work. Here is the summary produced by the other language model, use the information in this summary to assist with your own analysis:\\n\\n\"\n\t\t: \"_Local summary of prior discussion (model unavailable)._\\n\\n\";\n\n\treturn `${handoffPrefix}${summaryText}\\n\\n(Compacted ${compactedCount} messages on ${new Date().toLocaleString()})`;\n}\n\n/**\n * Merge a history summary with a turn prefix summary for split turn compaction.\n *\n * When compaction splits a turn, we generate two summaries:\n * 1. History summary: everything before the split turn\n * 2. Turn prefix summary: the beginning of the split turn\n *\n * This function combines them into a single coherent summary.\n *\n * @param historySummary - Summary of messages before the split turn\n * @param turnPrefixSummary - Summary of the prefix of the split turn\n * @returns Combined summary text\n */\nexport function mergeSplitTurnSummaries(\n\thistorySummary: string,\n\tturnPrefixSummary: string,\n): string {\n\treturn `${historySummary}\\n\\n---\\n\\n**Turn Context (split turn):**\\n\\n${turnPrefixSummary}`;\n}\n\n/**\n * Build a simple local summary when LLM summarization fails.\n *\n * Creates a bullet-point summary of user/assistant exchanges without\n * calling the LLM. Used as fallback when the model is unavailable.\n *\n * @param messages - Messages to summarize\n * @param maxExchanges - Maximum number of exchanges to include\n * @returns Local summary text\n */\nexport function buildLocalSummary(\n\tmessages: AppMessage[],\n\tmaxExchanges = 32,\n): string {\n\tconst lines: string[] = [];\n\tlet exchange = 1;\n\n\tfor (const message of messages) {\n\t\tif (lines.length >= maxExchanges) break;\n\t\tif (shouldSkipAssistantCompactionMessage(message)) continue;\n\n\t\tconst content = extractMessageText(message);\n\t\tif (!content) continue;\n\n\t\tconst truncated = truncateText(content, 180);\n\t\tif (message.role === \"user\") {\n\t\t\tlines.push(`• User ${exchange}: ${truncated}`);\n\t\t} else if (message.role === \"assistant\") {\n\t\t\tlines.push(` ↳ Assistant: ${truncated}`);\n\t\t\texchange += 1;\n\t\t} else if (message.role === \"toolResult\") {\n\t\t\tconst toolName = (message as { toolName?: string }).toolName || \"unknown\";\n\t\t\tlines.push(` ↳ Tool ${toolName}: ${truncateText(content, 160)}`);\n\t\t}\n\t}\n\n\tif (!lines.length) {\n\t\treturn \"(conversation summary placeholder: no textual content to compact)\";\n\t}\n\n\treturn `Conversation summary generated at ${new Date().toLocaleString()}\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Extract text content from a message.\n *\n * @param message - Message to extract text from\n * @returns Combined text content or empty string\n */\nfunction extractMessageText(message: AppMessage): string {\n\tconst llmMessage = convertAppMessageToLlm(message);\n\tif (!llmMessage) {\n\t\treturn \"\";\n\t}\n\tif (typeof llmMessage.content === \"string\") {\n\t\treturn llmMessage.content;\n\t}\n\tif (Array.isArray(llmMessage.content)) {\n\t\treturn llmMessage.content\n\t\t\t.map((part) => {\n\t\t\t\tif (part.type === \"text\") return part.text;\n\t\t\t\tif (part.type === \"thinking\") return part.thinking;\n\t\t\t\treturn \"\";\n\t\t\t})\n\t\t\t.filter((part): part is string => Boolean(part))\n\t\t\t.join(\" \");\n\t}\n\treturn \"\";\n}\n\n/**\n * Truncate text to a maximum length with ellipsis.\n *\n * @param text - Text to truncate\n * @param limit - Maximum length\n * @returns Truncated text with ellipsis if needed\n */\nfunction truncateText(text: string, limit = 160): string {\n\tif (text.length <= limit) return text;\n\treturn `${text.slice(0, limit - 1).trim()}…`;\n}\n\n// ============================================================================\n// Compaction Preparation\n// ============================================================================\n\n/**\n * Prepare messages for compaction by finding the cut point and splitting.\n *\n * This is a pure function that determines what should be summarized vs kept,\n * without actually performing the summarization or I/O.\n *\n * @param messages - All messages in the conversation\n * @param settings - Compaction settings\n * @param previousSummary - Optional summary from a previous compaction (for cascading)\n * @returns Object with messages to summarize and messages to keep, or null if not enough history\n */\nexport function prepareCompaction(\n\tmessages: AppMessage[],\n\tsettings: CompactionSettings,\n\tpreviousSummary?: string,\n): {\n\tmessagesToSummarize: AppMessage[];\n\tkeptMessages: AppMessage[];\n\tcutIndex: number;\n} | null {\n\tconst keepCount = 6; // Minimum messages to always keep\n\tif (messages.length <= keepCount + 1) {\n\t\treturn null; // Not enough history to compact\n\t}\n\n\t// Find initial boundary\n\tlet boundary = Math.max(0, messages.length - keepCount);\n\n\t// Use token-based cut point if we have usage data\n\tconst lastUsage = getLastAssistantUsage(messages);\n\tif (lastUsage) {\n\t\tconst tokenBasedCut = findCutPoint(\n\t\t\tmessages,\n\t\t\t0,\n\t\t\tmessages.length,\n\t\t\tsettings.keepRecentTokens,\n\t\t);\n\t\t// Use the more conservative of the two (keep more messages)\n\t\tboundary = Math.max(boundary, tokenBasedCut);\n\t}\n\n\t// Adjust for tool result integrity\n\tboundary = adjustBoundaryForToolResults(messages, boundary);\n\n\tconst older = messages.slice(0, boundary);\n\tif (!older.length) {\n\t\treturn null; // No earlier messages to compact\n\t}\n\n\t// Prepare messages for summarization\n\tconst messagesToSummarize: AppMessage[] = [];\n\n\t// Include previous summary if cascading\n\tif (previousSummary) {\n\t\tmessagesToSummarize.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: `Previous session summary:\\n${previousSummary}`,\n\t\t\ttimestamp: Date.now(),\n\t\t});\n\t}\n\n\t// Add older messages (limit to most recent 40 for summarization efficiency)\n\tconst sliceSize = Math.min(40, older.length);\n\tconst summaryTail = stripRedundantPreviousCompactionMessages(\n\t\tprepareMessagesForCompactionSummary(older.slice(-sliceSize)),\n\t\tpreviousSummary,\n\t);\n\tmessagesToSummarize.push(...summaryTail);\n\n\treturn {\n\t\tmessagesToSummarize,\n\t\tkeptMessages: messages.slice(boundary),\n\t\tcutIndex: boundary,\n\t};\n}\n\n/**\n * Extract the most recent compaction summary from messages.\n *\n * Looks for a message that appears to be a compaction summary (contains\n * the characteristic handoff prefix or compaction footer).\n *\n * @param messages - Messages to search\n * @returns Previous summary text or undefined\n */\nexport function findPreviousSummary(\n\tmessages: AppMessage[],\n): string | undefined {\n\tfor (const message of messages) {\n\t\tif (isDecoratedCompactionSummaryMessage(message)) {\n\t\t\tconst text = extractMessageText(message);\n\t\t\tif (text) {\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\n// ============================================================================\n// Orchestrated Compaction\n// ============================================================================\n\n/**\n * Minimal agent interface required by performCompaction.\n * Avoids depending on the full Agent class to keep this module leaf-level.\n */\nexport interface CompactionAgent {\n\tstate: {\n\t\tmessages: AppMessage[];\n\t\tmodel: { api: Api; provider: string; id: string };\n\t\tsystemPromptSourcePaths?: string[];\n\t\tpromptContextManifest?: PromptProjectDocManifest;\n\t};\n\tgenerateSummary(\n\t\thistory: AppMessage[],\n\t\tprompt: string,\n\t\tsystemPrompt: string,\n\t): Promise<AssistantMessage>;\n\treplaceMessages(messages: AppMessage[]): void;\n\tappendMessage?(message: AppMessage): void;\n\tclearTransientRunState?(options?: {\n\t\tclearSessionContextCache?: boolean;\n\t}): void;\n}\n\n/**\n * Minimal session manager interface required by performCompaction.\n */\nexport interface CompactionSessionManager {\n\tbuildSessionContext(): { messageEntries: Array<{ id?: string }> };\n\tsaveCompaction(\n\t\tsummary: string,\n\t\tfirstKeptEntryIndex: number,\n\t\ttokensBefore: number,\n\t\toptions?: {\n\t\t\tauto?: boolean;\n\t\t\tcustomInstructions?: string;\n\t\t\tfirstKeptEntryId?: string;\n\t\t},\n\t): void;\n\tsaveMessage(message: AppMessage): void;\n}\n\n/**\n * Result of a performCompaction() call.\n */\nexport interface PerformCompactionResult {\n\tsuccess: boolean;\n\tcompactedCount?: number;\n\tsummary?: string;\n\tfirstKeptEntryIndex?: number;\n\ttokensBefore?: number;\n\terror?: string;\n}\n\nfunction buildEffectiveCustomInstructions(\n\tcustomInstructions: string | undefined,\n\thookResult?: {\n\t\tsystemMessage?: string;\n\t\tadditionalContext?: string;\n\t},\n): string | undefined {\n\tconst trimmedCustomInstructions = customInstructions?.trim();\n\tconst hookSections = [\n\t\thookResult?.systemMessage?.trim()\n\t\t\t? `Hook system guidance:\\n${hookResult.systemMessage.trim()}`\n\t\t\t: null,\n\t\thookResult?.additionalContext?.trim()\n\t\t\t? `Hook context:\\n${hookResult.additionalContext.trim()}`\n\t\t\t: null,\n\t].filter((section): section is string => Boolean(section));\n\n\tif (hookSections.length === 0) {\n\t\treturn trimmedCustomInstructions || undefined;\n\t}\n\n\tif (!trimmedCustomInstructions) {\n\t\treturn hookSections.join(\"\\n\\n\");\n\t}\n\n\treturn `${trimmedCustomInstructions}\\n\\n${hookSections.join(\"\\n\\n\")}`;\n}\n\nfunction buildPostCompactHookMessages(hookResult: {\n\tsystemMessage?: string;\n\tadditionalContext?: string;\n}): AppMessage[] {\n\tconst timestamp = new Date().toISOString();\n\tconst messages: AppMessage[] = [];\n\tconst systemMessage = hookResult.systemMessage?.trim();\n\tif (systemMessage) {\n\t\tmessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\t\"PostCompact\",\n\t\t\t\t`PostCompact hook system guidance:\\n${systemMessage}`,\n\t\t\t\ttrue,\n\t\t\t\tundefined,\n\t\t\t\ttimestamp,\n\t\t\t),\n\t\t);\n\t}\n\n\tconst additionalContext = hookResult.additionalContext?.trim();\n\tif (additionalContext) {\n\t\tmessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\t\"PostCompact\",\n\t\t\t\tadditionalContext,\n\t\t\t\ttrue,\n\t\t\t\tundefined,\n\t\t\t\ttimestamp,\n\t\t\t),\n\t\t);\n\t}\n\n\treturn messages;\n}\n\n/**\n * Perform context compaction end-to-end: calculate boundary, generate summary,\n * replace messages, and persist to session.\n *\n * This function consolidates the compaction logic previously duplicated across\n * main.ts (auto-compact + RPC compact) and ConversationCompactor.\n *\n * @param params.agent - Agent instance (or compatible interface)\n * @param params.sessionManager - Session persistence manager\n * @param params.auto - Whether this is an auto-triggered compaction\n * @param params.customInstructions - Optional focus instructions for summary\n * @param params.renderSummaryText - Optional callback to render an AssistantMessage to plain text.\n * When omitted, performCompaction uses a JSON-based fallback extractor.\n * @returns Result indicating success or failure\n */\nexport async function performCompaction(params: {\n\tagent: CompactionAgent;\n\tsessionManager: CompactionSessionManager;\n\tauto?: boolean;\n\ttrigger?: \"auto\" | \"manual\" | \"token_limit\";\n\tcustomInstructions?: string;\n\tpersistCustomInstructions?: boolean;\n\thookContext?: CompactionHookContext;\n\thookService?: CompactionHookService;\n\tgetPostKeepMessages?: (\n\t\tpreservedMessages: AppMessage[],\n\t) => Promise<AppMessage[]>;\n\trenderSummaryText?: (message: AssistantMessage) => string;\n\treadRestoreExecute?: ReadRestoreExecutor;\n\tprofileName?: string;\n\tcliOverrides?: Partial<ComposerConfig>;\n}): Promise<PerformCompactionResult> {\n\tconst {\n\t\tagent,\n\t\tsessionManager,\n\t\tauto,\n\t\ttrigger,\n\t\tcustomInstructions,\n\t\tpersistCustomInstructions = true,\n\t\thookContext,\n\t\thookService,\n\t\tgetPostKeepMessages,\n\t\trenderSummaryText,\n\t\treadRestoreExecute = readTool.execute,\n\t\tprofileName,\n\t\tcliOverrides,\n\t} = params;\n\tconst messages = [...agent.state.messages];\n\tconst keepCount = 6;\n\n\tif (messages.length <= keepCount + 1) {\n\t\treturn { success: false, error: \"Not enough history to compact\" };\n\t}\n\n\t// Calculate boundary using token-based cut point detection\n\tlet boundary = Math.max(0, messages.length - keepCount);\n\tconst lastUsage = getLastAssistantUsage(messages);\n\tif (lastUsage) {\n\t\tconst tokenBasedCut = findCutPoint(\n\t\t\tmessages,\n\t\t\t0,\n\t\t\tmessages.length,\n\t\t\tDEFAULT_COMPACTION_SETTINGS.keepRecentTokens,\n\t\t);\n\t\tboundary = Math.max(boundary, tokenBasedCut);\n\t}\n\tboundary = adjustBoundaryForToolResults(messages, boundary);\n\n\tconst older = messages.slice(0, boundary);\n\tif (!older.length) {\n\t\treturn { success: false, error: \"No earlier messages to compact\" };\n\t}\n\tconst keep = stripRuntimeRestoreMessages(messages.slice(boundary));\n\tconst workspaceCwd = hookContext?.cwd ?? process.cwd();\n\tconst promptContextPaths = agent.state.promptContextManifest\n\t\t? agent.state.promptContextManifest.entries.map((entry) => entry.path)\n\t\t: resolvePromptLoadedProjectDocPaths(workspaceCwd);\n\tconst restoredReadMessages = await collectRecentReadRestoreMessages(\n\t\tolder,\n\t\tkeep,\n\t\t[...promptContextPaths, ...(agent.state.systemPromptSourcePaths ?? [])],\n\t\treadRestoreExecute,\n\t\tprofileName,\n\t\tworkspaceCwd,\n\t\tcliOverrides,\n\t);\n\tconst readPathsRestoredAfterCompaction =\n\t\tcollectRestoredReadPaths(restoredReadMessages);\n\n\tconst tokensBefore = lastUsage ? calculateContextTokens(lastUsage) : 0;\n\tlet effectiveCustomInstructions = customInstructions;\n\n\tconst effectiveHookService =\n\t\thookService ??\n\t\t(hookContext ? createCompactionHookService(hookContext) : undefined);\n\n\tif (effectiveHookService) {\n\t\tif (\n\t\t\t!effectiveHookService.hasHooks ||\n\t\t\teffectiveHookService.hasHooks(\"PreCompact\")\n\t\t) {\n\t\t\tconst hookResult = await effectiveHookService.runPreCompactHooks(\n\t\t\t\ttrigger ?? (auto ? \"auto\" : \"manual\"),\n\t\t\t\ttokensBefore,\n\t\t\t\tDEFAULT_COMPACTION_SETTINGS.keepRecentTokens,\n\t\t\t\thookContext?.signal,\n\t\t\t);\n\n\t\t\tif (hookResult.blocked) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror:\n\t\t\t\t\t\thookResult.blockReason ?? \"Compaction blocked by PreCompact hook\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (hookResult.preventContinuation) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror:\n\t\t\t\t\t\thookResult.stopReason ?? \"Compaction prevented by PreCompact hook\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\teffectiveCustomInstructions = buildEffectiveCustomInstructions(\n\t\t\t\tcustomInstructions,\n\t\t\t\thookResult,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Look for previous summary (cascading)\n\tconst previousSummary = findPreviousSummary(messages);\n\tconst sliceSize = Math.min(40, older.length);\n\tconst olderForSummary = stripRedundantPreviousCompactionMessages(\n\t\tprepareMessagesForCompactionSummary(\n\t\t\tolder.slice(-sliceSize),\n\t\t\treadPathsRestoredAfterCompaction,\n\t\t),\n\t\tpreviousSummary,\n\t);\n\tconst summaryInput: AppMessage[] = [];\n\tif (previousSummary) {\n\t\tsummaryInput.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: `Previous session summary:\\n${previousSummary}`,\n\t\t\ttimestamp: Date.now(),\n\t\t});\n\t}\n\tsummaryInput.push(...olderForSummary);\n\n\tlet summaryText = \"\";\n\tlet usedModel = false;\n\tlet summaryInputForAttempt = summaryInput;\n\tlet overflowAttempts = 0;\n\n\tfor (;;) {\n\t\tconst prompt = buildSummarizationPrompt(effectiveCustomInstructions);\n\t\ttry {\n\t\t\tconst summary = await agent.generateSummary(\n\t\t\t\tsummaryInputForAttempt,\n\t\t\t\tprompt,\n\t\t\t\t\"You are a careful note-taker that distills coding conversations into actionable summaries.\",\n\t\t\t);\n\t\t\tif (isCompactionOverflowMessage(summary)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsummary.errorMessage ||\n\t\t\t\t\t\textractMessageText(summary) ||\n\t\t\t\t\t\t\"Prompt too long\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst llmText = renderSummaryText\n\t\t\t\t? renderSummaryText(summary)\n\t\t\t\t: extractMessageText(summary);\n\t\t\tsummaryText = llmText.trim() || buildLocalSummary(olderForSummary, 32);\n\t\t\tusedModel = true;\n\t\t\tbreak;\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\tisOverflowErrorMessage(error.message) &&\n\t\t\t\toverflowAttempts < MAX_COMPACTION_OVERFLOW_RETRIES\n\t\t\t) {\n\t\t\t\tconst truncated = truncateSummaryInputForOverflowRetry(\n\t\t\t\t\tsummaryInputForAttempt,\n\t\t\t\t\terror.message,\n\t\t\t\t);\n\t\t\t\tif (truncated) {\n\t\t\t\t\tsummaryInputForAttempt = truncated;\n\t\t\t\t\toverflowAttempts += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsummaryText = buildLocalSummary(olderForSummary, 32);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst decorated = decorateSummaryText(summaryText, older.length, usedModel);\n\n\t// Build summary and resume messages\n\tconst summaryMessage: AssistantMessage = {\n\t\trole: \"assistant\",\n\t\tcontent: [{ type: \"text\", text: decorated }],\n\t\tapi: agent.state.model.api,\n\t\tprovider: agent.state.model.provider,\n\t\tmodel: agent.state.model.id,\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"stop\",\n\t\ttimestamp: Date.now(),\n\t};\n\n\tconst resumeMessage: AppMessage = {\n\t\trole: \"user\",\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: COMPACTION_RESUME_PROMPT,\n\t\t\t},\n\t\t],\n\t\ttimestamp: Date.now(),\n\t};\n\n\tconst sessionContext = sessionManager.buildSessionContext();\n\tconst firstKeptEntryId = sessionContext.messageEntries[boundary]?.id;\n\n\t// Persist compaction to session\n\tsessionManager.saveCompaction(summaryText, boundary, tokensBefore, {\n\t\tauto,\n\t\tcustomInstructions: persistCustomInstructions\n\t\t\t? customInstructions\n\t\t\t: undefined,\n\t\tfirstKeptEntryId,\n\t});\n\n\tconst callerPostKeepMessages = (await getPostKeepMessages?.(keep)) ?? [];\n\tconst preservedTailMessages = [...keep, ...callerPostKeepMessages];\n\tconst dedupedRestoredReadMessages = restoredReadMessages.filter((message) => {\n\t\tif (\n\t\t\tmessage.role !== \"hookMessage\" ||\n\t\t\tmessage.customType !== READ_RESTORE_COMPACTION_CUSTOM_TYPE ||\n\t\t\t!Array.isArray(message.content)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst details = message.details;\n\t\tconst filePath =\n\t\t\ttypeof details === \"object\" &&\n\t\t\tdetails !== null &&\n\t\t\t\"filePath\" in details &&\n\t\t\ttypeof details.filePath === \"string\"\n\t\t\t\t? details.filePath\n\t\t\t\t: null;\n\t\treturn (\n\t\t\tfilePath !== null &&\n\t\t\t!hasReadRestoreMessage(preservedTailMessages, filePath, message.content)\n\t\t);\n\t});\n\tconst skillRestoreResult = await collectRecentSkillRestoreMessages(\n\t\tolder,\n\t\tpreservedTailMessages,\n\t);\n\tconst readRestorePathsToReplace = collectReadRestorePathsToReplace(\n\t\tkeep,\n\t\tdedupedRestoredReadMessages,\n\t);\n\tconst planFilePathsToReplace = collectPlanFilePathsToReplace(\n\t\tkeep,\n\t\tcallerPostKeepMessages,\n\t);\n\tconst currentPlanFilePaths = collectPlanRestorePaths(\n\t\tcallerPostKeepMessages,\n\t\tgetPlanFileRestorePath,\n\t);\n\tconst currentPlanModePaths = collectPlanRestorePaths(\n\t\tcallerPostKeepMessages,\n\t\tgetPlanModeRestorePath,\n\t);\n\tconst activeSkillNamesToReplace = collectActiveSkillNamesToReplace(\n\t\tkeep,\n\t\tcallerPostKeepMessages,\n\t);\n\tconst filteredKeep = keep.filter(\n\t\t(message) =>\n\t\t\t!shouldReplacePreservedReadRestoreMessage(\n\t\t\t\tmessage,\n\t\t\t\treadRestorePathsToReplace,\n\t\t\t) &&\n\t\t\t!shouldReplacePreservedPlanFileMessage(\n\t\t\t\tmessage,\n\t\t\t\tplanFilePathsToReplace,\n\t\t\t\tcurrentPlanFilePaths,\n\t\t\t) &&\n\t\t\t!shouldReplacePreservedPlanModeMessage(message, currentPlanModePaths) &&\n\t\t\t!shouldReplacePreservedToolSkillMessage(\n\t\t\t\tmessage,\n\t\t\t\tskillRestoreResult.replacedPreservedToolSkillNames,\n\t\t\t) &&\n\t\t\t!shouldReplacePreservedActiveSkillMessage(\n\t\t\t\tmessage,\n\t\t\t\tactiveSkillNamesToReplace,\n\t\t\t),\n\t);\n\n\t// Replace agent messages\n\tconst newMessages = [\n\t\tsummaryMessage as AppMessage,\n\t\tresumeMessage,\n\t\t...filteredKeep,\n\t];\n\tagent.replaceMessages(newMessages);\n\tagent.clearTransientRunState?.({ clearSessionContextCache: true });\n\tsessionManager.saveMessage(summaryMessage);\n\tsessionManager.saveMessage(resumeMessage);\n\tawait runPostCompactionCleanup({\n\t\tauto,\n\t\tcustomInstructions,\n\t\tcompactedCount: older.length,\n\t\tfirstKeptEntryIndex: boundary,\n\t});\n\n\tconst appendedTailMessages: AppMessage[] = [];\n\tconst persistTailMessages = (messagesToPersist: AppMessage[]) => {\n\t\tif (messagesToPersist.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tappendedTailMessages.push(...messagesToPersist);\n\t\tif (typeof agent.appendMessage === \"function\") {\n\t\t\tfor (const message of messagesToPersist) {\n\t\t\t\tagent.appendMessage(message);\n\t\t\t\tsessionManager.saveMessage(message);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tagent.replaceMessages([\n\t\t\tsummaryMessage as AppMessage,\n\t\t\tresumeMessage,\n\t\t\t...filteredKeep,\n\t\t\t...appendedTailMessages,\n\t\t]);\n\t\tfor (const message of messagesToPersist) {\n\t\t\tsessionManager.saveMessage(message);\n\t\t}\n\t};\n\tconst postKeepMessages = [\n\t\t...dedupedRestoredReadMessages,\n\t\t...skillRestoreResult.restoredMessages,\n\t\t...callerPostKeepMessages,\n\t];\n\tpersistTailMessages(postKeepMessages);\n\n\tlet postCompactHookMessages: AppMessage[] = [];\n\n\tif (\n\t\teffectiveHookService?.runPostCompactHooks &&\n\t\t(!effectiveHookService.hasHooks ||\n\t\t\teffectiveHookService.hasHooks(\"PostCompact\"))\n\t) {\n\t\tconst postCompactHookResult =\n\t\t\tawait effectiveHookService.runPostCompactHooks(\n\t\t\t\ttrigger ?? (auto ? \"auto\" : \"manual\"),\n\t\t\t\tsummaryText,\n\t\t\t\thookContext?.signal,\n\t\t\t);\n\t\tif (\n\t\t\tpostCompactHookResult.blocked ||\n\t\t\tpostCompactHookResult.preventContinuation\n\t\t) {\n\t\t\tlogger.warn(\n\t\t\t\t\"PostCompact hook returned unsupported control flow request; ignoring\",\n\t\t\t\t{\n\t\t\t\t\ttrigger: trigger ?? (auto ? \"auto\" : \"manual\"),\n\t\t\t\t\tblocked: postCompactHookResult.blocked,\n\t\t\t\t\tpreventContinuation: postCompactHookResult.preventContinuation,\n\t\t\t\t\treason:\n\t\t\t\t\t\tpostCompactHookResult.blockReason ??\n\t\t\t\t\t\tpostCompactHookResult.stopReason,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tpostCompactHookMessages = buildPostCompactHookMessages(\n\t\t\tpostCompactHookResult,\n\t\t);\n\t\tpersistTailMessages(postCompactHookMessages);\n\t}\n\n\treturn {\n\t\tsuccess: true,\n\t\tcompactedCount: older.length,\n\t\tsummary: summaryText,\n\t\tfirstKeptEntryIndex: boundary,\n\t\ttokensBefore,\n\t};\n}\n"]}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/agent/compaction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Context Compaction - Pure Functions for Long Session Management\n *\n * This module provides pure functions for context compaction logic. Context\n * compaction summarizes older conversation history when approaching token limits,\n * allowing conversations to continue indefinitely while preserving important context.\n *\n * ## Architecture\n *\n * The compaction system follows a separation of concerns:\n * - **This module**: Pure functions for token calculation, cut point detection, and\n * determining when compaction should trigger. No I/O or side effects.\n * - **SessionManager**: Handles persistence of compaction entries to session files.\n * - **ConversationCompactor**: Orchestrates the compaction process with TUI integration.\n *\n * ## Token-Based Cut Point Detection\n *\n * Instead of using a fixed message count, cut point detection uses actual token usage\n * from assistant messages. The algorithm walks backwards from the newest message,\n * calculating cumulative token differences until `keepRecentTokens` is exceeded.\n *\n * This approach:\n * - Preserves more context when messages are small\n * - Compacts more aggressively when messages are large\n * - Respects turn boundaries (never splits user/assistant/toolResult groups)\n *\n * ## Summarization Strategy\n *\n * When compacting, older messages are summarized using the LLM with a handoff-style\n * prompt. If a previous compaction exists, its summary is included as context for\n * the new summarization (cascading summaries).\n *\n * @module agent/compaction\n */\n\nimport { realpathSync } from \"node:fs\";\nimport { resolve as resolvePath } from \"node:path\";\nimport {\n\tresolveExistingAppendSystemPromptPaths,\n\tresolvePromptLoadedProjectDocPaths,\n} from \"../config/index.js\";\nimport type {\n\tComposerConfig,\n\tPromptProjectDocManifest,\n} from \"../config/index.js\";\nimport { readTool } from \"../tools/read.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { expandUserPath } from \"../utils/path-validation.js\";\nimport { sanitizeWithStaticMask } from \"../utils/secret-redactor.js\";\nimport { runPostCompactionCleanup } from \"./compaction-cleanup.js\";\nimport {\n\ttype CompactionHookContext,\n\ttype CompactionHookService,\n\tcreateCompactionHookService,\n} from \"./compaction-hooks.js\";\nimport {\n\tDEFAULT_COMPACTION_SETTINGS,\n\tadjustBoundaryForToolResults,\n\tcalculateContextTokens,\n\tfindCutPoint,\n\tfindTurnBoundaries,\n\tgetLastAssistantUsage,\n} from \"./compaction/cut-points.js\";\nimport type { CompactionSettings } from \"./compaction/cut-points.js\";\nimport { getSkillArtifactMetadataFromDetails } from \"./skill-artifact-metadata.js\";\nexport {\n\tDEFAULT_COMPACTION_SETTINGS,\n\tadjustBoundaryForToolResults,\n\tcalculateContextTokens,\n\tcalculateUsagePercent,\n\tfindCutPoint,\n\tfindCutPointWithSplitInfo,\n\tfindTurnStartIndex,\n\tgetLastAssistantUsage,\n\tgetLastAssistantUsageFromEntries,\n\tshouldCompact,\n} from \"./compaction/cut-points.js\";\nexport type {\n\tCompactionSettings,\n\tCutPointResult,\n} from \"./compaction/cut-points.js\";\nimport {\n\tBACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE,\n\tHEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE,\n\tMCP_SERVERS_COMPACTION_CUSTOM_TYPE,\n\tPLAN_FILE_COMPACTION_CUSTOM_TYPE,\n\tPLAN_MODE_COMPACTION_CUSTOM_TYPE,\n} from \"./compaction-restoration.js\";\nexport {\n\tCOMPACTION_RESUME_PROMPT,\n\tisCompactionResumePromptMessage,\n\tisCompactionResumePromptText,\n\tisDecoratedCompactionSummaryMessage,\n\tisDecoratedCompactionSummaryText,\n} from \"./compaction-markers.js\";\nimport {\n\tCOMPACTION_RESUME_PROMPT,\n\tisCompactionResumePromptMessage,\n\tisCompactionResumePromptText,\n\tisDecoratedCompactionSummaryMessage,\n\tisDecoratedCompactionSummaryText,\n} from \"./compaction-markers.js\";\nimport {\n\tisContextOverflow as isCompactionOverflowMessage,\n\tisOverflowErrorMessage,\n\tparseOverflowDetails,\n} from \"./context-overflow.js\";\nimport {\n\tconvertAppMessageToLlm,\n\tcreateHookMessage,\n} from \"./custom-messages.js\";\nimport { getPlanFilePathForCompactionRestore } from \"./plan-mode.js\";\nimport { SESSION_START_INITIAL_USER_METADATA_KIND } from \"./session-start-metadata.js\";\nimport type {\n\tApi,\n\tAppMessage,\n\tAssistantMessage,\n\tHookMessage,\n\tImageContent,\n\tTextContent,\n\tToolResultMessage,\n\tUserMessage,\n\tUserMessageWithAttachments,\n} from \"./types.js\";\n\nconst logger = createLogger(\"agent:compaction\");\n\n// ============================================================================\n// Types\n// ============================================================================\n\nconst MAX_COMPACTION_OVERFLOW_RETRIES = 3;\nconst PREVIOUS_SUMMARY_PREFIX = \"Previous session summary:\\n\";\nconst COMPACTION_OVERFLOW_RETRY_MARKER =\n\t\"[earlier conversation truncated for compaction retry]\";\nconst READ_RESTORE_COMPACTION_CUSTOM_TYPE = \"read-file\";\nconst MAX_READ_RESTORE_MESSAGES = 5;\nconst READ_RESTORE_TOKEN_BUDGET = 50_000;\nconst READ_RESTORE_MAX_TOKENS_PER_FILE = 5_000;\nconst READ_RESTORE_TRUNCATION_MARKER =\n\t\"\\n\\n[... restored read result truncated for compaction; use `read` on the path again if you need the full contents]\";\nconst SKILL_RESTORE_TOKEN_BUDGET = 25_000;\nconst SKILL_RESTORE_MAX_TOKENS_PER_SKILL = 5_000;\nconst SKILL_RESTORE_TRUNCATION_MARKER =\n\t\"\\n\\n[... restored skill truncated for compaction; use the `Skill` tool again if you need the full instructions]\";\n\n/**\n * Result of a compaction operation, ready to be persisted.\n */\nexport interface CompactionResult {\n\t/** Generated summary of compacted messages */\n\tsummary: string;\n\t/** Index of first entry to keep (entries before this are summarized) */\n\tfirstKeptEntryIndex: number;\n\t/** Token count before compaction (for metrics) */\n\ttokensBefore: number;\n\t/** Messages that were summarized */\n\tsummarizedMessages: AppMessage[];\n\t/** Messages to keep verbatim */\n\tkeptMessages: AppMessage[];\n}\n\n// ============================================================================\n// Token Calculation\n// ============================================================================\n\nfunction shouldSkipAssistantCompactionMessage(message: AppMessage): boolean {\n\treturn (\n\t\tmessage.role === \"assistant\" &&\n\t\t(message.stopReason === \"aborted\" || message.stopReason === \"error\")\n\t);\n}\n\nfunction shouldSkipReinjectedCompactionMessage(message: AppMessage): boolean {\n\treturn (\n\t\t(message.role === \"hookMessage\" &&\n\t\t\t((message.customType === \"skill\" && message.display === false) ||\n\t\t\t\tmessage.customType === READ_RESTORE_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === PLAN_FILE_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === BACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType ===\n\t\t\t\t\tHEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === MCP_SERVERS_COMPACTION_CUSTOM_TYPE ||\n\t\t\t\tmessage.customType === \"PostCompact\" ||\n\t\t\t\tmessage.customType === \"SessionStart\" ||\n\t\t\t\tmessage.customType === PLAN_MODE_COMPACTION_CUSTOM_TYPE)) ||\n\t\tisSessionStartInitialUserMessage(message)\n\t);\n}\n\nfunction isSessionStartInitialUserMessage(message: AppMessage): boolean {\n\treturn (\n\t\tmessage.role === \"user\" &&\n\t\ttypeof message.metadata === \"object\" &&\n\t\tmessage.metadata !== null &&\n\t\tmessage.metadata.kind === SESSION_START_INITIAL_USER_METADATA_KIND\n\t);\n}\n\nfunction stripRuntimeRestoreMessages(messages: AppMessage[]): AppMessage[] {\n\treturn messages.filter(\n\t\t(message) =>\n\t\t\t(message.role !== \"hookMessage\" ||\n\t\t\t\t(message.customType !== BACKGROUND_TASKS_COMPACTION_CUSTOM_TYPE &&\n\t\t\t\t\tmessage.customType !==\n\t\t\t\t\t\tHEADLESS_CLIENT_REQUESTS_COMPACTION_CUSTOM_TYPE &&\n\t\t\t\t\tmessage.customType !== MCP_SERVERS_COMPACTION_CUSTOM_TYPE &&\n\t\t\t\t\tmessage.customType !== \"SessionStart\")) &&\n\t\t\t!isSessionStartInitialUserMessage(message),\n\t);\n}\n\nfunction normalizeReadPath(path: string): string {\n\treturn resolvePath(expandUserPath(path));\n}\n\nfunction normalizeComparableReadPath(path: string): string {\n\tconst normalizedPath = normalizeReadPath(path);\n\ttry {\n\t\treturn realpathSync.native(normalizedPath);\n\t} catch {\n\t\treturn normalizedPath;\n\t}\n}\n\nfunction getExcludedReadRestorePaths(\n\tadditionalPaths: string[] = [],\n\tprofileName?: string,\n\tcwd: string = process.cwd(),\n\tcliOverrides?: Partial<ComposerConfig>,\n): Set<string> {\n\tconst appendSystemPromptPaths = resolveExistingAppendSystemPromptPaths(\n\t\tcwd,\n\t\tprofileName,\n\t\tcliOverrides,\n\t);\n\tconst trackedPlanFilePath = getPlanFilePathForCompactionRestore();\n\treturn new Set(\n\t\t[\n\t\t\t...appendSystemPromptPaths,\n\t\t\t...(trackedPlanFilePath ? [trackedPlanFilePath] : []),\n\t\t\t...additionalPaths,\n\t\t].map((path) => normalizeComparableReadPath(path)),\n\t);\n}\n\nfunction shouldExcludeReadRestorePath(\n\tfilePath: string,\n\texcludedPaths: Set<string>,\n): boolean {\n\treturn excludedPaths.has(normalizeComparableReadPath(filePath));\n}\n\ntype ReadRestoreRequest = {\n\tpath: string;\n\toffset?: number;\n\tlimit?: number;\n\tmode?: \"normal\" | \"head\" | \"tail\";\n\tlineNumbers?: boolean;\n\twrapInCodeFence?: boolean;\n\tlanguage?: string;\n\tencoding?: \"utf-8\" | \"utf-16le\" | \"latin1\" | \"ascii\";\n};\n\ntype ReadRestoreExecutor = typeof readTool.execute;\n\nfunction parseOptionalInteger(value: unknown, minimum = 1): number | undefined {\n\treturn typeof value === \"number\" &&\n\t\tNumber.isInteger(value) &&\n\t\tvalue >= minimum\n\t\t? value\n\t\t: undefined;\n}\n\nfunction parseReadRestoreRequest(\n\targuments_: Record<string, unknown>,\n): ReadRestoreRequest | null {\n\tconst rawPath = arguments_.path;\n\tif (typeof rawPath !== \"string\") {\n\t\treturn null;\n\t}\n\n\tconst mode =\n\t\targuments_.mode === \"normal\" ||\n\t\targuments_.mode === \"head\" ||\n\t\targuments_.mode === \"tail\"\n\t\t\t? arguments_.mode\n\t\t\t: undefined;\n\tconst lineNumbers =\n\t\ttypeof arguments_.lineNumbers === \"boolean\"\n\t\t\t? arguments_.lineNumbers\n\t\t\t: undefined;\n\tconst wrapInCodeFence =\n\t\ttypeof arguments_.wrapInCodeFence === \"boolean\"\n\t\t\t? arguments_.wrapInCodeFence\n\t\t\t: undefined;\n\tconst language =\n\t\ttypeof arguments_.language === \"string\" ? arguments_.language : undefined;\n\tconst encoding =\n\t\targuments_.encoding === \"utf-8\" ||\n\t\targuments_.encoding === \"utf-16le\" ||\n\t\targuments_.encoding === \"latin1\" ||\n\t\targuments_.encoding === \"ascii\"\n\t\t\t? arguments_.encoding\n\t\t\t: undefined;\n\n\treturn {\n\t\tpath: normalizeReadPath(rawPath),\n\t\toffset: parseOptionalInteger(arguments_.offset),\n\t\tlimit: parseOptionalInteger(arguments_.limit),\n\t\tmode,\n\t\tlineNumbers,\n\t\twrapInCodeFence,\n\t\tlanguage,\n\t\tencoding,\n\t};\n}\n\nfunction collectReadRestoreRequestsByCallId(\n\tmessages: AppMessage[],\n): Map<string, ReadRestoreRequest> {\n\tconst requestsByCallId = new Map<string, ReadRestoreRequest>();\n\tfor (const message of messages) {\n\t\tif (message.role !== \"assistant\") {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const part of message.content) {\n\t\t\tif (part.type !== \"toolCall\" || part.name !== \"read\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst request = parseReadRestoreRequest(part.arguments);\n\t\t\tif (!request) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trequestsByCallId.set(part.id, request);\n\t\t}\n\t}\n\treturn requestsByCallId;\n}\n\nfunction collectVisibleReadPaths(messages: AppMessage[]): Set<string> {\n\tconst requestsByCallId = collectReadRestoreRequestsByCallId(messages);\n\tconst visiblePaths = new Set<string>();\n\tfor (const message of messages) {\n\t\tif (\n\t\t\tmessage.role !== \"toolResult\" ||\n\t\t\tmessage.toolName !== \"read\" ||\n\t\t\tmessage.isError\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst request = requestsByCallId.get(message.toolCallId);\n\t\tif (request) {\n\t\t\tvisiblePaths.add(request.path);\n\t\t}\n\t}\n\treturn visiblePaths;\n}\n\nfunction collectRestoredReadPaths(messages: AppMessage[]): Set<string> {\n\tconst restoredPaths = new Set<string>();\n\tfor (const message of messages) {\n\t\tconst filePath = getReadRestoreFilePath(message);\n\t\tif (filePath) {\n\t\t\trestoredPaths.add(normalizeReadPath(filePath));\n\t\t}\n\t}\n\treturn restoredPaths;\n}\n\nfunction extractSkillRestoreName(\n\tcontent: string | (TextContent | ImageContent)[],\n): string | null {\n\tconst text =\n\t\ttypeof content === \"string\"\n\t\t\t? content\n\t\t\t: content\n\t\t\t\t\t.filter((block): block is TextContent => block.type === \"text\")\n\t\t\t\t\t.map((block) => block.text)\n\t\t\t\t\t.join(\"\\n\");\n\tconst match = text.match(/^# Skill:\\s+(.+)$/m);\n\treturn match?.[1]?.trim() || null;\n}\n\nfunction normalizeSkillRestoreContent(\n\tcontent: string | (TextContent | ImageContent)[],\n): (TextContent | ImageContent)[] {\n\treturn typeof content === \"string\"\n\t\t? [{ type: \"text\", text: content }]\n\t\t: content;\n}\n\nfunction getSkillRestoreNameFromMessage(message: AppMessage): string | null {\n\tif (\n\t\tmessage.role === \"toolResult\" &&\n\t\tmessage.toolName === \"Skill\" &&\n\t\t!message.isError\n\t) {\n\t\treturn extractSkillRestoreName(message.content);\n\t}\n\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\tif (\n\t\ttypeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"name\" in details &&\n\t\ttypeof details.name === \"string\"\n\t) {\n\t\treturn details.name;\n\t}\n\n\treturn extractSkillRestoreName(message.content);\n}\n\nfunction collectSuccessfulSkillToolCallIds(\n\tmessages: AppMessage[],\n): Set<string> {\n\tconst toolCallIds = new Set<string>();\n\tfor (const message of messages) {\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\ttoolCallIds.add(message.toolCallId);\n\t\t}\n\t}\n\treturn toolCallIds;\n}\n\nfunction stripSuccessfulSkillToolCallsForCompactionSummary(\n\tmessage: AssistantMessage,\n\tsuccessfulSkillToolCallIds: ReadonlySet<string>,\n): AppMessage[] {\n\tif (successfulSkillToolCallIds.size === 0) {\n\t\treturn [message];\n\t}\n\n\tconst filteredContent = message.content.filter(\n\t\t(part) =>\n\t\t\tpart.type !== \"toolCall\" ||\n\t\t\tpart.name !== \"Skill\" ||\n\t\t\t!successfulSkillToolCallIds.has(part.id),\n\t);\n\tif (filteredContent.length === message.content.length) {\n\t\treturn [message];\n\t}\n\tif (filteredContent.length === 0) {\n\t\treturn [];\n\t}\n\treturn [{ ...message, content: filteredContent }];\n}\n\nfunction isToolSkillRestoreHookMessage(\n\tmessage: AppMessage,\n): message is HookMessage {\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn false;\n\t}\n\n\tconst details = message.details;\n\treturn (\n\t\ttypeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"source\" in details &&\n\t\tdetails.source === \"tool\"\n\t);\n}\n\nfunction isActiveSkillHookMessage(message: AppMessage): message is HookMessage {\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn false;\n\t}\n\n\tconst details = message.details;\n\treturn (\n\t\ttypeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"action\" in details &&\n\t\tdetails.action === \"activate\"\n\t);\n}\n\nfunction hasMatchingSkillRestoreContent(\n\tmessage: AppMessage,\n\texpectedContent: (TextContent | ImageContent)[],\n): boolean {\n\tif (\n\t\tmessage.role === \"toolResult\" &&\n\t\tmessage.toolName === \"Skill\" &&\n\t\t!message.isError\n\t) {\n\t\treturn (\n\t\t\tJSON.stringify(normalizeSkillRestoreContent(message.content)) ===\n\t\t\tJSON.stringify(expectedContent)\n\t\t);\n\t}\n\n\tif (message.role !== \"hookMessage\" || message.customType !== \"skill\") {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\tJSON.stringify(normalizeSkillRestoreContent(message.content)) ===\n\t\tJSON.stringify(expectedContent)\n\t);\n}\n\nfunction getPreservedSkillRestoreState(\n\tmessages: AppMessage[],\n\tskillName: string,\n\tcontent: (TextContent | ImageContent)[],\n): \"visible\" | \"replace\" | \"absent\" {\n\tlet hasStaleToolSkillHook = false;\n\n\tfor (const message of messages) {\n\t\tconst visibleSkillName = getSkillRestoreNameFromMessage(message);\n\t\tif (visibleSkillName !== skillName) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\treturn \"visible\";\n\t\t}\n\n\t\tif (hasMatchingSkillRestoreContent(message, content)) {\n\t\t\treturn \"visible\";\n\t\t}\n\n\t\tif (isToolSkillRestoreHookMessage(message)) {\n\t\t\thasStaleToolSkillHook = true;\n\t\t}\n\t}\n\n\treturn hasStaleToolSkillHook ? \"replace\" : \"absent\";\n}\n\nasync function refreshReadRestoreContent(\n\trequest: ReadRestoreRequest,\n\ttoolCallId: string,\n\treadRestoreExecute: ReadRestoreExecutor,\n): Promise<(TextContent | ImageContent)[] | null> {\n\ttry {\n\t\tconst result = await readRestoreExecute(toolCallId, {\n\t\t\tpath: request.path,\n\t\t\toffset: request.offset,\n\t\t\tlimit: request.limit,\n\t\t\tmode: request.mode,\n\t\t\tlineNumbers: request.lineNumbers,\n\t\t\twrapInCodeFence: request.wrapInCodeFence,\n\t\t\tlanguage: request.language,\n\t\t\tencoding: request.encoding,\n\t\t\twithDiagnostics: false,\n\t\t});\n\t\tif (result.isError) {\n\t\t\treturn null;\n\t\t}\n\t\treturn result.content.filter(\n\t\t\t(\n\t\t\t\tblock,\n\t\t\t): block is\n\t\t\t\t| { type: \"text\"; text: string }\n\t\t\t\t| { type: \"image\"; data: string; mimeType: string } =>\n\t\t\t\tblock.type === \"text\" || block.type === \"image\",\n\t\t);\n\t} catch (error) {\n\t\tlogger.warn(\"Failed to refresh read restore content during compaction\", {\n\t\t\tfilePath: request.path,\n\t\t\ttoolCallId,\n\t\t\terror: sanitizeWithStaticMask(\n\t\t\t\terror instanceof Error ? error.message : String(error),\n\t\t\t),\n\t\t});\n\t\treturn null;\n\t}\n}\n\nfunction buildReadRestoreContent(\n\tfilePath: string,\n\tcontent: (TextContent | ImageContent)[],\n): (TextContent | ImageContent)[] {\n\tconst header: TextContent = {\n\t\ttype: \"text\",\n\t\ttext: [\n\t\t\t\"# Recently read file restored after compaction\",\n\t\t\t\"\",\n\t\t\t`File: ${filePath}`,\n\t\t\t\"\",\n\t\t\t\"Last read result:\",\n\t\t].join(\"\\n\"),\n\t};\n\tconst remainingTokens = Math.max(\n\t\t0,\n\t\tREAD_RESTORE_MAX_TOKENS_PER_FILE - estimateHookContentTokens([header]),\n\t);\n\n\treturn [header, ...truncateReadRestoreBlocks(content, remainingTokens)];\n}\n\nfunction hasReadRestoreMessage(\n\tmessages: AppMessage[],\n\tfilePath: string,\n\tcontent: (TextContent | ImageContent)[],\n): boolean {\n\tconst expectedContent = JSON.stringify(content);\n\treturn messages.some((message) => {\n\t\tif (\n\t\t\tmessage.role !== \"hookMessage\" ||\n\t\t\tmessage.customType !== READ_RESTORE_COMPACTION_CUSTOM_TYPE\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst details = message.details;\n\t\tif (\n\t\t\ttypeof details === \"object\" &&\n\t\t\tdetails !== null &&\n\t\t\t\"filePath\" in details &&\n\t\t\ttypeof details.filePath === \"string\" &&\n\t\t\tdetails.filePath !== filePath\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn JSON.stringify(message.content) === expectedContent;\n\t});\n}\n\nfunction isReadRestoreHookMessage(message: AppMessage): message is HookMessage {\n\treturn (\n\t\tmessage.role === \"hookMessage\" &&\n\t\tmessage.customType === READ_RESTORE_COMPACTION_CUSTOM_TYPE\n\t);\n}\n\nfunction getReadRestoreFilePath(message: AppMessage): string | null {\n\tif (!isReadRestoreHookMessage(message)) {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\treturn typeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"filePath\" in details &&\n\t\ttypeof details.filePath === \"string\"\n\t\t? details.filePath\n\t\t: null;\n}\n\nfunction collectReadRestorePathsToReplace(\n\tpreservedMessages: AppMessage[],\n\trestoredMessages: AppMessage[],\n): Set<string> {\n\tconst filePathsToReplace = new Set<string>();\n\n\tfor (const message of restoredMessages) {\n\t\tif (!isReadRestoreHookMessage(message)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst filePath = getReadRestoreFilePath(message);\n\t\tif (!filePath || !Array.isArray(message.content)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const preservedMessage of preservedMessages) {\n\t\t\tif (getReadRestoreFilePath(preservedMessage) !== filePath) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!hasReadRestoreMessage([preservedMessage], filePath, message.content)\n\t\t\t) {\n\t\t\t\tfilePathsToReplace.add(filePath);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn filePathsToReplace;\n}\n\nfunction shouldReplacePreservedReadRestoreMessage(\n\tmessage: AppMessage,\n\treplacedFilePaths: Set<string>,\n): boolean {\n\tconst filePath = getReadRestoreFilePath(message);\n\treturn filePath !== null && replacedFilePaths.has(filePath);\n}\n\nfunction isPlanFileRestoreHookMessage(\n\tmessage: AppMessage,\n): message is HookMessage {\n\treturn (\n\t\tmessage.role === \"hookMessage\" &&\n\t\tmessage.customType === PLAN_FILE_COMPACTION_CUSTOM_TYPE\n\t);\n}\n\nfunction getPlanFileRestorePath(message: AppMessage): string | null {\n\tif (!isPlanFileRestoreHookMessage(message)) {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\treturn typeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"filePath\" in details &&\n\t\ttypeof details.filePath === \"string\"\n\t\t? details.filePath\n\t\t: null;\n}\n\nfunction isPlanModeRestoreHookMessage(\n\tmessage: AppMessage,\n): message is HookMessage {\n\treturn (\n\t\tmessage.role === \"hookMessage\" &&\n\t\tmessage.customType === PLAN_MODE_COMPACTION_CUSTOM_TYPE\n\t);\n}\n\nfunction getPlanModeRestorePath(message: AppMessage): string | null {\n\tif (!isPlanModeRestoreHookMessage(message)) {\n\t\treturn null;\n\t}\n\n\tconst details = message.details;\n\treturn typeof details === \"object\" &&\n\t\tdetails !== null &&\n\t\t\"filePath\" in details &&\n\t\ttypeof details.filePath === \"string\"\n\t\t? details.filePath\n\t\t: null;\n}\n\nfunction collectPlanRestorePaths(\n\trestoredMessages: AppMessage[],\n\tgetPath: (message: AppMessage) => string | null,\n): Set<string> {\n\tconst filePaths = new Set<string>();\n\tfor (const message of restoredMessages) {\n\t\tconst filePath = getPath(message);\n\t\tif (filePath) {\n\t\t\tfilePaths.add(filePath);\n\t\t}\n\t}\n\treturn filePaths;\n}\n\nfunction hasPlanFileRestoreMessage(\n\tmessages: AppMessage[],\n\tfilePath: string,\n\tcontent: string | (TextContent | ImageContent)[],\n): boolean {\n\tconst expectedContent = JSON.stringify(content);\n\treturn messages.some((message) => {\n\t\tif (!isPlanFileRestoreHookMessage(message)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (getPlanFileRestorePath(message) !== filePath) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn JSON.stringify(message.content) === expectedContent;\n\t});\n}\n\nfunction collectPlanFilePathsToReplace(\n\tpreservedMessages: AppMessage[],\n\trestoredMessages: AppMessage[],\n): Set<string> {\n\tconst filePathsToReplace = new Set<string>();\n\n\tfor (const message of restoredMessages) {\n\t\tif (!isPlanFileRestoreHookMessage(message)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst filePath = getPlanFileRestorePath(message);\n\t\tif (!filePath) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const preservedMessage of preservedMessages) {\n\t\t\tif (getPlanFileRestorePath(preservedMessage) !== filePath) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!hasPlanFileRestoreMessage(\n\t\t\t\t\t[preservedMessage],\n\t\t\t\t\tfilePath,\n\t\t\t\t\tmessage.content,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tfilePathsToReplace.add(filePath);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn filePathsToReplace;\n}\n\nfunction shouldReplacePreservedPlanFileMessage(\n\tmessage: AppMessage,\n\treplacedFilePaths: Set<string>,\n\tcurrentPlanFilePaths: Set<string>,\n): boolean {\n\tconst filePath = getPlanFileRestorePath(message);\n\treturn (\n\t\tfilePath !== null &&\n\t\t(replacedFilePaths.has(filePath) ||\n\t\t\t(currentPlanFilePaths.size > 0 && !currentPlanFilePaths.has(filePath)))\n\t);\n}\n\nfunction shouldReplacePreservedPlanModeMessage(\n\tmessage: AppMessage,\n\tcurrentPlanModePaths: Set<string>,\n): boolean {\n\tconst filePath = getPlanModeRestorePath(message);\n\treturn (\n\t\tfilePath !== null &&\n\t\tcurrentPlanModePaths.size > 0 &&\n\t\t!currentPlanModePaths.has(filePath)\n\t);\n}\n\nfunction estimateHookContentTokens(\n\tcontent: string | (TextContent | ImageContent)[],\n): number {\n\treturn Math.max(1, Math.ceil(JSON.stringify(content).length / 4));\n}\n\nfunction buildRestoreTruncationBlock(text: string): TextContent | null {\n\treturn estimateHookContentTokens([{ type: \"text\", text }]) > 0\n\t\t? { type: \"text\", text }\n\t\t: null;\n}\n\nfunction truncateRestoredHookBlocks(\n\tcontent: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n\toptions: {\n\t\ttextMarker: string;\n\t\timageMarker: string;\n\t},\n): (TextContent | ImageContent)[] {\n\tconst restored: (TextContent | ImageContent)[] = [];\n\tlet usedTokens = 0;\n\n\tfor (const block of content) {\n\t\tconst blockTokens = estimateHookContentTokens([block]);\n\t\tif (usedTokens + blockTokens <= maxTokens) {\n\t\t\trestored.push(block);\n\t\t\tusedTokens += blockTokens;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst remainingTokens = maxTokens - usedTokens;\n\t\tif (remainingTokens <= 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (block.type === \"text\") {\n\t\t\tconst charBudget = Math.max(\n\t\t\t\t0,\n\t\t\t\tremainingTokens * 4 - options.textMarker.length,\n\t\t\t);\n\t\t\tconst truncatedText =\n\t\t\t\tcharBudget > 0\n\t\t\t\t\t? `${block.text.slice(0, charBudget)}${options.textMarker}`\n\t\t\t\t\t: options.textMarker;\n\t\t\tconst truncationBlock = buildRestoreTruncationBlock(truncatedText);\n\t\t\tif (truncationBlock) {\n\t\t\t\trestored.push(truncationBlock);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tconst imageMarker = buildRestoreTruncationBlock(options.imageMarker);\n\t\tif (imageMarker) {\n\t\t\trestored.push(imageMarker);\n\t\t}\n\t\tbreak;\n\t}\n\n\treturn restored;\n}\n\nfunction truncateReadRestoreBlocks(\n\tcontent: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n): (TextContent | ImageContent)[] {\n\treturn truncateRestoredHookBlocks(content, maxTokens, {\n\t\ttextMarker: READ_RESTORE_TRUNCATION_MARKER,\n\t\timageMarker:\n\t\t\t\"[image omitted from restored read result due to compaction budget; use `read` on the path again if needed]\",\n\t});\n}\n\nfunction truncateSkillRestoreBlocks(\n\tcontent: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n): (TextContent | ImageContent)[] {\n\treturn truncateRestoredHookBlocks(content, maxTokens, {\n\t\ttextMarker: SKILL_RESTORE_TRUNCATION_MARKER,\n\t\timageMarker:\n\t\t\t\"[image omitted from restored skill due to compaction budget; use the `Skill` tool again if needed]\",\n\t});\n}\n\nasync function collectRecentReadRestoreMessages(\n\tcompactedMessages: AppMessage[],\n\tpreservedMessages: AppMessage[],\n\tadditionalExcludedPaths: string[] = [],\n\treadRestoreExecute: ReadRestoreExecutor = readTool.execute,\n\tprofileName?: string,\n\tcwd: string = process.cwd(),\n\tcliOverrides?: Partial<ComposerConfig>,\n): Promise<AppMessage[]> {\n\tconst visiblePaths = collectVisibleReadPaths(preservedMessages);\n\tconst requestsByCallId =\n\t\tcollectReadRestoreRequestsByCallId(compactedMessages);\n\tconst excludedPaths = getExcludedReadRestorePaths(\n\t\tadditionalExcludedPaths,\n\t\tprofileName,\n\t\tcwd,\n\t\tcliOverrides,\n\t);\n\tconst restoredMessages: AppMessage[] = [];\n\tconst seenPaths = new Set<string>();\n\tlet usedTokens = 0;\n\n\tfor (let i = compactedMessages.length - 1; i >= 0; i -= 1) {\n\t\tif (restoredMessages.length >= MAX_READ_RESTORE_MESSAGES) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst message = compactedMessages[i];\n\t\tif (!message) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet filePath: string | null = null;\n\t\tlet content: (TextContent | ImageContent)[] | null = null;\n\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"read\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\tconst request = requestsByCallId.get(message.toolCallId);\n\t\t\tfilePath = request?.path ?? null;\n\t\t\tconst refreshedContent = request\n\t\t\t\t? await refreshReadRestoreContent(\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\t`compaction-read-restore-${message.toolCallId}`,\n\t\t\t\t\t\treadRestoreExecute,\n\t\t\t\t\t)\n\t\t\t\t: null;\n\t\t\tcontent = buildReadRestoreContent(\n\t\t\t\tfilePath ?? \"\",\n\t\t\t\trefreshedContent ?? message.content,\n\t\t\t);\n\t\t} else if (\n\t\t\tmessage.role === \"hookMessage\" &&\n\t\t\tmessage.customType === READ_RESTORE_COMPACTION_CUSTOM_TYPE &&\n\t\t\tArray.isArray(message.content)\n\t\t) {\n\t\t\tconst details = message.details;\n\t\t\tfilePath =\n\t\t\t\ttypeof details === \"object\" &&\n\t\t\t\tdetails !== null &&\n\t\t\t\t\"filePath\" in details &&\n\t\t\t\ttypeof details.filePath === \"string\"\n\t\t\t\t\t? normalizeReadPath(details.filePath)\n\t\t\t\t\t: null;\n\t\t\tcontent = message.content;\n\t\t}\n\n\t\tif (\n\t\t\t!filePath ||\n\t\t\t!content ||\n\t\t\tvisiblePaths.has(filePath) ||\n\t\t\tseenPaths.has(filePath) ||\n\t\t\tshouldExcludeReadRestorePath(filePath, excludedPaths)\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst dedupeMessages = [...preservedMessages, ...restoredMessages];\n\t\tif (hasReadRestoreMessage(dedupeMessages, filePath, content)) {\n\t\t\tseenPaths.add(filePath);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst estimatedTokens = estimateHookContentTokens(content);\n\t\tif (usedTokens + estimatedTokens > READ_RESTORE_TOKEN_BUDGET) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tusedTokens += estimatedTokens;\n\t\tseenPaths.add(filePath);\n\t\trestoredMessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\tREAD_RESTORE_COMPACTION_CUSTOM_TYPE,\n\t\t\t\tcontent,\n\t\t\t\tfalse,\n\t\t\t\t{ filePath },\n\t\t\t\tnew Date().toISOString(),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn restoredMessages;\n}\n\ntype SkillRestoreCollectionResult = {\n\treplacedPreservedToolSkillNames: Set<string>;\n\trestoredMessages: AppMessage[];\n};\n\nasync function collectRecentSkillRestoreMessages(\n\tcompactedMessages: AppMessage[],\n\tpreservedMessages: AppMessage[],\n): Promise<SkillRestoreCollectionResult> {\n\tconst restoredMessages: AppMessage[] = [];\n\tconst seenSkillNames = new Set<string>();\n\tconst replacedPreservedToolSkillNames = new Set<string>();\n\tlet usedTokens = 0;\n\n\tfor (let i = compactedMessages.length - 1; i >= 0; i -= 1) {\n\t\tconst message = compactedMessages[i];\n\t\tif (!message) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet skillName: string | null = null;\n\t\tlet content: (TextContent | ImageContent)[] | null = null;\n\t\tlet skillMetadata: ReturnType<typeof getSkillArtifactMetadataFromDetails>;\n\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\tskillName = extractSkillRestoreName(message.content);\n\t\t\tcontent = truncateSkillRestoreBlocks(\n\t\t\t\tmessage.content,\n\t\t\t\tSKILL_RESTORE_MAX_TOKENS_PER_SKILL,\n\t\t\t);\n\t\t\tskillMetadata = getSkillArtifactMetadataFromDetails(message.details);\n\t\t} else if (\n\t\t\tmessage.role === \"hookMessage\" &&\n\t\t\tmessage.customType === \"skill\" &&\n\t\t\tmessage.display === false &&\n\t\t\tArray.isArray(message.content)\n\t\t) {\n\t\t\tconst details = message.details;\n\t\t\tconst sourcedFromTool =\n\t\t\t\ttypeof details === \"object\" &&\n\t\t\t\tdetails !== null &&\n\t\t\t\t\"source\" in details &&\n\t\t\t\tdetails.source === \"tool\";\n\t\t\tif (!sourcedFromTool) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tskillName =\n\t\t\t\ttypeof details === \"object\" &&\n\t\t\t\tdetails !== null &&\n\t\t\t\t\"name\" in details &&\n\t\t\t\ttypeof details.name === \"string\"\n\t\t\t\t\t? details.name\n\t\t\t\t\t: extractSkillRestoreName(message.content);\n\t\t\tcontent = message.content;\n\t\t\tskillMetadata = getSkillArtifactMetadataFromDetails(details);\n\t\t}\n\n\t\tif (!skillName || !content || seenSkillNames.has(skillName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst preservedState = getPreservedSkillRestoreState(\n\t\t\tpreservedMessages,\n\t\t\tskillName,\n\t\t\tcontent,\n\t\t);\n\t\tif (preservedState === \"visible\") {\n\t\t\tseenSkillNames.add(skillName);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst estimatedTokens = estimateHookContentTokens(content);\n\t\tif (usedTokens + estimatedTokens > SKILL_RESTORE_TOKEN_BUDGET) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tusedTokens += estimatedTokens;\n\t\tseenSkillNames.add(skillName);\n\t\tif (preservedState === \"replace\") {\n\t\t\treplacedPreservedToolSkillNames.add(skillName);\n\t\t}\n\t\trestoredMessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\t\"skill\",\n\t\t\t\tcontent,\n\t\t\t\tfalse,\n\t\t\t\t{\n\t\t\t\t\tname: skillName,\n\t\t\t\t\tsource: \"tool\",\n\t\t\t\t\tskillMetadata,\n\t\t\t\t},\n\t\t\t\tnew Date().toISOString(),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn { replacedPreservedToolSkillNames, restoredMessages };\n}\n\nfunction shouldReplacePreservedToolSkillMessage(\n\tmessage: AppMessage,\n\treplacedSkillNames: Set<string>,\n): boolean {\n\tif (!isToolSkillRestoreHookMessage(message)) {\n\t\treturn false;\n\t}\n\n\tconst skillName = getSkillRestoreNameFromMessage(message);\n\treturn skillName !== null && replacedSkillNames.has(skillName);\n}\n\nfunction collectActiveSkillNamesToReplace(\n\tpreservedMessages: AppMessage[],\n\tpostKeepMessages: AppMessage[],\n): Set<string> {\n\tconst activeSkillNamesToReplace = new Set<string>();\n\n\tfor (const message of postKeepMessages) {\n\t\tif (!isActiveSkillHookMessage(message)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst skillName = getSkillRestoreNameFromMessage(message);\n\t\tif (!skillName) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst expectedContent = normalizeSkillRestoreContent(message.content);\n\t\tfor (const preservedMessage of preservedMessages) {\n\t\t\tif (!isActiveSkillHookMessage(preservedMessage)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (getSkillRestoreNameFromMessage(preservedMessage) !== skillName) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!hasMatchingSkillRestoreContent(preservedMessage, expectedContent)) {\n\t\t\t\tactiveSkillNamesToReplace.add(skillName);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn activeSkillNamesToReplace;\n}\n\nfunction shouldReplacePreservedActiveSkillMessage(\n\tmessage: AppMessage,\n\treplacedSkillNames: Set<string>,\n): boolean {\n\tif (!isActiveSkillHookMessage(message)) {\n\t\treturn false;\n\t}\n\n\tconst skillName = getSkillRestoreNameFromMessage(message);\n\treturn skillName !== null && replacedSkillNames.has(skillName);\n}\n\nfunction buildAttachmentMarkers(message: UserMessageWithAttachments): string[] {\n\tif (!Array.isArray(message.attachments) || message.attachments.length === 0) {\n\t\treturn [];\n\t}\n\treturn message.attachments.map((attachment) =>\n\t\tattachment.type === \"document\" ? \"[document]\" : \"[image]\",\n\t);\n}\n\nfunction replaceImageBlocksWithMarkers(\n\tcontent: (TextContent | ImageContent)[],\n): (TextContent | ImageContent)[] {\n\treturn content.map((block) =>\n\t\tblock.type === \"image\" ? { type: \"text\", text: \"[image]\" } : block,\n\t);\n}\n\nfunction stripInlineImagesForCompactionSummary<\n\tT extends\n\t\t| UserMessage\n\t\t| UserMessageWithAttachments\n\t\t| HookMessage\n\t\t| ToolResultMessage,\n>(message: T): T {\n\tif (!Array.isArray(message.content)) {\n\t\treturn message;\n\t}\n\n\tlet hasImage = false;\n\tfor (const block of message.content) {\n\t\tif (block.type === \"image\") {\n\t\t\thasImage = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!hasImage) {\n\t\treturn message;\n\t}\n\n\treturn {\n\t\t...message,\n\t\tcontent: replaceImageBlocksWithMarkers(message.content),\n\t} as T;\n}\n\nfunction stripAttachmentsForCompactionSummary(\n\tmessage: UserMessageWithAttachments,\n): AppMessage {\n\tconst attachmentMarkers = buildAttachmentMarkers(message);\n\tif (attachmentMarkers.length === 0) {\n\t\treturn message;\n\t}\n\n\tconst { attachments: _attachments, ...rest } = message;\n\tconst markerText = attachmentMarkers.join(\"\\n\");\n\tif (typeof rest.content === \"string\") {\n\t\treturn {\n\t\t\t...rest,\n\t\t\tcontent: `${rest.content}\\n\\n${markerText}`,\n\t\t};\n\t}\n\n\treturn {\n\t\t...rest,\n\t\tcontent: [\n\t\t\t...rest.content,\n\t\t\t{\n\t\t\t\ttype: \"text\" as const,\n\t\t\t\ttext: markerText,\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction prepareMessagesForCompactionSummary(\n\tmessages: AppMessage[],\n\treadPathsRestoredAfterCompaction: ReadonlySet<string> = new Set(),\n): AppMessage[] {\n\tconst readRequestsByCallId =\n\t\treadPathsRestoredAfterCompaction.size > 0\n\t\t\t? collectReadRestoreRequestsByCallId(messages)\n\t\t\t: new Map<string, ReadRestoreRequest>();\n\tconst successfulSkillToolCallIds =\n\t\tcollectSuccessfulSkillToolCallIds(messages);\n\treturn messages.flatMap((message) => {\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"read\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\tconst request = readRequestsByCallId.get(message.toolCallId);\n\t\t\tif (request && readPathsRestoredAfterCompaction.has(request.path)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tmessage.role === \"toolResult\" &&\n\t\t\tmessage.toolName === \"Skill\" &&\n\t\t\t!message.isError\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\tif (\n\t\t\tshouldSkipAssistantCompactionMessage(message) ||\n\t\t\tshouldSkipReinjectedCompactionMessage(message)\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\tif (message.role === \"assistant\") {\n\t\t\treturn stripSuccessfulSkillToolCallsForCompactionSummary(\n\t\t\t\tmessage,\n\t\t\t\tsuccessfulSkillToolCallIds,\n\t\t\t);\n\t\t}\n\t\tif (message.role === \"user\") {\n\t\t\tconst sanitizedMessage = stripInlineImagesForCompactionSummary(message);\n\t\t\tif (\"attachments\" in sanitizedMessage) {\n\t\t\t\treturn [stripAttachmentsForCompactionSummary(sanitizedMessage)];\n\t\t\t}\n\t\t\treturn [sanitizedMessage];\n\t\t}\n\t\tif (message.role === \"toolResult\" || message.role === \"hookMessage\") {\n\t\t\treturn [stripInlineImagesForCompactionSummary(message)];\n\t\t}\n\t\treturn [message];\n\t});\n}\n\nfunction isPreviousSummaryPreamble(message: AppMessage | undefined): boolean {\n\treturn (\n\t\tmessage?.role === \"user\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\tmessage.content.startsWith(PREVIOUS_SUMMARY_PREFIX)\n\t);\n}\n\nfunction isOverflowRetryMarker(message: AppMessage | undefined): boolean {\n\treturn (\n\t\tmessage?.role === \"user\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\tmessage.content === COMPACTION_OVERFLOW_RETRY_MARKER\n\t);\n}\n\nfunction stripRedundantPreviousCompactionMessages(\n\tmessages: AppMessage[],\n\tpreviousSummary: string | undefined,\n): AppMessage[] {\n\tif (!previousSummary) {\n\t\treturn messages;\n\t}\n\n\treturn messages.filter(\n\t\t(message) =>\n\t\t\t!isDecoratedCompactionSummaryMessage(message) &&\n\t\t\t!isCompactionResumePromptMessage(message),\n\t);\n}\n\nfunction getOverflowTokenGap(errorMessage: string): number | undefined {\n\tconst parsed = parseOverflowDetails(errorMessage);\n\tif (parsed?.requestedTokens === undefined || parsed.maxTokens === undefined) {\n\t\treturn undefined;\n\t}\n\tconst gap = parsed.requestedTokens - parsed.maxTokens;\n\treturn gap > 0 ? gap : undefined;\n}\n\nfunction estimateRetryMessageTokens(message: AppMessage): number {\n\tconst llmMessage = convertAppMessageToLlm(message);\n\tif (!llmMessage) {\n\t\treturn 0;\n\t}\n\treturn Math.max(1, Math.ceil(JSON.stringify(llmMessage).length / 4));\n}\n\nfunction truncateSummaryInputForOverflowRetry(\n\tmessages: AppMessage[],\n\toverflowErrorMessage?: string,\n): AppMessage[] | null {\n\tif (messages.length < 2) {\n\t\treturn null;\n\t}\n\n\tconst preamble = isPreviousSummaryPreamble(messages[0]) ? messages[0] : null;\n\tconst bodyWithMarker = preamble ? messages.slice(1) : messages;\n\tconst body = isOverflowRetryMarker(bodyWithMarker[0])\n\t\t? bodyWithMarker.slice(1)\n\t\t: bodyWithMarker;\n\tif (body.length < 2) {\n\t\treturn null;\n\t}\n\n\tconst turnBoundaries = findTurnBoundaries(body, 0, body.length).filter(\n\t\t(index) => index > 0,\n\t);\n\tconst approximateDropCount = Math.max(1, Math.floor(body.length * 0.2));\n\tconst fallbackBoundary =\n\t\tturnBoundaries.find((index) => index >= approximateDropCount) ??\n\t\tapproximateDropCount;\n\tconst tokenGap = overflowErrorMessage\n\t\t? getOverflowTokenGap(overflowErrorMessage)\n\t\t: undefined;\n\tlet boundary = 0;\n\tif (tokenGap !== undefined) {\n\t\tlet coveredTokens = 0;\n\t\tconst segmentEnds = [...turnBoundaries, body.length];\n\t\tfor (const segmentEnd of segmentEnds) {\n\t\t\tif (segmentEnd <= boundary) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcoveredTokens += body\n\t\t\t\t.slice(boundary, segmentEnd)\n\t\t\t\t.reduce(\n\t\t\t\t\t(total, message) => total + estimateRetryMessageTokens(message),\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\tboundary = segmentEnd;\n\t\t\tif (coveredTokens >= tokenGap) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tboundary = fallbackBoundary;\n\t}\n\tif (boundary >= body.length) {\n\t\tboundary = fallbackBoundary;\n\t}\n\tboundary = adjustBoundaryForToolResults(body, boundary);\n\tif (boundary >= body.length) {\n\t\treturn null;\n\t}\n\n\tconst truncatedBody = body.slice(boundary);\n\tif (truncatedBody.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst markerMessage: AppMessage = {\n\t\trole: \"user\",\n\t\tcontent: COMPACTION_OVERFLOW_RETRY_MARKER,\n\t\ttimestamp: Date.now(),\n\t};\n\treturn preamble\n\t\t? [preamble, markerMessage, ...truncatedBody]\n\t\t: [markerMessage, ...truncatedBody];\n}\n\n// ============================================================================\n// Summarization\n// ============================================================================\n\n/**\n * Default prompt for generating compaction summaries.\n *\n * Based on research into Claude Code, Codex (OpenAI), and OpenCode (SST).\n * Focused on creating actionable handoff summaries for the resuming LLM.\n */\nexport const SUMMARIZATION_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION. Create a handoff summary for another LLM that will resume the task.\n\nInclude:\n- Current progress and key decisions made\n- Important context, constraints, or user preferences\n- Absolute file paths of any relevant files that were read or modified\n- What remains to be done (clear next steps)\n- Any critical data, examples, or references needed to continue\n\nBe concise, structured, and focused on helping the next LLM seamlessly continue the work.`;\n\n/**\n * Prompt for summarizing the prefix of a split turn.\n *\n * Used when compaction cuts in the middle of a turn (at an assistant message\n * rather than a user message). The prefix of the turn needs summarization\n * to provide context for the kept suffix.\n */\nexport const TURN_PREFIX_SUMMARIZATION_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION for a split turn.\nThis is the PREFIX of a turn that was too large to keep in full. The SUFFIX (recent work) is being kept.\n\nCreate a handoff summary that captures:\n- What the user originally asked for in this turn\n- Key decisions and progress made early in this turn\n- Important context needed to understand the kept suffix\n\nBe concise. Focus on information needed to understand the retained recent work.`;\n\n/**\n * Build the turn prefix summarization prompt.\n *\n * @returns Complete turn prefix summarization prompt\n */\nexport function buildTurnPrefixSummarizationPrompt(): string {\n\treturn TURN_PREFIX_SUMMARIZATION_PROMPT;\n}\n\n/**\n * Build the summarization prompt, optionally with custom instructions.\n *\n * @param customInstructions - Optional additional focus for the summary\n * @returns Complete summarization prompt\n */\nexport function buildSummarizationPrompt(customInstructions?: string): string {\n\tif (customInstructions) {\n\t\treturn `${SUMMARIZATION_PROMPT}\\n\\nAdditional focus: ${customInstructions}`;\n\t}\n\treturn SUMMARIZATION_PROMPT;\n}\n\n/**\n * Decorate a summary with handoff context.\n *\n * Adds a prefix that instructs the resuming LLM to build on existing work,\n * and a footer with compaction metadata.\n *\n * @param summaryText - The generated summary content\n * @param compactedCount - Number of messages that were compacted\n * @param fromModel - Whether the summary was generated by the LLM (vs local fallback)\n * @returns Decorated summary text\n */\nexport function decorateSummaryText(\n\tsummaryText: string,\n\tcompactedCount: number,\n\tfromModel: boolean,\n): string {\n\t// OAI-style handoff prefix that tells the resuming model it's continuing work\n\tconst handoffPrefix = fromModel\n\t\t? \"Another language model started to solve this problem and produced a summary of its thinking process. You also have access to the state of the tools that were used by that language model. Use this to build on the work that has already been done and avoid duplicating work. Here is the summary produced by the other language model, use the information in this summary to assist with your own analysis:\\n\\n\"\n\t\t: \"_Local summary of prior discussion (model unavailable)._\\n\\n\";\n\n\treturn `${handoffPrefix}${summaryText}\\n\\n(Compacted ${compactedCount} messages on ${new Date().toLocaleString()})`;\n}\n\n/**\n * Merge a history summary with a turn prefix summary for split turn compaction.\n *\n * When compaction splits a turn, we generate two summaries:\n * 1. History summary: everything before the split turn\n * 2. Turn prefix summary: the beginning of the split turn\n *\n * This function combines them into a single coherent summary.\n *\n * @param historySummary - Summary of messages before the split turn\n * @param turnPrefixSummary - Summary of the prefix of the split turn\n * @returns Combined summary text\n */\nexport function mergeSplitTurnSummaries(\n\thistorySummary: string,\n\tturnPrefixSummary: string,\n): string {\n\treturn `${historySummary}\\n\\n---\\n\\n**Turn Context (split turn):**\\n\\n${turnPrefixSummary}`;\n}\n\n/**\n * Build a simple local summary when LLM summarization fails.\n *\n * Creates a bullet-point summary of user/assistant exchanges without\n * calling the LLM. Used as fallback when the model is unavailable.\n *\n * @param messages - Messages to summarize\n * @param maxExchanges - Maximum number of exchanges to include\n * @returns Local summary text\n */\nexport function buildLocalSummary(\n\tmessages: AppMessage[],\n\tmaxExchanges = 32,\n): string {\n\tconst lines: string[] = [];\n\tlet exchange = 1;\n\n\tfor (const message of messages) {\n\t\tif (lines.length >= maxExchanges) break;\n\t\tif (shouldSkipAssistantCompactionMessage(message)) continue;\n\n\t\tconst content = extractMessageText(message);\n\t\tif (!content) continue;\n\n\t\tconst truncated = truncateText(content, 180);\n\t\tif (message.role === \"user\") {\n\t\t\tlines.push(`• User ${exchange}: ${truncated}`);\n\t\t} else if (message.role === \"assistant\") {\n\t\t\tlines.push(` ↳ Assistant: ${truncated}`);\n\t\t\texchange += 1;\n\t\t} else if (message.role === \"toolResult\") {\n\t\t\tconst toolName = (message as { toolName?: string }).toolName || \"unknown\";\n\t\t\tlines.push(` ↳ Tool ${toolName}: ${truncateText(content, 160)}`);\n\t\t}\n\t}\n\n\tif (!lines.length) {\n\t\treturn \"(conversation summary placeholder: no textual content to compact)\";\n\t}\n\n\treturn `Conversation summary generated at ${new Date().toLocaleString()}\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Extract text content from a message.\n *\n * @param message - Message to extract text from\n * @returns Combined text content or empty string\n */\nfunction extractMessageText(message: AppMessage): string {\n\tconst llmMessage = convertAppMessageToLlm(message);\n\tif (!llmMessage) {\n\t\treturn \"\";\n\t}\n\tif (typeof llmMessage.content === \"string\") {\n\t\treturn llmMessage.content;\n\t}\n\tif (Array.isArray(llmMessage.content)) {\n\t\treturn llmMessage.content\n\t\t\t.map((part) => {\n\t\t\t\tif (part.type === \"text\") return part.text;\n\t\t\t\tif (part.type === \"thinking\") return part.thinking;\n\t\t\t\treturn \"\";\n\t\t\t})\n\t\t\t.filter((part): part is string => Boolean(part))\n\t\t\t.join(\" \");\n\t}\n\treturn \"\";\n}\n\n/**\n * Truncate text to a maximum length with ellipsis.\n *\n * @param text - Text to truncate\n * @param limit - Maximum length\n * @returns Truncated text with ellipsis if needed\n */\nfunction truncateText(text: string, limit = 160): string {\n\tif (text.length <= limit) return text;\n\treturn `${text.slice(0, limit - 1).trim()}…`;\n}\n\n// ============================================================================\n// Compaction Preparation\n// ============================================================================\n\n/**\n * Prepare messages for compaction by finding the cut point and splitting.\n *\n * This is a pure function that determines what should be summarized vs kept,\n * without actually performing the summarization or I/O.\n *\n * @param messages - All messages in the conversation\n * @param settings - Compaction settings\n * @param previousSummary - Optional summary from a previous compaction (for cascading)\n * @returns Object with messages to summarize and messages to keep, or null if not enough history\n */\nexport function prepareCompaction(\n\tmessages: AppMessage[],\n\tsettings: CompactionSettings,\n\tpreviousSummary?: string,\n): {\n\tmessagesToSummarize: AppMessage[];\n\tkeptMessages: AppMessage[];\n\tcutIndex: number;\n} | null {\n\tconst keepCount = 6; // Minimum messages to always keep\n\tif (messages.length <= keepCount + 1) {\n\t\treturn null; // Not enough history to compact\n\t}\n\n\t// Find initial boundary\n\tlet boundary = Math.max(0, messages.length - keepCount);\n\n\t// Use token-based cut point if we have usage data\n\tconst lastUsage = getLastAssistantUsage(messages);\n\tif (lastUsage) {\n\t\tconst tokenBasedCut = findCutPoint(\n\t\t\tmessages,\n\t\t\t0,\n\t\t\tmessages.length,\n\t\t\tsettings.keepRecentTokens,\n\t\t);\n\t\t// Use the more conservative of the two (keep more messages)\n\t\tboundary = Math.max(boundary, tokenBasedCut);\n\t}\n\n\t// Adjust for tool result integrity\n\tboundary = adjustBoundaryForToolResults(messages, boundary);\n\n\tconst older = messages.slice(0, boundary);\n\tif (!older.length) {\n\t\treturn null; // No earlier messages to compact\n\t}\n\n\t// Prepare messages for summarization\n\tconst messagesToSummarize: AppMessage[] = [];\n\n\t// Include previous summary if cascading\n\tif (previousSummary) {\n\t\tmessagesToSummarize.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: `Previous session summary:\\n${previousSummary}`,\n\t\t\ttimestamp: Date.now(),\n\t\t});\n\t}\n\n\t// Add older messages (limit to most recent 40 for summarization efficiency)\n\tconst sliceSize = Math.min(40, older.length);\n\tconst summaryTail = stripRedundantPreviousCompactionMessages(\n\t\tprepareMessagesForCompactionSummary(older.slice(-sliceSize)),\n\t\tpreviousSummary,\n\t);\n\tmessagesToSummarize.push(...summaryTail);\n\n\treturn {\n\t\tmessagesToSummarize,\n\t\tkeptMessages: messages.slice(boundary),\n\t\tcutIndex: boundary,\n\t};\n}\n\n/**\n * Extract the most recent compaction summary from messages.\n *\n * Looks for a message that appears to be a compaction summary (contains\n * the characteristic handoff prefix or compaction footer).\n *\n * @param messages - Messages to search\n * @returns Previous summary text or undefined\n */\nexport function findPreviousSummary(\n\tmessages: AppMessage[],\n): string | undefined {\n\tfor (const message of messages) {\n\t\tif (isDecoratedCompactionSummaryMessage(message)) {\n\t\t\tconst text = extractMessageText(message);\n\t\t\tif (text) {\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\n// ============================================================================\n// Orchestrated Compaction\n// ============================================================================\n\n/**\n * Minimal agent interface required by performCompaction.\n * Avoids depending on the full Agent class to keep this module leaf-level.\n */\nexport interface CompactionAgent {\n\tstate: {\n\t\tmessages: AppMessage[];\n\t\tmodel: { api: Api; provider: string; id: string };\n\t\tsystemPromptSourcePaths?: string[];\n\t\tpromptContextManifest?: PromptProjectDocManifest;\n\t};\n\tgenerateSummary(\n\t\thistory: AppMessage[],\n\t\tprompt: string,\n\t\tsystemPrompt: string,\n\t): Promise<AssistantMessage>;\n\treplaceMessages(messages: AppMessage[]): void;\n\tappendMessage?(message: AppMessage): void;\n\tclearTransientRunState?(options?: {\n\t\tclearSessionContextCache?: boolean;\n\t}): void;\n}\n\n/**\n * Minimal session manager interface required by performCompaction.\n */\nexport interface CompactionSessionManager {\n\tbuildSessionContext(): { messageEntries: Array<{ id?: string }> };\n\tsaveCompaction(\n\t\tsummary: string,\n\t\tfirstKeptEntryIndex: number,\n\t\ttokensBefore: number,\n\t\toptions?: {\n\t\t\tauto?: boolean;\n\t\t\tcustomInstructions?: string;\n\t\t\tfirstKeptEntryId?: string;\n\t\t},\n\t): void;\n\tsaveMessage(message: AppMessage): void;\n}\n\n/**\n * Result of a performCompaction() call.\n */\nexport interface PerformCompactionResult {\n\tsuccess: boolean;\n\tcompactedCount?: number;\n\tsummary?: string;\n\tfirstKeptEntryIndex?: number;\n\ttokensBefore?: number;\n\terror?: string;\n}\n\nfunction buildEffectiveCustomInstructions(\n\tcustomInstructions: string | undefined,\n\thookResult?: {\n\t\tsystemMessage?: string;\n\t\tadditionalContext?: string;\n\t},\n): string | undefined {\n\tconst trimmedCustomInstructions = customInstructions?.trim();\n\tconst hookSections = [\n\t\thookResult?.systemMessage?.trim()\n\t\t\t? `Hook system guidance:\\n${hookResult.systemMessage.trim()}`\n\t\t\t: null,\n\t\thookResult?.additionalContext?.trim()\n\t\t\t? `Hook context:\\n${hookResult.additionalContext.trim()}`\n\t\t\t: null,\n\t].filter((section): section is string => Boolean(section));\n\n\tif (hookSections.length === 0) {\n\t\treturn trimmedCustomInstructions || undefined;\n\t}\n\n\tif (!trimmedCustomInstructions) {\n\t\treturn hookSections.join(\"\\n\\n\");\n\t}\n\n\treturn `${trimmedCustomInstructions}\\n\\n${hookSections.join(\"\\n\\n\")}`;\n}\n\nfunction buildPostCompactHookMessages(hookResult: {\n\tsystemMessage?: string;\n\tadditionalContext?: string;\n}): AppMessage[] {\n\tconst timestamp = new Date().toISOString();\n\tconst messages: AppMessage[] = [];\n\tconst systemMessage = hookResult.systemMessage?.trim();\n\tif (systemMessage) {\n\t\tmessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\t\"PostCompact\",\n\t\t\t\t`PostCompact hook system guidance:\\n${systemMessage}`,\n\t\t\t\ttrue,\n\t\t\t\tundefined,\n\t\t\t\ttimestamp,\n\t\t\t),\n\t\t);\n\t}\n\n\tconst additionalContext = hookResult.additionalContext?.trim();\n\tif (additionalContext) {\n\t\tmessages.push(\n\t\t\tcreateHookMessage(\n\t\t\t\t\"PostCompact\",\n\t\t\t\tadditionalContext,\n\t\t\t\ttrue,\n\t\t\t\tundefined,\n\t\t\t\ttimestamp,\n\t\t\t),\n\t\t);\n\t}\n\n\treturn messages;\n}\n\n/**\n * Perform context compaction end-to-end: calculate boundary, generate summary,\n * replace messages, and persist to session.\n *\n * This function consolidates the compaction logic previously duplicated across\n * main.ts (auto-compact + RPC compact) and ConversationCompactor.\n *\n * @param params.agent - Agent instance (or compatible interface)\n * @param params.sessionManager - Session persistence manager\n * @param params.auto - Whether this is an auto-triggered compaction\n * @param params.customInstructions - Optional focus instructions for summary\n * @param params.renderSummaryText - Optional callback to render an AssistantMessage to plain text.\n * When omitted, performCompaction uses a JSON-based fallback extractor.\n * @returns Result indicating success or failure\n */\nexport async function performCompaction(params: {\n\tagent: CompactionAgent;\n\tsessionManager: CompactionSessionManager;\n\tauto?: boolean;\n\ttrigger?: \"auto\" | \"manual\" | \"token_limit\";\n\tcustomInstructions?: string;\n\tpersistCustomInstructions?: boolean;\n\thookContext?: CompactionHookContext;\n\thookService?: CompactionHookService;\n\tgetPostKeepMessages?: (\n\t\tpreservedMessages: AppMessage[],\n\t) => Promise<AppMessage[]>;\n\trenderSummaryText?: (message: AssistantMessage) => string;\n\treadRestoreExecute?: ReadRestoreExecutor;\n\tprofileName?: string;\n\tcliOverrides?: Partial<ComposerConfig>;\n}): Promise<PerformCompactionResult> {\n\tconst {\n\t\tagent,\n\t\tsessionManager,\n\t\tauto,\n\t\ttrigger,\n\t\tcustomInstructions,\n\t\tpersistCustomInstructions = true,\n\t\thookContext,\n\t\thookService,\n\t\tgetPostKeepMessages,\n\t\trenderSummaryText,\n\t\treadRestoreExecute = readTool.execute,\n\t\tprofileName,\n\t\tcliOverrides,\n\t} = params;\n\tconst messages = [...agent.state.messages];\n\tconst keepCount = 6;\n\n\tif (messages.length <= keepCount + 1) {\n\t\treturn { success: false, error: \"Not enough history to compact\" };\n\t}\n\n\t// Calculate boundary using token-based cut point detection\n\tlet boundary = Math.max(0, messages.length - keepCount);\n\tconst lastUsage = getLastAssistantUsage(messages);\n\tif (lastUsage) {\n\t\tconst tokenBasedCut = findCutPoint(\n\t\t\tmessages,\n\t\t\t0,\n\t\t\tmessages.length,\n\t\t\tDEFAULT_COMPACTION_SETTINGS.keepRecentTokens,\n\t\t);\n\t\tboundary = Math.max(boundary, tokenBasedCut);\n\t}\n\tboundary = adjustBoundaryForToolResults(messages, boundary);\n\n\tconst older = messages.slice(0, boundary);\n\tif (!older.length) {\n\t\treturn { success: false, error: \"No earlier messages to compact\" };\n\t}\n\tconst keep = stripRuntimeRestoreMessages(messages.slice(boundary));\n\tconst workspaceCwd = hookContext?.cwd ?? process.cwd();\n\tconst promptContextPaths = agent.state.promptContextManifest\n\t\t? agent.state.promptContextManifest.entries.map((entry) => entry.path)\n\t\t: resolvePromptLoadedProjectDocPaths(workspaceCwd);\n\tconst restoredReadMessages = await collectRecentReadRestoreMessages(\n\t\tolder,\n\t\tkeep,\n\t\t[...promptContextPaths, ...(agent.state.systemPromptSourcePaths ?? [])],\n\t\treadRestoreExecute,\n\t\tprofileName,\n\t\tworkspaceCwd,\n\t\tcliOverrides,\n\t);\n\tconst readPathsRestoredAfterCompaction =\n\t\tcollectRestoredReadPaths(restoredReadMessages);\n\n\tconst tokensBefore = lastUsage ? calculateContextTokens(lastUsage) : 0;\n\tlet effectiveCustomInstructions = customInstructions;\n\n\tconst effectiveHookService =\n\t\thookService ??\n\t\t(hookContext ? createCompactionHookService(hookContext) : undefined);\n\n\tif (effectiveHookService) {\n\t\tif (\n\t\t\t!effectiveHookService.hasHooks ||\n\t\t\teffectiveHookService.hasHooks(\"PreCompact\")\n\t\t) {\n\t\t\tconst hookResult = await effectiveHookService.runPreCompactHooks(\n\t\t\t\ttrigger ?? (auto ? \"auto\" : \"manual\"),\n\t\t\t\ttokensBefore,\n\t\t\t\tDEFAULT_COMPACTION_SETTINGS.keepRecentTokens,\n\t\t\t\thookContext?.signal,\n\t\t\t);\n\n\t\t\tif (hookResult.blocked) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror:\n\t\t\t\t\t\thookResult.blockReason ?? \"Compaction blocked by PreCompact hook\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (hookResult.preventContinuation) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror:\n\t\t\t\t\t\thookResult.stopReason ?? \"Compaction prevented by PreCompact hook\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\teffectiveCustomInstructions = buildEffectiveCustomInstructions(\n\t\t\t\tcustomInstructions,\n\t\t\t\thookResult,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Look for previous summary (cascading)\n\tconst previousSummary = findPreviousSummary(messages);\n\tconst sliceSize = Math.min(40, older.length);\n\tconst olderForSummary = stripRedundantPreviousCompactionMessages(\n\t\tprepareMessagesForCompactionSummary(\n\t\t\tolder.slice(-sliceSize),\n\t\t\treadPathsRestoredAfterCompaction,\n\t\t),\n\t\tpreviousSummary,\n\t);\n\tconst summaryInput: AppMessage[] = [];\n\tif (previousSummary) {\n\t\tsummaryInput.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: `Previous session summary:\\n${previousSummary}`,\n\t\t\ttimestamp: Date.now(),\n\t\t});\n\t}\n\tsummaryInput.push(...olderForSummary);\n\n\tlet summaryText = \"\";\n\tlet usedModel = false;\n\tlet summaryInputForAttempt = summaryInput;\n\tlet overflowAttempts = 0;\n\n\tfor (;;) {\n\t\tconst prompt = buildSummarizationPrompt(effectiveCustomInstructions);\n\t\ttry {\n\t\t\tconst summary = await agent.generateSummary(\n\t\t\t\tsummaryInputForAttempt,\n\t\t\t\tprompt,\n\t\t\t\t\"You are a careful note-taker that distills coding conversations into actionable summaries.\",\n\t\t\t);\n\t\t\tif (isCompactionOverflowMessage(summary)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsummary.errorMessage ||\n\t\t\t\t\t\textractMessageText(summary) ||\n\t\t\t\t\t\t\"Prompt too long\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst llmText = renderSummaryText\n\t\t\t\t? renderSummaryText(summary)\n\t\t\t\t: extractMessageText(summary);\n\t\t\tsummaryText = llmText.trim() || buildLocalSummary(olderForSummary, 32);\n\t\t\tusedModel = true;\n\t\t\tbreak;\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\tisOverflowErrorMessage(error.message) &&\n\t\t\t\toverflowAttempts < MAX_COMPACTION_OVERFLOW_RETRIES\n\t\t\t) {\n\t\t\t\tconst truncated = truncateSummaryInputForOverflowRetry(\n\t\t\t\t\tsummaryInputForAttempt,\n\t\t\t\t\terror.message,\n\t\t\t\t);\n\t\t\t\tif (truncated) {\n\t\t\t\t\tsummaryInputForAttempt = truncated;\n\t\t\t\t\toverflowAttempts += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsummaryText = buildLocalSummary(olderForSummary, 32);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst decorated = decorateSummaryText(summaryText, older.length, usedModel);\n\n\t// Build summary and resume messages\n\tconst summaryMessage: AssistantMessage = {\n\t\trole: \"assistant\",\n\t\tcontent: [{ type: \"text\", text: decorated }],\n\t\tapi: agent.state.model.api,\n\t\tprovider: agent.state.model.provider,\n\t\tmodel: agent.state.model.id,\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"stop\",\n\t\ttimestamp: Date.now(),\n\t};\n\n\tconst resumeMessage: AppMessage = {\n\t\trole: \"user\",\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: COMPACTION_RESUME_PROMPT,\n\t\t\t},\n\t\t],\n\t\ttimestamp: Date.now(),\n\t};\n\n\tconst sessionContext = sessionManager.buildSessionContext();\n\tconst firstKeptEntryId = sessionContext.messageEntries[boundary]?.id;\n\n\t// Persist compaction to session\n\tsessionManager.saveCompaction(summaryText, boundary, tokensBefore, {\n\t\tauto,\n\t\tcustomInstructions: persistCustomInstructions\n\t\t\t? customInstructions\n\t\t\t: undefined,\n\t\tfirstKeptEntryId,\n\t});\n\n\tconst callerPostKeepMessages = (await getPostKeepMessages?.(keep)) ?? [];\n\tconst preservedTailMessages = [...keep, ...callerPostKeepMessages];\n\tconst dedupedRestoredReadMessages = restoredReadMessages.filter((message) => {\n\t\tif (\n\t\t\tmessage.role !== \"hookMessage\" ||\n\t\t\tmessage.customType !== READ_RESTORE_COMPACTION_CUSTOM_TYPE ||\n\t\t\t!Array.isArray(message.content)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst details = message.details;\n\t\tconst filePath =\n\t\t\ttypeof details === \"object\" &&\n\t\t\tdetails !== null &&\n\t\t\t\"filePath\" in details &&\n\t\t\ttypeof details.filePath === \"string\"\n\t\t\t\t? details.filePath\n\t\t\t\t: null;\n\t\treturn (\n\t\t\tfilePath !== null &&\n\t\t\t!hasReadRestoreMessage(preservedTailMessages, filePath, message.content)\n\t\t);\n\t});\n\tconst skillRestoreResult = await collectRecentSkillRestoreMessages(\n\t\tolder,\n\t\tpreservedTailMessages,\n\t);\n\tconst readRestorePathsToReplace = collectReadRestorePathsToReplace(\n\t\tkeep,\n\t\tdedupedRestoredReadMessages,\n\t);\n\tconst planFilePathsToReplace = collectPlanFilePathsToReplace(\n\t\tkeep,\n\t\tcallerPostKeepMessages,\n\t);\n\tconst currentPlanFilePaths = collectPlanRestorePaths(\n\t\tcallerPostKeepMessages,\n\t\tgetPlanFileRestorePath,\n\t);\n\tconst currentPlanModePaths = collectPlanRestorePaths(\n\t\tcallerPostKeepMessages,\n\t\tgetPlanModeRestorePath,\n\t);\n\tconst activeSkillNamesToReplace = collectActiveSkillNamesToReplace(\n\t\tkeep,\n\t\tcallerPostKeepMessages,\n\t);\n\tconst filteredKeep = keep.filter(\n\t\t(message) =>\n\t\t\t!shouldReplacePreservedReadRestoreMessage(\n\t\t\t\tmessage,\n\t\t\t\treadRestorePathsToReplace,\n\t\t\t) &&\n\t\t\t!shouldReplacePreservedPlanFileMessage(\n\t\t\t\tmessage,\n\t\t\t\tplanFilePathsToReplace,\n\t\t\t\tcurrentPlanFilePaths,\n\t\t\t) &&\n\t\t\t!shouldReplacePreservedPlanModeMessage(message, currentPlanModePaths) &&\n\t\t\t!shouldReplacePreservedToolSkillMessage(\n\t\t\t\tmessage,\n\t\t\t\tskillRestoreResult.replacedPreservedToolSkillNames,\n\t\t\t) &&\n\t\t\t!shouldReplacePreservedActiveSkillMessage(\n\t\t\t\tmessage,\n\t\t\t\tactiveSkillNamesToReplace,\n\t\t\t),\n\t);\n\n\t// Replace agent messages\n\tconst newMessages = [\n\t\tsummaryMessage as AppMessage,\n\t\tresumeMessage,\n\t\t...filteredKeep,\n\t];\n\tagent.replaceMessages(newMessages);\n\tagent.clearTransientRunState?.({ clearSessionContextCache: true });\n\tsessionManager.saveMessage(summaryMessage);\n\tsessionManager.saveMessage(resumeMessage);\n\tawait runPostCompactionCleanup({\n\t\tauto,\n\t\tcustomInstructions,\n\t\tcompactedCount: older.length,\n\t\tfirstKeptEntryIndex: boundary,\n\t});\n\n\tconst appendedTailMessages: AppMessage[] = [];\n\tconst persistTailMessages = (messagesToPersist: AppMessage[]) => {\n\t\tif (messagesToPersist.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tappendedTailMessages.push(...messagesToPersist);\n\t\tif (typeof agent.appendMessage === \"function\") {\n\t\t\tfor (const message of messagesToPersist) {\n\t\t\t\tagent.appendMessage(message);\n\t\t\t\tsessionManager.saveMessage(message);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tagent.replaceMessages([\n\t\t\tsummaryMessage as AppMessage,\n\t\t\tresumeMessage,\n\t\t\t...filteredKeep,\n\t\t\t...appendedTailMessages,\n\t\t]);\n\t\tfor (const message of messagesToPersist) {\n\t\t\tsessionManager.saveMessage(message);\n\t\t}\n\t};\n\tconst postKeepMessages = [\n\t\t...dedupedRestoredReadMessages,\n\t\t...skillRestoreResult.restoredMessages,\n\t\t...callerPostKeepMessages,\n\t];\n\tpersistTailMessages(postKeepMessages);\n\n\tlet postCompactHookMessages: AppMessage[] = [];\n\n\tif (\n\t\teffectiveHookService?.runPostCompactHooks &&\n\t\t(!effectiveHookService.hasHooks ||\n\t\t\teffectiveHookService.hasHooks(\"PostCompact\"))\n\t) {\n\t\tconst postCompactHookResult =\n\t\t\tawait effectiveHookService.runPostCompactHooks(\n\t\t\t\ttrigger ?? (auto ? \"auto\" : \"manual\"),\n\t\t\t\tsummaryText,\n\t\t\t\thookContext?.signal,\n\t\t\t);\n\t\tif (\n\t\t\tpostCompactHookResult.blocked ||\n\t\t\tpostCompactHookResult.preventContinuation\n\t\t) {\n\t\t\tlogger.warn(\n\t\t\t\t\"PostCompact hook returned unsupported control flow request; ignoring\",\n\t\t\t\t{\n\t\t\t\t\ttrigger: trigger ?? (auto ? \"auto\" : \"manual\"),\n\t\t\t\t\tblocked: postCompactHookResult.blocked,\n\t\t\t\t\tpreventContinuation: postCompactHookResult.preventContinuation,\n\t\t\t\t\treason:\n\t\t\t\t\t\tpostCompactHookResult.blockReason ??\n\t\t\t\t\t\tpostCompactHookResult.stopReason,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tpostCompactHookMessages = buildPostCompactHookMessages(\n\t\t\tpostCompactHookResult,\n\t\t);\n\t\tpersistTailMessages(postCompactHookMessages);\n\t}\n\n\treturn {\n\t\tsuccess: true,\n\t\tcompactedCount: older.length,\n\t\tsummary: summaryText,\n\t\tfirstKeptEntryIndex: boundary,\n\t\ttokensBefore,\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"context-handoff.d.ts","sourceRoot":"","sources":["../../src/agent/context-handoff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-handoff.d.ts","sourceRoot":"","sources":["../../src/agent/context-handoff.ts"],"names":[],"mappings":"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"}