@bastani/atomic 0.8.25 → 0.8.26-alpha.10

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 (332) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +5 -5
  3. package/dist/builtin/intercom/CHANGELOG.md +60 -0
  4. package/dist/builtin/intercom/index-heavy.ts +1754 -0
  5. package/dist/builtin/intercom/index.ts +374 -1746
  6. package/dist/builtin/intercom/package.json +2 -2
  7. package/dist/builtin/intercom/result-renderers.ts +77 -0
  8. package/dist/builtin/mcp/CHANGELOG.md +64 -0
  9. package/dist/builtin/mcp/index.ts +151 -57
  10. package/dist/builtin/mcp/package.json +3 -3
  11. package/dist/builtin/subagents/CHANGELOG.md +61 -0
  12. package/dist/builtin/subagents/agents/codebase-online-researcher.md +9 -9
  13. package/dist/builtin/subagents/agents/debugger.md +6 -6
  14. package/dist/builtin/subagents/package.json +4 -4
  15. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +1 -1
  16. package/dist/builtin/subagents/skills/browser/EXAMPLES.md +151 -0
  17. package/dist/builtin/subagents/skills/browser/LICENSE.txt +21 -0
  18. package/dist/builtin/subagents/skills/browser/REFERENCE.md +451 -0
  19. package/dist/builtin/subagents/skills/browser/SKILL.md +170 -0
  20. package/dist/builtin/subagents/skills/subagent/SKILL.md +4 -4
  21. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +55 -12
  22. package/dist/builtin/subagents/src/runs/foreground/execution.ts +71 -12
  23. package/dist/builtin/subagents/src/runs/shared/acceptance.ts +2 -1
  24. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +34 -0
  25. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +416 -7
  26. package/dist/builtin/subagents/src/runs/shared/worktree.ts +2 -2
  27. package/dist/builtin/web-access/CHANGELOG.md +60 -0
  28. package/dist/builtin/web-access/index-heavy.ts +2060 -0
  29. package/dist/builtin/web-access/index.ts +182 -2274
  30. package/dist/builtin/web-access/package.json +2 -2
  31. package/dist/builtin/web-access/result-renderers.ts +364 -0
  32. package/dist/builtin/workflows/CHANGELOG.md +75 -0
  33. package/dist/builtin/workflows/README.md +10 -8
  34. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +11 -8
  35. package/dist/builtin/workflows/builtin/goal.ts +137 -109
  36. package/dist/builtin/workflows/builtin/index.d.ts +2 -0
  37. package/dist/builtin/workflows/builtin/open-claude-design.ts +228 -151
  38. package/dist/builtin/workflows/builtin/ralph.d.ts +2 -0
  39. package/dist/builtin/workflows/builtin/ralph.ts +452 -279
  40. package/dist/builtin/workflows/package.json +2 -2
  41. package/dist/builtin/workflows/skills/create-spec/SKILL.md +14 -0
  42. package/dist/builtin/workflows/skills/research-codebase/SKILL.md +29 -10
  43. package/dist/builtin/workflows/src/extension/index.ts +23 -5
  44. package/dist/builtin/workflows/src/extension/runtime.ts +35 -3
  45. package/dist/builtin/workflows/src/extension/wiring.ts +13 -1
  46. package/dist/builtin/workflows/src/runs/background/status.ts +52 -6
  47. package/dist/builtin/workflows/src/runs/foreground/executor.ts +453 -21
  48. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +130 -13
  49. package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +402 -8
  50. package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -2
  51. package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +2 -2
  52. package/dist/builtin/workflows/src/shared/persistence-restore.ts +182 -6
  53. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +76 -6
  54. package/dist/builtin/workflows/src/shared/stage-prompt.ts +33 -2
  55. package/dist/builtin/workflows/src/shared/store-types.ts +31 -0
  56. package/dist/builtin/workflows/src/shared/store.ts +160 -18
  57. package/dist/builtin/workflows/src/shared/types.ts +3 -3
  58. package/dist/builtin/workflows/src/shared/workflow-failures.ts +758 -132
  59. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +12 -3
  60. package/dist/builtin/workflows/src/tui/inline-form-store.ts +17 -6
  61. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +39 -3
  62. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +74 -74
  63. package/dist/core/agent-session-services.d.ts.map +1 -1
  64. package/dist/core/agent-session-services.js +13 -0
  65. package/dist/core/agent-session-services.js.map +1 -1
  66. package/dist/core/agent-session.d.ts +33 -6
  67. package/dist/core/agent-session.d.ts.map +1 -1
  68. package/dist/core/agent-session.js +157 -182
  69. package/dist/core/agent-session.js.map +1 -1
  70. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  71. package/dist/core/atomic-guide-command.js +11 -9
  72. package/dist/core/atomic-guide-command.js.map +1 -1
  73. package/dist/core/compaction/branch-summarization.d.ts +1 -1
  74. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  75. package/dist/core/compaction/branch-summarization.js +6 -3
  76. package/dist/core/compaction/branch-summarization.js.map +1 -1
  77. package/dist/core/compaction/compaction.d.ts.map +1 -1
  78. package/dist/core/compaction/compaction.js +23 -10
  79. package/dist/core/compaction/compaction.js.map +1 -1
  80. package/dist/core/compaction/context-compaction.d.ts +175 -0
  81. package/dist/core/compaction/context-compaction.d.ts.map +1 -0
  82. package/dist/core/compaction/context-compaction.js +1636 -0
  83. package/dist/core/compaction/context-compaction.js.map +1 -0
  84. package/dist/core/compaction/index.d.ts +1 -0
  85. package/dist/core/compaction/index.d.ts.map +1 -1
  86. package/dist/core/compaction/index.js +1 -0
  87. package/dist/core/compaction/index.js.map +1 -1
  88. package/dist/core/extensions/loader.d.ts.map +1 -1
  89. package/dist/core/extensions/loader.js +7 -0
  90. package/dist/core/extensions/loader.js.map +1 -1
  91. package/dist/core/extensions/types.d.ts +16 -3
  92. package/dist/core/extensions/types.d.ts.map +1 -1
  93. package/dist/core/extensions/types.js.map +1 -1
  94. package/dist/core/footer-data-provider.d.ts.map +1 -1
  95. package/dist/core/footer-data-provider.js +3 -0
  96. package/dist/core/footer-data-provider.js.map +1 -1
  97. package/dist/core/index.d.ts +1 -1
  98. package/dist/core/index.d.ts.map +1 -1
  99. package/dist/core/index.js.map +1 -1
  100. package/dist/core/package-manager.d.ts.map +1 -1
  101. package/dist/core/package-manager.js +14 -7
  102. package/dist/core/package-manager.js.map +1 -1
  103. package/dist/core/resource-loader.d.ts.map +1 -1
  104. package/dist/core/resource-loader.js +17 -0
  105. package/dist/core/resource-loader.js.map +1 -1
  106. package/dist/core/session-manager.d.ts +41 -1
  107. package/dist/core/session-manager.d.ts.map +1 -1
  108. package/dist/core/session-manager.js +146 -7
  109. package/dist/core/session-manager.js.map +1 -1
  110. package/dist/core/slash-commands.d.ts.map +1 -1
  111. package/dist/core/slash-commands.js +1 -1
  112. package/dist/core/slash-commands.js.map +1 -1
  113. package/dist/core/timings.d.ts +9 -0
  114. package/dist/core/timings.d.ts.map +1 -1
  115. package/dist/core/timings.js +28 -1
  116. package/dist/core/timings.js.map +1 -1
  117. package/dist/core/tools/ask-user-question/tool/format-answer.d.ts +5 -5
  118. package/dist/core/tools/ask-user-question/tool/format-answer.d.ts.map +1 -1
  119. package/dist/core/tools/ask-user-question/tool/format-answer.js +5 -5
  120. package/dist/core/tools/ask-user-question/tool/format-answer.js.map +1 -1
  121. package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts +16 -3
  122. package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts.map +1 -1
  123. package/dist/core/tools/ask-user-question/tool/response-envelope.js +21 -3
  124. package/dist/core/tools/ask-user-question/tool/response-envelope.js.map +1 -1
  125. package/dist/index.d.ts +4 -3
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +3 -2
  128. package/dist/index.js.map +1 -1
  129. package/dist/main.d.ts.map +1 -1
  130. package/dist/main.js +4 -2
  131. package/dist/main.js.map +1 -1
  132. package/dist/modes/index.d.ts +1 -1
  133. package/dist/modes/index.d.ts.map +1 -1
  134. package/dist/modes/index.js.map +1 -1
  135. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  136. package/dist/modes/interactive/components/chat-session-host.js +17 -0
  137. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  138. package/dist/modes/interactive/components/context-compaction-summary-message.d.ts +17 -0
  139. package/dist/modes/interactive/components/context-compaction-summary-message.d.ts.map +1 -0
  140. package/dist/modes/interactive/components/context-compaction-summary-message.js +83 -0
  141. package/dist/modes/interactive/components/context-compaction-summary-message.js.map +1 -0
  142. package/dist/modes/interactive/components/custom-message.d.ts +1 -0
  143. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  144. package/dist/modes/interactive/components/custom-message.js +36 -4
  145. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  146. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  147. package/dist/modes/interactive/components/footer.js +4 -1
  148. package/dist/modes/interactive/components/footer.js.map +1 -1
  149. package/dist/modes/interactive/components/index.d.ts +1 -0
  150. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  151. package/dist/modes/interactive/components/index.js +1 -0
  152. package/dist/modes/interactive/components/index.js.map +1 -1
  153. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  154. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  155. package/dist/modes/interactive/interactive-mode.js +94 -17
  156. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  157. package/dist/modes/rpc/rpc-client.d.ts +13 -8
  158. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  159. package/dist/modes/rpc/rpc-client.js +8 -1
  160. package/dist/modes/rpc/rpc-client.js.map +1 -1
  161. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  162. package/dist/modes/rpc/rpc-mode.js +4 -0
  163. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  164. package/dist/modes/rpc/rpc-types.d.ts +14 -3
  165. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  166. package/dist/modes/rpc/rpc-types.js.map +1 -1
  167. package/dist/utils/git-env.d.ts +10 -0
  168. package/dist/utils/git-env.d.ts.map +1 -0
  169. package/dist/utils/git-env.js +33 -0
  170. package/dist/utils/git-env.js.map +1 -0
  171. package/docs/compaction.md +185 -50
  172. package/docs/custom-provider.md +11 -9
  173. package/docs/extensions.md +46 -42
  174. package/docs/index.md +13 -6
  175. package/docs/json.md +15 -12
  176. package/docs/packages.md +2 -0
  177. package/docs/providers.md +4 -1
  178. package/docs/quickstart.md +18 -11
  179. package/docs/rpc.md +38 -23
  180. package/docs/sdk.md +17 -8
  181. package/docs/session-format.md +26 -13
  182. package/docs/sessions.md +3 -3
  183. package/docs/settings.md +2 -2
  184. package/docs/skills.md +1 -15
  185. package/docs/termux.md +9 -10
  186. package/docs/themes.md +2 -2
  187. package/docs/tmux.md +3 -3
  188. package/docs/tui.md +19 -32
  189. package/docs/usage.md +2 -2
  190. package/docs/workflows.md +60 -16
  191. package/package.json +6 -12
  192. package/dist/builtin/subagents/skills/browser-use/SKILL.md +0 -234
  193. package/dist/builtin/subagents/skills/browser-use/references/cdp-python.md +0 -76
  194. package/dist/builtin/subagents/skills/browser-use/references/multi-session.md +0 -92
  195. package/node_modules/@earendil-works/pi-tui/README.md +0 -779
  196. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +0 -54
  197. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +0 -1
  198. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +0 -632
  199. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +0 -1
  200. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts +0 -22
  201. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +0 -1
  202. package/node_modules/@earendil-works/pi-tui/dist/components/box.js +0 -104
  203. package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +0 -1
  204. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts +0 -22
  205. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +0 -1
  206. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js +0 -35
  207. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js.map +0 -1
  208. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +0 -249
  209. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +0 -1
  210. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +0 -1857
  211. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +0 -1
  212. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts +0 -28
  213. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +0 -1
  214. package/node_modules/@earendil-works/pi-tui/dist/components/image.js +0 -89
  215. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +0 -1
  216. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts +0 -37
  217. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +0 -1
  218. package/node_modules/@earendil-works/pi-tui/dist/components/input.js +0 -378
  219. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +0 -1
  220. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +0 -31
  221. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +0 -1
  222. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +0 -69
  223. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +0 -1
  224. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +0 -96
  225. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +0 -1
  226. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +0 -644
  227. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +0 -1
  228. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +0 -50
  229. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +0 -1
  230. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js +0 -159
  231. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +0 -1
  232. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +0 -50
  233. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +0 -1
  234. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +0 -185
  235. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +0 -1
  236. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts +0 -12
  237. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +0 -1
  238. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js +0 -23
  239. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +0 -1
  240. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts +0 -19
  241. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +0 -1
  242. package/node_modules/@earendil-works/pi-tui/dist/components/text.js +0 -89
  243. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +0 -1
  244. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts +0 -13
  245. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +0 -1
  246. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js +0 -51
  247. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +0 -1
  248. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts +0 -39
  249. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts.map +0 -1
  250. package/node_modules/@earendil-works/pi-tui/dist/editor-component.js +0 -2
  251. package/node_modules/@earendil-works/pi-tui/dist/editor-component.js.map +0 -1
  252. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts +0 -16
  253. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +0 -1
  254. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +0 -110
  255. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +0 -1
  256. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +0 -23
  257. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +0 -1
  258. package/node_modules/@earendil-works/pi-tui/dist/index.js +0 -32
  259. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +0 -1
  260. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts +0 -193
  261. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +0 -1
  262. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js +0 -174
  263. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +0 -1
  264. package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts +0 -184
  265. package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +0 -1
  266. package/node_modules/@earendil-works/pi-tui/dist/keys.js +0 -1173
  267. package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +0 -1
  268. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts +0 -28
  269. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts.map +0 -1
  270. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.js +0 -44
  271. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.js.map +0 -1
  272. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +0 -3
  273. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +0 -1
  274. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +0 -53
  275. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +0 -1
  276. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts +0 -50
  277. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts.map +0 -1
  278. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js +0 -361
  279. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js.map +0 -1
  280. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -90
  281. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +0 -1
  282. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +0 -366
  283. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +0 -1
  284. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +0 -113
  285. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +0 -1
  286. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +0 -472
  287. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +0 -1
  288. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +0 -227
  289. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +0 -1
  290. package/node_modules/@earendil-works/pi-tui/dist/tui.js +0 -1106
  291. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +0 -1
  292. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts +0 -17
  293. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts.map +0 -1
  294. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.js +0 -25
  295. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.js.map +0 -1
  296. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -84
  297. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +0 -1
  298. package/node_modules/@earendil-works/pi-tui/dist/utils.js +0 -1029
  299. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +0 -1
  300. package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts +0 -25
  301. package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts.map +0 -1
  302. package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js +0 -96
  303. package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js.map +0 -1
  304. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  305. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  306. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  307. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  308. package/node_modules/@earendil-works/pi-tui/package.json +0 -47
  309. package/node_modules/get-east-asian-width/index.d.ts +0 -60
  310. package/node_modules/get-east-asian-width/index.js +0 -30
  311. package/node_modules/get-east-asian-width/license +0 -9
  312. package/node_modules/get-east-asian-width/lookup-data.js +0 -21
  313. package/node_modules/get-east-asian-width/lookup.js +0 -138
  314. package/node_modules/get-east-asian-width/package.json +0 -71
  315. package/node_modules/get-east-asian-width/readme.md +0 -65
  316. package/node_modules/get-east-asian-width/utilities.js +0 -24
  317. package/node_modules/marked/LICENSE.md +0 -44
  318. package/node_modules/marked/README.md +0 -106
  319. package/node_modules/marked/bin/main.js +0 -282
  320. package/node_modules/marked/bin/marked.js +0 -15
  321. package/node_modules/marked/lib/marked.cjs +0 -2211
  322. package/node_modules/marked/lib/marked.cjs.map +0 -7
  323. package/node_modules/marked/lib/marked.d.cts +0 -728
  324. package/node_modules/marked/lib/marked.d.ts +0 -728
  325. package/node_modules/marked/lib/marked.esm.js +0 -2189
  326. package/node_modules/marked/lib/marked.esm.js.map +0 -7
  327. package/node_modules/marked/lib/marked.umd.js +0 -2213
  328. package/node_modules/marked/lib/marked.umd.js.map +0 -7
  329. package/node_modules/marked/man/marked.1 +0 -111
  330. package/node_modules/marked/man/marked.1.md +0 -92
  331. package/node_modules/marked/marked.min.js +0 -69
  332. package/node_modules/marked/package.json +0 -111
@@ -22,14 +22,14 @@ import { sleep } from "../utils/sleep.js";
22
22
  import { ATOMIC_GUIDE_COMMAND_NAME, ATOMIC_GUIDE_HELP_CHOICES, atomicGuideModeForChoice, getAtomicGuideMessage, isAtomicGuideHelpChoice, normalizeAtomicGuideMode, } from "./atomic-guide-command.js";
23
23
  import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
24
24
  import { executeBashWithOperations } from "./bash-executor.js";
25
- import { calculateContextTokens, collectEntriesForBranchSummary, compact, estimateContextTokens, generateBranchSummary, prepareCompaction, shouldCompact, } from "./compaction/index.js";
25
+ import { calculateContextTokens, collectEntriesForBranchSummary, contextCompact as runContextCompact, estimateContextTokens, generateBranchSummary, prepareContextCompaction, shouldCompact, } from "./compaction/index.js";
26
26
  import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
27
27
  import { exportSessionToHtml } from "./export-html/index.js";
28
28
  import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
29
29
  import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
30
30
  import { emitSessionShutdownEvent } from "./extensions/runner.js";
31
31
  import { expandPromptTemplate } from "./prompt-templates.js";
32
- import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
32
+ import { CURRENT_SESSION_VERSION, getLatestCompactionBoundaryEntry } from "./session-manager.js";
33
33
  import { createSyntheticSourceInfo } from "./source-info.js";
34
34
  import { buildSystemPrompt } from "./system-prompt.js";
35
35
  import { createLocalBashOperations } from "./tools/bash.js";
@@ -1476,11 +1476,42 @@ export class AgentSession {
1476
1476
  // Compaction
1477
1477
  // =========================================================================
1478
1478
  /**
1479
- * Manually compact the session context.
1480
- * Aborts current agent operation first.
1481
- * @param customInstructions Optional instructions for the compaction summary
1479
+ * Apply validated logical deletions and rebuild active agent context.
1480
+ * Retained transcript entries/content blocks stay verbatim.
1481
+ */
1482
+ async _applyContextVerbatimCompaction(options) {
1483
+ if (!this.model) {
1484
+ throw new Error(formatNoModelSelectedMessage());
1485
+ }
1486
+ const pathEntries = this.sessionManager.getBranch();
1487
+ const settings = this.settingsManager.getCompactionSettings();
1488
+ const mode = options.mode ?? "standard";
1489
+ const preparation = prepareContextCompaction(pathEntries, settings, { mode });
1490
+ if (!preparation) {
1491
+ return undefined;
1492
+ }
1493
+ const validated = await runContextCompact(preparation, this.model, options.apiKey, options.headers, options.abortController.signal, undefined, mode);
1494
+ if (options.abortController.signal.aborted) {
1495
+ throw new Error("Compaction cancelled");
1496
+ }
1497
+ const backupPath = this.sessionManager.writeBackupSnapshot(options.backupLabel);
1498
+ this.sessionManager.appendContextCompaction(validated.deletedTargets, validated.protectedEntryIds, validated.stats, backupPath);
1499
+ const sessionContext = this.sessionManager.buildSessionContext();
1500
+ this.agent.state.messages = sessionContext.messages;
1501
+ return {
1502
+ ...validated,
1503
+ promptVersion: 1,
1504
+ ...(backupPath ? { backupPath } : {}),
1505
+ };
1506
+ }
1507
+ /**
1508
+ * Manually compact the session context using deletion-only verbatim context compaction.
1509
+ * Aborts current agent operation first. Custom summary instructions are not accepted.
1482
1510
  */
1483
1511
  async compact(customInstructions) {
1512
+ if (customInstructions?.trim()) {
1513
+ throw new Error("Custom compaction instructions are not supported; use /compact without arguments");
1514
+ }
1484
1515
  this._disconnectFromAgent();
1485
1516
  await this.abort();
1486
1517
  this._compactionAbortController = new AbortController();
@@ -1490,84 +1521,23 @@ export class AgentSession {
1490
1521
  throw new Error(formatNoModelSelectedMessage());
1491
1522
  }
1492
1523
  const { apiKey, headers } = await this._getRequiredRequestAuth(this.model);
1493
- const pathEntries = this.sessionManager.getBranch();
1494
- const settings = this.settingsManager.getCompactionSettings();
1495
- const preparation = prepareCompaction(pathEntries, settings);
1496
- if (!preparation) {
1497
- // Check why we can't compact
1498
- const lastEntry = pathEntries[pathEntries.length - 1];
1499
- if (lastEntry?.type === "compaction") {
1500
- throw new Error("Already compacted");
1501
- }
1524
+ const result = await this._applyContextVerbatimCompaction({
1525
+ apiKey,
1526
+ headers,
1527
+ abortController: this._compactionAbortController,
1528
+ backupLabel: "compact",
1529
+ });
1530
+ if (!result) {
1502
1531
  throw new Error("Nothing to compact (session too small)");
1503
1532
  }
1504
- let extensionCompaction;
1505
- let fromExtension = false;
1506
- if (this._extensionRunner.hasHandlers("session_before_compact")) {
1507
- const result = (await this._extensionRunner.emit({
1508
- type: "session_before_compact",
1509
- preparation,
1510
- branchEntries: pathEntries,
1511
- customInstructions,
1512
- signal: this._compactionAbortController.signal,
1513
- }));
1514
- if (result?.cancel) {
1515
- throw new Error("Compaction cancelled");
1516
- }
1517
- if (result?.compaction) {
1518
- extensionCompaction = result.compaction;
1519
- fromExtension = true;
1520
- }
1521
- }
1522
- let summary;
1523
- let firstKeptEntryId;
1524
- let tokensBefore;
1525
- let details;
1526
- if (extensionCompaction) {
1527
- // Extension provided compaction content
1528
- summary = extensionCompaction.summary;
1529
- firstKeptEntryId = extensionCompaction.firstKeptEntryId;
1530
- tokensBefore = extensionCompaction.tokensBefore;
1531
- details = extensionCompaction.details;
1532
- }
1533
- else {
1534
- // Generate compaction result
1535
- const result = await compact(preparation, this.model, apiKey, headers, customInstructions, this._compactionAbortController.signal, this.thinkingLevel);
1536
- summary = result.summary;
1537
- firstKeptEntryId = result.firstKeptEntryId;
1538
- tokensBefore = result.tokensBefore;
1539
- details = result.details;
1540
- }
1541
- if (this._compactionAbortController.signal.aborted) {
1542
- throw new Error("Compaction cancelled");
1543
- }
1544
- this.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension);
1545
- const newEntries = this.sessionManager.getEntries();
1546
- const sessionContext = this.sessionManager.buildSessionContext();
1547
- this.agent.state.messages = sessionContext.messages;
1548
- // Get the saved compaction entry for the extension event
1549
- const savedCompactionEntry = newEntries.find((e) => e.type === "compaction" && e.summary === summary);
1550
- if (this._extensionRunner && savedCompactionEntry) {
1551
- await this._extensionRunner.emit({
1552
- type: "session_compact",
1553
- compactionEntry: savedCompactionEntry,
1554
- fromExtension,
1555
- });
1556
- }
1557
- const compactionResult = {
1558
- summary,
1559
- firstKeptEntryId,
1560
- tokensBefore,
1561
- details,
1562
- };
1563
1533
  this._emit({
1564
1534
  type: "compaction_end",
1565
1535
  reason: "manual",
1566
- result: compactionResult,
1536
+ result,
1567
1537
  aborted: false,
1568
1538
  willRetry: false,
1569
1539
  });
1570
- return compactionResult;
1540
+ return result;
1571
1541
  }
1572
1542
  catch (error) {
1573
1543
  const message = error instanceof Error ? error.message : String(error);
@@ -1587,6 +1557,56 @@ export class AgentSession {
1587
1557
  this._reconnectToAgent();
1588
1558
  }
1589
1559
  }
1560
+ /**
1561
+ * Manually compact the session context by applying validated logical deletions.
1562
+ * Retained transcript entries/content blocks stay verbatim; no user prompt text is accepted.
1563
+ */
1564
+ async contextCompact() {
1565
+ this._disconnectFromAgent();
1566
+ await this.abort();
1567
+ this._compactionAbortController = new AbortController();
1568
+ this._emit({ type: "context_compaction_start", reason: "manual" });
1569
+ try {
1570
+ if (!this.model) {
1571
+ throw new Error(formatNoModelSelectedMessage());
1572
+ }
1573
+ const { apiKey, headers } = await this._getRequiredRequestAuth(this.model);
1574
+ const result = await this._applyContextVerbatimCompaction({
1575
+ apiKey,
1576
+ headers,
1577
+ abortController: this._compactionAbortController,
1578
+ backupLabel: "context-compact",
1579
+ });
1580
+ if (!result) {
1581
+ throw new Error("Nothing to context-compact (session too small)");
1582
+ }
1583
+ this._emit({
1584
+ type: "context_compaction_end",
1585
+ reason: "manual",
1586
+ result,
1587
+ aborted: false,
1588
+ willRetry: false,
1589
+ });
1590
+ return result;
1591
+ }
1592
+ catch (error) {
1593
+ const message = error instanceof Error ? error.message : String(error);
1594
+ const aborted = message === "Compaction cancelled" || (error instanceof Error && error.name === "AbortError");
1595
+ this._emit({
1596
+ type: "context_compaction_end",
1597
+ reason: "manual",
1598
+ result: undefined,
1599
+ aborted,
1600
+ willRetry: false,
1601
+ errorMessage: aborted ? undefined : `Context compaction failed: ${message}`,
1602
+ });
1603
+ throw error;
1604
+ }
1605
+ finally {
1606
+ this._compactionAbortController = undefined;
1607
+ this._reconnectToAgent();
1608
+ }
1609
+ }
1590
1610
  /**
1591
1611
  * Cancel in-progress compaction (manual or auto).
1592
1612
  */
@@ -1606,7 +1626,7 @@ export class AgentSession {
1606
1626
  *
1607
1627
  * Two cases:
1608
1628
  * 1. Overflow: LLM returned context overflow error, remove error message from agent state, compact, auto-retry
1609
- * 2. Threshold: Context over threshold, compact, NO auto-retry (user continues manually)
1629
+ * 2. Threshold: Context over threshold, compact, resume queued active-turn work if present; otherwise wait for user
1610
1630
  *
1611
1631
  * @param assistantMessage The assistant message to check
1612
1632
  * @param skipAbortedCheck If false, include aborted messages (for pre-prompt check). Default: true
@@ -1627,9 +1647,10 @@ export class AgentSession {
1627
1647
  // Skip compaction checks if this assistant message is older than the latest
1628
1648
  // compaction boundary. This prevents a stale pre-compaction usage/error
1629
1649
  // from retriggering compaction on the first prompt after compaction.
1630
- const compactionEntry = getLatestCompactionEntry(this.sessionManager.getBranch());
1631
- const assistantIsFromBeforeCompaction = compactionEntry !== null && assistantMessage.timestamp <= new Date(compactionEntry.timestamp).getTime();
1632
- if (assistantIsFromBeforeCompaction) {
1650
+ const compactionBoundaryEntry = getLatestCompactionBoundaryEntry(this.sessionManager.getBranch());
1651
+ const assistantIsFromBeforeCompactionBoundary = compactionBoundaryEntry !== null &&
1652
+ assistantMessage.timestamp <= new Date(compactionBoundaryEntry.timestamp).getTime();
1653
+ if (assistantIsFromBeforeCompactionBoundary) {
1633
1654
  return;
1634
1655
  }
1635
1656
  // Case 1: Overflow - LLM returned context overflow error
@@ -1668,9 +1689,9 @@ export class AgentSession {
1668
1689
  // have stale usage reflecting the old (larger) context and would falsely
1669
1690
  // trigger compaction right after one just finished.
1670
1691
  const usageMsg = messages[estimate.lastUsageIndex];
1671
- if (compactionEntry &&
1692
+ if (compactionBoundaryEntry &&
1672
1693
  usageMsg.role === "assistant" &&
1673
- usageMsg.timestamp <= new Date(compactionEntry.timestamp).getTime()) {
1694
+ usageMsg.timestamp <= new Date(compactionBoundaryEntry.timestamp).getTime()) {
1674
1695
  return;
1675
1696
  }
1676
1697
  contextTokens = estimate.tokens;
@@ -1682,11 +1703,44 @@ export class AgentSession {
1682
1703
  await this._runAutoCompaction("threshold", false);
1683
1704
  }
1684
1705
  }
1706
+ /**
1707
+ * Internal: remove the trailing overflow error from retry context if it is still present.
1708
+ */
1709
+ _dropTrailingOverflowAssistantErrorIfPresent() {
1710
+ const messages = this.agent.state.messages;
1711
+ const lastMsg = messages[messages.length - 1];
1712
+ if (lastMsg?.role === "assistant" && lastMsg.stopReason === "error") {
1713
+ this.agent.state.messages = messages.slice(0, -1);
1714
+ }
1715
+ }
1716
+ /**
1717
+ * Internal: schedule a live post-event continuation probe after compaction_end listeners can flush queues.
1718
+ */
1719
+ _schedulePostAutoCompactionContinuationProbe(reason, willRetry) {
1720
+ setTimeout(() => {
1721
+ if (this.isCompacting || this.isStreaming) {
1722
+ return;
1723
+ }
1724
+ if (reason === "overflow" && willRetry) {
1725
+ this._resumeAfterAutoCompaction();
1726
+ return;
1727
+ }
1728
+ if (!this.agent.hasQueuedMessages()) {
1729
+ return;
1730
+ }
1731
+ this._resumeAfterAutoCompaction();
1732
+ }, 100);
1733
+ }
1734
+ /**
1735
+ * Internal: resume generation after successful auto-compaction only when active work remains.
1736
+ */
1737
+ _resumeAfterAutoCompaction() {
1738
+ this.agent.continue().catch(() => { });
1739
+ }
1685
1740
  /**
1686
1741
  * Internal: Run auto-compaction with events.
1687
1742
  */
1688
1743
  async _runAutoCompaction(reason, willRetry) {
1689
- const settings = this.settingsManager.getCompactionSettings();
1690
1744
  this._emit({ type: "compaction_start", reason });
1691
1745
  this._autoCompactionAbortController = new AbortController();
1692
1746
  try {
@@ -1711,10 +1765,14 @@ export class AgentSession {
1711
1765
  });
1712
1766
  return;
1713
1767
  }
1714
- const { apiKey, headers } = authResult;
1715
- const pathEntries = this.sessionManager.getBranch();
1716
- const preparation = prepareCompaction(pathEntries, settings);
1717
- if (!preparation) {
1768
+ const result = await this._applyContextVerbatimCompaction({
1769
+ apiKey: authResult.apiKey,
1770
+ headers: authResult.headers,
1771
+ abortController: this._autoCompactionAbortController,
1772
+ backupLabel: reason === "overflow" ? "overflow-auto-compact" : "auto-compact",
1773
+ mode: reason === "overflow" ? "critical_overflow" : "standard",
1774
+ });
1775
+ if (!result) {
1718
1776
  this._emit({
1719
1777
  type: "compaction_end",
1720
1778
  reason,
@@ -1724,109 +1782,26 @@ export class AgentSession {
1724
1782
  });
1725
1783
  return;
1726
1784
  }
1727
- let extensionCompaction;
1728
- let fromExtension = false;
1729
- if (this._extensionRunner.hasHandlers("session_before_compact")) {
1730
- const extensionResult = (await this._extensionRunner.emit({
1731
- type: "session_before_compact",
1732
- preparation,
1733
- branchEntries: pathEntries,
1734
- customInstructions: undefined,
1735
- signal: this._autoCompactionAbortController.signal,
1736
- }));
1737
- if (extensionResult?.cancel) {
1738
- this._emit({
1739
- type: "compaction_end",
1740
- reason,
1741
- result: undefined,
1742
- aborted: true,
1743
- willRetry: false,
1744
- });
1745
- return;
1746
- }
1747
- if (extensionResult?.compaction) {
1748
- extensionCompaction = extensionResult.compaction;
1749
- fromExtension = true;
1750
- }
1751
- }
1752
- let summary;
1753
- let firstKeptEntryId;
1754
- let tokensBefore;
1755
- let details;
1756
- if (extensionCompaction) {
1757
- // Extension provided compaction content
1758
- summary = extensionCompaction.summary;
1759
- firstKeptEntryId = extensionCompaction.firstKeptEntryId;
1760
- tokensBefore = extensionCompaction.tokensBefore;
1761
- details = extensionCompaction.details;
1785
+ if (reason === "overflow" && willRetry) {
1786
+ this._dropTrailingOverflowAssistantErrorIfPresent();
1762
1787
  }
1763
- else {
1764
- // Generate compaction result
1765
- const compactResult = await compact(preparation, this.model, apiKey, headers, undefined, this._autoCompactionAbortController.signal, this.thinkingLevel);
1766
- summary = compactResult.summary;
1767
- firstKeptEntryId = compactResult.firstKeptEntryId;
1768
- tokensBefore = compactResult.tokensBefore;
1769
- details = compactResult.details;
1770
- }
1771
- if (this._autoCompactionAbortController.signal.aborted) {
1772
- this._emit({
1773
- type: "compaction_end",
1774
- reason,
1775
- result: undefined,
1776
- aborted: true,
1777
- willRetry: false,
1778
- });
1779
- return;
1780
- }
1781
- this.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension);
1782
- const newEntries = this.sessionManager.getEntries();
1783
- const sessionContext = this.sessionManager.buildSessionContext();
1784
- this.agent.state.messages = sessionContext.messages;
1785
- // Get the saved compaction entry for the extension event
1786
- const savedCompactionEntry = newEntries.find((e) => e.type === "compaction" && e.summary === summary);
1787
- if (this._extensionRunner && savedCompactionEntry) {
1788
- await this._extensionRunner.emit({
1789
- type: "session_compact",
1790
- compactionEntry: savedCompactionEntry,
1791
- fromExtension,
1792
- });
1793
- }
1794
- const result = {
1795
- summary,
1796
- firstKeptEntryId,
1797
- tokensBefore,
1798
- details,
1799
- };
1800
1788
  this._emit({ type: "compaction_end", reason, result, aborted: false, willRetry });
1801
- if (willRetry) {
1802
- const messages = this.agent.state.messages;
1803
- const lastMsg = messages[messages.length - 1];
1804
- if (lastMsg?.role === "assistant" && lastMsg.stopReason === "error") {
1805
- this.agent.state.messages = messages.slice(0, -1);
1806
- }
1807
- setTimeout(() => {
1808
- this.agent.continue().catch(() => { });
1809
- }, 100);
1810
- }
1811
- else if (this.agent.hasQueuedMessages()) {
1812
- // Auto-compaction can complete while follow-up/steering/custom messages are waiting.
1813
- // Kick the loop so queued messages are actually delivered.
1814
- setTimeout(() => {
1815
- this.agent.continue().catch(() => { });
1816
- }, 100);
1817
- }
1789
+ this._schedulePostAutoCompactionContinuationProbe(reason, willRetry);
1818
1790
  }
1819
1791
  catch (error) {
1820
1792
  const errorMessage = error instanceof Error ? error.message : "compaction failed";
1793
+ const aborted = errorMessage === "Compaction cancelled" || (error instanceof Error && error.name === "AbortError");
1821
1794
  this._emit({
1822
1795
  type: "compaction_end",
1823
1796
  reason,
1824
1797
  result: undefined,
1825
- aborted: false,
1798
+ aborted,
1826
1799
  willRetry: false,
1827
- errorMessage: reason === "overflow"
1828
- ? `Context overflow recovery failed: ${errorMessage}`
1829
- : `Auto-compaction failed: ${errorMessage}`,
1800
+ errorMessage: aborted
1801
+ ? undefined
1802
+ : reason === "overflow"
1803
+ ? `Context overflow recovery failed: ${errorMessage}`
1804
+ : `Auto-compaction failed: ${errorMessage}`,
1830
1805
  });
1831
1806
  }
1832
1807
  finally {
@@ -2633,10 +2608,10 @@ export class AgentSession {
2633
2608
  // We can only trust usage from an assistant that responded after the latest compaction.
2634
2609
  // If no such assistant exists, context token count is unknown until the next LLM response.
2635
2610
  const branchEntries = this.sessionManager.getBranch();
2636
- const latestCompaction = getLatestCompactionEntry(branchEntries);
2637
- if (latestCompaction) {
2611
+ const latestCompactionBoundary = getLatestCompactionBoundaryEntry(branchEntries);
2612
+ if (latestCompactionBoundary) {
2638
2613
  // Check if there's a valid assistant usage after the compaction boundary
2639
- const compactionIndex = branchEntries.lastIndexOf(latestCompaction);
2614
+ const compactionIndex = branchEntries.lastIndexOf(latestCompactionBoundary);
2640
2615
  let hasPostCompactionUsage = false;
2641
2616
  for (let i = branchEntries.length - 1; i > compactionIndex; i--) {
2642
2617
  const entry = branchEntries[i];