@evalops/maestro 0.10.50 → 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 (1825) hide show
  1. package/README.md +1 -3
  2. package/dist/agent/agent-outcome.d.ts +54 -0
  3. package/dist/agent/agent-outcome.d.ts.map +1 -0
  4. package/dist/agent/agent-outcome.js +142 -0
  5. package/dist/agent/agent-outcome.js.map +1 -0
  6. package/dist/agent/agent-resume.d.ts.map +1 -1
  7. package/dist/agent/agent-resume.js +3 -3
  8. package/dist/agent/agent-resume.js.map +1 -1
  9. package/dist/agent/agent-run-summary.d.ts +37 -0
  10. package/dist/agent/agent-run-summary.d.ts.map +1 -0
  11. package/dist/agent/agent-run-summary.js +15 -0
  12. package/dist/agent/agent-run-summary.js.map +1 -0
  13. package/dist/agent/agent-work-board.d.ts +82 -0
  14. package/dist/agent/agent-work-board.d.ts.map +1 -0
  15. package/dist/agent/agent-work-board.js +312 -0
  16. package/dist/agent/agent-work-board.js.map +1 -0
  17. package/dist/agent/agent.d.ts.map +1 -1
  18. package/dist/agent/agent.js.map +1 -1
  19. package/dist/agent/auto-compaction.d.ts +7 -2
  20. package/dist/agent/auto-compaction.d.ts.map +1 -1
  21. package/dist/agent/auto-compaction.js +23 -10
  22. package/dist/agent/auto-compaction.js.map +1 -1
  23. package/dist/agent/compaction.d.ts.map +1 -1
  24. package/dist/agent/compaction.js +1 -1
  25. package/dist/agent/compaction.js.map +1 -1
  26. package/dist/agent/context-handoff.d.ts.map +1 -1
  27. package/dist/agent/context-handoff.js +2 -1
  28. package/dist/agent/context-handoff.js.map +1 -1
  29. package/dist/agent/index.d.ts +8 -1
  30. package/dist/agent/index.d.ts.map +1 -1
  31. package/dist/agent/index.js +8 -1
  32. package/dist/agent/index.js.map +1 -1
  33. package/dist/agent/mission-artifacts.d.ts +62 -0
  34. package/dist/agent/mission-artifacts.d.ts.map +1 -0
  35. package/dist/agent/mission-artifacts.js +438 -0
  36. package/dist/agent/mission-artifacts.js.map +1 -0
  37. package/dist/agent/mission-manifest.d.ts +139 -3
  38. package/dist/agent/mission-manifest.d.ts.map +1 -1
  39. package/dist/agent/mission-manifest.js +549 -3
  40. package/dist/agent/mission-manifest.js.map +1 -1
  41. package/dist/agent/mission-store.d.ts +80 -0
  42. package/dist/agent/mission-store.d.ts.map +1 -0
  43. package/dist/agent/mission-store.js +603 -0
  44. package/dist/agent/mission-store.js.map +1 -0
  45. package/dist/agent/modes.d.ts +3 -3
  46. package/dist/agent/modes.d.ts.map +1 -1
  47. package/dist/agent/modes.js +66 -3
  48. package/dist/agent/modes.js.map +1 -1
  49. package/dist/agent/oracle-consultation-policy.d.ts +22 -0
  50. package/dist/agent/oracle-consultation-policy.d.ts.map +1 -0
  51. package/dist/agent/oracle-consultation-policy.js +72 -0
  52. package/dist/agent/oracle-consultation-policy.js.map +1 -0
  53. package/dist/agent/oracle-policy-experiment.d.ts +27 -0
  54. package/dist/agent/oracle-policy-experiment.d.ts.map +1 -0
  55. package/dist/agent/oracle-policy-experiment.js +59 -0
  56. package/dist/agent/oracle-policy-experiment.js.map +1 -0
  57. package/dist/agent/oracle-policy-rollout.d.ts +42 -0
  58. package/dist/agent/oracle-policy-rollout.d.ts.map +1 -0
  59. package/dist/agent/oracle-policy-rollout.js +80 -0
  60. package/dist/agent/oracle-policy-rollout.js.map +1 -0
  61. package/dist/agent/plugin-agent-api.d.ts +13 -0
  62. package/dist/agent/plugin-agent-api.d.ts.map +1 -0
  63. package/dist/agent/plugin-agent-api.js +11 -0
  64. package/dist/agent/plugin-agent-api.js.map +1 -0
  65. package/dist/agent/plugin-agent-loader.d.ts +17 -0
  66. package/dist/agent/plugin-agent-loader.d.ts.map +1 -0
  67. package/dist/agent/plugin-agent-loader.js +81 -0
  68. package/dist/agent/plugin-agent-loader.js.map +1 -0
  69. package/dist/agent/plugin-agent-registry.d.ts +62 -0
  70. package/dist/agent/plugin-agent-registry.d.ts.map +1 -0
  71. package/dist/agent/plugin-agent-registry.js +109 -0
  72. package/dist/agent/plugin-agent-registry.js.map +1 -0
  73. package/dist/agent/profile-loader.d.ts +7 -0
  74. package/dist/agent/profile-loader.d.ts.map +1 -0
  75. package/dist/agent/profile-loader.js +115 -0
  76. package/dist/agent/profile-loader.js.map +1 -0
  77. package/dist/agent/profiles.d.ts +30 -0
  78. package/dist/agent/profiles.d.ts.map +1 -0
  79. package/dist/agent/profiles.js +146 -0
  80. package/dist/agent/profiles.js.map +1 -0
  81. package/dist/agent/prompt-cache.d.ts +0 -4
  82. package/dist/agent/prompt-cache.d.ts.map +1 -1
  83. package/dist/agent/prompt-cache.js +1 -7
  84. package/dist/agent/prompt-cache.js.map +1 -1
  85. package/dist/agent/providers/codex-app-server.d.ts.map +1 -1
  86. package/dist/agent/providers/codex-app-server.js +1 -3
  87. package/dist/agent/providers/codex-app-server.js.map +1 -1
  88. package/dist/agent/providers/google-gemini-cli.js +204 -107
  89. package/dist/agent/providers/google.js +101 -41
  90. package/dist/agent/providers/scripted.d.ts.map +1 -1
  91. package/dist/agent/providers/scripted.js +1 -3
  92. package/dist/agent/providers/scripted.js.map +1 -1
  93. package/dist/agent/providers/validation.d.ts.map +1 -1
  94. package/dist/agent/providers/validation.js +1 -3
  95. package/dist/agent/providers/validation.js.map +1 -1
  96. package/dist/agent/providers/vertex.js +204 -107
  97. package/dist/agent/routing-receipt.d.ts +34 -0
  98. package/dist/agent/routing-receipt.d.ts.map +1 -0
  99. package/dist/agent/routing-receipt.js +55 -0
  100. package/dist/agent/routing-receipt.js.map +1 -0
  101. package/dist/agent/skill-artifact-metadata.d.ts +14 -0
  102. package/dist/agent/skill-artifact-metadata.d.ts.map +1 -0
  103. package/dist/agent/skill-artifact-metadata.js +49 -0
  104. package/dist/agent/skill-artifact-metadata.js.map +1 -0
  105. package/dist/agent/snapshot-store.d.ts +32 -0
  106. package/dist/agent/snapshot-store.d.ts.map +1 -0
  107. package/dist/agent/snapshot-store.js +195 -0
  108. package/dist/agent/snapshot-store.js.map +1 -0
  109. package/dist/agent/specialist-profiles.d.ts +36 -0
  110. package/dist/agent/specialist-profiles.d.ts.map +1 -0
  111. package/dist/agent/specialist-profiles.js +159 -0
  112. package/dist/agent/specialist-profiles.js.map +1 -0
  113. package/dist/agent/subagent-specs.d.ts +5 -2
  114. package/dist/agent/subagent-specs.d.ts.map +1 -1
  115. package/dist/agent/subagent-specs.js +83 -10
  116. package/dist/agent/subagent-specs.js.map +1 -1
  117. package/dist/agent/swarm/coverage-gate.d.ts +37 -0
  118. package/dist/agent/swarm/coverage-gate.d.ts.map +1 -0
  119. package/dist/agent/swarm/coverage-gate.js +48 -0
  120. package/dist/agent/swarm/coverage-gate.js.map +1 -0
  121. package/dist/agent/swarm/executor.d.ts +1 -0
  122. package/dist/agent/swarm/executor.d.ts.map +1 -1
  123. package/dist/agent/swarm/executor.js +151 -15
  124. package/dist/agent/swarm/executor.js.map +1 -1
  125. package/dist/agent/swarm/orchestrator-prompt.d.ts +25 -0
  126. package/dist/agent/swarm/orchestrator-prompt.d.ts.map +1 -0
  127. package/dist/agent/swarm/orchestrator-prompt.js +48 -0
  128. package/dist/agent/swarm/orchestrator-prompt.js.map +1 -0
  129. package/dist/agent/swarm/plan-parser.d.ts.map +1 -1
  130. package/dist/agent/swarm/plan-parser.js +27 -2
  131. package/dist/agent/swarm/plan-parser.js.map +1 -1
  132. package/dist/agent/swarm/types.d.ts +17 -0
  133. package/dist/agent/swarm/types.d.ts.map +1 -1
  134. package/dist/agent/swarm/types.js.map +1 -1
  135. package/dist/agent/swarm/validation-directive.d.ts +21 -0
  136. package/dist/agent/swarm/validation-directive.d.ts.map +1 -0
  137. package/dist/agent/swarm/validation-directive.js +25 -0
  138. package/dist/agent/swarm/validation-directive.js.map +1 -0
  139. package/dist/agent/token-counter.d.ts +40 -0
  140. package/dist/agent/token-counter.d.ts.map +1 -0
  141. package/dist/agent/token-counter.js +74 -0
  142. package/dist/agent/token-counter.js.map +1 -0
  143. package/dist/agent/transport/events.d.ts +1 -1
  144. package/dist/agent/transport/events.d.ts.map +1 -1
  145. package/dist/agent/transport/events.js +1 -1
  146. package/dist/agent/transport/events.js.map +1 -1
  147. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  148. package/dist/agent/transport/tool-execution-bridge.js +4 -1
  149. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  150. package/dist/agent/types.d.ts +4 -2
  151. package/dist/agent/types.d.ts.map +1 -1
  152. package/dist/agent/types.js.map +1 -1
  153. package/dist/api/enterprise-routes.d.ts.map +1 -1
  154. package/dist/api/enterprise-routes.js +87 -10
  155. package/dist/api/enterprise-routes.js.map +1 -1
  156. package/dist/api/org-settings-merge.d.ts +12 -0
  157. package/dist/api/org-settings-merge.d.ts.map +1 -0
  158. package/dist/api/org-settings-merge.js +38 -0
  159. package/dist/api/org-settings-merge.js.map +1 -0
  160. package/dist/api/user-settings-merge.d.ts +16 -0
  161. package/dist/api/user-settings-merge.d.ts.map +1 -0
  162. package/dist/api/user-settings-merge.js +37 -0
  163. package/dist/api/user-settings-merge.js.map +1 -0
  164. package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -1
  165. package/dist/app-server/daemon-lifecycle-api.js +1 -3
  166. package/dist/app-server/daemon-lifecycle-api.js.map +1 -1
  167. package/dist/app-server/external-agent-import-api.d.ts.map +1 -1
  168. package/dist/app-server/external-agent-import-api.js +1 -3
  169. package/dist/app-server/external-agent-import-api.js.map +1 -1
  170. package/dist/app-server/network-governance-api.d.ts.map +1 -1
  171. package/dist/app-server/network-governance-api.js +1 -3
  172. package/dist/app-server/network-governance-api.js.map +1 -1
  173. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -1
  174. package/dist/app-server/plugin-bundle-api.js +2 -3
  175. package/dist/app-server/plugin-bundle-api.js.map +1 -1
  176. package/dist/app-server/policy-control-api.d.ts.map +1 -1
  177. package/dist/app-server/policy-control-api.js +1 -3
  178. package/dist/app-server/policy-control-api.js.map +1 -1
  179. package/dist/app-server/protocol-modes-api.d.ts.map +1 -1
  180. package/dist/app-server/protocol-modes-api.js +1 -3
  181. package/dist/app-server/protocol-modes-api.js.map +1 -1
  182. package/dist/app-server/session-api.d.ts.map +1 -1
  183. package/dist/app-server/session-api.js +15 -2
  184. package/dist/app-server/session-api.js.map +1 -1
  185. package/dist/audit/logger.d.ts +5 -5
  186. package/dist/cli/args.d.ts +4 -0
  187. package/dist/cli/args.d.ts.map +1 -1
  188. package/dist/cli/args.js +33 -1
  189. package/dist/cli/args.js.map +1 -1
  190. package/dist/cli/commands/a2a.d.ts.map +1 -1
  191. package/dist/cli/commands/a2a.js +1 -3
  192. package/dist/cli/commands/a2a.js.map +1 -1
  193. package/dist/cli/commands/mission.d.ts +4 -0
  194. package/dist/cli/commands/mission.d.ts.map +1 -0
  195. package/dist/cli/commands/mission.js +196 -0
  196. package/dist/cli/commands/mission.js.map +1 -0
  197. package/dist/cli/commands/value.d.ts +10 -0
  198. package/dist/cli/commands/value.d.ts.map +1 -0
  199. package/dist/cli/commands/value.js +33 -0
  200. package/dist/cli/commands/value.js.map +1 -0
  201. package/dist/cli/direct-runtime-command.d.ts +1 -0
  202. package/dist/cli/direct-runtime-command.d.ts.map +1 -1
  203. package/dist/cli/direct-runtime-command.js +25 -3
  204. package/dist/cli/direct-runtime-command.js.map +1 -1
  205. package/dist/cli/headless-protocol.d.ts.map +1 -1
  206. package/dist/cli/headless-protocol.js +1 -3
  207. package/dist/cli/headless-protocol.js.map +1 -1
  208. package/dist/cli/headless.d.ts +3 -19
  209. package/dist/cli/headless.d.ts.map +1 -1
  210. package/dist/cli/headless.js +8 -619
  211. package/dist/cli/headless.js.map +1 -1
  212. package/dist/cli/help.d.ts.map +1 -1
  213. package/dist/cli/help.js +13 -0
  214. package/dist/cli/help.js.map +1 -1
  215. package/dist/cli/native-tui-launcher.d.ts +126 -0
  216. package/dist/cli/native-tui-launcher.d.ts.map +1 -0
  217. package/dist/cli/native-tui-launcher.js +425 -0
  218. package/dist/cli/native-tui-launcher.js.map +1 -0
  219. package/dist/cli/rpc-mode.d.ts +3 -27
  220. package/dist/cli/rpc-mode.d.ts.map +1 -1
  221. package/dist/cli/rpc-mode.js +8 -177
  222. package/dist/cli/rpc-mode.js.map +1 -1
  223. package/dist/cli/session.d.ts +11 -19
  224. package/dist/cli/session.d.ts.map +1 -1
  225. package/dist/cli/session.js +6 -64
  226. package/dist/cli/session.js.map +1 -1
  227. package/dist/cli/system-prompt.d.ts.map +1 -1
  228. package/dist/cli/system-prompt.js +38 -7
  229. package/dist/cli/system-prompt.js.map +1 -1
  230. package/dist/cli-command-runtime.d.ts.map +1 -1
  231. package/dist/cli-command-runtime.js +26 -24
  232. package/dist/cli-command-runtime.js.map +1 -1
  233. package/dist/cli-runtime.js +41729 -121859
  234. package/dist/codex/app-server-client.d.ts.map +1 -1
  235. package/dist/codex/app-server-client.js +1 -3
  236. package/dist/codex/app-server-client.js.map +1 -1
  237. package/dist/codex/compatibility.d.ts.map +1 -1
  238. package/dist/codex/compatibility.js +1 -3
  239. package/dist/codex/compatibility.js.map +1 -1
  240. package/dist/codex/subagent-dispatch-table.d.ts +8 -0
  241. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -1
  242. package/dist/codex/subagent-dispatch-table.js +23 -0
  243. package/dist/codex/subagent-dispatch-table.js.map +1 -1
  244. package/dist/config/env-vars.d.ts +12 -0
  245. package/dist/config/env-vars.d.ts.map +1 -1
  246. package/dist/config/env-vars.js +12 -0
  247. package/dist/config/env-vars.js.map +1 -1
  248. package/dist/config/ui-state.d.ts +32 -0
  249. package/dist/config/ui-state.d.ts.map +1 -0
  250. package/dist/config/ui-state.js +88 -0
  251. package/dist/config/ui-state.js.map +1 -0
  252. package/dist/context/manifest.d.ts.map +1 -1
  253. package/dist/context/manifest.js +1 -3
  254. package/dist/context/manifest.js.map +1 -1
  255. package/dist/context/repo-map.d.ts.map +1 -1
  256. package/dist/context/repo-map.js +1 -7
  257. package/dist/context/repo-map.js.map +1 -1
  258. package/dist/context/token-optimizer.d.ts.map +1 -1
  259. package/dist/context/token-optimizer.js +1 -8
  260. package/dist/context/token-optimizer.js.map +1 -1
  261. package/dist/conversation/render-model.d.ts +0 -36
  262. package/dist/conversation/render-model.d.ts.map +1 -1
  263. package/dist/conversation/render-model.js +1 -3
  264. package/dist/conversation/render-model.js.map +1 -1
  265. package/dist/customer-value/ambient-learning.d.ts +75 -0
  266. package/dist/customer-value/ambient-learning.d.ts.map +1 -0
  267. package/dist/customer-value/ambient-learning.js +472 -0
  268. package/dist/customer-value/ambient-learning.js.map +1 -0
  269. package/dist/customer-value/internal-helpers.d.ts +13 -0
  270. package/dist/customer-value/internal-helpers.d.ts.map +1 -0
  271. package/dist/customer-value/internal-helpers.js +70 -0
  272. package/dist/customer-value/internal-helpers.js.map +1 -0
  273. package/dist/customer-value/report.d.ts +282 -0
  274. package/dist/customer-value/report.d.ts.map +1 -0
  275. package/dist/customer-value/report.js +2085 -0
  276. package/dist/customer-value/report.js.map +1 -0
  277. package/dist/db/schema.d.ts +7 -3
  278. package/dist/db/schema.d.ts.map +1 -1
  279. package/dist/db/schema.js.map +1 -1
  280. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  281. package/dist/evalops/agent-bootstrap.js +1 -3
  282. package/dist/evalops/agent-bootstrap.js.map +1 -1
  283. package/dist/evalops/agent-mcp-metadata.d.ts.map +1 -1
  284. package/dist/evalops/agent-mcp-metadata.js +1 -3
  285. package/dist/evalops/agent-mcp-metadata.js.map +1 -1
  286. package/dist/hooks/notification-hooks.d.ts +1 -1
  287. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  288. package/dist/hooks/notification-hooks.js.map +1 -1
  289. package/dist/hooks/tui-surface.d.ts +35 -0
  290. package/dist/hooks/tui-surface.d.ts.map +1 -0
  291. package/dist/hooks/tui-surface.js +11 -0
  292. package/dist/hooks/tui-surface.js.map +1 -0
  293. package/dist/hooks/types.d.ts +2 -1
  294. package/dist/hooks/types.d.ts.map +1 -1
  295. package/dist/hooks/types.js.map +1 -1
  296. package/dist/hooks/typescript-loader.d.ts.map +1 -1
  297. package/dist/hooks/typescript-loader.js.map +1 -1
  298. package/dist/hooks/ui-context.d.ts.map +1 -1
  299. package/dist/hooks/ui-context.js.map +1 -1
  300. package/dist/index.d.ts +1 -0
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +1 -0
  303. package/dist/index.js.map +1 -1
  304. package/dist/installers/maestro-review-workflow.d.ts +38 -0
  305. package/dist/installers/maestro-review-workflow.d.ts.map +1 -0
  306. package/dist/installers/maestro-review-workflow.js +163 -0
  307. package/dist/installers/maestro-review-workflow.js.map +1 -0
  308. package/dist/load-env.d.ts.map +1 -1
  309. package/dist/load-env.js +2 -1
  310. package/dist/load-env.js.map +1 -1
  311. package/dist/main.d.ts.map +1 -1
  312. package/dist/main.js +201 -840
  313. package/dist/main.js.map +1 -1
  314. package/dist/mcp/config.d.ts.map +1 -1
  315. package/dist/mcp/config.js +1 -3
  316. package/dist/mcp/config.js.map +1 -1
  317. package/dist/mcp/elicitation.d.ts.map +1 -1
  318. package/dist/mcp/elicitation.js +1 -3
  319. package/dist/mcp/elicitation.js.map +1 -1
  320. package/dist/mcp/official-registry.d.ts.map +1 -1
  321. package/dist/mcp/official-registry.js +1 -3
  322. package/dist/mcp/official-registry.js.map +1 -1
  323. package/dist/mcp/workspace-trust.d.ts.map +1 -1
  324. package/dist/mcp/workspace-trust.js +1 -3
  325. package/dist/mcp/workspace-trust.js.map +1 -1
  326. package/dist/memory/service-client.d.ts.map +1 -1
  327. package/dist/memory/service-client.js +1 -3
  328. package/dist/memory/service-client.js.map +1 -1
  329. package/dist/models/config-loader.d.ts +5 -5
  330. package/dist/models/config-loader.d.ts.map +1 -1
  331. package/dist/models/config-loader.js +1 -3
  332. package/dist/models/config-loader.js.map +1 -1
  333. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +46 -0
  334. package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  335. package/dist/node_modules/@evalops/contracts/dist/index.js +3 -0
  336. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  337. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +284 -0
  338. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  339. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +41 -0
  340. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  341. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts +61 -0
  342. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts.map +1 -0
  343. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js +183 -0
  344. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js.map +1 -0
  345. package/dist/node_modules/@evalops/contracts/dist/schemas.d.ts +986 -0
  346. package/dist/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  347. package/dist/node_modules/@evalops/contracts/dist/schemas.js +49 -0
  348. package/dist/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  349. package/dist/node_modules/@evalops/contracts/dist/token-estimation.d.ts +56 -0
  350. package/dist/node_modules/@evalops/contracts/dist/token-estimation.d.ts.map +1 -0
  351. package/dist/node_modules/@evalops/contracts/dist/token-estimation.js +86 -0
  352. package/dist/node_modules/@evalops/contracts/dist/token-estimation.js.map +1 -0
  353. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  354. package/dist/oauth/connectors.d.ts.map +1 -1
  355. package/dist/oauth/connectors.js +1 -3
  356. package/dist/oauth/connectors.js.map +1 -1
  357. package/dist/oauth/evalops.d.ts.map +1 -1
  358. package/dist/oauth/evalops.js +1 -3
  359. package/dist/oauth/evalops.js.map +1 -1
  360. package/dist/packages/discovery.d.ts.map +1 -1
  361. package/dist/packages/discovery.js +1 -0
  362. package/dist/packages/discovery.js.map +1 -1
  363. package/dist/packages/inspection.d.ts.map +1 -1
  364. package/dist/packages/inspection.js +7 -1
  365. package/dist/packages/inspection.js.map +1 -1
  366. package/dist/packages/loader.d.ts.map +1 -1
  367. package/dist/packages/loader.js +8 -1
  368. package/dist/packages/loader.js.map +1 -1
  369. package/dist/packages/runtime.d.ts +1 -0
  370. package/dist/packages/runtime.d.ts.map +1 -1
  371. package/dist/packages/runtime.js +9 -1
  372. package/dist/packages/runtime.js.map +1 -1
  373. package/dist/packages/types.d.ts +6 -0
  374. package/dist/packages/types.d.ts.map +1 -1
  375. package/dist/packages/types.js.map +1 -1
  376. package/dist/platform/a2a-client.d.ts.map +1 -1
  377. package/dist/platform/a2a-client.js +1 -3
  378. package/dist/platform/a2a-client.js.map +1 -1
  379. package/dist/platform/a2a-cockpit.d.ts +1 -0
  380. package/dist/platform/a2a-cockpit.d.ts.map +1 -1
  381. package/dist/platform/a2a-cockpit.js +42 -11
  382. package/dist/platform/a2a-cockpit.js.map +1 -1
  383. package/dist/platform/a2a-completion-audit.d.ts +1 -1
  384. package/dist/platform/a2a-completion-audit.d.ts.map +1 -1
  385. package/dist/platform/a2a-completion-audit.js +7 -11
  386. package/dist/platform/a2a-completion-audit.js.map +1 -1
  387. package/dist/platform/a2a-maestro-peer.js +16 -0
  388. package/dist/platform/a2a-maestro-peer.js.map +1 -1
  389. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -1
  390. package/dist/platform/a2a-peer-pairing.js +1 -3
  391. package/dist/platform/a2a-peer-pairing.js.map +1 -1
  392. package/dist/platform/a2a-peer-registry.d.ts.map +1 -1
  393. package/dist/platform/a2a-peer-registry.js +1 -3
  394. package/dist/platform/a2a-peer-registry.js.map +1 -1
  395. package/dist/platform/a2a-task-ledger.d.ts +20 -0
  396. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  397. package/dist/platform/a2a-task-ledger.js +207 -11
  398. package/dist/platform/a2a-task-ledger.js.map +1 -1
  399. package/dist/platform/a2a-work-graph.d.ts.map +1 -1
  400. package/dist/platform/a2a-work-graph.js +1 -3
  401. package/dist/platform/a2a-work-graph.js.map +1 -1
  402. package/dist/platform/operating-layer.d.ts.map +1 -1
  403. package/dist/platform/operating-layer.js +14 -8
  404. package/dist/platform/operating-layer.js.map +1 -1
  405. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  406. package/dist/platform/tool-execution-client.js +19 -2
  407. package/dist/platform/tool-execution-client.js.map +1 -1
  408. package/dist/providers/auth.d.ts.map +1 -1
  409. package/dist/providers/auth.js +1 -3
  410. package/dist/providers/auth.js.map +1 -1
  411. package/dist/runtime/agent-runtime.d.ts +22 -6
  412. package/dist/runtime/agent-runtime.d.ts.map +1 -1
  413. package/dist/runtime/agent-runtime.js +1 -1
  414. package/dist/runtime/agent-runtime.js.map +1 -1
  415. package/dist/runtime/env.d.ts +10 -1
  416. package/dist/runtime/env.d.ts.map +1 -1
  417. package/dist/runtime/env.js +64 -1
  418. package/dist/runtime/env.js.map +1 -1
  419. package/dist/runtime/prompt-queue.d.ts.map +1 -0
  420. package/dist/runtime/prompt-queue.js.map +1 -0
  421. package/dist/safety/policy.d.ts.map +1 -1
  422. package/dist/safety/policy.js +1 -4
  423. package/dist/safety/policy.js.map +1 -1
  424. package/dist/sandbox/docker-sandbox.d.ts.map +1 -1
  425. package/dist/sandbox/docker-sandbox.js +6 -1
  426. package/dist/sandbox/docker-sandbox.js.map +1 -1
  427. package/dist/server/handlers/chat-ws.d.ts +2 -1
  428. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  429. package/dist/server/handlers/chat-ws.js +150 -5
  430. package/dist/server/handlers/chat-ws.js.map +1 -1
  431. package/dist/server/handlers/chat.d.ts.map +1 -1
  432. package/dist/server/handlers/chat.js +78 -5
  433. package/dist/server/handlers/chat.js.map +1 -1
  434. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  435. package/dist/server/handlers/hosted-runner-drain.js +1 -3
  436. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  437. package/dist/server/handlers/package.d.ts.map +1 -1
  438. package/dist/server/handlers/package.js +1 -0
  439. package/dist/server/handlers/package.js.map +1 -1
  440. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  441. package/dist/server/handlers/platform-a2a-push.js +53 -2
  442. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  443. package/dist/server/handlers/queue.js +1 -1
  444. package/dist/server/handlers/queue.js.map +1 -1
  445. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -1
  446. package/dist/server/handlers/runtime-app-server-ws.js +1 -3
  447. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -1
  448. package/dist/server/handlers/ui.js +1 -1
  449. package/dist/server/handlers/ui.js.map +1 -1
  450. package/dist/server/handlers/zen.js +1 -1
  451. package/dist/server/handlers/zen.js.map +1 -1
  452. package/dist/server/headless-runtime-service.d.ts +16 -0
  453. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  454. package/dist/server/headless-runtime-service.js +232 -206
  455. package/dist/server/headless-runtime-service.js.map +1 -1
  456. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -1
  457. package/dist/server/hosted-agent-runtime-progress.js +12 -3
  458. package/dist/server/hosted-agent-runtime-progress.js.map +1 -1
  459. package/dist/server/hosted-session-manager.d.ts +3 -0
  460. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  461. package/dist/server/hosted-session-manager.js +26 -0
  462. package/dist/server/hosted-session-manager.js.map +1 -1
  463. package/dist/server/model-selection.d.ts +1 -0
  464. package/dist/server/model-selection.d.ts.map +1 -1
  465. package/dist/server/model-selection.js +4 -0
  466. package/dist/server/model-selection.js.map +1 -1
  467. package/dist/server/pending-request-payload.d.ts.map +1 -1
  468. package/dist/server/pending-request-payload.js +1 -3
  469. package/dist/server/pending-request-payload.js.map +1 -1
  470. package/dist/server/route-auth.d.ts.map +1 -1
  471. package/dist/server/route-auth.js +2 -0
  472. package/dist/server/route-auth.js.map +1 -1
  473. package/dist/server/session-serialization.d.ts.map +1 -1
  474. package/dist/server/session-serialization.js +4 -3
  475. package/dist/server/session-serialization.js.map +1 -1
  476. package/dist/server/session-timeline.d.ts.map +1 -1
  477. package/dist/server/session-timeline.js +1 -1
  478. package/dist/server/session-timeline.js.map +1 -1
  479. package/dist/server/sse-session.d.ts +2 -0
  480. package/dist/server/sse-session.d.ts.map +1 -1
  481. package/dist/server/sse-session.js +3 -0
  482. package/dist/server/sse-session.js.map +1 -1
  483. package/dist/server/stores/ui-store.d.ts +1 -1
  484. package/dist/server/stores/ui-store.d.ts.map +1 -1
  485. package/dist/server/stores/ui-store.js.map +1 -1
  486. package/dist/server/utils/token-estimator.d.ts +2 -2
  487. package/dist/server/utils/token-estimator.d.ts.map +1 -1
  488. package/dist/server/utils/token-estimator.js +2 -12
  489. package/dist/server/utils/token-estimator.js.map +1 -1
  490. package/dist/server/validation.d.ts +54 -0
  491. package/dist/server/validation.d.ts.map +1 -1
  492. package/dist/services/compliance/normalize.d.ts.map +1 -1
  493. package/dist/services/compliance/normalize.js +1 -3
  494. package/dist/services/compliance/normalize.js.map +1 -1
  495. package/dist/services/image-providers/cost.d.ts +70 -0
  496. package/dist/services/image-providers/cost.d.ts.map +1 -0
  497. package/dist/services/image-providers/cost.js +164 -0
  498. package/dist/services/image-providers/cost.js.map +1 -0
  499. package/dist/services/image-providers/flux.d.ts +40 -0
  500. package/dist/services/image-providers/flux.d.ts.map +1 -0
  501. package/dist/services/image-providers/flux.js +99 -0
  502. package/dist/services/image-providers/flux.js.map +1 -0
  503. package/dist/services/image-providers/index.d.ts +24 -0
  504. package/dist/services/image-providers/index.d.ts.map +1 -0
  505. package/dist/services/image-providers/index.js +27 -0
  506. package/dist/services/image-providers/index.js.map +1 -0
  507. package/dist/services/image-providers/masks.d.ts +51 -0
  508. package/dist/services/image-providers/masks.d.ts.map +1 -0
  509. package/dist/services/image-providers/masks.js +132 -0
  510. package/dist/services/image-providers/masks.js.map +1 -0
  511. package/dist/services/image-providers/openai.d.ts +35 -0
  512. package/dist/services/image-providers/openai.d.ts.map +1 -0
  513. package/dist/services/image-providers/openai.js +93 -0
  514. package/dist/services/image-providers/openai.js.map +1 -0
  515. package/dist/services/image-providers/types.d.ts +61 -0
  516. package/dist/services/image-providers/types.d.ts.map +1 -0
  517. package/dist/services/image-providers/types.js +17 -0
  518. package/dist/services/image-providers/types.js.map +1 -0
  519. package/dist/services/intelligent-router/index.d.ts +1 -0
  520. package/dist/services/intelligent-router/index.d.ts.map +1 -1
  521. package/dist/services/intelligent-router/index.js +1 -0
  522. package/dist/services/intelligent-router/index.js.map +1 -1
  523. package/dist/services/intelligent-router/normalize.d.ts +1 -0
  524. package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
  525. package/dist/services/intelligent-router/normalize.js +18 -3
  526. package/dist/services/intelligent-router/normalize.js.map +1 -1
  527. package/dist/services/intelligent-router/outcome.d.ts +19 -0
  528. package/dist/services/intelligent-router/outcome.d.ts.map +1 -0
  529. package/dist/services/intelligent-router/outcome.js +51 -0
  530. package/dist/services/intelligent-router/outcome.js.map +1 -0
  531. package/dist/services/intelligent-router/recorder.d.ts +2 -0
  532. package/dist/services/intelligent-router/recorder.d.ts.map +1 -1
  533. package/dist/services/intelligent-router/recorder.js +72 -1
  534. package/dist/services/intelligent-router/recorder.js.map +1 -1
  535. package/dist/services/intelligent-router/service.d.ts +1 -0
  536. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  537. package/dist/services/intelligent-router/service.js +60 -11
  538. package/dist/services/intelligent-router/service.js.map +1 -1
  539. package/dist/services/intelligent-router/types.d.ts +18 -0
  540. package/dist/services/intelligent-router/types.d.ts.map +1 -1
  541. package/dist/services/intelligent-router/types.js.map +1 -1
  542. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -1
  543. package/dist/services/revenue-attribution/normalize.js +1 -3
  544. package/dist/services/revenue-attribution/normalize.js.map +1 -1
  545. package/dist/services/traces/normalize.d.ts.map +1 -1
  546. package/dist/services/traces/normalize.js +1 -3
  547. package/dist/services/traces/normalize.js.map +1 -1
  548. package/dist/services/workspace-config/middleware.d.ts +2 -0
  549. package/dist/services/workspace-config/middleware.d.ts.map +1 -1
  550. package/dist/services/workspace-config/middleware.js +25 -28
  551. package/dist/services/workspace-config/middleware.js.map +1 -1
  552. package/dist/services/workspace-config/normalize.d.ts.map +1 -1
  553. package/dist/services/workspace-config/normalize.js +1 -3
  554. package/dist/services/workspace-config/normalize.js.map +1 -1
  555. package/dist/session/agent-lineage-projection.d.ts +30 -0
  556. package/dist/session/agent-lineage-projection.d.ts.map +1 -0
  557. package/dist/session/agent-lineage-projection.js +109 -0
  558. package/dist/session/agent-lineage-projection.js.map +1 -0
  559. package/dist/session/manager.d.ts +3 -0
  560. package/dist/session/manager.d.ts.map +1 -1
  561. package/dist/session/manager.js +24 -0
  562. package/dist/session/manager.js.map +1 -1
  563. package/dist/session/session-graph-projection.d.ts +11 -0
  564. package/dist/session/session-graph-projection.d.ts.map +1 -1
  565. package/dist/session/session-graph-projection.js +28 -0
  566. package/dist/session/session-graph-projection.js.map +1 -1
  567. package/dist/session/types.d.ts +2 -0
  568. package/dist/session/types.d.ts.map +1 -1
  569. package/dist/session/types.js.map +1 -1
  570. package/dist/telemetry/agent-workforce-native-event.d.ts.map +1 -1
  571. package/dist/telemetry/agent-workforce-native-event.js +1 -3
  572. package/dist/telemetry/agent-workforce-native-event.js.map +1 -1
  573. package/dist/telemetry/maestro-event-bus.d.ts +1 -1
  574. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  575. package/dist/telemetry/maestro-event-bus.js +42 -81
  576. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  577. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  578. package/dist/telemetry/maestro-platform-replay-fixture.js +1 -3
  579. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  580. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  581. package/dist/telemetry/oracle-policy.d.ts +6 -0
  582. package/dist/telemetry/oracle-policy.d.ts.map +1 -0
  583. package/dist/telemetry/oracle-policy.js +17 -0
  584. package/dist/telemetry/oracle-policy.js.map +1 -0
  585. package/dist/telemetry/wide-events.d.ts +1 -1
  586. package/dist/telemetry/wide-events.d.ts.map +1 -1
  587. package/dist/telemetry/wide-events.js.map +1 -1
  588. package/dist/telemetry.d.ts.map +1 -1
  589. package/dist/telemetry.js +54 -43
  590. package/dist/telemetry.js.map +1 -1
  591. package/dist/theme/theme-loader.d.ts.map +1 -1
  592. package/dist/theme/theme-loader.js +1 -3
  593. package/dist/theme/theme-loader.js.map +1 -1
  594. package/dist/theme/theme.d.ts +2 -8
  595. package/dist/theme/theme.d.ts.map +1 -1
  596. package/dist/theme/theme.js +7 -0
  597. package/dist/theme/theme.js.map +1 -1
  598. package/dist/theme/tui-theme-helpers.d.ts +2 -1
  599. package/dist/theme/tui-theme-helpers.d.ts.map +1 -1
  600. package/dist/theme/tui-theme-helpers.js.map +1 -1
  601. package/dist/theme/tui-theme-types.d.ts +39 -0
  602. package/dist/theme/tui-theme-types.d.ts.map +1 -0
  603. package/dist/theme/tui-theme-types.js +10 -0
  604. package/dist/theme/tui-theme-types.js.map +1 -0
  605. package/dist/tools/apply-patch.d.ts.map +1 -1
  606. package/dist/tools/apply-patch.js +76 -8
  607. package/dist/tools/apply-patch.js.map +1 -1
  608. package/dist/tools/diff-preview.d.ts.map +1 -1
  609. package/dist/tools/diff-preview.js +10 -1
  610. package/dist/tools/diff-preview.js.map +1 -1
  611. package/dist/tools/edit.d.ts.map +1 -1
  612. package/dist/tools/edit.js +17 -0
  613. package/dist/tools/edit.js.map +1 -1
  614. package/dist/tools/index.d.ts +199 -160
  615. package/dist/tools/index.d.ts.map +1 -1
  616. package/dist/tools/index.js +4 -0
  617. package/dist/tools/index.js.map +1 -1
  618. package/dist/tools/lazy-registry.d.ts.map +1 -1
  619. package/dist/tools/lazy-registry.js +1 -0
  620. package/dist/tools/lazy-registry.js.map +1 -1
  621. package/dist/tools/oracle.d.ts +9 -0
  622. package/dist/tools/oracle.d.ts.map +1 -1
  623. package/dist/tools/oracle.js +26 -24
  624. package/dist/tools/oracle.js.map +1 -1
  625. package/dist/tools/painter.d.ts +73 -0
  626. package/dist/tools/painter.d.ts.map +1 -0
  627. package/dist/tools/painter.js +283 -0
  628. package/dist/tools/painter.js.map +1 -0
  629. package/dist/tools/typebox-tool.d.ts.map +1 -1
  630. package/dist/tools/typebox-tool.js +1 -1
  631. package/dist/tools/typebox-tool.js.map +1 -1
  632. package/dist/tools/write.d.ts.map +1 -1
  633. package/dist/tools/write.js +9 -0
  634. package/dist/tools/write.js.map +1 -1
  635. package/dist/undo/tracker.d.ts +5 -0
  636. package/dist/undo/tracker.d.ts.map +1 -1
  637. package/dist/undo/tracker.js +13 -0
  638. package/dist/undo/tracker.js.map +1 -1
  639. package/dist/utils/fs.d.ts +1 -1
  640. package/dist/utils/fs.d.ts.map +1 -1
  641. package/dist/utils/fs.js +29 -2
  642. package/dist/utils/fs.js.map +1 -1
  643. package/dist/utils/git-stash.d.ts.map +1 -1
  644. package/dist/utils/git-stash.js +15 -8
  645. package/dist/utils/git-stash.js.map +1 -1
  646. package/dist/utils/json.d.ts +11 -0
  647. package/dist/utils/json.d.ts.map +1 -1
  648. package/dist/utils/json.js +9 -0
  649. package/dist/utils/json.js.map +1 -1
  650. package/dist/utils/shell-env.d.ts.map +1 -1
  651. package/dist/utils/shell-env.js +2 -0
  652. package/dist/utils/shell-env.js.map +1 -1
  653. package/dist/utils/terminal-image.d.ts +52 -0
  654. package/dist/utils/terminal-image.d.ts.map +1 -0
  655. package/dist/utils/terminal-image.js +95 -0
  656. package/dist/utils/terminal-image.js.map +1 -0
  657. package/dist/utils/terminal-text.d.ts +11 -0
  658. package/dist/utils/terminal-text.d.ts.map +1 -0
  659. package/dist/utils/terminal-text.js +21 -0
  660. package/dist/utils/terminal-text.js.map +1 -0
  661. package/dist/utils/url-extractor-git.d.ts +26 -0
  662. package/dist/utils/url-extractor-git.d.ts.map +1 -0
  663. package/dist/utils/url-extractor-git.js +259 -0
  664. package/dist/utils/url-extractor-git.js.map +1 -0
  665. package/dist/utils/url-extractor.d.ts.map +1 -1
  666. package/dist/utils/url-extractor.js +23 -251
  667. package/dist/utils/url-extractor.js.map +1 -1
  668. package/dist/version.json +2 -2
  669. package/dist/web-server.d.ts.map +1 -1
  670. package/dist/web-server.js +24 -2
  671. package/dist/web-server.js.map +1 -1
  672. package/package.json +312 -306
  673. package/skills/incident-triage/SKILL.md +20 -1
  674. package/skills/install-code-review/SKILL.md +69 -0
  675. package/skills/security-review/SKILL.md +68 -0
  676. package/skills/security-review/reference/rubric.md +85 -0
  677. package/dist/cli/commands/agents.d.ts +0 -20
  678. package/dist/cli/commands/agents.d.ts.map +0 -1
  679. package/dist/cli/commands/agents.js +0 -280
  680. package/dist/cli/commands/agents.js.map +0 -1
  681. package/dist/cli/commands/anthropic.d.ts +0 -2
  682. package/dist/cli/commands/anthropic.d.ts.map +0 -1
  683. package/dist/cli/commands/anthropic.js +0 -6
  684. package/dist/cli/commands/anthropic.js.map +0 -1
  685. package/dist/cli/commands/cost.d.ts +0 -13
  686. package/dist/cli/commands/cost.d.ts.map +0 -1
  687. package/dist/cli/commands/cost.js +0 -143
  688. package/dist/cli/commands/cost.js.map +0 -1
  689. package/dist/cli/commands/exec-constants.d.ts +0 -3
  690. package/dist/cli/commands/exec-constants.d.ts.map +0 -1
  691. package/dist/cli/commands/exec-constants.js +0 -3
  692. package/dist/cli/commands/exec-constants.js.map +0 -1
  693. package/dist/cli/commands/exec.d.ts +0 -19
  694. package/dist/cli/commands/exec.d.ts.map +0 -1
  695. package/dist/cli/commands/exec.js +0 -207
  696. package/dist/cli/commands/exec.js.map +0 -1
  697. package/dist/cli/commands/hooks.d.ts +0 -2
  698. package/dist/cli/commands/hooks.d.ts.map +0 -1
  699. package/dist/cli/commands/hooks.js +0 -25
  700. package/dist/cli/commands/hooks.js.map +0 -1
  701. package/dist/cli/commands/hosted-runner.d.ts +0 -25
  702. package/dist/cli/commands/hosted-runner.d.ts.map +0 -1
  703. package/dist/cli/commands/hosted-runner.js +0 -278
  704. package/dist/cli/commands/hosted-runner.js.map +0 -1
  705. package/dist/cli/commands/memory.d.ts +0 -2
  706. package/dist/cli/commands/memory.d.ts.map +0 -1
  707. package/dist/cli/commands/memory.js +0 -208
  708. package/dist/cli/commands/memory.js.map +0 -1
  709. package/dist/cli/commands/models.d.ts +0 -3
  710. package/dist/cli/commands/models.d.ts.map +0 -1
  711. package/dist/cli/commands/models.js +0 -154
  712. package/dist/cli/commands/models.js.map +0 -1
  713. package/dist/cli/commands/modes.d.ts +0 -8
  714. package/dist/cli/commands/modes.d.ts.map +0 -1
  715. package/dist/cli/commands/modes.js +0 -151
  716. package/dist/cli/commands/modes.js.map +0 -1
  717. package/dist/cli/commands/openai.d.ts +0 -2
  718. package/dist/cli/commands/openai.d.ts.map +0 -1
  719. package/dist/cli/commands/openai.js +0 -116
  720. package/dist/cli/commands/openai.js.map +0 -1
  721. package/dist/cli/commands/session-transfer.d.ts +0 -5
  722. package/dist/cli/commands/session-transfer.d.ts.map +0 -1
  723. package/dist/cli/commands/session-transfer.js +0 -43
  724. package/dist/cli/commands/session-transfer.js.map +0 -1
  725. package/dist/cli/commands/sessions.d.ts +0 -8
  726. package/dist/cli/commands/sessions.d.ts.map +0 -1
  727. package/dist/cli/commands/sessions.js +0 -152
  728. package/dist/cli/commands/sessions.js.map +0 -1
  729. package/dist/cli/commands/skill.d.ts +0 -10
  730. package/dist/cli/commands/skill.d.ts.map +0 -1
  731. package/dist/cli/commands/skill.js +0 -303
  732. package/dist/cli/commands/skill.js.map +0 -1
  733. package/dist/cli/commands/stats.d.ts +0 -7
  734. package/dist/cli/commands/stats.d.ts.map +0 -1
  735. package/dist/cli/commands/stats.js +0 -167
  736. package/dist/cli/commands/stats.js.map +0 -1
  737. package/dist/cli/commands/status.d.ts +0 -2
  738. package/dist/cli/commands/status.d.ts.map +0 -1
  739. package/dist/cli/commands/status.js +0 -11
  740. package/dist/cli/commands/status.js.map +0 -1
  741. package/dist/cli/commands/update.d.ts +0 -12
  742. package/dist/cli/commands/update.d.ts.map +0 -1
  743. package/dist/cli/commands/update.js +0 -148
  744. package/dist/cli/commands/update.js.map +0 -1
  745. package/dist/cli-tui/about-view.d.ts +0 -48
  746. package/dist/cli-tui/about-view.d.ts.map +0 -1
  747. package/dist/cli-tui/about-view.js +0 -206
  748. package/dist/cli-tui/about-view.js.map +0 -1
  749. package/dist/cli-tui/agent-event-router.d.ts +0 -28
  750. package/dist/cli-tui/agent-event-router.d.ts.map +0 -1
  751. package/dist/cli-tui/agent-event-router.js +0 -126
  752. package/dist/cli-tui/agent-event-router.js.map +0 -1
  753. package/dist/cli-tui/approval/approval-controller.d.ts +0 -28
  754. package/dist/cli-tui/approval/approval-controller.d.ts.map +0 -1
  755. package/dist/cli-tui/approval/approval-controller.js +0 -99
  756. package/dist/cli-tui/approval/approval-controller.js.map +0 -1
  757. package/dist/cli-tui/approval/approval-modal.d.ts +0 -26
  758. package/dist/cli-tui/approval/approval-modal.d.ts.map +0 -1
  759. package/dist/cli-tui/approval/approval-modal.js +0 -143
  760. package/dist/cli-tui/approval/approval-modal.js.map +0 -1
  761. package/dist/cli-tui/assistant-message.d.ts +0 -41
  762. package/dist/cli-tui/assistant-message.d.ts.map +0 -1
  763. package/dist/cli-tui/assistant-message.js +0 -236
  764. package/dist/cli-tui/assistant-message.js.map +0 -1
  765. package/dist/cli-tui/auth-state.d.ts +0 -7
  766. package/dist/cli-tui/auth-state.d.ts.map +0 -1
  767. package/dist/cli-tui/auth-state.js +0 -46
  768. package/dist/cli-tui/auth-state.js.map +0 -1
  769. package/dist/cli-tui/background/background-tasks-controller.d.ts +0 -31
  770. package/dist/cli-tui/background/background-tasks-controller.d.ts.map +0 -1
  771. package/dist/cli-tui/background/background-tasks-controller.js +0 -84
  772. package/dist/cli-tui/background/background-tasks-controller.js.map +0 -1
  773. package/dist/cli-tui/base-view.d.ts +0 -111
  774. package/dist/cli-tui/base-view.d.ts.map +0 -1
  775. package/dist/cli-tui/base-view.js +0 -145
  776. package/dist/cli-tui/base-view.js.map +0 -1
  777. package/dist/cli-tui/bash/background-launcher.d.ts +0 -14
  778. package/dist/cli-tui/bash/background-launcher.d.ts.map +0 -1
  779. package/dist/cli-tui/bash/background-launcher.js +0 -50
  780. package/dist/cli-tui/bash/background-launcher.js.map +0 -1
  781. package/dist/cli-tui/bash/bash-autocomplete.d.ts +0 -40
  782. package/dist/cli-tui/bash/bash-autocomplete.d.ts.map +0 -1
  783. package/dist/cli-tui/bash/bash-autocomplete.js +0 -347
  784. package/dist/cli-tui/bash/bash-autocomplete.js.map +0 -1
  785. package/dist/cli-tui/bash/bash-history.d.ts +0 -21
  786. package/dist/cli-tui/bash/bash-history.d.ts.map +0 -1
  787. package/dist/cli-tui/bash/bash-history.js +0 -72
  788. package/dist/cli-tui/bash/bash-history.js.map +0 -1
  789. package/dist/cli-tui/bash/bash-syntax.d.ts +0 -5
  790. package/dist/cli-tui/bash/bash-syntax.d.ts.map +0 -1
  791. package/dist/cli-tui/bash/bash-syntax.js +0 -176
  792. package/dist/cli-tui/bash/bash-syntax.js.map +0 -1
  793. package/dist/cli-tui/bash/index.d.ts +0 -4
  794. package/dist/cli-tui/bash/index.d.ts.map +0 -1
  795. package/dist/cli-tui/bash/index.js +0 -4
  796. package/dist/cli-tui/bash/index.js.map +0 -1
  797. package/dist/cli-tui/bash-mode-view.d.ts +0 -86
  798. package/dist/cli-tui/bash-mode-view.d.ts.map +0 -1
  799. package/dist/cli-tui/bash-mode-view.js +0 -560
  800. package/dist/cli-tui/bash-mode-view.js.map +0 -1
  801. package/dist/cli-tui/bash-shell-block.d.ts +0 -50
  802. package/dist/cli-tui/bash-shell-block.d.ts.map +0 -1
  803. package/dist/cli-tui/bash-shell-block.js +0 -119
  804. package/dist/cli-tui/bash-shell-block.js.map +0 -1
  805. package/dist/cli-tui/changelog-view.d.ts +0 -13
  806. package/dist/cli-tui/changelog-view.d.ts.map +0 -1
  807. package/dist/cli-tui/changelog-view.js +0 -34
  808. package/dist/cli-tui/changelog-view.js.map +0 -1
  809. package/dist/cli-tui/clean-mode.d.ts +0 -13
  810. package/dist/cli-tui/clean-mode.d.ts.map +0 -1
  811. package/dist/cli-tui/clean-mode.js +0 -32
  812. package/dist/cli-tui/clean-mode.js.map +0 -1
  813. package/dist/cli-tui/client-tools/client-tool-controller.d.ts +0 -41
  814. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +0 -1
  815. package/dist/cli-tui/client-tools/client-tool-controller.js +0 -862
  816. package/dist/cli-tui/client-tools/client-tool-controller.js.map +0 -1
  817. package/dist/cli-tui/client-tools/local-client-tool-service.d.ts +0 -33
  818. package/dist/cli-tui/client-tools/local-client-tool-service.d.ts.map +0 -1
  819. package/dist/cli-tui/client-tools/local-client-tool-service.js +0 -94
  820. package/dist/cli-tui/client-tools/local-client-tool-service.js.map +0 -1
  821. package/dist/cli-tui/commands/a2a-handlers.d.ts +0 -7
  822. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +0 -1
  823. package/dist/cli-tui/commands/a2a-handlers.js +0 -215
  824. package/dist/cli-tui/commands/a2a-handlers.js.map +0 -1
  825. package/dist/cli-tui/commands/access-command.d.ts +0 -3
  826. package/dist/cli-tui/commands/access-command.d.ts.map +0 -1
  827. package/dist/cli-tui/commands/access-command.js +0 -89
  828. package/dist/cli-tui/commands/access-command.js.map +0 -1
  829. package/dist/cli-tui/commands/argument-parser.d.ts +0 -12
  830. package/dist/cli-tui/commands/argument-parser.d.ts.map +0 -1
  831. package/dist/cli-tui/commands/argument-parser.js +0 -135
  832. package/dist/cli-tui/commands/argument-parser.js.map +0 -1
  833. package/dist/cli-tui/commands/audit-command.d.ts +0 -5
  834. package/dist/cli-tui/commands/audit-command.d.ts.map +0 -1
  835. package/dist/cli-tui/commands/audit-command.js +0 -35
  836. package/dist/cli-tui/commands/audit-command.js.map +0 -1
  837. package/dist/cli-tui/commands/background-handlers.d.ts +0 -14
  838. package/dist/cli-tui/commands/background-handlers.d.ts.map +0 -1
  839. package/dist/cli-tui/commands/background-handlers.js +0 -115
  840. package/dist/cli-tui/commands/background-handlers.js.map +0 -1
  841. package/dist/cli-tui/commands/command-catalog.d.ts +0 -29
  842. package/dist/cli-tui/commands/command-catalog.d.ts.map +0 -1
  843. package/dist/cli-tui/commands/command-catalog.js +0 -666
  844. package/dist/cli-tui/commands/command-catalog.js.map +0 -1
  845. package/dist/cli-tui/commands/command-registry-adapter.d.ts +0 -12
  846. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +0 -1
  847. package/dist/cli-tui/commands/command-registry-adapter.js +0 -129
  848. package/dist/cli-tui/commands/command-registry-adapter.js.map +0 -1
  849. package/dist/cli-tui/commands/command-suite-catalog.d.ts +0 -14
  850. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +0 -1
  851. package/dist/cli-tui/commands/command-suite-catalog.js +0 -147
  852. package/dist/cli-tui/commands/command-suite-catalog.js.map +0 -1
  853. package/dist/cli-tui/commands/command-suite-handlers.d.ts +0 -111
  854. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +0 -1
  855. package/dist/cli-tui/commands/command-suite-handlers.js +0 -110
  856. package/dist/cli-tui/commands/command-suite-handlers.js.map +0 -1
  857. package/dist/cli-tui/commands/composer-handlers.d.ts +0 -8
  858. package/dist/cli-tui/commands/composer-handlers.d.ts.map +0 -1
  859. package/dist/cli-tui/commands/composer-handlers.js +0 -90
  860. package/dist/cli-tui/commands/composer-handlers.js.map +0 -1
  861. package/dist/cli-tui/commands/framework-handlers.d.ts +0 -18
  862. package/dist/cli-tui/commands/framework-handlers.d.ts.map +0 -1
  863. package/dist/cli-tui/commands/framework-handlers.js +0 -57
  864. package/dist/cli-tui/commands/framework-handlers.js.map +0 -1
  865. package/dist/cli-tui/commands/guardian-handlers.d.ts +0 -20
  866. package/dist/cli-tui/commands/guardian-handlers.d.ts.map +0 -1
  867. package/dist/cli-tui/commands/guardian-handlers.js +0 -48
  868. package/dist/cli-tui/commands/guardian-handlers.js.map +0 -1
  869. package/dist/cli-tui/commands/handlers/mode-handler.d.ts +0 -32
  870. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +0 -1
  871. package/dist/cli-tui/commands/handlers/mode-handler.js +0 -153
  872. package/dist/cli-tui/commands/handlers/mode-handler.js.map +0 -1
  873. package/dist/cli-tui/commands/hotkeys-command.d.ts +0 -8
  874. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +0 -1
  875. package/dist/cli-tui/commands/hotkeys-command.js +0 -61
  876. package/dist/cli-tui/commands/hotkeys-command.js.map +0 -1
  877. package/dist/cli-tui/commands/limits-command.d.ts +0 -3
  878. package/dist/cli-tui/commands/limits-command.d.ts.map +0 -1
  879. package/dist/cli-tui/commands/limits-command.js +0 -88
  880. package/dist/cli-tui/commands/limits-command.js.map +0 -1
  881. package/dist/cli-tui/commands/mcp-handlers.d.ts +0 -12
  882. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +0 -1
  883. package/dist/cli-tui/commands/mcp-handlers.js +0 -1306
  884. package/dist/cli-tui/commands/mcp-handlers.js.map +0 -1
  885. package/dist/cli-tui/commands/memory-handlers.d.ts +0 -28
  886. package/dist/cli-tui/commands/memory-handlers.d.ts.map +0 -1
  887. package/dist/cli-tui/commands/memory-handlers.js +0 -414
  888. package/dist/cli-tui/commands/memory-handlers.js.map +0 -1
  889. package/dist/cli-tui/commands/otel-handlers.d.ts +0 -11
  890. package/dist/cli-tui/commands/otel-handlers.d.ts.map +0 -1
  891. package/dist/cli-tui/commands/otel-handlers.js +0 -20
  892. package/dist/cli-tui/commands/otel-handlers.js.map +0 -1
  893. package/dist/cli-tui/commands/package-handlers.d.ts +0 -30
  894. package/dist/cli-tui/commands/package-handlers.d.ts.map +0 -1
  895. package/dist/cli-tui/commands/package-handlers.js +0 -499
  896. package/dist/cli-tui/commands/package-handlers.js.map +0 -1
  897. package/dist/cli-tui/commands/pii-command.d.ts +0 -3
  898. package/dist/cli-tui/commands/pii-command.d.ts.map +0 -1
  899. package/dist/cli-tui/commands/pii-command.js +0 -54
  900. package/dist/cli-tui/commands/pii-command.js.map +0 -1
  901. package/dist/cli-tui/commands/registry.d.ts +0 -3
  902. package/dist/cli-tui/commands/registry.d.ts.map +0 -1
  903. package/dist/cli-tui/commands/registry.js +0 -36
  904. package/dist/cli-tui/commands/registry.js.map +0 -1
  905. package/dist/cli-tui/commands/safety-handlers.d.ts +0 -36
  906. package/dist/cli-tui/commands/safety-handlers.d.ts.map +0 -1
  907. package/dist/cli-tui/commands/safety-handlers.js +0 -62
  908. package/dist/cli-tui/commands/safety-handlers.js.map +0 -1
  909. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +0 -26
  910. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +0 -1
  911. package/dist/cli-tui/commands/subcommands/auth-commands.js +0 -79
  912. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +0 -1
  913. package/dist/cli-tui/commands/subcommands/config-commands.d.ts +0 -23
  914. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +0 -1
  915. package/dist/cli-tui/commands/subcommands/config-commands.js +0 -61
  916. package/dist/cli-tui/commands/subcommands/config-commands.js.map +0 -1
  917. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts +0 -46
  918. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +0 -1
  919. package/dist/cli-tui/commands/subcommands/diag-commands.js +0 -163
  920. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +0 -1
  921. package/dist/cli-tui/commands/subcommands/git-commands.d.ts +0 -18
  922. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +0 -1
  923. package/dist/cli-tui/commands/subcommands/git-commands.js +0 -50
  924. package/dist/cli-tui/commands/subcommands/git-commands.js.map +0 -1
  925. package/dist/cli-tui/commands/subcommands/index.d.ts +0 -18
  926. package/dist/cli-tui/commands/subcommands/index.d.ts.map +0 -1
  927. package/dist/cli-tui/commands/subcommands/index.js +0 -18
  928. package/dist/cli-tui/commands/subcommands/index.js.map +0 -1
  929. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts +0 -26
  930. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +0 -1
  931. package/dist/cli-tui/commands/subcommands/safety-commands.js +0 -149
  932. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +0 -1
  933. package/dist/cli-tui/commands/subcommands/session-commands.d.ts +0 -36
  934. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +0 -1
  935. package/dist/cli-tui/commands/subcommands/session-commands.js +0 -112
  936. package/dist/cli-tui/commands/subcommands/session-commands.js.map +0 -1
  937. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts +0 -27
  938. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +0 -1
  939. package/dist/cli-tui/commands/subcommands/tools-commands.js +0 -80
  940. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +0 -1
  941. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts +0 -30
  942. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +0 -1
  943. package/dist/cli-tui/commands/subcommands/ui-commands.js +0 -74
  944. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +0 -1
  945. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts +0 -25
  946. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +0 -1
  947. package/dist/cli-tui/commands/subcommands/undo-commands.js +0 -74
  948. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +0 -1
  949. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts +0 -19
  950. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +0 -1
  951. package/dist/cli-tui/commands/subcommands/usage-commands.js +0 -63
  952. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +0 -1
  953. package/dist/cli-tui/commands/subcommands/utils.d.ts +0 -127
  954. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +0 -1
  955. package/dist/cli-tui/commands/subcommands/utils.js +0 -395
  956. package/dist/cli-tui/commands/subcommands/utils.js.map +0 -1
  957. package/dist/cli-tui/commands/types.d.ts +0 -105
  958. package/dist/cli-tui/commands/types.d.ts.map +0 -1
  959. package/dist/cli-tui/commands/types.js +0 -2
  960. package/dist/cli-tui/commands/types.js.map +0 -1
  961. package/dist/cli-tui/commands/undo-handlers.d.ts +0 -29
  962. package/dist/cli-tui/commands/undo-handlers.d.ts.map +0 -1
  963. package/dist/cli-tui/commands/undo-handlers.js +0 -300
  964. package/dist/cli-tui/commands/undo-handlers.js.map +0 -1
  965. package/dist/cli-tui/commands/utility-handlers.d.ts +0 -55
  966. package/dist/cli-tui/commands/utility-handlers.d.ts.map +0 -1
  967. package/dist/cli-tui/commands/utility-handlers.js +0 -137
  968. package/dist/cli-tui/commands/utility-handlers.js.map +0 -1
  969. package/dist/cli-tui/commands/workflow-handlers.d.ts +0 -22
  970. package/dist/cli-tui/commands/workflow-handlers.d.ts.map +0 -1
  971. package/dist/cli-tui/commands/workflow-handlers.js +0 -227
  972. package/dist/cli-tui/commands/workflow-handlers.js.map +0 -1
  973. package/dist/cli-tui/compact-boundary-message.d.ts +0 -9
  974. package/dist/cli-tui/compact-boundary-message.d.ts.map +0 -1
  975. package/dist/cli-tui/compact-boundary-message.js +0 -18
  976. package/dist/cli-tui/compact-boundary-message.js.map +0 -1
  977. package/dist/cli-tui/compaction-recovery.d.ts +0 -6
  978. package/dist/cli-tui/compaction-recovery.d.ts.map +0 -1
  979. package/dist/cli-tui/compaction-recovery.js +0 -13
  980. package/dist/cli-tui/compaction-recovery.js.map +0 -1
  981. package/dist/cli-tui/config-view.d.ts +0 -30
  982. package/dist/cli-tui/config-view.d.ts.map +0 -1
  983. package/dist/cli-tui/config-view.js +0 -255
  984. package/dist/cli-tui/config-view.js.map +0 -1
  985. package/dist/cli-tui/context-view.d.ts +0 -20
  986. package/dist/cli-tui/context-view.d.ts.map +0 -1
  987. package/dist/cli-tui/context-view.js +0 -191
  988. package/dist/cli-tui/context-view.js.map +0 -1
  989. package/dist/cli-tui/custom-editor.d.ts +0 -25
  990. package/dist/cli-tui/custom-editor.d.ts.map +0 -1
  991. package/dist/cli-tui/custom-editor.js +0 -241
  992. package/dist/cli-tui/custom-editor.js.map +0 -1
  993. package/dist/cli-tui/editor-view.d.ts +0 -34
  994. package/dist/cli-tui/editor-view.d.ts.map +0 -1
  995. package/dist/cli-tui/editor-view.js +0 -102
  996. package/dist/cli-tui/editor-view.js.map +0 -1
  997. package/dist/cli-tui/feedback-view.d.ts +0 -35
  998. package/dist/cli-tui/feedback-view.d.ts.map +0 -1
  999. package/dist/cli-tui/feedback-view.js +0 -271
  1000. package/dist/cli-tui/feedback-view.js.map +0 -1
  1001. package/dist/cli-tui/footer.d.ts +0 -56
  1002. package/dist/cli-tui/footer.d.ts.map +0 -1
  1003. package/dist/cli-tui/footer.js +0 -228
  1004. package/dist/cli-tui/footer.js.map +0 -1
  1005. package/dist/cli-tui/git/commit-modal.d.ts +0 -14
  1006. package/dist/cli-tui/git/commit-modal.d.ts.map +0 -1
  1007. package/dist/cli-tui/git/commit-modal.js +0 -56
  1008. package/dist/cli-tui/git/commit-modal.js.map +0 -1
  1009. package/dist/cli-tui/git/git-preview-modal.d.ts +0 -40
  1010. package/dist/cli-tui/git/git-preview-modal.d.ts.map +0 -1
  1011. package/dist/cli-tui/git/git-preview-modal.js +0 -123
  1012. package/dist/cli-tui/git/git-preview-modal.js.map +0 -1
  1013. package/dist/cli-tui/git/git-view.d.ts +0 -65
  1014. package/dist/cli-tui/git/git-view.d.ts.map +0 -1
  1015. package/dist/cli-tui/git/git-view.js +0 -529
  1016. package/dist/cli-tui/git/git-view.js.map +0 -1
  1017. package/dist/cli-tui/history/history-config.d.ts +0 -7
  1018. package/dist/cli-tui/history/history-config.d.ts.map +0 -1
  1019. package/dist/cli-tui/history/history-config.js +0 -49
  1020. package/dist/cli-tui/history/history-config.js.map +0 -1
  1021. package/dist/cli-tui/history/prompt-history.d.ts +0 -33
  1022. package/dist/cli-tui/history/prompt-history.d.ts.map +0 -1
  1023. package/dist/cli-tui/history/prompt-history.js +0 -185
  1024. package/dist/cli-tui/history/prompt-history.js.map +0 -1
  1025. package/dist/cli-tui/history/tool-history.d.ts +0 -50
  1026. package/dist/cli-tui/history/tool-history.d.ts.map +0 -1
  1027. package/dist/cli-tui/history/tool-history.js +0 -253
  1028. package/dist/cli-tui/history/tool-history.js.map +0 -1
  1029. package/dist/cli-tui/hook-message.d.ts +0 -13
  1030. package/dist/cli-tui/hook-message.d.ts.map +0 -1
  1031. package/dist/cli-tui/hook-message.js +0 -56
  1032. package/dist/cli-tui/hook-message.js.map +0 -1
  1033. package/dist/cli-tui/hooks/hook-input-modal.d.ts +0 -22
  1034. package/dist/cli-tui/hooks/hook-input-modal.d.ts.map +0 -1
  1035. package/dist/cli-tui/hooks/hook-input-modal.js +0 -63
  1036. package/dist/cli-tui/hooks/hook-input-modal.js.map +0 -1
  1037. package/dist/cli-tui/hotkeys-view.d.ts +0 -13
  1038. package/dist/cli-tui/hotkeys-view.d.ts.map +0 -1
  1039. package/dist/cli-tui/hotkeys-view.js +0 -96
  1040. package/dist/cli-tui/hotkeys-view.js.map +0 -1
  1041. package/dist/cli-tui/import-view.d.ts +0 -28
  1042. package/dist/cli-tui/import-view.d.ts.map +0 -1
  1043. package/dist/cli-tui/import-view.js +0 -184
  1044. package/dist/cli-tui/import-view.js.map +0 -1
  1045. package/dist/cli-tui/info-view.d.ts +0 -18
  1046. package/dist/cli-tui/info-view.d.ts.map +0 -1
  1047. package/dist/cli-tui/info-view.js +0 -107
  1048. package/dist/cli-tui/info-view.js.map +0 -1
  1049. package/dist/cli-tui/instruction-panel.d.ts +0 -11
  1050. package/dist/cli-tui/instruction-panel.d.ts.map +0 -1
  1051. package/dist/cli-tui/instruction-panel.js +0 -86
  1052. package/dist/cli-tui/instruction-panel.js.map +0 -1
  1053. package/dist/cli-tui/interrupt-controller.d.ts +0 -78
  1054. package/dist/cli-tui/interrupt-controller.d.ts.map +0 -1
  1055. package/dist/cli-tui/interrupt-controller.js +0 -104
  1056. package/dist/cli-tui/interrupt-controller.js.map +0 -1
  1057. package/dist/cli-tui/keybindings-config.d.ts +0 -27
  1058. package/dist/cli-tui/keybindings-config.d.ts.map +0 -1
  1059. package/dist/cli-tui/keybindings-config.js +0 -372
  1060. package/dist/cli-tui/keybindings-config.js.map +0 -1
  1061. package/dist/cli-tui/keybindings-watcher.d.ts +0 -8
  1062. package/dist/cli-tui/keybindings-watcher.d.ts.map +0 -1
  1063. package/dist/cli-tui/keybindings-watcher.js +0 -56
  1064. package/dist/cli-tui/keybindings-watcher.js.map +0 -1
  1065. package/dist/cli-tui/keybindings.d.ts +0 -13
  1066. package/dist/cli-tui/keybindings.d.ts.map +0 -1
  1067. package/dist/cli-tui/keybindings.js +0 -223
  1068. package/dist/cli-tui/keybindings.js.map +0 -1
  1069. package/dist/cli-tui/loader/loader-stage-manager.d.ts +0 -43
  1070. package/dist/cli-tui/loader/loader-stage-manager.d.ts.map +0 -1
  1071. package/dist/cli-tui/loader/loader-stage-manager.js +0 -241
  1072. package/dist/cli-tui/loader/loader-stage-manager.js.map +0 -1
  1073. package/dist/cli-tui/loader/loader-stage-telemetry.d.ts +0 -14
  1074. package/dist/cli-tui/loader/loader-stage-telemetry.d.ts.map +0 -1
  1075. package/dist/cli-tui/loader/loader-stage-telemetry.js +0 -34
  1076. package/dist/cli-tui/loader/loader-stage-telemetry.js.map +0 -1
  1077. package/dist/cli-tui/loader/loader-view.d.ts +0 -41
  1078. package/dist/cli-tui/loader/loader-view.d.ts.map +0 -1
  1079. package/dist/cli-tui/loader/loader-view.js +0 -162
  1080. package/dist/cli-tui/loader/loader-view.js.map +0 -1
  1081. package/dist/cli-tui/lsp-view.d.ts +0 -21
  1082. package/dist/cli-tui/lsp-view.d.ts.map +0 -1
  1083. package/dist/cli-tui/lsp-view.js +0 -183
  1084. package/dist/cli-tui/lsp-view.js.map +0 -1
  1085. package/dist/cli-tui/mermaid-renderer.d.ts +0 -2
  1086. package/dist/cli-tui/mermaid-renderer.d.ts.map +0 -1
  1087. package/dist/cli-tui/mermaid-renderer.js +0 -391
  1088. package/dist/cli-tui/mermaid-renderer.js.map +0 -1
  1089. package/dist/cli-tui/message-view.d.ts +0 -27
  1090. package/dist/cli-tui/message-view.d.ts.map +0 -1
  1091. package/dist/cli-tui/message-view.js +0 -169
  1092. package/dist/cli-tui/message-view.js.map +0 -1
  1093. package/dist/cli-tui/modal-manager.d.ts +0 -77
  1094. package/dist/cli-tui/modal-manager.d.ts.map +0 -1
  1095. package/dist/cli-tui/modal-manager.js +0 -131
  1096. package/dist/cli-tui/modal-manager.js.map +0 -1
  1097. package/dist/cli-tui/notification-view.d.ts +0 -16
  1098. package/dist/cli-tui/notification-view.d.ts.map +0 -1
  1099. package/dist/cli-tui/notification-view.js +0 -53
  1100. package/dist/cli-tui/notification-view.js.map +0 -1
  1101. package/dist/cli-tui/oauth/index.d.ts +0 -2
  1102. package/dist/cli-tui/oauth/index.d.ts.map +0 -1
  1103. package/dist/cli-tui/oauth/index.js +0 -2
  1104. package/dist/cli-tui/oauth/index.js.map +0 -1
  1105. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +0 -65
  1106. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +0 -1
  1107. package/dist/cli-tui/oauth/oauth-flow-controller.js +0 -400
  1108. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +0 -1
  1109. package/dist/cli-tui/ollama-view.d.ts +0 -38
  1110. package/dist/cli-tui/ollama-view.d.ts.map +0 -1
  1111. package/dist/cli-tui/ollama-view.js +0 -395
  1112. package/dist/cli-tui/ollama-view.js.map +0 -1
  1113. package/dist/cli-tui/paste/index.d.ts +0 -2
  1114. package/dist/cli-tui/paste/index.d.ts.map +0 -1
  1115. package/dist/cli-tui/paste/index.js +0 -2
  1116. package/dist/cli-tui/paste/index.js.map +0 -1
  1117. package/dist/cli-tui/paste/paste-handler.d.ts +0 -54
  1118. package/dist/cli-tui/paste/paste-handler.d.ts.map +0 -1
  1119. package/dist/cli-tui/paste/paste-handler.js +0 -128
  1120. package/dist/cli-tui/paste/paste-handler.js.map +0 -1
  1121. package/dist/cli-tui/plan/plan-controller.d.ts +0 -28
  1122. package/dist/cli-tui/plan/plan-controller.d.ts.map +0 -1
  1123. package/dist/cli-tui/plan/plan-controller.js +0 -66
  1124. package/dist/cli-tui/plan/plan-controller.js.map +0 -1
  1125. package/dist/cli-tui/plan-panel-modal.d.ts +0 -28
  1126. package/dist/cli-tui/plan-panel-modal.d.ts.map +0 -1
  1127. package/dist/cli-tui/plan-panel-modal.js +0 -193
  1128. package/dist/cli-tui/plan-panel-modal.js.map +0 -1
  1129. package/dist/cli-tui/plan-view.d.ts +0 -57
  1130. package/dist/cli-tui/plan-view.d.ts.map +0 -1
  1131. package/dist/cli-tui/plan-view.js +0 -404
  1132. package/dist/cli-tui/plan-view.js.map +0 -1
  1133. package/dist/cli-tui/prompt-queue.d.ts.map +0 -1
  1134. package/dist/cli-tui/prompt-queue.js.map +0 -1
  1135. package/dist/cli-tui/queue/follow-up-shortcut.d.ts +0 -6
  1136. package/dist/cli-tui/queue/follow-up-shortcut.d.ts.map +0 -1
  1137. package/dist/cli-tui/queue/follow-up-shortcut.js +0 -12
  1138. package/dist/cli-tui/queue/follow-up-shortcut.js.map +0 -1
  1139. package/dist/cli-tui/queue/index.d.ts +0 -3
  1140. package/dist/cli-tui/queue/index.d.ts.map +0 -1
  1141. package/dist/cli-tui/queue/index.js +0 -3
  1142. package/dist/cli-tui/queue/index.js.map +0 -1
  1143. package/dist/cli-tui/queue/queue-controller.d.ts +0 -109
  1144. package/dist/cli-tui/queue/queue-controller.d.ts.map +0 -1
  1145. package/dist/cli-tui/queue/queue-controller.js +0 -327
  1146. package/dist/cli-tui/queue/queue-controller.js.map +0 -1
  1147. package/dist/cli-tui/queue/queue-panel-controller.d.ts +0 -34
  1148. package/dist/cli-tui/queue/queue-panel-controller.d.ts.map +0 -1
  1149. package/dist/cli-tui/queue/queue-panel-controller.js +0 -163
  1150. package/dist/cli-tui/queue/queue-panel-controller.js.map +0 -1
  1151. package/dist/cli-tui/queue/queued-follow-up-edit-binding.d.ts +0 -7
  1152. package/dist/cli-tui/queue/queued-follow-up-edit-binding.d.ts.map +0 -1
  1153. package/dist/cli-tui/queue/queued-follow-up-edit-binding.js +0 -14
  1154. package/dist/cli-tui/queue/queued-follow-up-edit-binding.js.map +0 -1
  1155. package/dist/cli-tui/queue-panel-modal.d.ts +0 -26
  1156. package/dist/cli-tui/queue-panel-modal.d.ts.map +0 -1
  1157. package/dist/cli-tui/queue-panel-modal.js +0 -159
  1158. package/dist/cli-tui/queue-panel-modal.js.map +0 -1
  1159. package/dist/cli-tui/run/run-command-view.d.ts +0 -17
  1160. package/dist/cli-tui/run/run-command-view.d.ts.map +0 -1
  1161. package/dist/cli-tui/run/run-command-view.js +0 -62
  1162. package/dist/cli-tui/run/run-command-view.js.map +0 -1
  1163. package/dist/cli-tui/run/run-controller.d.ts +0 -24
  1164. package/dist/cli-tui/run/run-controller.d.ts.map +0 -1
  1165. package/dist/cli-tui/run/run-controller.js +0 -38
  1166. package/dist/cli-tui/run/run-controller.js.map +0 -1
  1167. package/dist/cli-tui/run/run-shell-command.d.ts +0 -13
  1168. package/dist/cli-tui/run/run-shell-command.d.ts.map +0 -1
  1169. package/dist/cli-tui/run/run-shell-command.js +0 -51
  1170. package/dist/cli-tui/run/run-shell-command.js.map +0 -1
  1171. package/dist/cli-tui/run/streaming-shell-command.d.ts +0 -19
  1172. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +0 -1
  1173. package/dist/cli-tui/run/streaming-shell-command.js +0 -107
  1174. package/dist/cli-tui/run/streaming-shell-command.js.map +0 -1
  1175. package/dist/cli-tui/search/file-search-view.d.ts +0 -22
  1176. package/dist/cli-tui/search/file-search-view.d.ts.map +0 -1
  1177. package/dist/cli-tui/search/file-search-view.js +0 -68
  1178. package/dist/cli-tui/search/file-search-view.js.map +0 -1
  1179. package/dist/cli-tui/search/file-search.d.ts +0 -13
  1180. package/dist/cli-tui/search/file-search.d.ts.map +0 -1
  1181. package/dist/cli-tui/search/file-search.js +0 -52
  1182. package/dist/cli-tui/search/file-search.js.map +0 -1
  1183. package/dist/cli-tui/security-status.d.ts +0 -83
  1184. package/dist/cli-tui/security-status.d.ts.map +0 -1
  1185. package/dist/cli-tui/security-status.js +0 -214
  1186. package/dist/cli-tui/security-status.js.map +0 -1
  1187. package/dist/cli-tui/selectors/base-selector.d.ts +0 -27
  1188. package/dist/cli-tui/selectors/base-selector.d.ts.map +0 -1
  1189. package/dist/cli-tui/selectors/base-selector.js +0 -47
  1190. package/dist/cli-tui/selectors/base-selector.js.map +0 -1
  1191. package/dist/cli-tui/selectors/branch-summary-modal.d.ts +0 -18
  1192. package/dist/cli-tui/selectors/branch-summary-modal.d.ts.map +0 -1
  1193. package/dist/cli-tui/selectors/branch-summary-modal.js +0 -24
  1194. package/dist/cli-tui/selectors/branch-summary-modal.js.map +0 -1
  1195. package/dist/cli-tui/selectors/model-selector-view.d.ts +0 -22
  1196. package/dist/cli-tui/selectors/model-selector-view.d.ts.map +0 -1
  1197. package/dist/cli-tui/selectors/model-selector-view.js +0 -31
  1198. package/dist/cli-tui/selectors/model-selector-view.js.map +0 -1
  1199. package/dist/cli-tui/selectors/model-selector.d.ts +0 -30
  1200. package/dist/cli-tui/selectors/model-selector.d.ts.map +0 -1
  1201. package/dist/cli-tui/selectors/model-selector.js +0 -218
  1202. package/dist/cli-tui/selectors/model-selector.js.map +0 -1
  1203. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +0 -20
  1204. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +0 -1
  1205. package/dist/cli-tui/selectors/oauth-selector-view.js +0 -28
  1206. package/dist/cli-tui/selectors/oauth-selector-view.js.map +0 -1
  1207. package/dist/cli-tui/selectors/oauth-selector.d.ts +0 -19
  1208. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +0 -1
  1209. package/dist/cli-tui/selectors/oauth-selector.js +0 -120
  1210. package/dist/cli-tui/selectors/oauth-selector.js.map +0 -1
  1211. package/dist/cli-tui/selectors/queue-mode-selector-view.d.ts +0 -19
  1212. package/dist/cli-tui/selectors/queue-mode-selector-view.d.ts.map +0 -1
  1213. package/dist/cli-tui/selectors/queue-mode-selector-view.js +0 -29
  1214. package/dist/cli-tui/selectors/queue-mode-selector-view.js.map +0 -1
  1215. package/dist/cli-tui/selectors/queue-mode-selector.d.ts +0 -5
  1216. package/dist/cli-tui/selectors/queue-mode-selector.d.ts.map +0 -1
  1217. package/dist/cli-tui/selectors/queue-mode-selector.js +0 -34
  1218. package/dist/cli-tui/selectors/queue-mode-selector.js.map +0 -1
  1219. package/dist/cli-tui/selectors/report-selector-view.d.ts +0 -17
  1220. package/dist/cli-tui/selectors/report-selector-view.d.ts.map +0 -1
  1221. package/dist/cli-tui/selectors/report-selector-view.js +0 -29
  1222. package/dist/cli-tui/selectors/report-selector-view.js.map +0 -1
  1223. package/dist/cli-tui/selectors/report-selector.d.ts +0 -7
  1224. package/dist/cli-tui/selectors/report-selector.d.ts.map +0 -1
  1225. package/dist/cli-tui/selectors/report-selector.js +0 -31
  1226. package/dist/cli-tui/selectors/report-selector.js.map +0 -1
  1227. package/dist/cli-tui/selectors/theme-selector-view.d.ts +0 -19
  1228. package/dist/cli-tui/selectors/theme-selector-view.d.ts.map +0 -1
  1229. package/dist/cli-tui/selectors/theme-selector-view.js +0 -41
  1230. package/dist/cli-tui/selectors/theme-selector-view.js.map +0 -1
  1231. package/dist/cli-tui/selectors/theme-selector.d.ts +0 -14
  1232. package/dist/cli-tui/selectors/theme-selector.d.ts.map +0 -1
  1233. package/dist/cli-tui/selectors/theme-selector.js +0 -46
  1234. package/dist/cli-tui/selectors/theme-selector.js.map +0 -1
  1235. package/dist/cli-tui/selectors/thinking-selector-view.d.ts +0 -20
  1236. package/dist/cli-tui/selectors/thinking-selector-view.d.ts.map +0 -1
  1237. package/dist/cli-tui/selectors/thinking-selector-view.js +0 -31
  1238. package/dist/cli-tui/selectors/thinking-selector-view.js.map +0 -1
  1239. package/dist/cli-tui/selectors/thinking-selector.d.ts +0 -9
  1240. package/dist/cli-tui/selectors/thinking-selector.d.ts.map +0 -1
  1241. package/dist/cli-tui/selectors/thinking-selector.js +0 -47
  1242. package/dist/cli-tui/selectors/thinking-selector.js.map +0 -1
  1243. package/dist/cli-tui/selectors/tree-selector-view.d.ts +0 -32
  1244. package/dist/cli-tui/selectors/tree-selector-view.d.ts.map +0 -1
  1245. package/dist/cli-tui/selectors/tree-selector-view.js +0 -407
  1246. package/dist/cli-tui/selectors/tree-selector-view.js.map +0 -1
  1247. package/dist/cli-tui/selectors/tree-selector.d.ts +0 -27
  1248. package/dist/cli-tui/selectors/tree-selector.d.ts.map +0 -1
  1249. package/dist/cli-tui/selectors/tree-selector.js +0 -194
  1250. package/dist/cli-tui/selectors/tree-selector.js.map +0 -1
  1251. package/dist/cli-tui/selectors/user-message-selector-view.d.ts +0 -25
  1252. package/dist/cli-tui/selectors/user-message-selector-view.d.ts.map +0 -1
  1253. package/dist/cli-tui/selectors/user-message-selector-view.js +0 -101
  1254. package/dist/cli-tui/selectors/user-message-selector-view.js.map +0 -1
  1255. package/dist/cli-tui/selectors/user-message-selector.d.ts +0 -30
  1256. package/dist/cli-tui/selectors/user-message-selector.d.ts.map +0 -1
  1257. package/dist/cli-tui/selectors/user-message-selector.js +0 -114
  1258. package/dist/cli-tui/selectors/user-message-selector.js.map +0 -1
  1259. package/dist/cli-tui/session/branch-controller.d.ts +0 -65
  1260. package/dist/cli-tui/session/branch-controller.d.ts.map +0 -1
  1261. package/dist/cli-tui/session/branch-controller.js +0 -125
  1262. package/dist/cli-tui/session/branch-controller.js.map +0 -1
  1263. package/dist/cli-tui/session/conversation-compactor.d.ts +0 -64
  1264. package/dist/cli-tui/session/conversation-compactor.d.ts.map +0 -1
  1265. package/dist/cli-tui/session/conversation-compactor.js +0 -77
  1266. package/dist/cli-tui/session/conversation-compactor.js.map +0 -1
  1267. package/dist/cli-tui/session/session-context.d.ts +0 -59
  1268. package/dist/cli-tui/session/session-context.d.ts.map +0 -1
  1269. package/dist/cli-tui/session/session-context.js +0 -79
  1270. package/dist/cli-tui/session/session-context.js.map +0 -1
  1271. package/dist/cli-tui/session/session-data-provider.d.ts +0 -23
  1272. package/dist/cli-tui/session/session-data-provider.d.ts.map +0 -1
  1273. package/dist/cli-tui/session/session-data-provider.js +0 -22
  1274. package/dist/cli-tui/session/session-data-provider.js.map +0 -1
  1275. package/dist/cli-tui/session/session-list.d.ts +0 -18
  1276. package/dist/cli-tui/session/session-list.d.ts.map +0 -1
  1277. package/dist/cli-tui/session/session-list.js +0 -103
  1278. package/dist/cli-tui/session/session-list.js.map +0 -1
  1279. package/dist/cli-tui/session/session-selector.d.ts +0 -12
  1280. package/dist/cli-tui/session/session-selector.d.ts.map +0 -1
  1281. package/dist/cli-tui/session/session-selector.js +0 -37
  1282. package/dist/cli-tui/session/session-selector.js.map +0 -1
  1283. package/dist/cli-tui/session/session-summary-controller.d.ts +0 -24
  1284. package/dist/cli-tui/session/session-summary-controller.d.ts.map +0 -1
  1285. package/dist/cli-tui/session/session-summary-controller.js +0 -96
  1286. package/dist/cli-tui/session/session-summary-controller.js.map +0 -1
  1287. package/dist/cli-tui/session/session-switcher-view.d.ts +0 -20
  1288. package/dist/cli-tui/session/session-switcher-view.d.ts.map +0 -1
  1289. package/dist/cli-tui/session/session-switcher-view.js +0 -43
  1290. package/dist/cli-tui/session/session-switcher-view.js.map +0 -1
  1291. package/dist/cli-tui/session/session-switcher.d.ts +0 -38
  1292. package/dist/cli-tui/session/session-switcher.d.ts.map +0 -1
  1293. package/dist/cli-tui/session/session-switcher.js +0 -204
  1294. package/dist/cli-tui/session/session-switcher.js.map +0 -1
  1295. package/dist/cli-tui/session/session-view.d.ts +0 -46
  1296. package/dist/cli-tui/session/session-view.d.ts.map +0 -1
  1297. package/dist/cli-tui/session/session-view.js +0 -311
  1298. package/dist/cli-tui/session/session-view.js.map +0 -1
  1299. package/dist/cli-tui/slash/index.d.ts +0 -2
  1300. package/dist/cli-tui/slash/index.d.ts.map +0 -1
  1301. package/dist/cli-tui/slash/index.js +0 -2
  1302. package/dist/cli-tui/slash/index.js.map +0 -1
  1303. package/dist/cli-tui/slash/slash-command-matcher.d.ts +0 -55
  1304. package/dist/cli-tui/slash/slash-command-matcher.d.ts.map +0 -1
  1305. package/dist/cli-tui/slash/slash-command-matcher.js +0 -113
  1306. package/dist/cli-tui/slash/slash-command-matcher.js.map +0 -1
  1307. package/dist/cli-tui/smart-autocomplete-provider.d.ts +0 -5
  1308. package/dist/cli-tui/smart-autocomplete-provider.d.ts.map +0 -1
  1309. package/dist/cli-tui/smart-autocomplete-provider.js +0 -44
  1310. package/dist/cli-tui/smart-autocomplete-provider.js.map +0 -1
  1311. package/dist/cli-tui/startup-announcements.d.ts +0 -15
  1312. package/dist/cli-tui/startup-announcements.d.ts.map +0 -1
  1313. package/dist/cli-tui/startup-announcements.js +0 -75
  1314. package/dist/cli-tui/startup-announcements.js.map +0 -1
  1315. package/dist/cli-tui/status/cost-view.d.ts +0 -27
  1316. package/dist/cli-tui/status/cost-view.d.ts.map +0 -1
  1317. package/dist/cli-tui/status/cost-view.js +0 -212
  1318. package/dist/cli-tui/status/cost-view.js.map +0 -1
  1319. package/dist/cli-tui/status/diagnostics-templates.d.ts +0 -34
  1320. package/dist/cli-tui/status/diagnostics-templates.d.ts.map +0 -1
  1321. package/dist/cli-tui/status/diagnostics-templates.js +0 -167
  1322. package/dist/cli-tui/status/diagnostics-templates.js.map +0 -1
  1323. package/dist/cli-tui/status/diagnostics-view.d.ts +0 -48
  1324. package/dist/cli-tui/status/diagnostics-view.d.ts.map +0 -1
  1325. package/dist/cli-tui/status/diagnostics-view.js +0 -249
  1326. package/dist/cli-tui/status/diagnostics-view.js.map +0 -1
  1327. package/dist/cli-tui/status/diagnostics.d.ts +0 -39
  1328. package/dist/cli-tui/status/diagnostics.d.ts.map +0 -1
  1329. package/dist/cli-tui/status/diagnostics.js +0 -286
  1330. package/dist/cli-tui/status/diagnostics.js.map +0 -1
  1331. package/dist/cli-tui/status/health-snapshot.d.ts +0 -17
  1332. package/dist/cli-tui/status/health-snapshot.d.ts.map +0 -1
  1333. package/dist/cli-tui/status/health-snapshot.js +0 -28
  1334. package/dist/cli-tui/status/health-snapshot.js.map +0 -1
  1335. package/dist/cli-tui/status/quota-view.d.ts +0 -37
  1336. package/dist/cli-tui/status/quota-view.d.ts.map +0 -1
  1337. package/dist/cli-tui/status/quota-view.js +0 -309
  1338. package/dist/cli-tui/status/quota-view.js.map +0 -1
  1339. package/dist/cli-tui/status/telemetry-view.d.ts +0 -23
  1340. package/dist/cli-tui/status/telemetry-view.d.ts.map +0 -1
  1341. package/dist/cli-tui/status/telemetry-view.js +0 -77
  1342. package/dist/cli-tui/status/telemetry-view.js.map +0 -1
  1343. package/dist/cli-tui/status/training-view.d.ts +0 -23
  1344. package/dist/cli-tui/status/training-view.d.ts.map +0 -1
  1345. package/dist/cli-tui/status/training-view.js +0 -71
  1346. package/dist/cli-tui/status/training-view.js.map +0 -1
  1347. package/dist/cli-tui/streaming-view.d.ts +0 -43
  1348. package/dist/cli-tui/streaming-view.d.ts.map +0 -1
  1349. package/dist/cli-tui/streaming-view.js +0 -176
  1350. package/dist/cli-tui/streaming-view.js.map +0 -1
  1351. package/dist/cli-tui/terminal/index.d.ts +0 -2
  1352. package/dist/cli-tui/terminal/index.d.ts.map +0 -1
  1353. package/dist/cli-tui/terminal/index.js +0 -2
  1354. package/dist/cli-tui/terminal/index.js.map +0 -1
  1355. package/dist/cli-tui/terminal/terminal-utils.d.ts +0 -44
  1356. package/dist/cli-tui/terminal/terminal-utils.d.ts.map +0 -1
  1357. package/dist/cli-tui/terminal/terminal-utils.js +0 -145
  1358. package/dist/cli-tui/terminal/terminal-utils.js.map +0 -1
  1359. package/dist/cli-tui/tips/tip-scheduler.d.ts +0 -19
  1360. package/dist/cli-tui/tips/tip-scheduler.d.ts.map +0 -1
  1361. package/dist/cli-tui/tips/tip-scheduler.js +0 -135
  1362. package/dist/cli-tui/tips/tip-scheduler.js.map +0 -1
  1363. package/dist/cli-tui/tool-execution.d.ts +0 -76
  1364. package/dist/cli-tui/tool-execution.d.ts.map +0 -1
  1365. package/dist/cli-tui/tool-execution.js +0 -217
  1366. package/dist/cli-tui/tool-execution.js.map +0 -1
  1367. package/dist/cli-tui/tool-output-view.d.ts +0 -22
  1368. package/dist/cli-tui/tool-output-view.d.ts.map +0 -1
  1369. package/dist/cli-tui/tool-output-view.js +0 -71
  1370. package/dist/cli-tui/tool-output-view.js.map +0 -1
  1371. package/dist/cli-tui/tool-renderers/index.d.ts +0 -4
  1372. package/dist/cli-tui/tool-renderers/index.d.ts.map +0 -1
  1373. package/dist/cli-tui/tool-renderers/index.js +0 -19
  1374. package/dist/cli-tui/tool-renderers/index.js.map +0 -1
  1375. package/dist/cli-tui/tool-renderers/render-bash.d.ts +0 -6
  1376. package/dist/cli-tui/tool-renderers/render-bash.d.ts.map +0 -1
  1377. package/dist/cli-tui/tool-renderers/render-bash.js +0 -90
  1378. package/dist/cli-tui/tool-renderers/render-bash.js.map +0 -1
  1379. package/dist/cli-tui/tool-renderers/render-batch.d.ts +0 -12
  1380. package/dist/cli-tui/tool-renderers/render-batch.d.ts.map +0 -1
  1381. package/dist/cli-tui/tool-renderers/render-batch.js +0 -133
  1382. package/dist/cli-tui/tool-renderers/render-batch.js.map +0 -1
  1383. package/dist/cli-tui/tool-renderers/render-edit.d.ts +0 -6
  1384. package/dist/cli-tui/tool-renderers/render-edit.d.ts.map +0 -1
  1385. package/dist/cli-tui/tool-renderers/render-edit.js +0 -125
  1386. package/dist/cli-tui/tool-renderers/render-edit.js.map +0 -1
  1387. package/dist/cli-tui/tool-renderers/render-generic.d.ts +0 -6
  1388. package/dist/cli-tui/tool-renderers/render-generic.d.ts.map +0 -1
  1389. package/dist/cli-tui/tool-renderers/render-generic.js +0 -66
  1390. package/dist/cli-tui/tool-renderers/render-generic.js.map +0 -1
  1391. package/dist/cli-tui/tool-renderers/render-read.d.ts +0 -9
  1392. package/dist/cli-tui/tool-renderers/render-read.d.ts.map +0 -1
  1393. package/dist/cli-tui/tool-renderers/render-read.js +0 -108
  1394. package/dist/cli-tui/tool-renderers/render-read.js.map +0 -1
  1395. package/dist/cli-tui/tool-renderers/render-style.d.ts +0 -21
  1396. package/dist/cli-tui/tool-renderers/render-style.d.ts.map +0 -1
  1397. package/dist/cli-tui/tool-renderers/render-style.js +0 -51
  1398. package/dist/cli-tui/tool-renderers/render-style.js.map +0 -1
  1399. package/dist/cli-tui/tool-renderers/render-write.d.ts +0 -5
  1400. package/dist/cli-tui/tool-renderers/render-write.d.ts.map +0 -1
  1401. package/dist/cli-tui/tool-renderers/render-write.js +0 -60
  1402. package/dist/cli-tui/tool-renderers/render-write.js.map +0 -1
  1403. package/dist/cli-tui/tool-renderers/types.d.ts +0 -20
  1404. package/dist/cli-tui/tool-renderers/types.d.ts.map +0 -1
  1405. package/dist/cli-tui/tool-renderers/types.js +0 -2
  1406. package/dist/cli-tui/tool-renderers/types.js.map +0 -1
  1407. package/dist/cli-tui/tool-retry/tool-retry-controller.d.ts +0 -29
  1408. package/dist/cli-tui/tool-retry/tool-retry-controller.d.ts.map +0 -1
  1409. package/dist/cli-tui/tool-retry/tool-retry-controller.js +0 -110
  1410. package/dist/cli-tui/tool-retry/tool-retry-controller.js.map +0 -1
  1411. package/dist/cli-tui/tool-retry/tool-retry-modal.d.ts +0 -27
  1412. package/dist/cli-tui/tool-retry/tool-retry-modal.d.ts.map +0 -1
  1413. package/dist/cli-tui/tool-retry/tool-retry-modal.js +0 -118
  1414. package/dist/cli-tui/tool-retry/tool-retry-modal.js.map +0 -1
  1415. package/dist/cli-tui/tool-status-view.d.ts +0 -32
  1416. package/dist/cli-tui/tool-status-view.d.ts.map +0 -1
  1417. package/dist/cli-tui/tool-status-view.js +0 -86
  1418. package/dist/cli-tui/tool-status-view.js.map +0 -1
  1419. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +0 -59
  1420. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +0 -1
  1421. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +0 -129
  1422. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +0 -1
  1423. package/dist/cli-tui/tui-renderer/approval-setup.d.ts +0 -13
  1424. package/dist/cli-tui/tui-renderer/approval-setup.d.ts.map +0 -1
  1425. package/dist/cli-tui/tui-renderer/approval-setup.js +0 -5
  1426. package/dist/cli-tui/tui-renderer/approval-setup.js.map +0 -1
  1427. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts +0 -54
  1428. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts.map +0 -1
  1429. package/dist/cli-tui/tui-renderer/attachment-controller.js +0 -160
  1430. package/dist/cli-tui/tui-renderer/attachment-controller.js.map +0 -1
  1431. package/dist/cli-tui/tui-renderer/background-tasks-setup.d.ts +0 -9
  1432. package/dist/cli-tui/tui-renderer/background-tasks-setup.d.ts.map +0 -1
  1433. package/dist/cli-tui/tui-renderer/background-tasks-setup.js +0 -7
  1434. package/dist/cli-tui/tui-renderer/background-tasks-setup.js.map +0 -1
  1435. package/dist/cli-tui/tui-renderer/branch-controller.d.ts +0 -41
  1436. package/dist/cli-tui/tui-renderer/branch-controller.d.ts.map +0 -1
  1437. package/dist/cli-tui/tui-renderer/branch-controller.js +0 -102
  1438. package/dist/cli-tui/tui-renderer/branch-controller.js.map +0 -1
  1439. package/dist/cli-tui/tui-renderer/clear-controller.d.ts +0 -75
  1440. package/dist/cli-tui/tui-renderer/clear-controller.d.ts.map +0 -1
  1441. package/dist/cli-tui/tui-renderer/clear-controller.js +0 -75
  1442. package/dist/cli-tui/tui-renderer/clear-controller.js.map +0 -1
  1443. package/dist/cli-tui/tui-renderer/client-tools-setup.d.ts +0 -14
  1444. package/dist/cli-tui/tui-renderer/client-tools-setup.d.ts.map +0 -1
  1445. package/dist/cli-tui/tui-renderer/client-tools-setup.js +0 -5
  1446. package/dist/cli-tui/tui-renderer/client-tools-setup.js.map +0 -1
  1447. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +0 -111
  1448. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +0 -1
  1449. package/dist/cli-tui/tui-renderer/command-registry-options.js +0 -163
  1450. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +0 -1
  1451. package/dist/cli-tui/tui-renderer/command-registry.d.ts +0 -16
  1452. package/dist/cli-tui/tui-renderer/command-registry.d.ts.map +0 -1
  1453. package/dist/cli-tui/tui-renderer/command-registry.js +0 -23
  1454. package/dist/cli-tui/tui-renderer/command-registry.js.map +0 -1
  1455. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +0 -29
  1456. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +0 -1
  1457. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +0 -108
  1458. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +0 -1
  1459. package/dist/cli-tui/tui-renderer/compaction-controller.d.ts +0 -100
  1460. package/dist/cli-tui/tui-renderer/compaction-controller.d.ts.map +0 -1
  1461. package/dist/cli-tui/tui-renderer/compaction-controller.js +0 -160
  1462. package/dist/cli-tui/tui-renderer/compaction-controller.js.map +0 -1
  1463. package/dist/cli-tui/tui-renderer/custom-commands-controller.d.ts +0 -42
  1464. package/dist/cli-tui/tui-renderer/custom-commands-controller.d.ts.map +0 -1
  1465. package/dist/cli-tui/tui-renderer/custom-commands-controller.js +0 -106
  1466. package/dist/cli-tui/tui-renderer/custom-commands-controller.js.map +0 -1
  1467. package/dist/cli-tui/tui-renderer/delegating-command-handlers.d.ts +0 -37
  1468. package/dist/cli-tui/tui-renderer/delegating-command-handlers.d.ts.map +0 -1
  1469. package/dist/cli-tui/tui-renderer/delegating-command-handlers.js +0 -139
  1470. package/dist/cli-tui/tui-renderer/delegating-command-handlers.js.map +0 -1
  1471. package/dist/cli-tui/tui-renderer/editor-bindings.d.ts +0 -21
  1472. package/dist/cli-tui/tui-renderer/editor-bindings.d.ts.map +0 -1
  1473. package/dist/cli-tui/tui-renderer/editor-bindings.js +0 -76
  1474. package/dist/cli-tui/tui-renderer/editor-bindings.js.map +0 -1
  1475. package/dist/cli-tui/tui-renderer/footer-hints-controller.d.ts +0 -90
  1476. package/dist/cli-tui/tui-renderer/footer-hints-controller.d.ts.map +0 -1
  1477. package/dist/cli-tui/tui-renderer/footer-hints-controller.js +0 -152
  1478. package/dist/cli-tui/tui-renderer/footer-hints-controller.js.map +0 -1
  1479. package/dist/cli-tui/tui-renderer/history-controller.d.ts +0 -35
  1480. package/dist/cli-tui/tui-renderer/history-controller.d.ts.map +0 -1
  1481. package/dist/cli-tui/tui-renderer/history-controller.js +0 -153
  1482. package/dist/cli-tui/tui-renderer/history-controller.js.map +0 -1
  1483. package/dist/cli-tui/tui-renderer/hook-ui-controller.d.ts +0 -83
  1484. package/dist/cli-tui/tui-renderer/hook-ui-controller.d.ts.map +0 -1
  1485. package/dist/cli-tui/tui-renderer/hook-ui-controller.js +0 -309
  1486. package/dist/cli-tui/tui-renderer/hook-ui-controller.js.map +0 -1
  1487. package/dist/cli-tui/tui-renderer/initial-preferences.d.ts +0 -19
  1488. package/dist/cli-tui/tui-renderer/initial-preferences.d.ts.map +0 -1
  1489. package/dist/cli-tui/tui-renderer/initial-preferences.js +0 -54
  1490. package/dist/cli-tui/tui-renderer/initial-preferences.js.map +0 -1
  1491. package/dist/cli-tui/tui-renderer/input-controller.d.ts +0 -56
  1492. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +0 -1
  1493. package/dist/cli-tui/tui-renderer/input-controller.js +0 -104
  1494. package/dist/cli-tui/tui-renderer/input-controller.js.map +0 -1
  1495. package/dist/cli-tui/tui-renderer/interrupt-setup.d.ts +0 -19
  1496. package/dist/cli-tui/tui-renderer/interrupt-setup.d.ts.map +0 -1
  1497. package/dist/cli-tui/tui-renderer/interrupt-setup.js +0 -18
  1498. package/dist/cli-tui/tui-renderer/interrupt-setup.js.map +0 -1
  1499. package/dist/cli-tui/tui-renderer/loader-setup.d.ts +0 -14
  1500. package/dist/cli-tui/tui-renderer/loader-setup.d.ts.map +0 -1
  1501. package/dist/cli-tui/tui-renderer/loader-setup.js +0 -13
  1502. package/dist/cli-tui/tui-renderer/loader-setup.js.map +0 -1
  1503. package/dist/cli-tui/tui-renderer/mcp-events-setup.d.ts +0 -55
  1504. package/dist/cli-tui/tui-renderer/mcp-events-setup.d.ts.map +0 -1
  1505. package/dist/cli-tui/tui-renderer/mcp-events-setup.js +0 -143
  1506. package/dist/cli-tui/tui-renderer/mcp-events-setup.js.map +0 -1
  1507. package/dist/cli-tui/tui-renderer/misc-handlers.d.ts +0 -59
  1508. package/dist/cli-tui/tui-renderer/misc-handlers.d.ts.map +0 -1
  1509. package/dist/cli-tui/tui-renderer/misc-handlers.js +0 -143
  1510. package/dist/cli-tui/tui-renderer/misc-handlers.js.map +0 -1
  1511. package/dist/cli-tui/tui-renderer/oauth-setup.d.ts +0 -14
  1512. package/dist/cli-tui/tui-renderer/oauth-setup.d.ts.map +0 -1
  1513. package/dist/cli-tui/tui-renderer/oauth-setup.js +0 -26
  1514. package/dist/cli-tui/tui-renderer/oauth-setup.js.map +0 -1
  1515. package/dist/cli-tui/tui-renderer/plan-setup.d.ts +0 -19
  1516. package/dist/cli-tui/tui-renderer/plan-setup.d.ts.map +0 -1
  1517. package/dist/cli-tui/tui-renderer/plan-setup.js +0 -23
  1518. package/dist/cli-tui/tui-renderer/plan-setup.js.map +0 -1
  1519. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.d.ts +0 -21
  1520. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.d.ts.map +0 -1
  1521. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.js +0 -64
  1522. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.js.map +0 -1
  1523. package/dist/cli-tui/tui-renderer/queue-setup.d.ts +0 -18
  1524. package/dist/cli-tui/tui-renderer/queue-setup.d.ts.map +0 -1
  1525. package/dist/cli-tui/tui-renderer/queue-setup.js +0 -42
  1526. package/dist/cli-tui/tui-renderer/queue-setup.js.map +0 -1
  1527. package/dist/cli-tui/tui-renderer/quick-settings-controller.d.ts +0 -53
  1528. package/dist/cli-tui/tui-renderer/quick-settings-controller.d.ts.map +0 -1
  1529. package/dist/cli-tui/tui-renderer/quick-settings-controller.js +0 -100
  1530. package/dist/cli-tui/tui-renderer/quick-settings-controller.js.map +0 -1
  1531. package/dist/cli-tui/tui-renderer/session-setup.d.ts +0 -31
  1532. package/dist/cli-tui/tui-renderer/session-setup.d.ts.map +0 -1
  1533. package/dist/cli-tui/tui-renderer/session-setup.js +0 -45
  1534. package/dist/cli-tui/tui-renderer/session-setup.js.map +0 -1
  1535. package/dist/cli-tui/tui-renderer/session-state-controller.d.ts +0 -66
  1536. package/dist/cli-tui/tui-renderer/session-state-controller.d.ts.map +0 -1
  1537. package/dist/cli-tui/tui-renderer/session-state-controller.js +0 -139
  1538. package/dist/cli-tui/tui-renderer/session-state-controller.js.map +0 -1
  1539. package/dist/cli-tui/tui-renderer/skills-controller.d.ts +0 -70
  1540. package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +0 -1
  1541. package/dist/cli-tui/tui-renderer/skills-controller.js +0 -411
  1542. package/dist/cli-tui/tui-renderer/skills-controller.js.map +0 -1
  1543. package/dist/cli-tui/tui-renderer/slash-hint-controller.d.ts +0 -90
  1544. package/dist/cli-tui/tui-renderer/slash-hint-controller.d.ts.map +0 -1
  1545. package/dist/cli-tui/tui-renderer/slash-hint-controller.js +0 -131
  1546. package/dist/cli-tui/tui-renderer/slash-hint-controller.js.map +0 -1
  1547. package/dist/cli-tui/tui-renderer/tool-retry-setup.d.ts +0 -13
  1548. package/dist/cli-tui/tui-renderer/tool-retry-setup.d.ts.map +0 -1
  1549. package/dist/cli-tui/tui-renderer/tool-retry-setup.js +0 -5
  1550. package/dist/cli-tui/tui-renderer/tool-retry-setup.js.map +0 -1
  1551. package/dist/cli-tui/tui-renderer/tooling-views-setup.d.ts +0 -38
  1552. package/dist/cli-tui/tui-renderer/tooling-views-setup.d.ts.map +0 -1
  1553. package/dist/cli-tui/tui-renderer/tooling-views-setup.js +0 -48
  1554. package/dist/cli-tui/tui-renderer/tooling-views-setup.js.map +0 -1
  1555. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +0 -70
  1556. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts.map +0 -1
  1557. package/dist/cli-tui/tui-renderer/ui-state-controller.js +0 -184
  1558. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +0 -1
  1559. package/dist/cli-tui/tui-renderer/ui-state-setup.d.ts +0 -13
  1560. package/dist/cli-tui/tui-renderer/ui-state-setup.d.ts.map +0 -1
  1561. package/dist/cli-tui/tui-renderer/ui-state-setup.js +0 -11
  1562. package/dist/cli-tui/tui-renderer/ui-state-setup.js.map +0 -1
  1563. package/dist/cli-tui/tui-renderer/utility-views-setup.d.ts +0 -26
  1564. package/dist/cli-tui/tui-renderer/utility-views-setup.d.ts.map +0 -1
  1565. package/dist/cli-tui/tui-renderer/utility-views-setup.js +0 -23
  1566. package/dist/cli-tui/tui-renderer/utility-views-setup.js.map +0 -1
  1567. package/dist/cli-tui/tui-renderer/viewport-controller.d.ts +0 -33
  1568. package/dist/cli-tui/tui-renderer/viewport-controller.d.ts.map +0 -1
  1569. package/dist/cli-tui/tui-renderer/viewport-controller.js +0 -98
  1570. package/dist/cli-tui/tui-renderer/viewport-controller.js.map +0 -1
  1571. package/dist/cli-tui/tui-renderer.d.ts +0 -268
  1572. package/dist/cli-tui/tui-renderer.d.ts.map +0 -1
  1573. package/dist/cli-tui/tui-renderer.js +0 -2131
  1574. package/dist/cli-tui/tui-renderer.js.map +0 -1
  1575. package/dist/cli-tui/ui-state.d.ts +0 -27
  1576. package/dist/cli-tui/ui-state.d.ts.map +0 -1
  1577. package/dist/cli-tui/ui-state.js +0 -88
  1578. package/dist/cli-tui/ui-state.js.map +0 -1
  1579. package/dist/cli-tui/update-view.d.ts +0 -16
  1580. package/dist/cli-tui/update-view.d.ts.map +0 -1
  1581. package/dist/cli-tui/update-view.js +0 -45
  1582. package/dist/cli-tui/update-view.js.map +0 -1
  1583. package/dist/cli-tui/user-message.d.ts +0 -17
  1584. package/dist/cli-tui/user-message.d.ts.map +0 -1
  1585. package/dist/cli-tui/user-message.js +0 -83
  1586. package/dist/cli-tui/user-message.js.map +0 -1
  1587. package/dist/cli-tui/utils/borders.d.ts +0 -131
  1588. package/dist/cli-tui/utils/borders.d.ts.map +0 -1
  1589. package/dist/cli-tui/utils/borders.js +0 -254
  1590. package/dist/cli-tui/utils/borders.js.map +0 -1
  1591. package/dist/cli-tui/utils/commands/command-palette-view.d.ts +0 -22
  1592. package/dist/cli-tui/utils/commands/command-palette-view.d.ts.map +0 -1
  1593. package/dist/cli-tui/utils/commands/command-palette-view.js +0 -31
  1594. package/dist/cli-tui/utils/commands/command-palette-view.js.map +0 -1
  1595. package/dist/cli-tui/utils/commands/command-palette.d.ts +0 -29
  1596. package/dist/cli-tui/utils/commands/command-palette.d.ts.map +0 -1
  1597. package/dist/cli-tui/utils/commands/command-palette.js +0 -213
  1598. package/dist/cli-tui/utils/commands/command-palette.js.map +0 -1
  1599. package/dist/cli-tui/utils/commands/command-registry-builder.d.ts +0 -8
  1600. package/dist/cli-tui/utils/commands/command-registry-builder.d.ts.map +0 -1
  1601. package/dist/cli-tui/utils/commands/command-registry-builder.js +0 -9
  1602. package/dist/cli-tui/utils/commands/command-registry-builder.js.map +0 -1
  1603. package/dist/cli-tui/utils/commands/review-prompt.d.ts +0 -10
  1604. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +0 -1
  1605. package/dist/cli-tui/utils/commands/review-prompt.js +0 -90
  1606. package/dist/cli-tui/utils/commands/review-prompt.js.map +0 -1
  1607. package/dist/cli-tui/utils/commands/slash-hint-bar.d.ts +0 -15
  1608. package/dist/cli-tui/utils/commands/slash-hint-bar.d.ts.map +0 -1
  1609. package/dist/cli-tui/utils/commands/slash-hint-bar.js +0 -106
  1610. package/dist/cli-tui/utils/commands/slash-hint-bar.js.map +0 -1
  1611. package/dist/cli-tui/utils/env-detect.d.ts +0 -11
  1612. package/dist/cli-tui/utils/env-detect.d.ts.map +0 -1
  1613. package/dist/cli-tui/utils/env-detect.js +0 -107
  1614. package/dist/cli-tui/utils/env-detect.js.map +0 -1
  1615. package/dist/cli-tui/utils/external-editor.d.ts +0 -7
  1616. package/dist/cli-tui/utils/external-editor.d.ts.map +0 -1
  1617. package/dist/cli-tui/utils/external-editor.js +0 -53
  1618. package/dist/cli-tui/utils/external-editor.js.map +0 -1
  1619. package/dist/cli-tui/utils/footer-utils.d.ts +0 -169
  1620. package/dist/cli-tui/utils/footer-utils.d.ts.map +0 -1
  1621. package/dist/cli-tui/utils/footer-utils.js +0 -716
  1622. package/dist/cli-tui/utils/footer-utils.js.map +0 -1
  1623. package/dist/cli-tui/utils/footer-visual-widgets.d.ts +0 -38
  1624. package/dist/cli-tui/utils/footer-visual-widgets.d.ts.map +0 -1
  1625. package/dist/cli-tui/utils/footer-visual-widgets.js +0 -141
  1626. package/dist/cli-tui/utils/footer-visual-widgets.js.map +0 -1
  1627. package/dist/cli-tui/utils/git-branch-tracker.d.ts +0 -38
  1628. package/dist/cli-tui/utils/git-branch-tracker.d.ts.map +0 -1
  1629. package/dist/cli-tui/utils/git-branch-tracker.js +0 -90
  1630. package/dist/cli-tui/utils/git-branch-tracker.js.map +0 -1
  1631. package/dist/cli-tui/utils/glyphs.d.ts +0 -207
  1632. package/dist/cli-tui/utils/glyphs.d.ts.map +0 -1
  1633. package/dist/cli-tui/utils/glyphs.js +0 -249
  1634. package/dist/cli-tui/utils/glyphs.js.map +0 -1
  1635. package/dist/cli-tui/utils/layout.d.ts +0 -77
  1636. package/dist/cli-tui/utils/layout.d.ts.map +0 -1
  1637. package/dist/cli-tui/utils/layout.js +0 -83
  1638. package/dist/cli-tui/utils/layout.js.map +0 -1
  1639. package/dist/cli-tui/utils/links.d.ts +0 -2
  1640. package/dist/cli-tui/utils/links.d.ts.map +0 -1
  1641. package/dist/cli-tui/utils/links.js +0 -14
  1642. package/dist/cli-tui/utils/links.js.map +0 -1
  1643. package/dist/cli-tui/utils/motion.d.ts +0 -4
  1644. package/dist/cli-tui/utils/motion.d.ts.map +0 -1
  1645. package/dist/cli-tui/utils/motion.js +0 -28
  1646. package/dist/cli-tui/utils/motion.js.map +0 -1
  1647. package/dist/cli-tui/utils/runtime-badges.d.ts +0 -26
  1648. package/dist/cli-tui/utils/runtime-badges.d.ts.map +0 -1
  1649. package/dist/cli-tui/utils/runtime-badges.js +0 -178
  1650. package/dist/cli-tui/utils/runtime-badges.js.map +0 -1
  1651. package/dist/cli-tui/utils/shimmer.d.ts +0 -12
  1652. package/dist/cli-tui/utils/shimmer.d.ts.map +0 -1
  1653. package/dist/cli-tui/utils/shimmer.js +0 -57
  1654. package/dist/cli-tui/utils/shimmer.js.map +0 -1
  1655. package/dist/cli-tui/utils/stage-labels.d.ts +0 -9
  1656. package/dist/cli-tui/utils/stage-labels.d.ts.map +0 -1
  1657. package/dist/cli-tui/utils/stage-labels.js +0 -65
  1658. package/dist/cli-tui/utils/stage-labels.js.map +0 -1
  1659. package/dist/cli-tui/utils/text-formatting.d.ts +0 -13
  1660. package/dist/cli-tui/utils/text-formatting.d.ts.map +0 -1
  1661. package/dist/cli-tui/utils/text-formatting.js +0 -109
  1662. package/dist/cli-tui/utils/text-formatting.js.map +0 -1
  1663. package/dist/cli-tui/utils/text-preview.d.ts +0 -10
  1664. package/dist/cli-tui/utils/text-preview.d.ts.map +0 -1
  1665. package/dist/cli-tui/utils/text-preview.js +0 -26
  1666. package/dist/cli-tui/utils/text-preview.js.map +0 -1
  1667. package/dist/cli-tui/utils/tool-text-utils.d.ts +0 -42
  1668. package/dist/cli-tui/utils/tool-text-utils.d.ts.map +0 -1
  1669. package/dist/cli-tui/utils/tool-text-utils.js +0 -361
  1670. package/dist/cli-tui/utils/tool-text-utils.js.map +0 -1
  1671. package/dist/cli-tui/welcome-animation.d.ts +0 -24
  1672. package/dist/cli-tui/welcome-animation.d.ts.map +0 -1
  1673. package/dist/cli-tui/welcome-animation.js +0 -99
  1674. package/dist/cli-tui/welcome-animation.js.map +0 -1
  1675. package/dist/cli-tui/welcome-colors.d.ts +0 -3
  1676. package/dist/cli-tui/welcome-colors.d.ts.map +0 -1
  1677. package/dist/cli-tui/welcome-colors.js +0 -39
  1678. package/dist/cli-tui/welcome-colors.js.map +0 -1
  1679. package/dist/node_modules/@evalops/tui/dist/autocomplete.d.ts +0 -304
  1680. package/dist/node_modules/@evalops/tui/dist/autocomplete.d.ts.map +0 -1
  1681. package/dist/node_modules/@evalops/tui/dist/autocomplete.js +0 -712
  1682. package/dist/node_modules/@evalops/tui/dist/autocomplete.js.map +0 -1
  1683. package/dist/node_modules/@evalops/tui/dist/components/editor.d.ts +0 -185
  1684. package/dist/node_modules/@evalops/tui/dist/components/editor.d.ts.map +0 -1
  1685. package/dist/node_modules/@evalops/tui/dist/components/editor.js +0 -1460
  1686. package/dist/node_modules/@evalops/tui/dist/components/editor.js.map +0 -1
  1687. package/dist/node_modules/@evalops/tui/dist/components/input.d.ts +0 -117
  1688. package/dist/node_modules/@evalops/tui/dist/components/input.d.ts.map +0 -1
  1689. package/dist/node_modules/@evalops/tui/dist/components/input.js +0 -391
  1690. package/dist/node_modules/@evalops/tui/dist/components/input.js.map +0 -1
  1691. package/dist/node_modules/@evalops/tui/dist/components/layout.d.ts +0 -256
  1692. package/dist/node_modules/@evalops/tui/dist/components/layout.d.ts.map +0 -1
  1693. package/dist/node_modules/@evalops/tui/dist/components/layout.js +0 -478
  1694. package/dist/node_modules/@evalops/tui/dist/components/layout.js.map +0 -1
  1695. package/dist/node_modules/@evalops/tui/dist/components/loader.d.ts +0 -199
  1696. package/dist/node_modules/@evalops/tui/dist/components/loader.d.ts.map +0 -1
  1697. package/dist/node_modules/@evalops/tui/dist/components/loader.js +0 -374
  1698. package/dist/node_modules/@evalops/tui/dist/components/loader.js.map +0 -1
  1699. package/dist/node_modules/@evalops/tui/dist/components/markdown.d.ts +0 -65
  1700. package/dist/node_modules/@evalops/tui/dist/components/markdown.d.ts.map +0 -1
  1701. package/dist/node_modules/@evalops/tui/dist/components/markdown.js +0 -562
  1702. package/dist/node_modules/@evalops/tui/dist/components/markdown.js.map +0 -1
  1703. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.d.ts +0 -262
  1704. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.d.ts.map +0 -1
  1705. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.js +0 -575
  1706. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.js.map +0 -1
  1707. package/dist/node_modules/@evalops/tui/dist/components/select-list.d.ts +0 -131
  1708. package/dist/node_modules/@evalops/tui/dist/components/select-list.d.ts.map +0 -1
  1709. package/dist/node_modules/@evalops/tui/dist/components/select-list.js +0 -257
  1710. package/dist/node_modules/@evalops/tui/dist/components/select-list.js.map +0 -1
  1711. package/dist/node_modules/@evalops/tui/dist/components/spacer.d.ts +0 -11
  1712. package/dist/node_modules/@evalops/tui/dist/components/spacer.d.ts.map +0 -1
  1713. package/dist/node_modules/@evalops/tui/dist/components/spacer.js +0 -19
  1714. package/dist/node_modules/@evalops/tui/dist/components/spacer.js.map +0 -1
  1715. package/dist/node_modules/@evalops/tui/dist/components/status-bar.d.ts +0 -22
  1716. package/dist/node_modules/@evalops/tui/dist/components/status-bar.d.ts.map +0 -1
  1717. package/dist/node_modules/@evalops/tui/dist/components/status-bar.js +0 -44
  1718. package/dist/node_modules/@evalops/tui/dist/components/status-bar.js.map +0 -1
  1719. package/dist/node_modules/@evalops/tui/dist/components/text.d.ts +0 -26
  1720. package/dist/node_modules/@evalops/tui/dist/components/text.d.ts.map +0 -1
  1721. package/dist/node_modules/@evalops/tui/dist/components/text.js +0 -181
  1722. package/dist/node_modules/@evalops/tui/dist/components/text.js.map +0 -1
  1723. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.d.ts +0 -15
  1724. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.d.ts.map +0 -1
  1725. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.js +0 -84
  1726. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.js.map +0 -1
  1727. package/dist/node_modules/@evalops/tui/dist/index.d.ts +0 -87
  1728. package/dist/node_modules/@evalops/tui/dist/index.d.ts.map +0 -1
  1729. package/dist/node_modules/@evalops/tui/dist/index.js +0 -85
  1730. package/dist/node_modules/@evalops/tui/dist/index.js.map +0 -1
  1731. package/dist/node_modules/@evalops/tui/dist/keymap.d.ts +0 -189
  1732. package/dist/node_modules/@evalops/tui/dist/keymap.d.ts.map +0 -1
  1733. package/dist/node_modules/@evalops/tui/dist/keymap.js +0 -363
  1734. package/dist/node_modules/@evalops/tui/dist/keymap.js.map +0 -1
  1735. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.d.ts +0 -25
  1736. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.d.ts.map +0 -1
  1737. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.js +0 -828
  1738. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.js.map +0 -1
  1739. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.d.ts +0 -40
  1740. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.d.ts.map +0 -1
  1741. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.js +0 -474
  1742. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.js.map +0 -1
  1743. package/dist/node_modules/@evalops/tui/dist/terminal.d.ts +0 -201
  1744. package/dist/node_modules/@evalops/tui/dist/terminal.d.ts.map +0 -1
  1745. package/dist/node_modules/@evalops/tui/dist/terminal.js +0 -241
  1746. package/dist/node_modules/@evalops/tui/dist/terminal.js.map +0 -1
  1747. package/dist/node_modules/@evalops/tui/dist/tui.d.ts +0 -263
  1748. package/dist/node_modules/@evalops/tui/dist/tui.d.ts.map +0 -1
  1749. package/dist/node_modules/@evalops/tui/dist/tui.js +0 -694
  1750. package/dist/node_modules/@evalops/tui/dist/tui.js.map +0 -1
  1751. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.d.ts +0 -14
  1752. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.d.ts.map +0 -1
  1753. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.js +0 -44
  1754. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.js.map +0 -1
  1755. package/dist/node_modules/@evalops/tui/dist/utils.d.ts +0 -32
  1756. package/dist/node_modules/@evalops/tui/dist/utils.d.ts.map +0 -1
  1757. package/dist/node_modules/@evalops/tui/dist/utils.js +0 -556
  1758. package/dist/node_modules/@evalops/tui/dist/utils.js.map +0 -1
  1759. package/dist/node_modules/@evalops/tui/package.json +0 -58
  1760. package/dist/skills/artifact-metadata.d.ts +0 -16
  1761. package/dist/skills/artifact-metadata.d.ts.map +0 -1
  1762. package/dist/skills/artifact-metadata.js +0 -86
  1763. package/dist/skills/artifact-metadata.js.map +0 -1
  1764. package/dist/skills/composer-diagnostics.d.ts +0 -69
  1765. package/dist/skills/composer-diagnostics.d.ts.map +0 -1
  1766. package/dist/skills/composer-diagnostics.js +0 -78
  1767. package/dist/skills/composer-diagnostics.js.map +0 -1
  1768. package/dist/skills/composer.d.ts +0 -19
  1769. package/dist/skills/composer.d.ts.map +0 -1
  1770. package/dist/skills/composer.js +0 -52
  1771. package/dist/skills/composer.js.map +0 -1
  1772. package/dist/skills/eval-harness.d.ts +0 -38
  1773. package/dist/skills/eval-harness.d.ts.map +0 -1
  1774. package/dist/skills/eval-harness.js +0 -112
  1775. package/dist/skills/eval-harness.js.map +0 -1
  1776. package/dist/skills/index.d.ts +0 -40
  1777. package/dist/skills/index.d.ts.map +0 -1
  1778. package/dist/skills/index.js +0 -40
  1779. package/dist/skills/index.js.map +0 -1
  1780. package/dist/skills/linter.d.ts +0 -36
  1781. package/dist/skills/linter.d.ts.map +0 -1
  1782. package/dist/skills/linter.js +0 -399
  1783. package/dist/skills/linter.js.map +0 -1
  1784. package/dist/skills/loader.d.ts +0 -252
  1785. package/dist/skills/loader.d.ts.map +0 -1
  1786. package/dist/skills/loader.js +0 -957
  1787. package/dist/skills/loader.js.map +0 -1
  1788. package/dist/skills/package-contract.d.ts +0 -45
  1789. package/dist/skills/package-contract.d.ts.map +0 -1
  1790. package/dist/skills/package-contract.js +0 -153
  1791. package/dist/skills/package-contract.js.map +0 -1
  1792. package/dist/skills/runtime-activation.d.ts +0 -68
  1793. package/dist/skills/runtime-activation.d.ts.map +0 -1
  1794. package/dist/skills/runtime-activation.js +0 -228
  1795. package/dist/skills/runtime-activation.js.map +0 -1
  1796. package/dist/skills/scaffold-from-template.d.ts +0 -58
  1797. package/dist/skills/scaffold-from-template.d.ts.map +0 -1
  1798. package/dist/skills/scaffold-from-template.js +0 -72
  1799. package/dist/skills/scaffold-from-template.js.map +0 -1
  1800. package/dist/skills/scaffolder.d.ts +0 -65
  1801. package/dist/skills/scaffolder.d.ts.map +0 -1
  1802. package/dist/skills/scaffolder.js +0 -167
  1803. package/dist/skills/scaffolder.js.map +0 -1
  1804. package/dist/skills/service-client.d.ts +0 -56
  1805. package/dist/skills/service-client.d.ts.map +0 -1
  1806. package/dist/skills/service-client.js +0 -266
  1807. package/dist/skills/service-client.js.map +0 -1
  1808. package/dist/skills/skill-templates.d.ts +0 -70
  1809. package/dist/skills/skill-templates.d.ts.map +0 -1
  1810. package/dist/skills/skill-templates.js +0 -154
  1811. package/dist/skills/skill-templates.js.map +0 -1
  1812. package/dist/skills/tool.d.ts +0 -21
  1813. package/dist/skills/tool.d.ts.map +0 -1
  1814. package/dist/skills/tool.js +0 -334
  1815. package/dist/skills/tool.js.map +0 -1
  1816. package/dist/skills/trust-cache.d.ts +0 -58
  1817. package/dist/skills/trust-cache.d.ts.map +0 -1
  1818. package/dist/skills/trust-cache.js +0 -130
  1819. package/dist/skills/trust-cache.js.map +0 -1
  1820. package/dist/skills/types.d.ts +0 -91
  1821. package/dist/skills/types.d.ts.map +0 -1
  1822. package/dist/skills/types.js +0 -8
  1823. package/dist/skills/types.js.map +0 -1
  1824. /package/dist/{cli-tui → runtime}/prompt-queue.d.ts +0 -0
  1825. /package/dist/{cli-tui → runtime}/prompt-queue.js +0 -0
@@ -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":"AAAA;;;;;;;GAOG;AAOH,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IACjC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,EAAE,iBAIhC,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,aAAa,GACtB,IAAI,GACJ,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AAEnB,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC9B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mCAAmC;IACnC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gCAAgC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,2BAA2B;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IAC5B,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAuB;gBAE7B,UAAU,GAAE,iBAAsC;IAI9D;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;IAiClE;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIzC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlC;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOvC;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM1C;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;OAEG;IACH,sBAAsB,CACrB,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,GACxB,cAAc;IAajB;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IA8DpD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IAapD;;OAEG;IACH,KAAK,IAAI,IAAI;CAQb;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAC1C,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,qBAAqB,CAKvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI9D"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * Inspired by Amp's thread handoff feature.
8
8
  */
9
+ import { estimateTokens } from "@evalops/contracts";
9
10
  import { createLogger } from "../utils/logger.js";
10
11
  const log = createLogger("agent:context-handoff");
11
12
  /** Default thresholds */
@@ -221,7 +222,7 @@ export function createContextHandoffManager(thresholds) {
221
222
  * Uses ~4 characters per token as a rough estimate.
222
223
  */
223
224
  export function estimateTokenCount(text) {
224
- return Math.ceil(text.length / 4);
225
+ return estimateTokens(text);
225
226
  }
226
227
  /**
227
228
  * Format context usage for display.