@code-yeongyu/senpi 0.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1193) hide show
  1. package/CHANGELOG.md +4225 -0
  2. package/README.md +654 -0
  3. package/dist/bun/cli.d.ts +3 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +9 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/register-bedrock.d.ts +2 -0
  8. package/dist/bun/register-bedrock.d.ts.map +1 -0
  9. package/dist/bun/register-bedrock.js +4 -0
  10. package/dist/bun/register-bedrock.js.map +1 -0
  11. package/dist/bun/restore-sandbox-env.d.ts +13 -0
  12. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  13. package/dist/bun/restore-sandbox-env.js +32 -0
  14. package/dist/bun/restore-sandbox-env.js.map +1 -0
  15. package/dist/cli/args.d.ts +53 -0
  16. package/dist/cli/args.d.ts.map +1 -0
  17. package/dist/cli/args.js +342 -0
  18. package/dist/cli/args.js.map +1 -0
  19. package/dist/cli/config-selector.d.ts +14 -0
  20. package/dist/cli/config-selector.d.ts.map +1 -0
  21. package/dist/cli/config-selector.js +31 -0
  22. package/dist/cli/config-selector.js.map +1 -0
  23. package/dist/cli/file-processor.d.ts +15 -0
  24. package/dist/cli/file-processor.d.ts.map +1 -0
  25. package/dist/cli/file-processor.js +83 -0
  26. package/dist/cli/file-processor.js.map +1 -0
  27. package/dist/cli/initial-message.d.ts +18 -0
  28. package/dist/cli/initial-message.d.ts.map +1 -0
  29. package/dist/cli/initial-message.js +22 -0
  30. package/dist/cli/initial-message.js.map +1 -0
  31. package/dist/cli/list-models.d.ts +9 -0
  32. package/dist/cli/list-models.d.ts.map +1 -0
  33. package/dist/cli/list-models.js +98 -0
  34. package/dist/cli/list-models.js.map +1 -0
  35. package/dist/cli/session-picker.d.ts +9 -0
  36. package/dist/cli/session-picker.d.ts.map +1 -0
  37. package/dist/cli/session-picker.js +35 -0
  38. package/dist/cli/session-picker.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +20 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/config.d.ts +92 -0
  44. package/dist/config.d.ts.map +1 -0
  45. package/dist/config.js +399 -0
  46. package/dist/config.js.map +1 -0
  47. package/dist/core/agent-session-runtime.d.ts +117 -0
  48. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  49. package/dist/core/agent-session-runtime.js +300 -0
  50. package/dist/core/agent-session-runtime.js.map +1 -0
  51. package/dist/core/agent-session-services.d.ts +93 -0
  52. package/dist/core/agent-session-services.d.ts.map +1 -0
  53. package/dist/core/agent-session-services.js +118 -0
  54. package/dist/core/agent-session-services.js.map +1 -0
  55. package/dist/core/agent-session.d.ts +643 -0
  56. package/dist/core/agent-session.d.ts.map +1 -0
  57. package/dist/core/agent-session.js +2702 -0
  58. package/dist/core/agent-session.js.map +1 -0
  59. package/dist/core/auth-guidance.d.ts +5 -0
  60. package/dist/core/auth-guidance.d.ts.map +1 -0
  61. package/dist/core/auth-guidance.js +21 -0
  62. package/dist/core/auth-guidance.js.map +1 -0
  63. package/dist/core/auth-storage.d.ts +141 -0
  64. package/dist/core/auth-storage.d.ts.map +1 -0
  65. package/dist/core/auth-storage.js +441 -0
  66. package/dist/core/auth-storage.js.map +1 -0
  67. package/dist/core/bash-executor.d.ts +32 -0
  68. package/dist/core/bash-executor.d.ts.map +1 -0
  69. package/dist/core/bash-executor.js +111 -0
  70. package/dist/core/bash-executor.js.map +1 -0
  71. package/dist/core/compaction/branch-summarization.d.ts +93 -0
  72. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  73. package/dist/core/compaction/branch-summarization.js +285 -0
  74. package/dist/core/compaction/branch-summarization.js.map +1 -0
  75. package/dist/core/compaction/compaction.d.ts +129 -0
  76. package/dist/core/compaction/compaction.d.ts.map +1 -0
  77. package/dist/core/compaction/compaction.js +635 -0
  78. package/dist/core/compaction/compaction.js.map +1 -0
  79. package/dist/core/compaction/index.d.ts +7 -0
  80. package/dist/core/compaction/index.d.ts.map +1 -0
  81. package/dist/core/compaction/index.js +7 -0
  82. package/dist/core/compaction/index.js.map +1 -0
  83. package/dist/core/compaction/utils.d.ts +38 -0
  84. package/dist/core/compaction/utils.d.ts.map +1 -0
  85. package/dist/core/compaction/utils.js +165 -0
  86. package/dist/core/compaction/utils.js.map +1 -0
  87. package/dist/core/defaults.d.ts +3 -0
  88. package/dist/core/defaults.d.ts.map +1 -0
  89. package/dist/core/defaults.js +2 -0
  90. package/dist/core/defaults.js.map +1 -0
  91. package/dist/core/diagnostics.d.ts +15 -0
  92. package/dist/core/diagnostics.d.ts.map +1 -0
  93. package/dist/core/diagnostics.js +2 -0
  94. package/dist/core/diagnostics.js.map +1 -0
  95. package/dist/core/dynamic-prompt/build.d.ts +15 -0
  96. package/dist/core/dynamic-prompt/build.d.ts.map +1 -0
  97. package/dist/core/dynamic-prompt/build.js +61 -0
  98. package/dist/core/dynamic-prompt/build.js.map +1 -0
  99. package/dist/core/dynamic-prompt/exploration.d.ts +2 -0
  100. package/dist/core/dynamic-prompt/exploration.d.ts.map +1 -0
  101. package/dist/core/dynamic-prompt/exploration.js +8 -0
  102. package/dist/core/dynamic-prompt/exploration.js.map +1 -0
  103. package/dist/core/dynamic-prompt/identity.d.ts +2 -0
  104. package/dist/core/dynamic-prompt/identity.d.ts.map +1 -0
  105. package/dist/core/dynamic-prompt/identity.js +4 -0
  106. package/dist/core/dynamic-prompt/identity.js.map +1 -0
  107. package/dist/core/dynamic-prompt/index.d.ts +13 -0
  108. package/dist/core/dynamic-prompt/index.d.ts.map +1 -0
  109. package/dist/core/dynamic-prompt/index.js +11 -0
  110. package/dist/core/dynamic-prompt/index.js.map +1 -0
  111. package/dist/core/dynamic-prompt/intent-gate.d.ts +5 -0
  112. package/dist/core/dynamic-prompt/intent-gate.d.ts.map +1 -0
  113. package/dist/core/dynamic-prompt/intent-gate.js +57 -0
  114. package/dist/core/dynamic-prompt/intent-gate.js.map +1 -0
  115. package/dist/core/dynamic-prompt/parallel-tools.d.ts +2 -0
  116. package/dist/core/dynamic-prompt/parallel-tools.d.ts.map +1 -0
  117. package/dist/core/dynamic-prompt/parallel-tools.js +10 -0
  118. package/dist/core/dynamic-prompt/parallel-tools.js.map +1 -0
  119. package/dist/core/dynamic-prompt/policies.d.ts +2 -0
  120. package/dist/core/dynamic-prompt/policies.d.ts.map +1 -0
  121. package/dist/core/dynamic-prompt/policies.js +14 -0
  122. package/dist/core/dynamic-prompt/policies.js.map +1 -0
  123. package/dist/core/dynamic-prompt/style.d.ts +2 -0
  124. package/dist/core/dynamic-prompt/style.d.ts.map +1 -0
  125. package/dist/core/dynamic-prompt/style.js +10 -0
  126. package/dist/core/dynamic-prompt/style.js.map +1 -0
  127. package/dist/core/dynamic-prompt/tool-categorization.d.ts +4 -0
  128. package/dist/core/dynamic-prompt/tool-categorization.d.ts.map +1 -0
  129. package/dist/core/dynamic-prompt/tool-categorization.js +26 -0
  130. package/dist/core/dynamic-prompt/tool-categorization.js.map +1 -0
  131. package/dist/core/dynamic-prompt/tool-section.d.ts +7 -0
  132. package/dist/core/dynamic-prompt/tool-section.d.ts.map +1 -0
  133. package/dist/core/dynamic-prompt/tool-section.js +46 -0
  134. package/dist/core/dynamic-prompt/tool-section.js.map +1 -0
  135. package/dist/core/dynamic-prompt/types.d.ts +5 -0
  136. package/dist/core/dynamic-prompt/types.d.ts.map +1 -0
  137. package/dist/core/dynamic-prompt/types.js +2 -0
  138. package/dist/core/dynamic-prompt/types.js.map +1 -0
  139. package/dist/core/dynamic-prompt/verification.d.ts +2 -0
  140. package/dist/core/dynamic-prompt/verification.d.ts.map +1 -0
  141. package/dist/core/dynamic-prompt/verification.js +12 -0
  142. package/dist/core/dynamic-prompt/verification.js.map +1 -0
  143. package/dist/core/event-bus.d.ts +9 -0
  144. package/dist/core/event-bus.d.ts.map +1 -0
  145. package/dist/core/event-bus.js +25 -0
  146. package/dist/core/event-bus.js.map +1 -0
  147. package/dist/core/exec.d.ts +29 -0
  148. package/dist/core/exec.d.ts.map +1 -0
  149. package/dist/core/exec.js +75 -0
  150. package/dist/core/exec.js.map +1 -0
  151. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  152. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  153. package/dist/core/export-html/ansi-to-html.js +249 -0
  154. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  155. package/dist/core/export-html/index.d.ts +37 -0
  156. package/dist/core/export-html/index.d.ts.map +1 -0
  157. package/dist/core/export-html/index.js +224 -0
  158. package/dist/core/export-html/index.js.map +1 -0
  159. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  160. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  161. package/dist/core/export-html/tool-renderer.js +108 -0
  162. package/dist/core/export-html/tool-renderer.js.map +1 -0
  163. package/dist/core/extensions/builtin/agent-system/agent-types.d.ts +25 -0
  164. package/dist/core/extensions/builtin/agent-system/agent-types.d.ts.map +1 -0
  165. package/dist/core/extensions/builtin/agent-system/agent-types.js +38 -0
  166. package/dist/core/extensions/builtin/agent-system/agent-types.js.map +1 -0
  167. package/dist/core/extensions/builtin/agent-system/builtin-agents.d.ts +3 -0
  168. package/dist/core/extensions/builtin/agent-system/builtin-agents.d.ts.map +1 -0
  169. package/dist/core/extensions/builtin/agent-system/builtin-agents.js +32 -0
  170. package/dist/core/extensions/builtin/agent-system/builtin-agents.js.map +1 -0
  171. package/dist/core/extensions/builtin/agent-system/index.d.ts +3 -0
  172. package/dist/core/extensions/builtin/agent-system/index.d.ts.map +1 -0
  173. package/dist/core/extensions/builtin/agent-system/index.js +42 -0
  174. package/dist/core/extensions/builtin/agent-system/index.js.map +1 -0
  175. package/dist/core/extensions/builtin/agent-system/loader.d.ts +4 -0
  176. package/dist/core/extensions/builtin/agent-system/loader.d.ts.map +1 -0
  177. package/dist/core/extensions/builtin/agent-system/loader.js +59 -0
  178. package/dist/core/extensions/builtin/agent-system/loader.js.map +1 -0
  179. package/dist/core/extensions/builtin/agent-system/permission.d.ts +11 -0
  180. package/dist/core/extensions/builtin/agent-system/permission.d.ts.map +1 -0
  181. package/dist/core/extensions/builtin/agent-system/permission.js +24 -0
  182. package/dist/core/extensions/builtin/agent-system/permission.js.map +1 -0
  183. package/dist/core/extensions/builtin/agent-system/registry.d.ts +10 -0
  184. package/dist/core/extensions/builtin/agent-system/registry.d.ts.map +1 -0
  185. package/dist/core/extensions/builtin/agent-system/registry.js +50 -0
  186. package/dist/core/extensions/builtin/agent-system/registry.js.map +1 -0
  187. package/dist/core/extensions/builtin/agent-system/types.d.ts +9 -0
  188. package/dist/core/extensions/builtin/agent-system/types.d.ts.map +1 -0
  189. package/dist/core/extensions/builtin/agent-system/types.js +2 -0
  190. package/dist/core/extensions/builtin/agent-system/types.js.map +1 -0
  191. package/dist/core/extensions/builtin/agent-system/wildcard.d.ts +4 -0
  192. package/dist/core/extensions/builtin/agent-system/wildcard.d.ts.map +1 -0
  193. package/dist/core/extensions/builtin/agent-system/wildcard.js +58 -0
  194. package/dist/core/extensions/builtin/agent-system/wildcard.js.map +1 -0
  195. package/dist/core/extensions/builtin/anthropic-bash/index.d.ts +7 -0
  196. package/dist/core/extensions/builtin/anthropic-bash/index.d.ts.map +1 -0
  197. package/dist/core/extensions/builtin/anthropic-bash/index.js +79 -0
  198. package/dist/core/extensions/builtin/anthropic-bash/index.js.map +1 -0
  199. package/dist/core/extensions/builtin/anthropic-code-execution/index.d.ts +7 -0
  200. package/dist/core/extensions/builtin/anthropic-code-execution/index.d.ts.map +1 -0
  201. package/dist/core/extensions/builtin/anthropic-code-execution/index.js +79 -0
  202. package/dist/core/extensions/builtin/anthropic-code-execution/index.js.map +1 -0
  203. package/dist/core/extensions/builtin/anthropic-computer-use/index.d.ts +53 -0
  204. package/dist/core/extensions/builtin/anthropic-computer-use/index.d.ts.map +1 -0
  205. package/dist/core/extensions/builtin/anthropic-computer-use/index.js +676 -0
  206. package/dist/core/extensions/builtin/anthropic-computer-use/index.js.map +1 -0
  207. package/dist/core/extensions/builtin/anthropic-text-editor/index.d.ts +25 -0
  208. package/dist/core/extensions/builtin/anthropic-text-editor/index.d.ts.map +1 -0
  209. package/dist/core/extensions/builtin/anthropic-text-editor/index.js +244 -0
  210. package/dist/core/extensions/builtin/anthropic-text-editor/index.js.map +1 -0
  211. package/dist/core/extensions/builtin/anthropic-tool-search/index.d.ts +6 -0
  212. package/dist/core/extensions/builtin/anthropic-tool-search/index.d.ts.map +1 -0
  213. package/dist/core/extensions/builtin/anthropic-tool-search/index.js +112 -0
  214. package/dist/core/extensions/builtin/anthropic-tool-search/index.js.map +1 -0
  215. package/dist/core/extensions/builtin/anthropic-web-fetch/index.d.ts +7 -0
  216. package/dist/core/extensions/builtin/anthropic-web-fetch/index.d.ts.map +1 -0
  217. package/dist/core/extensions/builtin/anthropic-web-fetch/index.js +112 -0
  218. package/dist/core/extensions/builtin/anthropic-web-fetch/index.js.map +1 -0
  219. package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts +7 -0
  220. package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts.map +1 -0
  221. package/dist/core/extensions/builtin/anthropic-web-search/index.js +102 -0
  222. package/dist/core/extensions/builtin/anthropic-web-search/index.js.map +1 -0
  223. package/dist/core/extensions/builtin/background-task/cancel-tool.d.ts +10 -0
  224. package/dist/core/extensions/builtin/background-task/cancel-tool.d.ts.map +1 -0
  225. package/dist/core/extensions/builtin/background-task/cancel-tool.js +109 -0
  226. package/dist/core/extensions/builtin/background-task/cancel-tool.js.map +1 -0
  227. package/dist/core/extensions/builtin/background-task/index.d.ts +3 -0
  228. package/dist/core/extensions/builtin/background-task/index.d.ts.map +1 -0
  229. package/dist/core/extensions/builtin/background-task/index.js +207 -0
  230. package/dist/core/extensions/builtin/background-task/index.js.map +1 -0
  231. package/dist/core/extensions/builtin/background-task/manager.d.ts +17 -0
  232. package/dist/core/extensions/builtin/background-task/manager.d.ts.map +1 -0
  233. package/dist/core/extensions/builtin/background-task/manager.js +114 -0
  234. package/dist/core/extensions/builtin/background-task/manager.js.map +1 -0
  235. package/dist/core/extensions/builtin/background-task/notification.d.ts +22 -0
  236. package/dist/core/extensions/builtin/background-task/notification.d.ts.map +1 -0
  237. package/dist/core/extensions/builtin/background-task/notification.js +105 -0
  238. package/dist/core/extensions/builtin/background-task/notification.js.map +1 -0
  239. package/dist/core/extensions/builtin/background-task/output-tool.d.ts +11 -0
  240. package/dist/core/extensions/builtin/background-task/output-tool.d.ts.map +1 -0
  241. package/dist/core/extensions/builtin/background-task/output-tool.js +127 -0
  242. package/dist/core/extensions/builtin/background-task/output-tool.js.map +1 -0
  243. package/dist/core/extensions/builtin/background-task/spawner.d.ts +8 -0
  244. package/dist/core/extensions/builtin/background-task/spawner.d.ts.map +1 -0
  245. package/dist/core/extensions/builtin/background-task/spawner.js +207 -0
  246. package/dist/core/extensions/builtin/background-task/spawner.js.map +1 -0
  247. package/dist/core/extensions/builtin/background-task/task-tool.d.ts +20 -0
  248. package/dist/core/extensions/builtin/background-task/task-tool.d.ts.map +1 -0
  249. package/dist/core/extensions/builtin/background-task/task-tool.js +302 -0
  250. package/dist/core/extensions/builtin/background-task/task-tool.js.map +1 -0
  251. package/dist/core/extensions/builtin/background-task/types.d.ts +72 -0
  252. package/dist/core/extensions/builtin/background-task/types.d.ts.map +1 -0
  253. package/dist/core/extensions/builtin/background-task/types.js +32 -0
  254. package/dist/core/extensions/builtin/background-task/types.js.map +1 -0
  255. package/dist/core/extensions/builtin/bash-timeout/index.d.ts +5 -0
  256. package/dist/core/extensions/builtin/bash-timeout/index.d.ts.map +1 -0
  257. package/dist/core/extensions/builtin/bash-timeout/index.js +20 -0
  258. package/dist/core/extensions/builtin/bash-timeout/index.js.map +1 -0
  259. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts +17 -0
  260. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -0
  261. package/dist/core/extensions/builtin/bash-timeout/timeout.js +28 -0
  262. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -0
  263. package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts +46 -0
  264. package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts.map +1 -0
  265. package/dist/core/extensions/builtin/compaction/checkpoint-state.js +131 -0
  266. package/dist/core/extensions/builtin/compaction/checkpoint-state.js.map +1 -0
  267. package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts +23 -0
  268. package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts.map +1 -0
  269. package/dist/core/extensions/builtin/compaction/circuit-breaker.js +36 -0
  270. package/dist/core/extensions/builtin/compaction/circuit-breaker.js.map +1 -0
  271. package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +67 -0
  272. package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -0
  273. package/dist/core/extensions/builtin/compaction/degradation-monitor.js +90 -0
  274. package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -0
  275. package/dist/core/extensions/builtin/compaction/index.d.ts +3 -0
  276. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -0
  277. package/dist/core/extensions/builtin/compaction/index.js +199 -0
  278. package/dist/core/extensions/builtin/compaction/index.js.map +1 -0
  279. package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +11 -0
  280. package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +1 -0
  281. package/dist/core/extensions/builtin/compaction/overflow-detection.js +40 -0
  282. package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +1 -0
  283. package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts +15 -0
  284. package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts.map +1 -0
  285. package/dist/core/extensions/builtin/compaction/per-turn-cap.js +26 -0
  286. package/dist/core/extensions/builtin/compaction/per-turn-cap.js.map +1 -0
  287. package/dist/core/extensions/builtin/compaction/policy.d.ts +19 -0
  288. package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -0
  289. package/dist/core/extensions/builtin/compaction/policy.js +96 -0
  290. package/dist/core/extensions/builtin/compaction/policy.js.map +1 -0
  291. package/dist/core/extensions/builtin/compaction/prompts.d.ts +16 -0
  292. package/dist/core/extensions/builtin/compaction/prompts.d.ts.map +1 -0
  293. package/dist/core/extensions/builtin/compaction/prompts.js +252 -0
  294. package/dist/core/extensions/builtin/compaction/prompts.js.map +1 -0
  295. package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts +57 -0
  296. package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts.map +1 -0
  297. package/dist/core/extensions/builtin/compaction/restoration-tracker.js +274 -0
  298. package/dist/core/extensions/builtin/compaction/restoration-tracker.js.map +1 -0
  299. package/dist/core/extensions/builtin/compaction/speculative.d.ts +58 -0
  300. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -0
  301. package/dist/core/extensions/builtin/compaction/speculative.js +230 -0
  302. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -0
  303. package/dist/core/extensions/builtin/compaction/state.d.ts +17 -0
  304. package/dist/core/extensions/builtin/compaction/state.d.ts.map +1 -0
  305. package/dist/core/extensions/builtin/compaction/state.js +15 -0
  306. package/dist/core/extensions/builtin/compaction/state.js.map +1 -0
  307. package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts +25 -0
  308. package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts.map +1 -0
  309. package/dist/core/extensions/builtin/compaction/todo-bridge.js +77 -0
  310. package/dist/core/extensions/builtin/compaction/todo-bridge.js.map +1 -0
  311. package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts +4 -0
  312. package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts.map +1 -0
  313. package/dist/core/extensions/builtin/compaction/tool-truncation.js +85 -0
  314. package/dist/core/extensions/builtin/compaction/tool-truncation.js.map +1 -0
  315. package/dist/core/extensions/builtin/diff.d.ts +9 -0
  316. package/dist/core/extensions/builtin/diff.d.ts.map +1 -0
  317. package/dist/core/extensions/builtin/diff.js +188 -0
  318. package/dist/core/extensions/builtin/diff.js.map +1 -0
  319. package/dist/core/extensions/builtin/files.d.ts +9 -0
  320. package/dist/core/extensions/builtin/files.d.ts.map +1 -0
  321. package/dist/core/extensions/builtin/files.js +186 -0
  322. package/dist/core/extensions/builtin/files.js.map +1 -0
  323. package/dist/core/extensions/builtin/google-code-execution/index.d.ts +7 -0
  324. package/dist/core/extensions/builtin/google-code-execution/index.d.ts.map +1 -0
  325. package/dist/core/extensions/builtin/google-code-execution/index.js +73 -0
  326. package/dist/core/extensions/builtin/google-code-execution/index.js.map +1 -0
  327. package/dist/core/extensions/builtin/google-google-search/index.d.ts +7 -0
  328. package/dist/core/extensions/builtin/google-google-search/index.d.ts.map +1 -0
  329. package/dist/core/extensions/builtin/google-google-search/index.js +83 -0
  330. package/dist/core/extensions/builtin/google-google-search/index.js.map +1 -0
  331. package/dist/core/extensions/builtin/google-url-context/index.d.ts +7 -0
  332. package/dist/core/extensions/builtin/google-url-context/index.d.ts.map +1 -0
  333. package/dist/core/extensions/builtin/google-url-context/index.js +82 -0
  334. package/dist/core/extensions/builtin/google-url-context/index.js.map +1 -0
  335. package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts +6 -0
  336. package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts.map +1 -0
  337. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js +159 -0
  338. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -0
  339. package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts +8 -0
  340. package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts.map +1 -0
  341. package/dist/core/extensions/builtin/gpt-apply-patch/constants.js +29 -0
  342. package/dist/core/extensions/builtin/gpt-apply-patch/constants.js.map +1 -0
  343. package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts +8 -0
  344. package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -0
  345. package/dist/core/extensions/builtin/gpt-apply-patch/errors.js +14 -0
  346. package/dist/core/extensions/builtin/gpt-apply-patch/errors.js.map +1 -0
  347. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +6 -0
  348. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -0
  349. package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +54 -0
  350. package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -0
  351. package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts +12 -0
  352. package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts.map +1 -0
  353. package/dist/core/extensions/builtin/gpt-apply-patch/index.js +11 -0
  354. package/dist/core/extensions/builtin/gpt-apply-patch/index.js.map +1 -0
  355. package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts +3 -0
  356. package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts.map +1 -0
  357. package/dist/core/extensions/builtin/gpt-apply-patch/params.js +13 -0
  358. package/dist/core/extensions/builtin/gpt-apply-patch/params.js.map +1 -0
  359. package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts +3 -0
  360. package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts.map +1 -0
  361. package/dist/core/extensions/builtin/gpt-apply-patch/parser.js +157 -0
  362. package/dist/core/extensions/builtin/gpt-apply-patch/parser.js.map +1 -0
  363. package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts +6 -0
  364. package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts.map +1 -0
  365. package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js +36 -0
  366. package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js.map +1 -0
  367. package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts +6 -0
  368. package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts.map +1 -0
  369. package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js +50 -0
  370. package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js.map +1 -0
  371. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts +13 -0
  372. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts.map +1 -0
  373. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js +306 -0
  374. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -0
  375. package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts +7 -0
  376. package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts.map +1 -0
  377. package/dist/core/extensions/builtin/gpt-apply-patch/preview.js +73 -0
  378. package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -0
  379. package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts +6 -0
  380. package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts.map +1 -0
  381. package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js +49 -0
  382. package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js.map +1 -0
  383. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts +23 -0
  384. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -0
  385. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js +197 -0
  386. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js.map +1 -0
  387. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts +4 -0
  388. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts.map +1 -0
  389. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js +76 -0
  390. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js.map +1 -0
  391. package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts +4 -0
  392. package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts.map +1 -0
  393. package/dist/core/extensions/builtin/gpt-apply-patch/text.js +16 -0
  394. package/dist/core/extensions/builtin/gpt-apply-patch/text.js.map +1 -0
  395. package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts +3 -0
  396. package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts.map +1 -0
  397. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js +116 -0
  398. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -0
  399. package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts +109 -0
  400. package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts.map +1 -0
  401. package/dist/core/extensions/builtin/gpt-apply-patch/types.js +2 -0
  402. package/dist/core/extensions/builtin/gpt-apply-patch/types.js.map +1 -0
  403. package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts +2 -0
  404. package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts.map +1 -0
  405. package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js +5 -0
  406. package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js.map +1 -0
  407. package/dist/core/extensions/builtin/index.d.ts +18 -0
  408. package/dist/core/extensions/builtin/index.d.ts.map +1 -0
  409. package/dist/core/extensions/builtin/index.js +58 -0
  410. package/dist/core/extensions/builtin/index.js.map +1 -0
  411. package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.d.ts +6 -0
  412. package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.d.ts.map +1 -0
  413. package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.js +57 -0
  414. package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.js.map +1 -0
  415. package/dist/core/extensions/builtin/openai-code-interpreter/index.d.ts +10 -0
  416. package/dist/core/extensions/builtin/openai-code-interpreter/index.d.ts.map +1 -0
  417. package/dist/core/extensions/builtin/openai-code-interpreter/index.js +95 -0
  418. package/dist/core/extensions/builtin/openai-code-interpreter/index.js.map +1 -0
  419. package/dist/core/extensions/builtin/openai-web-search/index.d.ts +7 -0
  420. package/dist/core/extensions/builtin/openai-web-search/index.d.ts.map +1 -0
  421. package/dist/core/extensions/builtin/openai-web-search/index.js +111 -0
  422. package/dist/core/extensions/builtin/openai-web-search/index.js.map +1 -0
  423. package/dist/core/extensions/builtin/permission-system/arity.d.ts +4 -0
  424. package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -0
  425. package/dist/core/extensions/builtin/permission-system/arity.js +168 -0
  426. package/dist/core/extensions/builtin/permission-system/arity.js.map +1 -0
  427. package/dist/core/extensions/builtin/permission-system/cli.d.ts +6 -0
  428. package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -0
  429. package/dist/core/extensions/builtin/permission-system/cli.js +33 -0
  430. package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -0
  431. package/dist/core/extensions/builtin/permission-system/config.d.ts +7 -0
  432. package/dist/core/extensions/builtin/permission-system/config.d.ts.map +1 -0
  433. package/dist/core/extensions/builtin/permission-system/config.js +49 -0
  434. package/dist/core/extensions/builtin/permission-system/config.js.map +1 -0
  435. package/dist/core/extensions/builtin/permission-system/evaluate.d.ts +9 -0
  436. package/dist/core/extensions/builtin/permission-system/evaluate.d.ts.map +1 -0
  437. package/dist/core/extensions/builtin/permission-system/evaluate.js +14 -0
  438. package/dist/core/extensions/builtin/permission-system/evaluate.js.map +1 -0
  439. package/dist/core/extensions/builtin/permission-system/events.d.ts +67 -0
  440. package/dist/core/extensions/builtin/permission-system/events.d.ts.map +1 -0
  441. package/dist/core/extensions/builtin/permission-system/events.js +63 -0
  442. package/dist/core/extensions/builtin/permission-system/events.js.map +1 -0
  443. package/dist/core/extensions/builtin/permission-system/external-dir.d.ts +4 -0
  444. package/dist/core/extensions/builtin/permission-system/external-dir.d.ts.map +1 -0
  445. package/dist/core/extensions/builtin/permission-system/external-dir.js +138 -0
  446. package/dist/core/extensions/builtin/permission-system/external-dir.js.map +1 -0
  447. package/dist/core/extensions/builtin/permission-system/index.d.ts +3 -0
  448. package/dist/core/extensions/builtin/permission-system/index.d.ts.map +1 -0
  449. package/dist/core/extensions/builtin/permission-system/index.js +134 -0
  450. package/dist/core/extensions/builtin/permission-system/index.js.map +1 -0
  451. package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts +9 -0
  452. package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts.map +1 -0
  453. package/dist/core/extensions/builtin/permission-system/non-interactive.js +43 -0
  454. package/dist/core/extensions/builtin/permission-system/non-interactive.js.map +1 -0
  455. package/dist/core/extensions/builtin/permission-system/parsers.d.ts +16 -0
  456. package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -0
  457. package/dist/core/extensions/builtin/permission-system/parsers.js +150 -0
  458. package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -0
  459. package/dist/core/extensions/builtin/permission-system/prompt.d.ts +4 -0
  460. package/dist/core/extensions/builtin/permission-system/prompt.d.ts.map +1 -0
  461. package/dist/core/extensions/builtin/permission-system/prompt.js +74 -0
  462. package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -0
  463. package/dist/core/extensions/builtin/permission-system/service.d.ts +27 -0
  464. package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -0
  465. package/dist/core/extensions/builtin/permission-system/service.js +129 -0
  466. package/dist/core/extensions/builtin/permission-system/service.js.map +1 -0
  467. package/dist/core/extensions/builtin/permission-system/settings.d.ts +18 -0
  468. package/dist/core/extensions/builtin/permission-system/settings.d.ts.map +1 -0
  469. package/dist/core/extensions/builtin/permission-system/settings.js +23 -0
  470. package/dist/core/extensions/builtin/permission-system/settings.js.map +1 -0
  471. package/dist/core/extensions/builtin/permission-system/storage.d.ts +6 -0
  472. package/dist/core/extensions/builtin/permission-system/storage.d.ts.map +1 -0
  473. package/dist/core/extensions/builtin/permission-system/storage.js +58 -0
  474. package/dist/core/extensions/builtin/permission-system/storage.js.map +1 -0
  475. package/dist/core/extensions/builtin/permission-system/types.d.ts +61 -0
  476. package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -0
  477. package/dist/core/extensions/builtin/permission-system/types.js +29 -0
  478. package/dist/core/extensions/builtin/permission-system/types.js.map +1 -0
  479. package/dist/core/extensions/builtin/permission-system/wildcard.d.ts +4 -0
  480. package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -0
  481. package/dist/core/extensions/builtin/permission-system/wildcard.js +58 -0
  482. package/dist/core/extensions/builtin/permission-system/wildcard.js.map +1 -0
  483. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts +3 -0
  484. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts.map +1 -0
  485. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js +8 -0
  486. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js.map +1 -0
  487. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts +3 -0
  488. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts.map +1 -0
  489. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js +8 -0
  490. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js.map +1 -0
  491. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts +3 -0
  492. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts.map +1 -0
  493. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js +10 -0
  494. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js.map +1 -0
  495. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts +2 -0
  496. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts.map +1 -0
  497. package/dist/core/extensions/builtin/prompt-preset/file-operations.js +31 -0
  498. package/dist/core/extensions/builtin/prompt-preset/file-operations.js.map +1 -0
  499. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts +3 -0
  500. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts.map +1 -0
  501. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js +17 -0
  502. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js.map +1 -0
  503. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts +3 -0
  504. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts.map +1 -0
  505. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js +15 -0
  506. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js.map +1 -0
  507. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts +3 -0
  508. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts.map +1 -0
  509. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js +15 -0
  510. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js.map +1 -0
  511. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts +3 -0
  512. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts.map +1 -0
  513. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js +21 -0
  514. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -0
  515. package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts +3 -0
  516. package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts.map +1 -0
  517. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js +13 -0
  518. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js.map +1 -0
  519. package/dist/core/extensions/builtin/prompt-preset/index.d.ts +3 -0
  520. package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -0
  521. package/dist/core/extensions/builtin/prompt-preset/index.js +56 -0
  522. package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -0
  523. package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts +3 -0
  524. package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts.map +1 -0
  525. package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js +10 -0
  526. package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js.map +1 -0
  527. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts +12 -0
  528. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -0
  529. package/dist/core/extensions/builtin/prompt-preset/presets.js +101 -0
  530. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -0
  531. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +7 -0
  532. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -0
  533. package/dist/core/extensions/builtin/prompt-preset/settings.js +26 -0
  534. package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -0
  535. package/dist/core/extensions/builtin/prompt-url-widget.d.ts +3 -0
  536. package/dist/core/extensions/builtin/prompt-url-widget.d.ts.map +1 -0
  537. package/dist/core/extensions/builtin/prompt-url-widget.js +127 -0
  538. package/dist/core/extensions/builtin/prompt-url-widget.js.map +1 -0
  539. package/dist/core/extensions/builtin/redraws.d.ts +8 -0
  540. package/dist/core/extensions/builtin/redraws.d.ts.map +1 -0
  541. package/dist/core/extensions/builtin/redraws.js +23 -0
  542. package/dist/core/extensions/builtin/redraws.js.map +1 -0
  543. package/dist/core/extensions/builtin/service-tier.d.ts +6 -0
  544. package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -0
  545. package/dist/core/extensions/builtin/service-tier.js +29 -0
  546. package/dist/core/extensions/builtin/service-tier.js.map +1 -0
  547. package/dist/core/extensions/builtin/system-messages.d.ts +47 -0
  548. package/dist/core/extensions/builtin/system-messages.d.ts.map +1 -0
  549. package/dist/core/extensions/builtin/system-messages.js +117 -0
  550. package/dist/core/extensions/builtin/system-messages.js.map +1 -0
  551. package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +10 -0
  552. package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +1 -0
  553. package/dist/core/extensions/builtin/todotools/continuation/config.js +33 -0
  554. package/dist/core/extensions/builtin/todotools/continuation/config.js.map +1 -0
  555. package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +2 -0
  556. package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +1 -0
  557. package/dist/core/extensions/builtin/todotools/continuation/index.js +2 -0
  558. package/dist/core/extensions/builtin/todotools/continuation/index.js.map +1 -0
  559. package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +5 -0
  560. package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +1 -0
  561. package/dist/core/extensions/builtin/todotools/continuation/prompt.js +34 -0
  562. package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +1 -0
  563. package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +11 -0
  564. package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +1 -0
  565. package/dist/core/extensions/builtin/todotools/continuation/runtime.js +204 -0
  566. package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +1 -0
  567. package/dist/core/extensions/builtin/todotools/index.d.ts +5 -0
  568. package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -0
  569. package/dist/core/extensions/builtin/todotools/index.js +39 -0
  570. package/dist/core/extensions/builtin/todotools/index.js.map +1 -0
  571. package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -0
  572. package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -0
  573. package/dist/core/extensions/builtin/todotools/prompt.js +164 -0
  574. package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -0
  575. package/dist/core/extensions/builtin/todotools/state.d.ts +29 -0
  576. package/dist/core/extensions/builtin/todotools/state.d.ts.map +1 -0
  577. package/dist/core/extensions/builtin/todotools/state.js +74 -0
  578. package/dist/core/extensions/builtin/todotools/state.js.map +1 -0
  579. package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts +4 -0
  580. package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts.map +1 -0
  581. package/dist/core/extensions/builtin/todotools/tools/todoread.js +35 -0
  582. package/dist/core/extensions/builtin/todotools/tools/todoread.js.map +1 -0
  583. package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts +10 -0
  584. package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts.map +1 -0
  585. package/dist/core/extensions/builtin/todotools/tools/todowrite.js +92 -0
  586. package/dist/core/extensions/builtin/todotools/tools/todowrite.js.map +1 -0
  587. package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts +4 -0
  588. package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts.map +1 -0
  589. package/dist/core/extensions/builtin/tool-pair-guard/index.js +11 -0
  590. package/dist/core/extensions/builtin/tool-pair-guard/index.js.map +1 -0
  591. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +3 -0
  592. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -0
  593. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +75 -0
  594. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -0
  595. package/dist/core/extensions/builtin/tps.d.ts +3 -0
  596. package/dist/core/extensions/builtin/tps.d.ts.map +1 -0
  597. package/dist/core/extensions/builtin/tps.js +65 -0
  598. package/dist/core/extensions/builtin/tps.js.map +1 -0
  599. package/dist/core/extensions/index.d.ts +12 -0
  600. package/dist/core/extensions/index.d.ts.map +1 -0
  601. package/dist/core/extensions/index.js +9 -0
  602. package/dist/core/extensions/index.js.map +1 -0
  603. package/dist/core/extensions/loader.d.ts +27 -0
  604. package/dist/core/extensions/loader.d.ts.map +1 -0
  605. package/dist/core/extensions/loader.js +505 -0
  606. package/dist/core/extensions/loader.js.map +1 -0
  607. package/dist/core/extensions/runner.d.ts +164 -0
  608. package/dist/core/extensions/runner.d.ts.map +1 -0
  609. package/dist/core/extensions/runner.js +900 -0
  610. package/dist/core/extensions/runner.js.map +1 -0
  611. package/dist/core/extensions/types.d.ts +1240 -0
  612. package/dist/core/extensions/types.d.ts.map +1 -0
  613. package/dist/core/extensions/types.js +45 -0
  614. package/dist/core/extensions/types.js.map +1 -0
  615. package/dist/core/extensions/wrapper.d.ts +20 -0
  616. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  617. package/dist/core/extensions/wrapper.js +22 -0
  618. package/dist/core/extensions/wrapper.js.map +1 -0
  619. package/dist/core/footer-data-provider.d.ts +52 -0
  620. package/dist/core/footer-data-provider.d.ts.map +1 -0
  621. package/dist/core/footer-data-provider.js +310 -0
  622. package/dist/core/footer-data-provider.js.map +1 -0
  623. package/dist/core/index.d.ts +12 -0
  624. package/dist/core/index.d.ts.map +1 -0
  625. package/dist/core/index.js +12 -0
  626. package/dist/core/index.js.map +1 -0
  627. package/dist/core/keybindings.d.ts +353 -0
  628. package/dist/core/keybindings.d.ts.map +1 -0
  629. package/dist/core/keybindings.js +295 -0
  630. package/dist/core/keybindings.js.map +1 -0
  631. package/dist/core/messages.d.ts +79 -0
  632. package/dist/core/messages.d.ts.map +1 -0
  633. package/dist/core/messages.js +138 -0
  634. package/dist/core/messages.js.map +1 -0
  635. package/dist/core/model-registry.d.ts +177 -0
  636. package/dist/core/model-registry.d.ts.map +1 -0
  637. package/dist/core/model-registry.js +853 -0
  638. package/dist/core/model-registry.js.map +1 -0
  639. package/dist/core/model-resolver.d.ts +116 -0
  640. package/dist/core/model-resolver.d.ts.map +1 -0
  641. package/dist/core/model-resolver.js +498 -0
  642. package/dist/core/model-resolver.js.map +1 -0
  643. package/dist/core/output-guard.d.ts +6 -0
  644. package/dist/core/output-guard.d.ts.map +1 -0
  645. package/dist/core/output-guard.js +59 -0
  646. package/dist/core/output-guard.js.map +1 -0
  647. package/dist/core/package-manager.d.ts +198 -0
  648. package/dist/core/package-manager.d.ts.map +1 -0
  649. package/dist/core/package-manager.js +1995 -0
  650. package/dist/core/package-manager.js.map +1 -0
  651. package/dist/core/prompt-templates.d.ts +52 -0
  652. package/dist/core/prompt-templates.d.ts.map +1 -0
  653. package/dist/core/prompt-templates.js +250 -0
  654. package/dist/core/prompt-templates.js.map +1 -0
  655. package/dist/core/provider-display-names.d.ts +2 -0
  656. package/dist/core/provider-display-names.d.ts.map +1 -0
  657. package/dist/core/provider-display-names.js +33 -0
  658. package/dist/core/provider-display-names.js.map +1 -0
  659. package/dist/core/resolve-config-value.d.ts +23 -0
  660. package/dist/core/resolve-config-value.d.ts.map +1 -0
  661. package/dist/core/resolve-config-value.js +126 -0
  662. package/dist/core/resolve-config-value.js.map +1 -0
  663. package/dist/core/resource-loader.d.ts +184 -0
  664. package/dist/core/resource-loader.d.ts.map +1 -0
  665. package/dist/core/resource-loader.js +771 -0
  666. package/dist/core/resource-loader.js.map +1 -0
  667. package/dist/core/sdk.d.ts +129 -0
  668. package/dist/core/sdk.d.ts.map +1 -0
  669. package/dist/core/sdk.js +339 -0
  670. package/dist/core/sdk.js.map +1 -0
  671. package/dist/core/session-cwd.d.ts +19 -0
  672. package/dist/core/session-cwd.d.ts.map +1 -0
  673. package/dist/core/session-cwd.js +38 -0
  674. package/dist/core/session-cwd.js.map +1 -0
  675. package/dist/core/session-manager.d.ts +333 -0
  676. package/dist/core/session-manager.d.ts.map +1 -0
  677. package/dist/core/session-manager.js +1128 -0
  678. package/dist/core/session-manager.js.map +1 -0
  679. package/dist/core/settings-manager.d.ts +294 -0
  680. package/dist/core/settings-manager.d.ts.map +1 -0
  681. package/dist/core/settings-manager.js +810 -0
  682. package/dist/core/settings-manager.js.map +1 -0
  683. package/dist/core/skills.d.ts +60 -0
  684. package/dist/core/skills.d.ts.map +1 -0
  685. package/dist/core/skills.js +404 -0
  686. package/dist/core/skills.js.map +1 -0
  687. package/dist/core/slash-commands.d.ts +14 -0
  688. package/dist/core/slash-commands.d.ts.map +1 -0
  689. package/dist/core/slash-commands.js +25 -0
  690. package/dist/core/slash-commands.js.map +1 -0
  691. package/dist/core/source-info.d.ts +18 -0
  692. package/dist/core/source-info.d.ts.map +1 -0
  693. package/dist/core/source-info.js +19 -0
  694. package/dist/core/source-info.js.map +1 -0
  695. package/dist/core/system-prompt.d.ts +28 -0
  696. package/dist/core/system-prompt.d.ts.map +1 -0
  697. package/dist/core/system-prompt.js +120 -0
  698. package/dist/core/system-prompt.js.map +1 -0
  699. package/dist/core/telemetry.d.ts +3 -0
  700. package/dist/core/telemetry.d.ts.map +1 -0
  701. package/dist/core/telemetry.js +9 -0
  702. package/dist/core/telemetry.js.map +1 -0
  703. package/dist/core/timings.d.ts +8 -0
  704. package/dist/core/timings.d.ts.map +1 -0
  705. package/dist/core/timings.js +31 -0
  706. package/dist/core/timings.js.map +1 -0
  707. package/dist/core/tools/bash.d.ts +68 -0
  708. package/dist/core/tools/bash.d.ts.map +1 -0
  709. package/dist/core/tools/bash.js +335 -0
  710. package/dist/core/tools/bash.js.map +1 -0
  711. package/dist/core/tools/edit-diff.d.ts +85 -0
  712. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  713. package/dist/core/tools/edit-diff.js +338 -0
  714. package/dist/core/tools/edit-diff.js.map +1 -0
  715. package/dist/core/tools/edit.d.ts +49 -0
  716. package/dist/core/tools/edit.d.ts.map +1 -0
  717. package/dist/core/tools/edit.js +324 -0
  718. package/dist/core/tools/edit.js.map +1 -0
  719. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  720. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  721. package/dist/core/tools/file-mutation-queue.js +37 -0
  722. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  723. package/dist/core/tools/find.d.ts +35 -0
  724. package/dist/core/tools/find.d.ts.map +1 -0
  725. package/dist/core/tools/find.js +298 -0
  726. package/dist/core/tools/find.js.map +1 -0
  727. package/dist/core/tools/grep.d.ts +37 -0
  728. package/dist/core/tools/grep.d.ts.map +1 -0
  729. package/dist/core/tools/grep.js +304 -0
  730. package/dist/core/tools/grep.js.map +1 -0
  731. package/dist/core/tools/index.d.ts +40 -0
  732. package/dist/core/tools/index.d.ts.map +1 -0
  733. package/dist/core/tools/index.js +112 -0
  734. package/dist/core/tools/index.js.map +1 -0
  735. package/dist/core/tools/ls.d.ts +37 -0
  736. package/dist/core/tools/ls.d.ts.map +1 -0
  737. package/dist/core/tools/ls.js +169 -0
  738. package/dist/core/tools/ls.js.map +1 -0
  739. package/dist/core/tools/output-accumulator.d.ts +50 -0
  740. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  741. package/dist/core/tools/output-accumulator.js +178 -0
  742. package/dist/core/tools/output-accumulator.js.map +1 -0
  743. package/dist/core/tools/path-utils.d.ts +8 -0
  744. package/dist/core/tools/path-utils.d.ts.map +1 -0
  745. package/dist/core/tools/path-utils.js +81 -0
  746. package/dist/core/tools/path-utils.js.map +1 -0
  747. package/dist/core/tools/read.d.ts +35 -0
  748. package/dist/core/tools/read.d.ts.map +1 -0
  749. package/dist/core/tools/read.js +289 -0
  750. package/dist/core/tools/read.js.map +1 -0
  751. package/dist/core/tools/render-utils.d.ts +21 -0
  752. package/dist/core/tools/render-utils.d.ts.map +1 -0
  753. package/dist/core/tools/render-utils.js +49 -0
  754. package/dist/core/tools/render-utils.js.map +1 -0
  755. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  756. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  757. package/dist/core/tools/tool-definition-wrapper.js +36 -0
  758. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  759. package/dist/core/tools/truncate.d.ts +70 -0
  760. package/dist/core/tools/truncate.d.ts.map +1 -0
  761. package/dist/core/tools/truncate.js +205 -0
  762. package/dist/core/tools/truncate.js.map +1 -0
  763. package/dist/core/tools/write.d.ts +26 -0
  764. package/dist/core/tools/write.d.ts.map +1 -0
  765. package/dist/core/tools/write.js +213 -0
  766. package/dist/core/tools/write.js.map +1 -0
  767. package/dist/index.d.ts +28 -0
  768. package/dist/index.d.ts.map +1 -0
  769. package/dist/index.js +41 -0
  770. package/dist/index.js.map +1 -0
  771. package/dist/main.d.ts +12 -0
  772. package/dist/main.d.ts.map +1 -0
  773. package/dist/main.js +603 -0
  774. package/dist/main.js.map +1 -0
  775. package/dist/migrations.d.ts +33 -0
  776. package/dist/migrations.d.ts.map +1 -0
  777. package/dist/migrations.js +311 -0
  778. package/dist/migrations.js.map +1 -0
  779. package/dist/modes/index.d.ts +9 -0
  780. package/dist/modes/index.d.ts.map +1 -0
  781. package/dist/modes/index.js +8 -0
  782. package/dist/modes/index.js.map +1 -0
  783. package/dist/modes/interactive/components/armin.d.ts +34 -0
  784. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  785. package/dist/modes/interactive/components/armin.js +333 -0
  786. package/dist/modes/interactive/components/armin.js.map +1 -0
  787. package/dist/modes/interactive/components/assistant-message.d.ts +32 -0
  788. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  789. package/dist/modes/interactive/components/assistant-message.js +209 -0
  790. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  791. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  792. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  793. package/dist/modes/interactive/components/bash-execution.js +175 -0
  794. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  795. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  796. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  797. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  798. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  799. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  800. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  801. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  802. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  803. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  804. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  805. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  806. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  807. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  808. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  809. package/dist/modes/interactive/components/config-selector.js +503 -0
  810. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  811. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  812. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  813. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  814. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  815. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  816. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  817. package/dist/modes/interactive/components/custom-editor.js +70 -0
  818. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  819. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  820. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  821. package/dist/modes/interactive/components/custom-message.js +79 -0
  822. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  823. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  824. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  825. package/dist/modes/interactive/components/daxnuts.js +140 -0
  826. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  827. package/dist/modes/interactive/components/diff.d.ts +12 -0
  828. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  829. package/dist/modes/interactive/components/diff.js +133 -0
  830. package/dist/modes/interactive/components/diff.js.map +1 -0
  831. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  832. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  833. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  834. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  835. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  836. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  837. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  838. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  839. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  840. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  841. package/dist/modes/interactive/components/extension-editor.js +111 -0
  842. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  843. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  844. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  845. package/dist/modes/interactive/components/extension-input.js +61 -0
  846. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  847. package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
  848. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  849. package/dist/modes/interactive/components/extension-selector.js +78 -0
  850. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  851. package/dist/modes/interactive/components/favorite-models-selector.d.ts +42 -0
  852. package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -0
  853. package/dist/modes/interactive/components/favorite-models-selector.js +302 -0
  854. package/dist/modes/interactive/components/favorite-models-selector.js.map +1 -0
  855. package/dist/modes/interactive/components/footer.d.ts +27 -0
  856. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  857. package/dist/modes/interactive/components/footer.js +193 -0
  858. package/dist/modes/interactive/components/footer.js.map +1 -0
  859. package/dist/modes/interactive/components/index.d.ts +32 -0
  860. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  861. package/dist/modes/interactive/components/index.js +33 -0
  862. package/dist/modes/interactive/components/index.js.map +1 -0
  863. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  864. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  865. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  866. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  867. package/dist/modes/interactive/components/login-dialog.d.ts +46 -0
  868. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  869. package/dist/modes/interactive/components/login-dialog.js +160 -0
  870. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  871. package/dist/modes/interactive/components/model-selector.d.ts +48 -0
  872. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  873. package/dist/modes/interactive/components/model-selector.js +279 -0
  874. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  875. package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
  876. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  877. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  878. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  879. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  880. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  881. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  882. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  883. package/dist/modes/interactive/components/session-selector.d.ts +96 -0
  884. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  885. package/dist/modes/interactive/components/session-selector.js +861 -0
  886. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  887. package/dist/modes/interactive/components/settings-selector.d.ts +67 -0
  888. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  889. package/dist/modes/interactive/components/settings-selector.js +376 -0
  890. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  891. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  892. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  893. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  894. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  895. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  896. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  897. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  898. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  899. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  900. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  901. package/dist/modes/interactive/components/theme-selector.js +50 -0
  902. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  903. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  904. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  905. package/dist/modes/interactive/components/thinking-selector.js +52 -0
  906. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  907. package/dist/modes/interactive/components/tool-execution.d.ts +66 -0
  908. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  909. package/dist/modes/interactive/components/tool-execution.js +339 -0
  910. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  911. package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
  912. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  913. package/dist/modes/interactive/components/tree-selector.js +1102 -0
  914. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  915. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  916. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  917. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  918. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  919. package/dist/modes/interactive/components/user-message.d.ts +10 -0
  920. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  921. package/dist/modes/interactive/components/user-message.js +29 -0
  922. package/dist/modes/interactive/components/user-message.js.map +1 -0
  923. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  924. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  925. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  926. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  927. package/dist/modes/interactive/interactive-mode.d.ts +360 -0
  928. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  929. package/dist/modes/interactive/interactive-mode.js +4615 -0
  930. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  931. package/dist/modes/interactive/startup-tools.d.ts +8 -0
  932. package/dist/modes/interactive/startup-tools.d.ts.map +1 -0
  933. package/dist/modes/interactive/startup-tools.js +6 -0
  934. package/dist/modes/interactive/startup-tools.js.map +1 -0
  935. package/dist/modes/interactive/theme/theme.d.ts +81 -0
  936. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  937. package/dist/modes/interactive/theme/theme.js +973 -0
  938. package/dist/modes/interactive/theme/theme.js.map +1 -0
  939. package/dist/modes/print-mode.d.ts +28 -0
  940. package/dist/modes/print-mode.d.ts.map +1 -0
  941. package/dist/modes/print-mode.js +144 -0
  942. package/dist/modes/print-mode.js.map +1 -0
  943. package/dist/modes/rpc/jsonl.d.ts +17 -0
  944. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  945. package/dist/modes/rpc/jsonl.js +49 -0
  946. package/dist/modes/rpc/jsonl.js.map +1 -0
  947. package/dist/modes/rpc/rpc-client.d.ts +224 -0
  948. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  949. package/dist/modes/rpc/rpc-client.js +410 -0
  950. package/dist/modes/rpc/rpc-client.js.map +1 -0
  951. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  952. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  953. package/dist/modes/rpc/rpc-mode.js +601 -0
  954. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  955. package/dist/modes/rpc/rpc-types.d.ts +419 -0
  956. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  957. package/dist/modes/rpc/rpc-types.js +8 -0
  958. package/dist/modes/rpc/rpc-types.js.map +1 -0
  959. package/dist/package-manager-cli.d.ts +4 -0
  960. package/dist/package-manager-cli.d.ts.map +1 -0
  961. package/dist/package-manager-cli.js +460 -0
  962. package/dist/package-manager-cli.js.map +1 -0
  963. package/dist/senpi +20 -0
  964. package/dist/utils/changelog.d.ts +21 -0
  965. package/dist/utils/changelog.d.ts.map +1 -0
  966. package/dist/utils/changelog.js +87 -0
  967. package/dist/utils/changelog.js.map +1 -0
  968. package/dist/utils/child-process.d.ts +12 -0
  969. package/dist/utils/child-process.d.ts.map +1 -0
  970. package/dist/utils/child-process.js +86 -0
  971. package/dist/utils/child-process.js.map +1 -0
  972. package/dist/utils/clipboard-image.d.ts +11 -0
  973. package/dist/utils/clipboard-image.d.ts.map +1 -0
  974. package/dist/utils/clipboard-image.js +245 -0
  975. package/dist/utils/clipboard-image.js.map +1 -0
  976. package/dist/utils/clipboard-native.d.ts +8 -0
  977. package/dist/utils/clipboard-native.d.ts.map +1 -0
  978. package/dist/utils/clipboard-native.js +14 -0
  979. package/dist/utils/clipboard-native.js.map +1 -0
  980. package/dist/utils/clipboard.d.ts +2 -0
  981. package/dist/utils/clipboard.d.ts.map +1 -0
  982. package/dist/utils/clipboard.js +117 -0
  983. package/dist/utils/clipboard.js.map +1 -0
  984. package/dist/utils/exif-orientation.d.ts +5 -0
  985. package/dist/utils/exif-orientation.d.ts.map +1 -0
  986. package/dist/utils/exif-orientation.js +158 -0
  987. package/dist/utils/exif-orientation.js.map +1 -0
  988. package/dist/utils/frontmatter.d.ts +8 -0
  989. package/dist/utils/frontmatter.d.ts.map +1 -0
  990. package/dist/utils/frontmatter.js +26 -0
  991. package/dist/utils/frontmatter.js.map +1 -0
  992. package/dist/utils/fs-watch.d.ts +5 -0
  993. package/dist/utils/fs-watch.d.ts.map +1 -0
  994. package/dist/utils/fs-watch.js +25 -0
  995. package/dist/utils/fs-watch.js.map +1 -0
  996. package/dist/utils/git.d.ts +26 -0
  997. package/dist/utils/git.d.ts.map +1 -0
  998. package/dist/utils/git.js +163 -0
  999. package/dist/utils/git.js.map +1 -0
  1000. package/dist/utils/image-convert.d.ts +9 -0
  1001. package/dist/utils/image-convert.d.ts.map +1 -0
  1002. package/dist/utils/image-convert.js +39 -0
  1003. package/dist/utils/image-convert.js.map +1 -0
  1004. package/dist/utils/image-resize.d.ts +36 -0
  1005. package/dist/utils/image-resize.d.ts.map +1 -0
  1006. package/dist/utils/image-resize.js +137 -0
  1007. package/dist/utils/image-resize.js.map +1 -0
  1008. package/dist/utils/mime.d.ts +2 -0
  1009. package/dist/utils/mime.d.ts.map +1 -0
  1010. package/dist/utils/mime.js +26 -0
  1011. package/dist/utils/mime.js.map +1 -0
  1012. package/dist/utils/paths.d.ts +16 -0
  1013. package/dist/utils/paths.d.ts.map +1 -0
  1014. package/dist/utils/paths.js +50 -0
  1015. package/dist/utils/paths.js.map +1 -0
  1016. package/dist/utils/photon.d.ts +21 -0
  1017. package/dist/utils/photon.d.ts.map +1 -0
  1018. package/dist/utils/photon.js +121 -0
  1019. package/dist/utils/photon.js.map +1 -0
  1020. package/dist/utils/pi-user-agent.d.ts +2 -0
  1021. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  1022. package/dist/utils/pi-user-agent.js +6 -0
  1023. package/dist/utils/pi-user-agent.js.map +1 -0
  1024. package/dist/utils/shell.d.ts +30 -0
  1025. package/dist/utils/shell.d.ts.map +1 -0
  1026. package/dist/utils/shell.js +190 -0
  1027. package/dist/utils/shell.js.map +1 -0
  1028. package/dist/utils/sleep.d.ts +5 -0
  1029. package/dist/utils/sleep.d.ts.map +1 -0
  1030. package/dist/utils/sleep.js +17 -0
  1031. package/dist/utils/sleep.js.map +1 -0
  1032. package/dist/utils/tools-manager.d.ts +3 -0
  1033. package/dist/utils/tools-manager.d.ts.map +1 -0
  1034. package/dist/utils/tools-manager.js +256 -0
  1035. package/dist/utils/tools-manager.js.map +1 -0
  1036. package/dist/utils/version-check.d.ts +14 -0
  1037. package/dist/utils/version-check.d.ts.map +1 -0
  1038. package/dist/utils/version-check.js +78 -0
  1039. package/dist/utils/version-check.js.map +1 -0
  1040. package/docs/agents.md +348 -0
  1041. package/docs/compaction-guide.md +240 -0
  1042. package/docs/compaction.md +394 -0
  1043. package/docs/custom-provider.md +646 -0
  1044. package/docs/development.md +80 -0
  1045. package/docs/docs.json +148 -0
  1046. package/docs/extensions.md +2596 -0
  1047. package/docs/images/doom-extension.png +0 -0
  1048. package/docs/images/exy.png +0 -0
  1049. package/docs/images/interactive-mode.png +0 -0
  1050. package/docs/images/tree-view.png +0 -0
  1051. package/docs/index.md +66 -0
  1052. package/docs/json.md +82 -0
  1053. package/docs/keybindings.md +197 -0
  1054. package/docs/models.md +474 -0
  1055. package/docs/packages.md +223 -0
  1056. package/docs/prompt-templates.md +88 -0
  1057. package/docs/providers.md +243 -0
  1058. package/docs/quickstart.md +142 -0
  1059. package/docs/rpc.md +1407 -0
  1060. package/docs/sdk.md +1149 -0
  1061. package/docs/session-format.md +412 -0
  1062. package/docs/sessions.md +137 -0
  1063. package/docs/settings.md +330 -0
  1064. package/docs/shell-aliases.md +13 -0
  1065. package/docs/skills.md +232 -0
  1066. package/docs/terminal-setup.md +106 -0
  1067. package/docs/termux.md +127 -0
  1068. package/docs/themes.md +295 -0
  1069. package/docs/tmux.md +61 -0
  1070. package/docs/tui.md +918 -0
  1071. package/docs/usage.md +277 -0
  1072. package/docs/windows.md +17 -0
  1073. package/examples/README.md +25 -0
  1074. package/examples/extensions/README.md +208 -0
  1075. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1076. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1077. package/examples/extensions/bookmark.ts +50 -0
  1078. package/examples/extensions/border-status-editor.ts +150 -0
  1079. package/examples/extensions/built-in-tool-renderer.ts +249 -0
  1080. package/examples/extensions/claude-rules.ts +86 -0
  1081. package/examples/extensions/commands.ts +72 -0
  1082. package/examples/extensions/confirm-destructive.ts +59 -0
  1083. package/examples/extensions/custom-compaction.ts +127 -0
  1084. package/examples/extensions/custom-footer.ts +64 -0
  1085. package/examples/extensions/custom-header.ts +73 -0
  1086. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  1087. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1088. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1089. package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
  1090. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1091. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1092. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1093. package/examples/extensions/doom-overlay/README.md +46 -0
  1094. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  1095. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1096. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  1097. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  1098. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  1099. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  1100. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  1101. package/examples/extensions/doom-overlay/index.ts +74 -0
  1102. package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  1103. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1104. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  1105. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1106. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1107. package/examples/extensions/dynamic-tools.ts +74 -0
  1108. package/examples/extensions/event-bus.ts +43 -0
  1109. package/examples/extensions/file-trigger.ts +41 -0
  1110. package/examples/extensions/git-checkpoint.ts +53 -0
  1111. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1112. package/examples/extensions/handoff.ts +191 -0
  1113. package/examples/extensions/hello.ts +26 -0
  1114. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1115. package/examples/extensions/inline-bash.ts +94 -0
  1116. package/examples/extensions/input-transform.ts +43 -0
  1117. package/examples/extensions/interactive-shell.ts +196 -0
  1118. package/examples/extensions/mac-system-theme.ts +47 -0
  1119. package/examples/extensions/message-renderer.ts +59 -0
  1120. package/examples/extensions/minimal-mode.ts +426 -0
  1121. package/examples/extensions/modal-editor.ts +85 -0
  1122. package/examples/extensions/model-status.ts +31 -0
  1123. package/examples/extensions/notify.ts +55 -0
  1124. package/examples/extensions/overlay-qa-tests.ts +1348 -0
  1125. package/examples/extensions/overlay-test.ts +150 -0
  1126. package/examples/extensions/permission-gate.ts +34 -0
  1127. package/examples/extensions/pirate.ts +47 -0
  1128. package/examples/extensions/plan-mode/README.md +65 -0
  1129. package/examples/extensions/plan-mode/index.ts +340 -0
  1130. package/examples/extensions/plan-mode/utils.ts +168 -0
  1131. package/examples/extensions/preset.ts +436 -0
  1132. package/examples/extensions/prompt-customizer.ts +97 -0
  1133. package/examples/extensions/protected-paths.ts +30 -0
  1134. package/examples/extensions/provider-payload.ts +18 -0
  1135. package/examples/extensions/qna.ts +122 -0
  1136. package/examples/extensions/question.ts +264 -0
  1137. package/examples/extensions/questionnaire.ts +427 -0
  1138. package/examples/extensions/rainbow-editor.ts +88 -0
  1139. package/examples/extensions/reload-runtime.ts +37 -0
  1140. package/examples/extensions/rpc-demo.ts +118 -0
  1141. package/examples/extensions/sandbox/index.ts +321 -0
  1142. package/examples/extensions/sandbox/package-lock.json +92 -0
  1143. package/examples/extensions/sandbox/package.json +19 -0
  1144. package/examples/extensions/send-user-message.ts +97 -0
  1145. package/examples/extensions/session-name.ts +27 -0
  1146. package/examples/extensions/shutdown-command.ts +63 -0
  1147. package/examples/extensions/snake.ts +343 -0
  1148. package/examples/extensions/space-invaders.ts +560 -0
  1149. package/examples/extensions/ssh.ts +220 -0
  1150. package/examples/extensions/status-line.ts +32 -0
  1151. package/examples/extensions/structured-output.ts +65 -0
  1152. package/examples/extensions/subagent/README.md +172 -0
  1153. package/examples/extensions/subagent/agents/planner.md +37 -0
  1154. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1155. package/examples/extensions/subagent/agents/scout.md +50 -0
  1156. package/examples/extensions/subagent/agents/worker.md +24 -0
  1157. package/examples/extensions/subagent/agents.ts +126 -0
  1158. package/examples/extensions/subagent/index.ts +987 -0
  1159. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1160. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1161. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1162. package/examples/extensions/summarize.ts +206 -0
  1163. package/examples/extensions/system-prompt-header.ts +17 -0
  1164. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1165. package/examples/extensions/timed-confirm.ts +70 -0
  1166. package/examples/extensions/titlebar-spinner.ts +58 -0
  1167. package/examples/extensions/todo.ts +297 -0
  1168. package/examples/extensions/tool-override.ts +144 -0
  1169. package/examples/extensions/tools.ts +141 -0
  1170. package/examples/extensions/trigger-compact.ts +50 -0
  1171. package/examples/extensions/truncated-tool.ts +195 -0
  1172. package/examples/extensions/widget-placement.ts +9 -0
  1173. package/examples/extensions/with-deps/index.ts +32 -0
  1174. package/examples/extensions/with-deps/package-lock.json +31 -0
  1175. package/examples/extensions/with-deps/package.json +22 -0
  1176. package/examples/extensions/working-indicator.ts +123 -0
  1177. package/examples/extensions/working-message-test.ts +25 -0
  1178. package/examples/rpc-extension-ui.ts +632 -0
  1179. package/examples/sdk/01-minimal.ts +22 -0
  1180. package/examples/sdk/02-custom-model.ts +49 -0
  1181. package/examples/sdk/03-custom-prompt.ts +72 -0
  1182. package/examples/sdk/04-skills.ts +55 -0
  1183. package/examples/sdk/05-tools.ts +44 -0
  1184. package/examples/sdk/06-extensions.ts +90 -0
  1185. package/examples/sdk/07-context-files.ts +42 -0
  1186. package/examples/sdk/08-prompt-templates.ts +51 -0
  1187. package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
  1188. package/examples/sdk/10-settings.ts +53 -0
  1189. package/examples/sdk/11-sessions.ts +48 -0
  1190. package/examples/sdk/12-full-control.ts +73 -0
  1191. package/examples/sdk/13-session-runtime.ts +67 -0
  1192. package/examples/sdk/README.md +147 -0
  1193. package/package.json +105 -0
@@ -0,0 +1,199 @@
1
+ import { repairOrphanedToolResults } from "@earendil-works/pi-ai";
2
+ import { DEFAULT_COMPACTION_SETTINGS } from "../../../compaction/index.js";
3
+ import { convertToLlm } from "../../../messages.js";
4
+ import * as checkpointState from "./checkpoint-state.js";
5
+ import * as breaker from "./circuit-breaker.js";
6
+ import { createDegradationMonitorState, handleMessageEnd, handleTurnEnd, RECOVERY_INSTRUCTIONS, resetOnSessionCompact, } from "./degradation-monitor.js";
7
+ import * as overflow from "./overflow-detection.js";
8
+ import * as cap from "./per-turn-cap.js";
9
+ import * as policy from "./policy.js";
10
+ import * as restoration from "./restoration-tracker.js";
11
+ import { applyGeneratedCompaction, createSpeculativeCompactionSnapshot, getPromptVariant, hardLimitEmergencyPrune, runExtensionCompaction, } from "./speculative.js";
12
+ import { createInitialState, resetTurnCounter } from "./state.js";
13
+ import * as todoBridge from "./todo-bridge.js";
14
+ import * as truncation from "./tool-truncation.js";
15
+ const DEFAULT_CONTEXT_WINDOW = 200_000;
16
+ const EMERGENCY_COMPACTION_INSTRUCTIONS = "EMERGENCY: hard context limit reached. Produce an aggressive recovery summary that preserves current goal, constraints, files touched, tool outcomes, and exact next steps. Prefer concise factual state over transcript detail.";
17
+ const PROACTIVE_COMPACTION_INSTRUCTIONS = "Proactively compact before the next agent turn.";
18
+ function approxTokens(text) {
19
+ return Math.ceil(text.length / 4);
20
+ }
21
+ function isMonitorableMessageEvent(event) {
22
+ return "content" in event.message && Array.isArray(event.message.content);
23
+ }
24
+ function updateLastYield(state, entry) {
25
+ const savedTokens = Math.max(0, entry.tokensBefore - approxTokens(entry.summary));
26
+ return { ...state, lastYield: { savedTokens, tokensBefore: entry.tokensBefore } };
27
+ }
28
+ function recentCheckpoint(ctx) {
29
+ const checkpoint = checkpointState.getLatestCheckpoint(ctx);
30
+ if (!checkpoint?.timestamp)
31
+ return null;
32
+ return Date.now() - checkpoint.timestamp <= 60_000 ? checkpoint : null;
33
+ }
34
+ export default function compactionExtension(pi) {
35
+ let state = createInitialState();
36
+ const degradationState = createDegradationMonitorState();
37
+ const restorationState = state.restoration ?? restoration.createRestorationTrackerState();
38
+ state = { ...state, restoration: restorationState };
39
+ let speculativeGeneration = 0;
40
+ let speculativeJob;
41
+ function invalidateSpeculativeCompaction() {
42
+ speculativeGeneration++;
43
+ speculativeJob?.controller.abort();
44
+ speculativeJob = undefined;
45
+ }
46
+ function startSpeculativeCompaction(ctx, customInstructions) {
47
+ if (speculativeJob)
48
+ return;
49
+ const generation = ++speculativeGeneration;
50
+ const snapshot = createSpeculativeCompactionSnapshot(ctx, { generation, customInstructions });
51
+ if (!snapshot)
52
+ return;
53
+ const controller = new AbortController();
54
+ const promise = runExtensionCompaction(ctx, snapshot, controller.signal).catch(() => undefined);
55
+ speculativeJob = { generation, snapshot, controller, promise };
56
+ }
57
+ async function applyBlockingCompaction(ctx, customInstructions) {
58
+ const pendingJob = speculativeJob;
59
+ if (pendingJob) {
60
+ const compaction = await pendingJob.promise;
61
+ const result = await applyGeneratedCompaction(ctx, pendingJob.snapshot, () => speculativeGeneration, compaction);
62
+ if (result.applied || result.reason === "stale") {
63
+ speculativeJob = undefined;
64
+ return result;
65
+ }
66
+ speculativeJob = undefined;
67
+ }
68
+ const generation = ++speculativeGeneration;
69
+ const snapshot = createSpeculativeCompactionSnapshot(ctx, { generation, customInstructions });
70
+ if (!snapshot)
71
+ return { applied: false, reason: "unavailable" };
72
+ const compaction = await runExtensionCompaction(ctx, snapshot);
73
+ return await applyGeneratedCompaction(ctx, snapshot, () => speculativeGeneration, compaction);
74
+ }
75
+ pi.on("session_before_compact", async (event, ctx) => {
76
+ invalidateSpeculativeCompaction();
77
+ if (cap.shouldRejectByCap(state, { reason: event.reason }).cancel)
78
+ return { cancel: true };
79
+ if (breaker.isTripped(state, Date.now()) && !breaker.shouldBypass(state, { reason: event.reason }))
80
+ return { cancel: true };
81
+ checkpointState.persistCheckpoint(pi, checkpointState.captureAgentCheckpoint(pi, ctx));
82
+ todoBridge.captureTodoSnapshot(pi, ctx);
83
+ const model = ctx.model;
84
+ if (!model)
85
+ return undefined;
86
+ const snapshot = {
87
+ generation: ++speculativeGeneration,
88
+ expectedRevision: ctx.getMessageRevision(),
89
+ model,
90
+ contextWindow: ctx.getContextUsage()?.contextWindow ?? model.contextWindow ?? DEFAULT_CONTEXT_WINDOW,
91
+ preparation: event.preparation,
92
+ promptVariant: getPromptVariant(event),
93
+ customInstructions: event.customInstructions,
94
+ };
95
+ const compaction = await runExtensionCompaction(ctx, snapshot, event.signal);
96
+ if (!compaction)
97
+ return { cancel: true };
98
+ return {
99
+ compaction,
100
+ };
101
+ });
102
+ pi.on("session_compact", async (event, ctx) => {
103
+ invalidateSpeculativeCompaction();
104
+ if (event.accepted) {
105
+ const branchEntries = ctx.sessionManager.getBranch();
106
+ const firstKeptIndex = branchEntries.findIndex((entry) => entry.id === event.compactionEntry.firstKeptEntryId);
107
+ const keptEntries = firstKeptIndex === -1 ? [] : branchEntries.slice(firstKeptIndex);
108
+ state = cap.incrementAccepted(state);
109
+ state = breaker.recordSuccess(state);
110
+ state = updateLastYield(state, event.compactionEntry);
111
+ resetOnSessionCompact(degradationState);
112
+ todoBridge.restoreTodosIfMissing(pi, ctx);
113
+ const usage = ctx.getContextUsage();
114
+ if (DEFAULT_COMPACTION_SETTINGS.restorationEnabled) {
115
+ restoration.preparePendingPayload(restorationState, {
116
+ accepted: true,
117
+ reason: event.reason,
118
+ compactionEntryId: event.compactionEntry.id,
119
+ contextWindow: usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW,
120
+ usageTokens: usage?.tokens ?? null,
121
+ reserveTokens: DEFAULT_COMPACTION_SETTINGS.reserveTokens,
122
+ settings: DEFAULT_COMPACTION_SETTINGS,
123
+ keptMessages: keptEntries.flatMap((entry) => {
124
+ if (entry.type !== "message")
125
+ return [];
126
+ return [entry.message];
127
+ }),
128
+ });
129
+ }
130
+ return;
131
+ }
132
+ state = breaker.recordFailure(state, Date.now(), { route: event.reason });
133
+ ctx.ui.notify(`Compaction rejected: ${event.rejectionCause ?? "unknown"}`, "warning");
134
+ });
135
+ pi.on("before_agent_start", async (event, ctx) => {
136
+ let systemPrompt = event.systemPrompt;
137
+ const message = restoration.consumePendingPayload(restorationState);
138
+ const checkpoint = recentCheckpoint(ctx);
139
+ if (checkpoint)
140
+ systemPrompt = checkpointState.injectRestorationDirective(systemPrompt, checkpoint);
141
+ const usage = ctx.getContextUsage();
142
+ const contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;
143
+ const settings = ctx.getCompactionSettings();
144
+ if (usage && policy.isAtHardLimit(usage, contextWindow, settings.reserveTokens)) {
145
+ await applyBlockingCompaction(ctx, EMERGENCY_COMPACTION_INSTRUCTIONS);
146
+ }
147
+ else if (usage &&
148
+ policy.shouldTriggerCompaction(usage, contextWindow, settings, state.lastYield ?? undefined)) {
149
+ await applyBlockingCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);
150
+ }
151
+ else if (usage &&
152
+ policy.shouldStartSpeculativeCompaction(usage, contextWindow, settings, state.lastYield ?? undefined)) {
153
+ startSpeculativeCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);
154
+ }
155
+ if (systemPrompt === event.systemPrompt && !message)
156
+ return undefined;
157
+ return message ? { systemPrompt, message } : { systemPrompt };
158
+ });
159
+ pi.on("context", (event, ctx) => {
160
+ const contextWindow = ctx.getContextUsage()?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;
161
+ const emergency = hardLimitEmergencyPrune(event.messages, contextWindow);
162
+ return { messages: repairOrphanedToolResults(convertToLlm(emergency.messages)) };
163
+ });
164
+ pi.on("turn_end", async (_event, ctx) => {
165
+ handleTurnEnd(degradationState);
166
+ if (degradationState.recoveryTriggeredThisCycle)
167
+ return;
168
+ if (state.lastYield && state.lastYield.savedTokens <= 0) {
169
+ void applyBlockingCompaction(ctx, RECOVERY_INSTRUCTIONS);
170
+ }
171
+ });
172
+ pi.on("agent_end", () => {
173
+ state = resetTurnCounter(state, "");
174
+ });
175
+ pi.on("message_end", async (event, ctx) => {
176
+ if (isMonitorableMessageEvent(event)) {
177
+ await handleMessageEnd(degradationState, event, {
178
+ applyCompaction: async (options) => {
179
+ return await applyBlockingCompaction(ctx, options.customInstructions);
180
+ },
181
+ notify: (message) => ctx.ui.notify(message, "warning"),
182
+ });
183
+ }
184
+ if (event.message.role === "assistant" && event.message.stopReason === "error") {
185
+ const detected = overflow.isContextOverflowError(new Error(event.message.errorMessage ?? ""));
186
+ if (detected.detected) {
187
+ void applyBlockingCompaction(ctx, `RECOVERY: context overflow detected (${detected.confidence})`);
188
+ }
189
+ }
190
+ });
191
+ pi.on("tool_result", (event) => {
192
+ const [truncated] = truncation.truncateOversizedToolResults([{ content: event.content, details: event.details }]);
193
+ return truncated ? { content: truncated.content, details: event.details, isError: event.isError } : undefined;
194
+ });
195
+ pi.on("tool_call", (event) => {
196
+ restoration.trackToolCall(restorationState, event);
197
+ });
198
+ }
199
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { repairOrphanedToolResults } from \"@earendil-works/pi-ai\";\nimport { type CompactionResult, DEFAULT_COMPACTION_SETTINGS } from \"../../../compaction/index.js\";\nimport { convertToLlm } from \"../../../messages.js\";\nimport type { CompactionEntry } from \"../../../session-manager.js\";\nimport type { ExtensionAPI, ExtensionContext } from \"../../types.js\";\nimport * as checkpointState from \"./checkpoint-state.js\";\nimport * as breaker from \"./circuit-breaker.js\";\nimport {\n\tcreateDegradationMonitorState,\n\thandleMessageEnd,\n\thandleTurnEnd,\n\tRECOVERY_INSTRUCTIONS,\n\tresetOnSessionCompact,\n} from \"./degradation-monitor.js\";\nimport * as overflow from \"./overflow-detection.js\";\nimport * as cap from \"./per-turn-cap.js\";\nimport * as policy from \"./policy.js\";\nimport * as restoration from \"./restoration-tracker.js\";\nimport {\n\tapplyGeneratedCompaction,\n\tcreateSpeculativeCompactionSnapshot,\n\tgetPromptVariant,\n\thardLimitEmergencyPrune,\n\trunExtensionCompaction,\n\ttype SpeculativeCompactionResult,\n\ttype SpeculativeCompactionSnapshot,\n} from \"./speculative.js\";\nimport { type CompactionExtensionState, createInitialState, resetTurnCounter } from \"./state.js\";\nimport * as todoBridge from \"./todo-bridge.js\";\nimport * as truncation from \"./tool-truncation.js\";\n\nconst DEFAULT_CONTEXT_WINDOW = 200_000;\nconst EMERGENCY_COMPACTION_INSTRUCTIONS =\n\t\"EMERGENCY: hard context limit reached. Produce an aggressive recovery summary that preserves current goal, constraints, files touched, tool outcomes, and exact next steps. Prefer concise factual state over transcript detail.\";\nconst PROACTIVE_COMPACTION_INSTRUCTIONS = \"Proactively compact before the next agent turn.\";\n\nfunction approxTokens(text: string): number {\n\treturn Math.ceil(text.length / 4);\n}\n\nfunction isMonitorableMessageEvent(event: { message: AgentMessage }): event is {\n\tmessage: AgentMessage & { content: Array<{ type: string; text?: string }> };\n} {\n\treturn \"content\" in event.message && Array.isArray(event.message.content);\n}\n\nfunction updateLastYield(state: CompactionExtensionState, entry: CompactionEntry): CompactionExtensionState {\n\tconst savedTokens = Math.max(0, entry.tokensBefore - approxTokens(entry.summary));\n\treturn { ...state, lastYield: { savedTokens, tokensBefore: entry.tokensBefore } };\n}\n\nfunction recentCheckpoint(ctx: ExtensionContext): checkpointState.AgentCheckpoint | null {\n\tconst checkpoint = checkpointState.getLatestCheckpoint(ctx);\n\tif (!checkpoint?.timestamp) return null;\n\treturn Date.now() - checkpoint.timestamp <= 60_000 ? checkpoint : null;\n}\n\nexport default function compactionExtension(pi: ExtensionAPI): void {\n\tlet state: CompactionExtensionState = createInitialState();\n\tconst degradationState = createDegradationMonitorState();\n\tconst restorationState = state.restoration ?? restoration.createRestorationTrackerState();\n\tstate = { ...state, restoration: restorationState };\n\tlet speculativeGeneration = 0;\n\tlet speculativeJob:\n\t\t| {\n\t\t\t\tgeneration: number;\n\t\t\t\tsnapshot: SpeculativeCompactionSnapshot;\n\t\t\t\tcontroller: AbortController;\n\t\t\t\tpromise: Promise<CompactionResult | undefined>;\n\t\t }\n\t\t| undefined;\n\n\tfunction invalidateSpeculativeCompaction(): void {\n\t\tspeculativeGeneration++;\n\t\tspeculativeJob?.controller.abort();\n\t\tspeculativeJob = undefined;\n\t}\n\n\tfunction startSpeculativeCompaction(ctx: ExtensionContext, customInstructions: string): void {\n\t\tif (speculativeJob) return;\n\t\tconst generation = ++speculativeGeneration;\n\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, { generation, customInstructions });\n\t\tif (!snapshot) return;\n\n\t\tconst controller = new AbortController();\n\t\tconst promise = runExtensionCompaction(ctx, snapshot, controller.signal).catch(() => undefined);\n\t\tspeculativeJob = { generation, snapshot, controller, promise };\n\t}\n\n\tasync function applyBlockingCompaction(\n\t\tctx: ExtensionContext,\n\t\tcustomInstructions: string,\n\t): Promise<SpeculativeCompactionResult> {\n\t\tconst pendingJob = speculativeJob;\n\t\tif (pendingJob) {\n\t\t\tconst compaction = await pendingJob.promise;\n\t\t\tconst result = await applyGeneratedCompaction(\n\t\t\t\tctx,\n\t\t\t\tpendingJob.snapshot,\n\t\t\t\t() => speculativeGeneration,\n\t\t\t\tcompaction,\n\t\t\t);\n\t\t\tif (result.applied || result.reason === \"stale\") {\n\t\t\t\tspeculativeJob = undefined;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tspeculativeJob = undefined;\n\t\t}\n\n\t\tconst generation = ++speculativeGeneration;\n\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, { generation, customInstructions });\n\t\tif (!snapshot) return { applied: false, reason: \"unavailable\" };\n\t\tconst compaction = await runExtensionCompaction(ctx, snapshot);\n\t\treturn await applyGeneratedCompaction(ctx, snapshot, () => speculativeGeneration, compaction);\n\t}\n\n\tpi.on(\"session_before_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (cap.shouldRejectByCap(state, { reason: event.reason }).cancel) return { cancel: true };\n\t\tif (breaker.isTripped(state, Date.now()) && !breaker.shouldBypass(state, { reason: event.reason }))\n\t\t\treturn { cancel: true };\n\n\t\tcheckpointState.persistCheckpoint(pi, checkpointState.captureAgentCheckpoint(pi, ctx));\n\t\ttodoBridge.captureTodoSnapshot(pi, ctx);\n\n\t\tconst model = ctx.model;\n\t\tif (!model) return undefined;\n\t\tconst snapshot = {\n\t\t\tgeneration: ++speculativeGeneration,\n\t\t\texpectedRevision: ctx.getMessageRevision(),\n\t\t\tmodel,\n\t\t\tcontextWindow: ctx.getContextUsage()?.contextWindow ?? model.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\tpreparation: event.preparation,\n\t\t\tpromptVariant: getPromptVariant(event),\n\t\t\tcustomInstructions: event.customInstructions,\n\t\t};\n\t\tconst compaction = await runExtensionCompaction(ctx, snapshot, event.signal);\n\t\tif (!compaction) return { cancel: true };\n\n\t\treturn {\n\t\t\tcompaction,\n\t\t};\n\t});\n\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (event.accepted) {\n\t\t\tconst branchEntries = ctx.sessionManager.getBranch();\n\t\t\tconst firstKeptIndex = branchEntries.findIndex((entry) => entry.id === event.compactionEntry.firstKeptEntryId);\n\t\t\tconst keptEntries = firstKeptIndex === -1 ? [] : branchEntries.slice(firstKeptIndex);\n\t\t\tstate = cap.incrementAccepted(state);\n\t\t\tstate = breaker.recordSuccess(state);\n\t\t\tstate = updateLastYield(state, event.compactionEntry);\n\t\t\tresetOnSessionCompact(degradationState);\n\t\t\ttodoBridge.restoreTodosIfMissing(pi, ctx);\n\t\t\tconst usage = ctx.getContextUsage();\n\t\t\tif (DEFAULT_COMPACTION_SETTINGS.restorationEnabled) {\n\t\t\t\trestoration.preparePendingPayload(restorationState, {\n\t\t\t\t\taccepted: true,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t\tcompactionEntryId: event.compactionEntry.id,\n\t\t\t\t\tcontextWindow: usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\t\t\tusageTokens: usage?.tokens ?? null,\n\t\t\t\t\treserveTokens: DEFAULT_COMPACTION_SETTINGS.reserveTokens,\n\t\t\t\t\tsettings: DEFAULT_COMPACTION_SETTINGS,\n\t\t\t\t\tkeptMessages: keptEntries.flatMap((entry) => {\n\t\t\t\t\t\tif (entry.type !== \"message\") return [];\n\t\t\t\t\t\treturn [entry.message];\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tstate = breaker.recordFailure(state, Date.now(), { route: event.reason });\n\t\tctx.ui.notify(`Compaction rejected: ${event.rejectionCause ?? \"unknown\"}`, \"warning\");\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tlet systemPrompt = event.systemPrompt;\n\t\tconst message = restoration.consumePendingPayload(restorationState);\n\t\tconst checkpoint = recentCheckpoint(ctx);\n\t\tif (checkpoint) systemPrompt = checkpointState.injectRestorationDirective(systemPrompt, checkpoint);\n\n\t\tconst usage = ctx.getContextUsage();\n\t\tconst contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst settings = ctx.getCompactionSettings();\n\t\tif (usage && policy.isAtHardLimit(usage, contextWindow, settings.reserveTokens)) {\n\t\t\tawait applyBlockingCompaction(ctx, EMERGENCY_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusage &&\n\t\t\tpolicy.shouldTriggerCompaction(usage, contextWindow, settings, state.lastYield ?? undefined)\n\t\t) {\n\t\t\tawait applyBlockingCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusage &&\n\t\t\tpolicy.shouldStartSpeculativeCompaction(usage, contextWindow, settings, state.lastYield ?? undefined)\n\t\t) {\n\t\t\tstartSpeculativeCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t}\n\n\t\tif (systemPrompt === event.systemPrompt && !message) return undefined;\n\t\treturn message ? { systemPrompt, message } : { systemPrompt };\n\t});\n\n\tpi.on(\"context\", (event, ctx) => {\n\t\tconst contextWindow = ctx.getContextUsage()?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst emergency = hardLimitEmergencyPrune(event.messages, contextWindow);\n\t\treturn { messages: repairOrphanedToolResults(convertToLlm(emergency.messages)) };\n\t});\n\n\tpi.on(\"turn_end\", async (_event, ctx) => {\n\t\thandleTurnEnd(degradationState);\n\t\tif (degradationState.recoveryTriggeredThisCycle) return;\n\t\tif (state.lastYield && state.lastYield.savedTokens <= 0) {\n\t\t\tvoid applyBlockingCompaction(ctx, RECOVERY_INSTRUCTIONS);\n\t\t}\n\t});\n\n\tpi.on(\"agent_end\", () => {\n\t\tstate = resetTurnCounter(state, \"\");\n\t});\n\n\tpi.on(\"message_end\", async (event, ctx) => {\n\t\tif (isMonitorableMessageEvent(event)) {\n\t\t\tawait handleMessageEnd(degradationState, event, {\n\t\t\t\tapplyCompaction: async (options) => {\n\t\t\t\t\treturn await applyBlockingCompaction(ctx, options.customInstructions);\n\t\t\t\t},\n\t\t\t\tnotify: (message) => ctx.ui.notify(message, \"warning\"),\n\t\t\t});\n\t\t}\n\t\tif (event.message.role === \"assistant\" && event.message.stopReason === \"error\") {\n\t\t\tconst detected = overflow.isContextOverflowError(new Error(event.message.errorMessage ?? \"\"));\n\t\t\tif (detected.detected) {\n\t\t\t\tvoid applyBlockingCompaction(ctx, `RECOVERY: context overflow detected (${detected.confidence})`);\n\t\t\t}\n\t\t}\n\t});\n\n\tpi.on(\"tool_result\", (event) => {\n\t\tconst [truncated] = truncation.truncateOversizedToolResults([{ content: event.content, details: event.details }]);\n\t\treturn truncated ? { content: truncated.content, details: event.details, isError: event.isError } : undefined;\n\t});\n\n\tpi.on(\"tool_call\", (event) => {\n\t\trestoration.trackToolCall(restorationState, event);\n\t});\n}\n"]}
@@ -0,0 +1,11 @@
1
+ export declare const HIGH_CONFIDENCE_PATTERNS: RegExp[];
2
+ export declare const MEDIUM_CONFIDENCE_PATTERNS: RegExp[];
3
+ export declare const LOW_CONFIDENCE_PATTERNS: RegExp[];
4
+ export declare function isContextOverflowError(error: unknown): {
5
+ detected: boolean;
6
+ confidence: "high" | "medium" | "low";
7
+ };
8
+ export declare function isUsageSilentOverflow(usage: {
9
+ inputTokens?: number;
10
+ }, contextWindow: number): boolean;
11
+ //# sourceMappingURL=overflow-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overflow-detection.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/overflow-detection.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAK5C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,EAI9C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAM3C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CAAE,CAqBnH;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAGrG","sourcesContent":["export const HIGH_CONFIDENCE_PATTERNS: RegExp[] = [\n\t/context_length_exceeded/i,\n\t/prompt is too long/i,\n\t/maximum context length/i,\n\t/context length exceeded/i,\n];\n\nexport const MEDIUM_CONFIDENCE_PATTERNS: RegExp[] = [\n\t/token limit exceeded/i,\n\t/tokens exceeds the context window/i,\n\t/exceeds the context window/i,\n];\n\nexport const LOW_CONFIDENCE_PATTERNS: RegExp[] = [\n\t/context window/i,\n\t/input too long/i,\n\t/input is too long/i,\n\t/token limit/i,\n\t/too many tokens/i,\n];\n\nexport function isContextOverflowError(error: unknown): { detected: boolean; confidence: \"high\" | \"medium\" | \"low\" } {\n\tif (!(error instanceof Error)) {\n\t\treturn { detected: false, confidence: \"low\" };\n\t}\n\n\tconst message = error.message;\n\n\tif (HIGH_CONFIDENCE_PATTERNS.some((pattern) => pattern.test(message))) {\n\t\treturn { detected: true, confidence: \"high\" };\n\t}\n\n\tconst mediumMatches = MEDIUM_CONFIDENCE_PATTERNS.filter((pattern) => pattern.test(message)).length;\n\tif (mediumMatches >= 2) {\n\t\treturn { detected: true, confidence: \"medium\" };\n\t}\n\n\tif (LOW_CONFIDENCE_PATTERNS.some((pattern) => pattern.test(message))) {\n\t\treturn { detected: true, confidence: \"low\" };\n\t}\n\n\treturn { detected: false, confidence: \"low\" };\n}\n\nexport function isUsageSilentOverflow(usage: { inputTokens?: number }, contextWindow: number): boolean {\n\tconst tokens = usage.inputTokens ?? 0;\n\treturn tokens > contextWindow;\n}\n"]}
@@ -0,0 +1,40 @@
1
+ export const HIGH_CONFIDENCE_PATTERNS = [
2
+ /context_length_exceeded/i,
3
+ /prompt is too long/i,
4
+ /maximum context length/i,
5
+ /context length exceeded/i,
6
+ ];
7
+ export const MEDIUM_CONFIDENCE_PATTERNS = [
8
+ /token limit exceeded/i,
9
+ /tokens exceeds the context window/i,
10
+ /exceeds the context window/i,
11
+ ];
12
+ export const LOW_CONFIDENCE_PATTERNS = [
13
+ /context window/i,
14
+ /input too long/i,
15
+ /input is too long/i,
16
+ /token limit/i,
17
+ /too many tokens/i,
18
+ ];
19
+ export function isContextOverflowError(error) {
20
+ if (!(error instanceof Error)) {
21
+ return { detected: false, confidence: "low" };
22
+ }
23
+ const message = error.message;
24
+ if (HIGH_CONFIDENCE_PATTERNS.some((pattern) => pattern.test(message))) {
25
+ return { detected: true, confidence: "high" };
26
+ }
27
+ const mediumMatches = MEDIUM_CONFIDENCE_PATTERNS.filter((pattern) => pattern.test(message)).length;
28
+ if (mediumMatches >= 2) {
29
+ return { detected: true, confidence: "medium" };
30
+ }
31
+ if (LOW_CONFIDENCE_PATTERNS.some((pattern) => pattern.test(message))) {
32
+ return { detected: true, confidence: "low" };
33
+ }
34
+ return { detected: false, confidence: "low" };
35
+ }
36
+ export function isUsageSilentOverflow(usage, contextWindow) {
37
+ const tokens = usage.inputTokens ?? 0;
38
+ return tokens > contextWindow;
39
+ }
40
+ //# sourceMappingURL=overflow-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overflow-detection.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/overflow-detection.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAa;IACjD,0BAA0B;IAC1B,qBAAqB;IACrB,yBAAyB;IACzB,0BAA0B;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAa;IACnD,uBAAuB;IACvB,oCAAoC;IACpC,6BAA6B;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAChD,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,cAAc;IACd,kBAAkB;CAClB,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAgE;IACpH,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,aAAa,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACnG,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAAA,CAC9C;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA+B,EAAE,aAAqB,EAAW;IACtG,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,GAAG,aAAa,CAAC;AAAA,CAC9B","sourcesContent":["export const HIGH_CONFIDENCE_PATTERNS: RegExp[] = [\n\t/context_length_exceeded/i,\n\t/prompt is too long/i,\n\t/maximum context length/i,\n\t/context length exceeded/i,\n];\n\nexport const MEDIUM_CONFIDENCE_PATTERNS: RegExp[] = [\n\t/token limit exceeded/i,\n\t/tokens exceeds the context window/i,\n\t/exceeds the context window/i,\n];\n\nexport const LOW_CONFIDENCE_PATTERNS: RegExp[] = [\n\t/context window/i,\n\t/input too long/i,\n\t/input is too long/i,\n\t/token limit/i,\n\t/too many tokens/i,\n];\n\nexport function isContextOverflowError(error: unknown): { detected: boolean; confidence: \"high\" | \"medium\" | \"low\" } {\n\tif (!(error instanceof Error)) {\n\t\treturn { detected: false, confidence: \"low\" };\n\t}\n\n\tconst message = error.message;\n\n\tif (HIGH_CONFIDENCE_PATTERNS.some((pattern) => pattern.test(message))) {\n\t\treturn { detected: true, confidence: \"high\" };\n\t}\n\n\tconst mediumMatches = MEDIUM_CONFIDENCE_PATTERNS.filter((pattern) => pattern.test(message)).length;\n\tif (mediumMatches >= 2) {\n\t\treturn { detected: true, confidence: \"medium\" };\n\t}\n\n\tif (LOW_CONFIDENCE_PATTERNS.some((pattern) => pattern.test(message))) {\n\t\treturn { detected: true, confidence: \"low\" };\n\t}\n\n\treturn { detected: false, confidence: \"low\" };\n}\n\nexport function isUsageSilentOverflow(usage: { inputTokens?: number }, contextWindow: number): boolean {\n\tconst tokens = usage.inputTokens ?? 0;\n\treturn tokens > contextWindow;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { CompactionReason } from "../../types.js";
2
+ import type { CompactionExtensionState } from "./state.js";
3
+ export declare const softCap = 3;
4
+ export declare const hardCap = 10;
5
+ export interface ShouldRejectByCapOptions {
6
+ manual?: boolean;
7
+ reason?: CompactionReason;
8
+ }
9
+ export declare function incrementAccepted(state: CompactionExtensionState): CompactionExtensionState;
10
+ export declare function isOverSoftCap(state: CompactionExtensionState): boolean;
11
+ export declare function isOverHardCap(state: CompactionExtensionState): boolean;
12
+ export declare function shouldRejectByCap(state: CompactionExtensionState, opts?: ShouldRejectByCapOptions): {
13
+ cancel: boolean;
14
+ };
15
+ //# sourceMappingURL=per-turn-cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-turn-cap.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/per-turn-cap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,OAAO,KAAK,CAAC;AAE1B,MAAM,WAAW,wBAAwB;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,CAM3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAEtE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAEtE;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,wBAAwB,EAC/B,IAAI,CAAC,EAAE,wBAAwB,GAC7B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CASrB","sourcesContent":["import type { CompactionReason } from \"../../types.js\";\nimport type { CompactionExtensionState } from \"./state.js\";\n\nexport const softCap = 3;\nexport const hardCap = 10;\n\nexport interface ShouldRejectByCapOptions {\n\tmanual?: boolean;\n\treason?: CompactionReason;\n}\n\nexport function incrementAccepted(state: CompactionExtensionState): CompactionExtensionState {\n\treturn {\n\t\t...state,\n\t\tacceptedThisTurn: state.acceptedThisTurn + 1,\n\t\tacceptedAbsolute: state.acceptedAbsolute + 1,\n\t};\n}\n\nexport function isOverSoftCap(state: CompactionExtensionState): boolean {\n\treturn state.acceptedThisTurn >= softCap;\n}\n\nexport function isOverHardCap(state: CompactionExtensionState): boolean {\n\treturn state.acceptedAbsolute >= hardCap;\n}\n\nexport function shouldRejectByCap(\n\tstate: CompactionExtensionState,\n\topts?: ShouldRejectByCapOptions,\n): { cancel: boolean } {\n\tconst bypass = opts?.manual === true || opts?.reason === \"manual\" || opts?.reason === \"extension\";\n\tif (bypass) {\n\t\treturn { cancel: isOverHardCap(state) };\n\t}\n\tif (isOverSoftCap(state)) {\n\t\treturn { cancel: true };\n\t}\n\treturn { cancel: false };\n}\n"]}
@@ -0,0 +1,26 @@
1
+ export const softCap = 3;
2
+ export const hardCap = 10;
3
+ export function incrementAccepted(state) {
4
+ return {
5
+ ...state,
6
+ acceptedThisTurn: state.acceptedThisTurn + 1,
7
+ acceptedAbsolute: state.acceptedAbsolute + 1,
8
+ };
9
+ }
10
+ export function isOverSoftCap(state) {
11
+ return state.acceptedThisTurn >= softCap;
12
+ }
13
+ export function isOverHardCap(state) {
14
+ return state.acceptedAbsolute >= hardCap;
15
+ }
16
+ export function shouldRejectByCap(state, opts) {
17
+ const bypass = opts?.manual === true || opts?.reason === "manual" || opts?.reason === "extension";
18
+ if (bypass) {
19
+ return { cancel: isOverHardCap(state) };
20
+ }
21
+ if (isOverSoftCap(state)) {
22
+ return { cancel: true };
23
+ }
24
+ return { cancel: false };
25
+ }
26
+ //# sourceMappingURL=per-turn-cap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-turn-cap.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/per-turn-cap.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AAO1B,MAAM,UAAU,iBAAiB,CAAC,KAA+B,EAA4B;IAC5F,OAAO;QACN,GAAG,KAAK;QACR,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC;QAC5C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC;KAC5C,CAAC;AAAA,CACF;AAED,MAAM,UAAU,aAAa,CAAC,KAA+B,EAAW;IACvE,OAAO,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC;AAAA,CACzC;AAED,MAAM,UAAU,aAAa,CAAC,KAA+B,EAAW;IACvE,OAAO,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC;AAAA,CACzC;AAED,MAAM,UAAU,iBAAiB,CAChC,KAA+B,EAC/B,IAA+B,EACT;IACtB,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC;IAClG,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA,CACzB","sourcesContent":["import type { CompactionReason } from \"../../types.js\";\nimport type { CompactionExtensionState } from \"./state.js\";\n\nexport const softCap = 3;\nexport const hardCap = 10;\n\nexport interface ShouldRejectByCapOptions {\n\tmanual?: boolean;\n\treason?: CompactionReason;\n}\n\nexport function incrementAccepted(state: CompactionExtensionState): CompactionExtensionState {\n\treturn {\n\t\t...state,\n\t\tacceptedThisTurn: state.acceptedThisTurn + 1,\n\t\tacceptedAbsolute: state.acceptedAbsolute + 1,\n\t};\n}\n\nexport function isOverSoftCap(state: CompactionExtensionState): boolean {\n\treturn state.acceptedThisTurn >= softCap;\n}\n\nexport function isOverHardCap(state: CompactionExtensionState): boolean {\n\treturn state.acceptedAbsolute >= hardCap;\n}\n\nexport function shouldRejectByCap(\n\tstate: CompactionExtensionState,\n\topts?: ShouldRejectByCapOptions,\n): { cancel: boolean } {\n\tconst bypass = opts?.manual === true || opts?.reason === \"manual\" || opts?.reason === \"extension\";\n\tif (bypass) {\n\t\treturn { cancel: isOverHardCap(state) };\n\t}\n\tif (isOverSoftCap(state)) {\n\t\treturn { cancel: true };\n\t}\n\treturn { cancel: false };\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { CompactionSettings } from "../../../compaction/index.js";
2
+ import type { ContextUsage } from "../../types.js";
3
+ export declare const SPECULATIVE_FRACTION = 0.75;
4
+ export interface CompactionState {
5
+ lastFailureAt: number | null;
6
+ }
7
+ export interface CompactionYield {
8
+ savedTokens: number;
9
+ tokensBefore: number;
10
+ }
11
+ export declare function computeAdaptiveThresholdRatio(contextWindow: number, priorCompactionSavedTokens?: number): number;
12
+ export declare function computeEffectiveThreshold(contextWindow: number, lastYield?: CompactionYield | number): number;
13
+ export declare function computeEffectiveKeepRecentTokens(setting: number, contextWindow: number, thresholdRatio: number, margin?: number): number;
14
+ export declare function shouldStartSpeculativeCompaction(usage: ContextUsage, contextWindow: number, settings: CompactionSettings, lastYield?: CompactionYield): boolean;
15
+ export declare function isAtHardLimit(usage: ContextUsage, contextWindow: number, reserveTokens: number, additionalTokens?: number): boolean;
16
+ export declare function shouldTriggerCompaction(usage: ContextUsage, contextWindow: number, settings: CompactionSettings, lastYield?: CompactionYield): boolean;
17
+ export declare const cooldownMs = 60000;
18
+ export declare function isInCooldown(state: CompactionState, now: number): boolean;
19
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AASnD,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACrB;AAoCD,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBhH;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,CAU7G;AAED,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,MAAM,SAAO,GACX,MAAM,CAGR;AAED,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,CAAC,EAAE,eAAe,GACzB,OAAO,CAOT;AAED,wBAAgB,aAAa,CAC5B,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,gBAAgB,SAAI,GAClB,OAAO,CAET;AAED,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,CAAC,EAAE,eAAe,GACzB,OAAO,CAMT;AAED,eAAO,MAAM,UAAU,QAAQ,CAAC;AAEhC,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzE","sourcesContent":["import type { CompactionSettings } from \"../../../compaction/index.js\";\nimport type { ContextUsage } from \"../../types.js\";\n\nconst MIN_ADAPTIVE_THRESHOLD_RATIO = 0.4;\nconst MAX_ADAPTIVE_THRESHOLD_RATIO = 0.7;\nconst HIGH_YIELD_SAVING_RATIO = 0.5;\nconst LOW_YIELD_SAVING_RATIO = 0.1;\nconst YIELD_ADJUSTMENT_RATIO = 0.05;\nconst MIN_EFFECTIVE_KEEP_RECENT_TOKENS = 1024;\n\nexport const SPECULATIVE_FRACTION = 0.75;\n\nexport interface CompactionState {\n\tlastFailureAt: number | null;\n}\n\nexport interface CompactionYield {\n\tsavedTokens: number;\n\ttokensBefore: number;\n}\n\nfunction clampThresholdRatio(ratio: number): number {\n\treturn Math.min(MAX_ADAPTIVE_THRESHOLD_RATIO, Math.max(MIN_ADAPTIVE_THRESHOLD_RATIO, ratio));\n}\n\nfunction adjustThresholdRatio(ratio: number, savedTokens: number, tokensBefore: number): number {\n\tif (tokensBefore <= 0) {\n\t\treturn ratio;\n\t}\n\n\tconst savedRatio = savedTokens / tokensBefore;\n\tif (savedRatio > HIGH_YIELD_SAVING_RATIO) {\n\t\treturn clampThresholdRatio(ratio - YIELD_ADJUSTMENT_RATIO);\n\t}\n\tif (savedRatio < LOW_YIELD_SAVING_RATIO) {\n\t\treturn clampThresholdRatio(ratio + YIELD_ADJUSTMENT_RATIO);\n\t}\n\treturn ratio;\n}\n\nfunction adjustEffectiveThresholdRatio(ratio: number, savedTokens: number, tokensBefore: number): number {\n\tif (tokensBefore <= 0) {\n\t\treturn ratio;\n\t}\n\n\tconst savedRatio = savedTokens / tokensBefore;\n\tif (savedRatio > HIGH_YIELD_SAVING_RATIO) {\n\t\treturn ratio - YIELD_ADJUSTMENT_RATIO;\n\t}\n\tif (savedRatio < LOW_YIELD_SAVING_RATIO) {\n\t\treturn ratio + YIELD_ADJUSTMENT_RATIO;\n\t}\n\treturn ratio;\n}\n\nexport function computeAdaptiveThresholdRatio(contextWindow: number, priorCompactionSavedTokens?: number): number {\n\tlet ratio: number;\n\tif (!(contextWindow > 0)) {\n\t\tratio = 0.5;\n\t} else if (contextWindow <= 16_000) {\n\t\tratio = 0.45;\n\t} else if (contextWindow <= 32_000) {\n\t\tratio = 0.5;\n\t} else if (contextWindow <= 64_000) {\n\t\tratio = 0.55;\n\t} else if (contextWindow <= 128_000) {\n\t\tratio = 0.6;\n\t} else {\n\t\tratio = 0.65;\n\t}\n\n\tif (priorCompactionSavedTokens === undefined) {\n\t\treturn ratio;\n\t}\n\n\treturn adjustThresholdRatio(ratio, priorCompactionSavedTokens, contextWindow);\n}\n\nexport function computeEffectiveThreshold(contextWindow: number, lastYield?: CompactionYield | number): number {\n\tif (typeof lastYield === \"number\") {\n\t\treturn Math.max(contextWindow, lastYield);\n\t}\n\n\tlet ratio = computeAdaptiveThresholdRatio(contextWindow);\n\tif (lastYield) {\n\t\tratio = adjustEffectiveThresholdRatio(ratio, lastYield.savedTokens, lastYield.tokensBefore);\n\t}\n\treturn clampThresholdRatio(ratio);\n}\n\nexport function computeEffectiveKeepRecentTokens(\n\tsetting: number,\n\tcontextWindow: number,\n\tthresholdRatio: number,\n\tmargin = 0.05,\n): number {\n\tconst capped = Math.floor(contextWindow * (1 - thresholdRatio - margin));\n\treturn Math.min(setting, Math.max(MIN_EFFECTIVE_KEEP_RECENT_TOKENS, capped));\n}\n\nexport function shouldStartSpeculativeCompaction(\n\tusage: ContextUsage,\n\tcontextWindow: number,\n\tsettings: CompactionSettings,\n\tlastYield?: CompactionYield,\n): boolean {\n\tif (settings.speculativeEnabled === false || usage.tokens === null || contextWindow <= 0) {\n\t\treturn false;\n\t}\n\n\tconst fraction = settings.speculativeFraction ?? SPECULATIVE_FRACTION;\n\treturn usage.tokens >= contextWindow * computeEffectiveThreshold(contextWindow, lastYield) * fraction;\n}\n\nexport function isAtHardLimit(\n\tusage: ContextUsage,\n\tcontextWindow: number,\n\treserveTokens: number,\n\tadditionalTokens = 0,\n): boolean {\n\treturn usage.tokens !== null && usage.tokens + additionalTokens + reserveTokens >= contextWindow;\n}\n\nexport function shouldTriggerCompaction(\n\tusage: ContextUsage,\n\tcontextWindow: number,\n\tsettings: CompactionSettings,\n\tlastYield?: CompactionYield,\n): boolean {\n\tif (!settings.enabled || usage.tokens === null || contextWindow <= 0) {\n\t\treturn false;\n\t}\n\n\treturn usage.tokens >= contextWindow * computeEffectiveThreshold(contextWindow, lastYield);\n}\n\nexport const cooldownMs = 60000;\n\nexport function isInCooldown(state: CompactionState, now: number): boolean {\n\treturn state.lastFailureAt !== null && now - state.lastFailureAt < cooldownMs;\n}\n"]}
@@ -0,0 +1,96 @@
1
+ const MIN_ADAPTIVE_THRESHOLD_RATIO = 0.4;
2
+ const MAX_ADAPTIVE_THRESHOLD_RATIO = 0.7;
3
+ const HIGH_YIELD_SAVING_RATIO = 0.5;
4
+ const LOW_YIELD_SAVING_RATIO = 0.1;
5
+ const YIELD_ADJUSTMENT_RATIO = 0.05;
6
+ const MIN_EFFECTIVE_KEEP_RECENT_TOKENS = 1024;
7
+ export const SPECULATIVE_FRACTION = 0.75;
8
+ function clampThresholdRatio(ratio) {
9
+ return Math.min(MAX_ADAPTIVE_THRESHOLD_RATIO, Math.max(MIN_ADAPTIVE_THRESHOLD_RATIO, ratio));
10
+ }
11
+ function adjustThresholdRatio(ratio, savedTokens, tokensBefore) {
12
+ if (tokensBefore <= 0) {
13
+ return ratio;
14
+ }
15
+ const savedRatio = savedTokens / tokensBefore;
16
+ if (savedRatio > HIGH_YIELD_SAVING_RATIO) {
17
+ return clampThresholdRatio(ratio - YIELD_ADJUSTMENT_RATIO);
18
+ }
19
+ if (savedRatio < LOW_YIELD_SAVING_RATIO) {
20
+ return clampThresholdRatio(ratio + YIELD_ADJUSTMENT_RATIO);
21
+ }
22
+ return ratio;
23
+ }
24
+ function adjustEffectiveThresholdRatio(ratio, savedTokens, tokensBefore) {
25
+ if (tokensBefore <= 0) {
26
+ return ratio;
27
+ }
28
+ const savedRatio = savedTokens / tokensBefore;
29
+ if (savedRatio > HIGH_YIELD_SAVING_RATIO) {
30
+ return ratio - YIELD_ADJUSTMENT_RATIO;
31
+ }
32
+ if (savedRatio < LOW_YIELD_SAVING_RATIO) {
33
+ return ratio + YIELD_ADJUSTMENT_RATIO;
34
+ }
35
+ return ratio;
36
+ }
37
+ export function computeAdaptiveThresholdRatio(contextWindow, priorCompactionSavedTokens) {
38
+ let ratio;
39
+ if (!(contextWindow > 0)) {
40
+ ratio = 0.5;
41
+ }
42
+ else if (contextWindow <= 16_000) {
43
+ ratio = 0.45;
44
+ }
45
+ else if (contextWindow <= 32_000) {
46
+ ratio = 0.5;
47
+ }
48
+ else if (contextWindow <= 64_000) {
49
+ ratio = 0.55;
50
+ }
51
+ else if (contextWindow <= 128_000) {
52
+ ratio = 0.6;
53
+ }
54
+ else {
55
+ ratio = 0.65;
56
+ }
57
+ if (priorCompactionSavedTokens === undefined) {
58
+ return ratio;
59
+ }
60
+ return adjustThresholdRatio(ratio, priorCompactionSavedTokens, contextWindow);
61
+ }
62
+ export function computeEffectiveThreshold(contextWindow, lastYield) {
63
+ if (typeof lastYield === "number") {
64
+ return Math.max(contextWindow, lastYield);
65
+ }
66
+ let ratio = computeAdaptiveThresholdRatio(contextWindow);
67
+ if (lastYield) {
68
+ ratio = adjustEffectiveThresholdRatio(ratio, lastYield.savedTokens, lastYield.tokensBefore);
69
+ }
70
+ return clampThresholdRatio(ratio);
71
+ }
72
+ export function computeEffectiveKeepRecentTokens(setting, contextWindow, thresholdRatio, margin = 0.05) {
73
+ const capped = Math.floor(contextWindow * (1 - thresholdRatio - margin));
74
+ return Math.min(setting, Math.max(MIN_EFFECTIVE_KEEP_RECENT_TOKENS, capped));
75
+ }
76
+ export function shouldStartSpeculativeCompaction(usage, contextWindow, settings, lastYield) {
77
+ if (settings.speculativeEnabled === false || usage.tokens === null || contextWindow <= 0) {
78
+ return false;
79
+ }
80
+ const fraction = settings.speculativeFraction ?? SPECULATIVE_FRACTION;
81
+ return usage.tokens >= contextWindow * computeEffectiveThreshold(contextWindow, lastYield) * fraction;
82
+ }
83
+ export function isAtHardLimit(usage, contextWindow, reserveTokens, additionalTokens = 0) {
84
+ return usage.tokens !== null && usage.tokens + additionalTokens + reserveTokens >= contextWindow;
85
+ }
86
+ export function shouldTriggerCompaction(usage, contextWindow, settings, lastYield) {
87
+ if (!settings.enabled || usage.tokens === null || contextWindow <= 0) {
88
+ return false;
89
+ }
90
+ return usage.tokens >= contextWindow * computeEffectiveThreshold(contextWindow, lastYield);
91
+ }
92
+ export const cooldownMs = 60000;
93
+ export function isInCooldown(state, now) {
94
+ return state.lastFailureAt !== null && now - state.lastFailureAt < cooldownMs;
95
+ }
96
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/policy.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CompactionSettings } from \"../../../compaction/index.js\";\nimport type { ContextUsage } from \"../../types.js\";\n\nconst MIN_ADAPTIVE_THRESHOLD_RATIO = 0.4;\nconst MAX_ADAPTIVE_THRESHOLD_RATIO = 0.7;\nconst HIGH_YIELD_SAVING_RATIO = 0.5;\nconst LOW_YIELD_SAVING_RATIO = 0.1;\nconst YIELD_ADJUSTMENT_RATIO = 0.05;\nconst MIN_EFFECTIVE_KEEP_RECENT_TOKENS = 1024;\n\nexport const SPECULATIVE_FRACTION = 0.75;\n\nexport interface CompactionState {\n\tlastFailureAt: number | null;\n}\n\nexport interface CompactionYield {\n\tsavedTokens: number;\n\ttokensBefore: number;\n}\n\nfunction clampThresholdRatio(ratio: number): number {\n\treturn Math.min(MAX_ADAPTIVE_THRESHOLD_RATIO, Math.max(MIN_ADAPTIVE_THRESHOLD_RATIO, ratio));\n}\n\nfunction adjustThresholdRatio(ratio: number, savedTokens: number, tokensBefore: number): number {\n\tif (tokensBefore <= 0) {\n\t\treturn ratio;\n\t}\n\n\tconst savedRatio = savedTokens / tokensBefore;\n\tif (savedRatio > HIGH_YIELD_SAVING_RATIO) {\n\t\treturn clampThresholdRatio(ratio - YIELD_ADJUSTMENT_RATIO);\n\t}\n\tif (savedRatio < LOW_YIELD_SAVING_RATIO) {\n\t\treturn clampThresholdRatio(ratio + YIELD_ADJUSTMENT_RATIO);\n\t}\n\treturn ratio;\n}\n\nfunction adjustEffectiveThresholdRatio(ratio: number, savedTokens: number, tokensBefore: number): number {\n\tif (tokensBefore <= 0) {\n\t\treturn ratio;\n\t}\n\n\tconst savedRatio = savedTokens / tokensBefore;\n\tif (savedRatio > HIGH_YIELD_SAVING_RATIO) {\n\t\treturn ratio - YIELD_ADJUSTMENT_RATIO;\n\t}\n\tif (savedRatio < LOW_YIELD_SAVING_RATIO) {\n\t\treturn ratio + YIELD_ADJUSTMENT_RATIO;\n\t}\n\treturn ratio;\n}\n\nexport function computeAdaptiveThresholdRatio(contextWindow: number, priorCompactionSavedTokens?: number): number {\n\tlet ratio: number;\n\tif (!(contextWindow > 0)) {\n\t\tratio = 0.5;\n\t} else if (contextWindow <= 16_000) {\n\t\tratio = 0.45;\n\t} else if (contextWindow <= 32_000) {\n\t\tratio = 0.5;\n\t} else if (contextWindow <= 64_000) {\n\t\tratio = 0.55;\n\t} else if (contextWindow <= 128_000) {\n\t\tratio = 0.6;\n\t} else {\n\t\tratio = 0.65;\n\t}\n\n\tif (priorCompactionSavedTokens === undefined) {\n\t\treturn ratio;\n\t}\n\n\treturn adjustThresholdRatio(ratio, priorCompactionSavedTokens, contextWindow);\n}\n\nexport function computeEffectiveThreshold(contextWindow: number, lastYield?: CompactionYield | number): number {\n\tif (typeof lastYield === \"number\") {\n\t\treturn Math.max(contextWindow, lastYield);\n\t}\n\n\tlet ratio = computeAdaptiveThresholdRatio(contextWindow);\n\tif (lastYield) {\n\t\tratio = adjustEffectiveThresholdRatio(ratio, lastYield.savedTokens, lastYield.tokensBefore);\n\t}\n\treturn clampThresholdRatio(ratio);\n}\n\nexport function computeEffectiveKeepRecentTokens(\n\tsetting: number,\n\tcontextWindow: number,\n\tthresholdRatio: number,\n\tmargin = 0.05,\n): number {\n\tconst capped = Math.floor(contextWindow * (1 - thresholdRatio - margin));\n\treturn Math.min(setting, Math.max(MIN_EFFECTIVE_KEEP_RECENT_TOKENS, capped));\n}\n\nexport function shouldStartSpeculativeCompaction(\n\tusage: ContextUsage,\n\tcontextWindow: number,\n\tsettings: CompactionSettings,\n\tlastYield?: CompactionYield,\n): boolean {\n\tif (settings.speculativeEnabled === false || usage.tokens === null || contextWindow <= 0) {\n\t\treturn false;\n\t}\n\n\tconst fraction = settings.speculativeFraction ?? SPECULATIVE_FRACTION;\n\treturn usage.tokens >= contextWindow * computeEffectiveThreshold(contextWindow, lastYield) * fraction;\n}\n\nexport function isAtHardLimit(\n\tusage: ContextUsage,\n\tcontextWindow: number,\n\treserveTokens: number,\n\tadditionalTokens = 0,\n): boolean {\n\treturn usage.tokens !== null && usage.tokens + additionalTokens + reserveTokens >= contextWindow;\n}\n\nexport function shouldTriggerCompaction(\n\tusage: ContextUsage,\n\tcontextWindow: number,\n\tsettings: CompactionSettings,\n\tlastYield?: CompactionYield,\n): boolean {\n\tif (!settings.enabled || usage.tokens === null || contextWindow <= 0) {\n\t\treturn false;\n\t}\n\n\treturn usage.tokens >= contextWindow * computeEffectiveThreshold(contextWindow, lastYield);\n}\n\nexport const cooldownMs = 60000;\n\nexport function isInCooldown(state: CompactionState, now: number): boolean {\n\treturn state.lastFailureAt !== null && now - state.lastFailureAt < cooldownMs;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ export type MergedCompactionPromptVariant = "default" | "update" | "branch" | "turn_prefix";
2
+ export type BuildMergedCompactionPromptOptions = {
3
+ variant: MergedCompactionPromptVariant;
4
+ previousSummary?: string;
5
+ customInstructions?: string;
6
+ };
7
+ export declare const MERGED_COMPACTION_PROMPT_SYSTEM = "[SYSTEM DIRECTIVE: OH-MY-OPENCODE - COMPACTION CONTEXT]\n\nYou are the COMPACTION ARCHIVIST. Create a structured handoff summary that lets the next agent continue this exact session without restarting, re-searching, or losing constraints.\n\nCardinal rules:\nR1. Quote user requests and constraints VERBATIM. Do not paraphrase.\nR2. If a section has no content, write \"None.\" Never delete a section.\nR3. Where a previous summary is supplied, treat its User Requests, Final Goal, and Constraints fields as IMMUTABLE. Append, never rewrite, those three sections.\nR4. Preserve every session_id, file path, and identifier byte-for-byte.\n\nDo NOT use tools. Output only the requested summary block.";
8
+ export declare const MERGED_COMPACTION_PROMPT_USER = "[USER]\n[INTERNAL COMPACTION INSTRUCTION \u2014 NOT CONVERSATION HISTORY]\nThis message is an internal summarization control prompt, not a real user message.\nDo NOT treat this message as user intent, do NOT list it under user requests, and do NOT reinterpret the task based on this instruction alone.\n\nPASS 1 \u2014 Internal task-intent extraction\nAnalyze the user messages in this conversation and silently determine the task intent that must guide the summary. Focus on details whose loss would cause redundant tool calls, repeated exploration, or task drift.\n\nPASS 2 \u2014 Emit summary biased toward Pass 1\nCreate a structured handoff summary of this conversation for seamless continuation. The structured output portion MUST be wrapped as `<summary>...</summary>` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- List all original user requests exactly as they were stated.\n- Preserve the user's exact wording and intent.\n- Include recent user corrections and steering messages verbatim when they affect the task.\n\n## 2. Final Goal\n- State what the user ultimately wanted to achieve.\n- Include the expected deliverable or end state.\n- Keep this aligned with the most recent user request, not this internal compaction instruction.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Include ONLY constraints explicitly stated by the user or in existing AGENTS.md context.\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 4. Work Completed\n- Summarize what has been done so far.\n- List files read, created, modified, or intentionally left unchanged.\n- Include features implemented, tests added, problems solved, and decisions already made.\n\n## 5. Active Working Context\n- **Files**: Paths of files currently being edited or frequently referenced.\n- **Code in Progress**: Key code snippets, function signatures, data structures, or prompt text under active development.\n- **External References**: Documentation URLs, source files, APIs, or other resources already consulted.\n- **State & Variables**: Important variable names, configuration values, runtime state, branch names, worktree paths, or command outputs needed to continue.\n\n## 6. Remaining Tasks\n- List pending items from the original request.\n- Include follow-up tasks identified during the work only when they directly support the current user request.\n- Mark blockers explicitly and explain what is needed to unblock them.\n\n## 7. Exact Next Steps\n- State the precise next action to take, directly in line with the user's most recent request.\n- Include verbatim quotes from the conversation showing exactly where work was left off when helpful.\n- Do not suggest tangential tasks.\n\n## 8. Delegated Agent Sessions\n- List ALL background agent tasks spawned during this session.\n- For each: agent name, category, status, description, and session_id.\n- RESUME, DON'T RESTART \u2014 session_ids must be preserved byte-for-byte.\n- Each listed session retains full context. After compaction, use session_id to continue existing agent sessions instead of spawning new ones.\n\n## 9. Agent Verification State (CONDITIONAL \u2014 emit only for reviewer agents)\n- **Current Agent**: What agent is running.\n- **Verification Progress**: Files already verified or validated.\n- **Pending Verifications**: Files still needing verification.\n- **Previous Rejections**: If reviewer agent, what was rejected and why.\n- **Acceptance Status**: Current state of review process.\n</summary>\n\nVerification: Before finalizing, confirm the summary clearly states the user's original request. If not, restate it verbatim.\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.";
9
+ export declare const MERGED_COMPACTION_PROMPT_UPDATE = "[USER]\n<previous-summary>\n{{previousSummary}}\n</previous-summary>\n\n[INTERNAL COMPACTION UPDATE INSTRUCTION \u2014 NOT CONVERSATION HISTORY]\nThe messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.\n\nR3 enforcement: R3. Where a previous summary is supplied, treat its User Requests, Final Goal, and Constraints fields as IMMUTABLE. Append, never rewrite, those three sections.\n\nPASS 1 \u2014 Internal task-intent extraction\nAnalyze the new user messages and silently determine which updates are needed without changing immutable prior User Requests, Final Goal, or Constraints.\n\nPASS 2 \u2014 Emit summary biased toward Pass 1\nUpdate the structured handoff summary. The structured output portion MUST be wrapped as `<summary>...</summary>` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- Preserve prior entries from <previous-summary> byte-for-byte.\n- Append new user requests exactly as they were stated.\n\n## 2. Final Goal\n- Preserve the existing final goal unless the user explicitly changed it.\n- Append the explicit change verbatim if the goal changed.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Preserve prior constraints byte-for-byte.\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- Append only new explicit constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 4. Work Completed\n- Preserve completed work from the previous summary.\n- Add newly completed work, files changed, tests run, and decisions made.\n\n## 5. Active Working Context\n- Update files, code in progress, external references, state, variables, branch names, worktree paths, and command outputs needed to continue.\n\n## 6. Remaining Tasks\n- Remove tasks only when the new messages prove they are completed or cancelled.\n- Add newly identified direct follow-up tasks.\n\n## 7. Exact Next Steps\n- Update based on current state and the user's most recent request.\n- Keep this direct and immediately actionable.\n\n## 8. Delegated Agent Sessions\n- Preserve every existing agent name, status, description, and session_id byte-for-byte unless updated by new messages.\n- RESUME, DON'T RESTART \u2014 session_ids must be preserved byte-for-byte.\n\n## 9. Agent Verification State (CONDITIONAL \u2014 emit only for reviewer agents)\n- Preserve reviewer context and update verification progress, pending verifications, previous rejections, and acceptance status.\n</summary>\n\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.";
10
+ export declare const MERGED_COMPACTION_PROMPT_BRANCH = "[USER]\n[INTERNAL BRANCH SUMMARY INSTRUCTION \u2014 NOT CONVERSATION HISTORY]\nCreate a structured summary of this conversation branch for context when returning later. This is a branch-level handoff, so reorient \u00A72 toward the branched intent and why this branch exists.\n\nPASS 1 \u2014 Internal task-intent extraction\nAnalyze this branch and silently determine the branch-specific intent, divergence point, and details whose loss would cause repeated work.\n\nPASS 2 \u2014 Emit summary biased toward Pass 1\nCreate a structured branch handoff summary. The structured output portion MUST be wrapped as `<summary>...</summary>` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- List user requests that caused or shaped this branch exactly as they were stated.\n- Preserve the user's exact wording and intent.\n\n## 2. Final Goal\n- State the branched intent: what this branch was trying to accomplish, test, compare, or preserve.\n- Include how this branch differs from the mainline path when known.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Include ONLY constraints explicitly stated by the user or in existing AGENTS.md context.\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 4. Work Completed\n- Summarize branch-specific progress.\n- List files read, created, modified, or intentionally left unchanged on this branch.\n\n## 5. Active Working Context\n- **Files**: Paths of files currently edited or frequently referenced in this branch.\n- **Code in Progress**: Key snippets, signatures, data structures, or prompt text under active development.\n- **External References**: Sources already consulted for this branch.\n- **State & Variables**: Branch names, worktree paths, runtime state, command outputs, and identifiers needed to resume.\n\n## 6. Remaining Tasks\n- List branch-specific work still needed.\n- Include blockers and the concrete condition needed to unblock them.\n\n## 7. Exact Next Steps\n- State the precise next action for returning to this branch.\n- Do not suggest tangential tasks.\n\n## 8. Delegated Agent Sessions\n- List branch-relevant background agent tasks.\n- For each: agent name, category, status, description, and session_id.\n- RESUME, DON'T RESTART \u2014 session_ids must be preserved byte-for-byte.\n</summary>\n\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.";
11
+ export declare const MERGED_COMPACTION_PROMPT_TURN_PREFIX = "[USER]\n[INTERNAL TURN-PREFIX SUMMARY INSTRUCTION \u2014 NOT CONVERSATION HISTORY]\nCreate a compact prefix summary for the next turn. Emit only the sections listed below.\n\nPASS 1 \u2014 Internal task-intent extraction\nSilently determine the current task intent and the minimum context needed for the next turn.\n\nPASS 2 \u2014 Emit summary biased toward Pass 1\nThe structured output portion MUST be wrapped as `<summary>...</summary>` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- Quote the active user request and any steering constraints exactly as stated.\n\n## 2. Final Goal\n- State the immediate end state needed for the next turn.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 5. Active Working Context\n- Include only files, identifiers, runtime state, and exact next-turn context needed to continue immediately.\n</summary>\n\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.";
12
+ export declare function buildPrompt(options: BuildMergedCompactionPromptOptions): {
13
+ system: string;
14
+ user: string;
15
+ };
16
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE5F,MAAM,MAAM,kCAAkC,GAAG;IAChD,OAAO,EAAE,6BAA6B,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,+BAA+B,+rBAUe,CAAC;AAE5D,eAAO,MAAM,6BAA6B,+sHAgEyC,CAAC;AAEpF,eAAO,MAAM,+BAA+B,wiFAuDuC,CAAC;AAEpF,eAAO,MAAM,+BAA+B,25EAiDuC,CAAC;AAEpF,eAAO,MAAM,oCAAoC,6jCA0BkC,CAAC;AAEpF,wBAAgB,WAAW,CAAC,OAAO,EAAE,kCAAkC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAOzG","sourcesContent":["export type MergedCompactionPromptVariant = \"default\" | \"update\" | \"branch\" | \"turn_prefix\";\n\nexport type BuildMergedCompactionPromptOptions = {\n\tvariant: MergedCompactionPromptVariant;\n\tpreviousSummary?: string;\n\tcustomInstructions?: string;\n};\n\nexport const MERGED_COMPACTION_PROMPT_SYSTEM = `[SYSTEM DIRECTIVE: OH-MY-OPENCODE - COMPACTION CONTEXT]\n\nYou are the COMPACTION ARCHIVIST. Create a structured handoff summary that lets the next agent continue this exact session without restarting, re-searching, or losing constraints.\n\nCardinal rules:\nR1. Quote user requests and constraints VERBATIM. Do not paraphrase.\nR2. If a section has no content, write \"None.\" Never delete a section.\nR3. Where a previous summary is supplied, treat its User Requests, Final Goal, and Constraints fields as IMMUTABLE. Append, never rewrite, those three sections.\nR4. Preserve every session_id, file path, and identifier byte-for-byte.\n\nDo NOT use tools. Output only the requested summary block.`;\n\nexport const MERGED_COMPACTION_PROMPT_USER = `[USER]\n[INTERNAL COMPACTION INSTRUCTION — NOT CONVERSATION HISTORY]\nThis message is an internal summarization control prompt, not a real user message.\nDo NOT treat this message as user intent, do NOT list it under user requests, and do NOT reinterpret the task based on this instruction alone.\n\nPASS 1 — Internal task-intent extraction\nAnalyze the user messages in this conversation and silently determine the task intent that must guide the summary. Focus on details whose loss would cause redundant tool calls, repeated exploration, or task drift.\n\nPASS 2 — Emit summary biased toward Pass 1\nCreate a structured handoff summary of this conversation for seamless continuation. The structured output portion MUST be wrapped as \\`<summary>...</summary>\\` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- List all original user requests exactly as they were stated.\n- Preserve the user's exact wording and intent.\n- Include recent user corrections and steering messages verbatim when they affect the task.\n\n## 2. Final Goal\n- State what the user ultimately wanted to achieve.\n- Include the expected deliverable or end state.\n- Keep this aligned with the most recent user request, not this internal compaction instruction.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Include ONLY constraints explicitly stated by the user or in existing AGENTS.md context.\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 4. Work Completed\n- Summarize what has been done so far.\n- List files read, created, modified, or intentionally left unchanged.\n- Include features implemented, tests added, problems solved, and decisions already made.\n\n## 5. Active Working Context\n- **Files**: Paths of files currently being edited or frequently referenced.\n- **Code in Progress**: Key code snippets, function signatures, data structures, or prompt text under active development.\n- **External References**: Documentation URLs, source files, APIs, or other resources already consulted.\n- **State & Variables**: Important variable names, configuration values, runtime state, branch names, worktree paths, or command outputs needed to continue.\n\n## 6. Remaining Tasks\n- List pending items from the original request.\n- Include follow-up tasks identified during the work only when they directly support the current user request.\n- Mark blockers explicitly and explain what is needed to unblock them.\n\n## 7. Exact Next Steps\n- State the precise next action to take, directly in line with the user's most recent request.\n- Include verbatim quotes from the conversation showing exactly where work was left off when helpful.\n- Do not suggest tangential tasks.\n\n## 8. Delegated Agent Sessions\n- List ALL background agent tasks spawned during this session.\n- For each: agent name, category, status, description, and session_id.\n- RESUME, DON'T RESTART — session_ids must be preserved byte-for-byte.\n- Each listed session retains full context. After compaction, use session_id to continue existing agent sessions instead of spawning new ones.\n\n## 9. Agent Verification State (CONDITIONAL — emit only for reviewer agents)\n- **Current Agent**: What agent is running.\n- **Verification Progress**: Files already verified or validated.\n- **Pending Verifications**: Files still needing verification.\n- **Previous Rejections**: If reviewer agent, what was rejected and why.\n- **Acceptance Status**: Current state of review process.\n</summary>\n\nVerification: Before finalizing, confirm the summary clearly states the user's original request. If not, restate it verbatim.\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.`;\n\nexport const MERGED_COMPACTION_PROMPT_UPDATE = `[USER]\n<previous-summary>\n{{previousSummary}}\n</previous-summary>\n\n[INTERNAL COMPACTION UPDATE INSTRUCTION — NOT CONVERSATION HISTORY]\nThe messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.\n\nR3 enforcement: R3. Where a previous summary is supplied, treat its User Requests, Final Goal, and Constraints fields as IMMUTABLE. Append, never rewrite, those three sections.\n\nPASS 1 — Internal task-intent extraction\nAnalyze the new user messages and silently determine which updates are needed without changing immutable prior User Requests, Final Goal, or Constraints.\n\nPASS 2 — Emit summary biased toward Pass 1\nUpdate the structured handoff summary. The structured output portion MUST be wrapped as \\`<summary>...</summary>\\` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- Preserve prior entries from <previous-summary> byte-for-byte.\n- Append new user requests exactly as they were stated.\n\n## 2. Final Goal\n- Preserve the existing final goal unless the user explicitly changed it.\n- Append the explicit change verbatim if the goal changed.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Preserve prior constraints byte-for-byte.\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- Append only new explicit constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 4. Work Completed\n- Preserve completed work from the previous summary.\n- Add newly completed work, files changed, tests run, and decisions made.\n\n## 5. Active Working Context\n- Update files, code in progress, external references, state, variables, branch names, worktree paths, and command outputs needed to continue.\n\n## 6. Remaining Tasks\n- Remove tasks only when the new messages prove they are completed or cancelled.\n- Add newly identified direct follow-up tasks.\n\n## 7. Exact Next Steps\n- Update based on current state and the user's most recent request.\n- Keep this direct and immediately actionable.\n\n## 8. Delegated Agent Sessions\n- Preserve every existing agent name, status, description, and session_id byte-for-byte unless updated by new messages.\n- RESUME, DON'T RESTART — session_ids must be preserved byte-for-byte.\n\n## 9. Agent Verification State (CONDITIONAL — emit only for reviewer agents)\n- Preserve reviewer context and update verification progress, pending verifications, previous rejections, and acceptance status.\n</summary>\n\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.`;\n\nexport const MERGED_COMPACTION_PROMPT_BRANCH = `[USER]\n[INTERNAL BRANCH SUMMARY INSTRUCTION — NOT CONVERSATION HISTORY]\nCreate a structured summary of this conversation branch for context when returning later. This is a branch-level handoff, so reorient §2 toward the branched intent and why this branch exists.\n\nPASS 1 — Internal task-intent extraction\nAnalyze this branch and silently determine the branch-specific intent, divergence point, and details whose loss would cause repeated work.\n\nPASS 2 — Emit summary biased toward Pass 1\nCreate a structured branch handoff summary. The structured output portion MUST be wrapped as \\`<summary>...</summary>\\` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- List user requests that caused or shaped this branch exactly as they were stated.\n- Preserve the user's exact wording and intent.\n\n## 2. Final Goal\n- State the branched intent: what this branch was trying to accomplish, test, compare, or preserve.\n- Include how this branch differs from the mainline path when known.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Include ONLY constraints explicitly stated by the user or in existing AGENTS.md context.\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 4. Work Completed\n- Summarize branch-specific progress.\n- List files read, created, modified, or intentionally left unchanged on this branch.\n\n## 5. Active Working Context\n- **Files**: Paths of files currently edited or frequently referenced in this branch.\n- **Code in Progress**: Key snippets, signatures, data structures, or prompt text under active development.\n- **External References**: Sources already consulted for this branch.\n- **State & Variables**: Branch names, worktree paths, runtime state, command outputs, and identifiers needed to resume.\n\n## 6. Remaining Tasks\n- List branch-specific work still needed.\n- Include blockers and the concrete condition needed to unblock them.\n\n## 7. Exact Next Steps\n- State the precise next action for returning to this branch.\n- Do not suggest tangential tasks.\n\n## 8. Delegated Agent Sessions\n- List branch-relevant background agent tasks.\n- For each: agent name, category, status, description, and session_id.\n- RESUME, DON'T RESTART — session_ids must be preserved byte-for-byte.\n</summary>\n\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.`;\n\nexport const MERGED_COMPACTION_PROMPT_TURN_PREFIX = `[USER]\n[INTERNAL TURN-PREFIX SUMMARY INSTRUCTION — NOT CONVERSATION HISTORY]\nCreate a compact prefix summary for the next turn. Emit only the sections listed below.\n\nPASS 1 — Internal task-intent extraction\nSilently determine the current task intent and the minimum context needed for the next turn.\n\nPASS 2 — Emit summary biased toward Pass 1\nThe structured output portion MUST be wrapped as \\`<summary>...</summary>\\` XML.\n\n<summary>\n## 1. User Requests (Verbatim)\n- Quote the active user request and any steering constraints exactly as stated.\n\n## 2. Final Goal\n- State the immediate end state needed for the next turn.\n\n## 3. Constraints & Preferences (Verbatim Only)\n- Quote constraints verbatim.\n- Do NOT invent, add, soften, or modify constraints.\n- If no explicit constraints exist, write \"None.\"\n\n## 5. Active Working Context\n- Include only files, identifiers, runtime state, and exact next-turn context needed to continue immediately.\n</summary>\n\nIMPORTANT: Respond with ONLY the <summary>...</summary> block as your text output.`;\n\nexport function buildPrompt(options: BuildMergedCompactionPromptOptions): { system: string; user: string } {\n\tconst user = buildUserPrompt(options);\n\n\treturn {\n\t\tsystem: MERGED_COMPACTION_PROMPT_SYSTEM,\n\t\tuser: appendCustomInstructions(user, options.customInstructions),\n\t};\n}\n\nfunction buildUserPrompt(options: BuildMergedCompactionPromptOptions): string {\n\tswitch (options.variant) {\n\t\tcase \"default\":\n\t\t\treturn MERGED_COMPACTION_PROMPT_USER;\n\t\tcase \"update\":\n\t\t\treturn MERGED_COMPACTION_PROMPT_UPDATE.replace(\n\t\t\t\t\"{{previousSummary}}\",\n\t\t\t\tsanitizePreviousSummary(options.previousSummary),\n\t\t\t);\n\t\tcase \"branch\":\n\t\t\treturn MERGED_COMPACTION_PROMPT_BRANCH;\n\t\tcase \"turn_prefix\":\n\t\t\treturn MERGED_COMPACTION_PROMPT_TURN_PREFIX;\n\t}\n\n\tconst exhaustiveCheck: never = options.variant;\n\treturn exhaustiveCheck;\n}\n\nfunction appendCustomInstructions(userPrompt: string, customInstructions: string | undefined): string {\n\tconst trimmedInstructions = customInstructions?.trim();\n\tif (!trimmedInstructions) {\n\t\treturn userPrompt;\n\t}\n\n\treturn `${userPrompt}\n\n<custom-instructions>\n${sanitizeCustomInstructions(trimmedInstructions)}\n</custom-instructions>`;\n}\n\nfunction sanitizePreviousSummary(previousSummary: string | undefined): string {\n\tconst trimmedSummary = previousSummary?.trim();\n\tif (!trimmedSummary) {\n\t\treturn \"None.\";\n\t}\n\n\treturn trimmedSummary.split(\"</previous-summary>\").join(\"[/previous-summary]\");\n}\n\nfunction sanitizeCustomInstructions(customInstructions: string): string {\n\treturn customInstructions.split(\"</custom-instructions>\").join(\"[/custom-instructions]\");\n}\n"]}