@ashx-j/lunr 0.2.26 → 0.2.28

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 (697) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/LICENSE +22 -0
  3. package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -1
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-thinking.js +1 -1
  6. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  7. package/dist/builtin-extensions/ashxj-tui.d.ts +11 -1
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +6 -10
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/lunr-cron.d.ts +4 -5
  12. package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
  13. package/dist/builtin-extensions/lunr-cron.js +94 -108
  14. package/dist/builtin-extensions/lunr-cron.js.map +1 -1
  15. package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts.map +1 -1
  16. package/dist/builtin-extensions/lunr-local-providers/local-servers.js +3 -1
  17. package/dist/builtin-extensions/lunr-local-providers/local-servers.js.map +1 -1
  18. package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.d.ts.map +1 -1
  19. package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js +5 -2
  20. package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js.map +1 -1
  21. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.d.ts.map +1 -1
  22. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js +2 -2
  23. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js.map +1 -1
  24. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  25. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +1 -1
  26. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  27. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts.map +1 -1
  28. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js +1 -1
  29. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js.map +1 -1
  30. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  31. package/dist/builtin-extensions/pi-intercom/index.js +2 -2
  32. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  33. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts +1 -1
  34. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts.map +1 -1
  35. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js +1 -1
  36. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js.map +1 -1
  37. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  38. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +1 -15
  39. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  40. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.d.ts +6 -0
  41. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.d.ts.map +1 -1
  42. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.js +187 -132
  43. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.js.map +1 -1
  44. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.d.ts +8 -0
  45. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.js +142 -112
  47. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.js.map +1 -1
  48. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts +12 -1
  49. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js +14 -7
  51. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js.map +1 -1
  52. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.d.ts +11 -3
  53. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.d.ts.map +1 -1
  54. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.js +67 -41
  55. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.js.map +1 -1
  56. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.d.ts +4 -2
  57. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.d.ts.map +1 -1
  58. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.js +3 -0
  59. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.js.map +1 -1
  60. package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts +2 -1
  61. package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts.map +1 -1
  62. package/dist/builtin-extensions/pi-mcp-adapter/commands.js +6 -6
  63. package/dist/builtin-extensions/pi-mcp-adapter/commands.js.map +1 -1
  64. package/dist/builtin-extensions/pi-mcp-adapter/config.d.ts +1 -1
  65. package/dist/builtin-extensions/pi-mcp-adapter/config.d.ts.map +1 -1
  66. package/dist/builtin-extensions/pi-mcp-adapter/config.js +11 -5
  67. package/dist/builtin-extensions/pi-mcp-adapter/config.js.map +1 -1
  68. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -1
  69. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +2 -2
  70. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -1
  71. package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.d.ts.map +1 -1
  72. package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.js +1 -1
  73. package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.js.map +1 -1
  74. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-mcp-adapter/index.js +48 -40
  76. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  77. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  78. package/dist/builtin-extensions/pi-mcp-adapter/init.js +3 -1
  79. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  80. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.d.ts +12 -40
  81. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.js +166 -235
  83. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.js.map +1 -1
  84. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.d.ts +5 -0
  85. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.js +43 -13
  87. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.js.map +1 -1
  88. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.d.ts +14 -3
  89. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.js +73 -21
  91. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.js.map +1 -1
  92. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts.map +1 -1
  93. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js +4 -4
  94. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js.map +1 -1
  95. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  96. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +2 -2
  97. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  98. package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts +2 -0
  99. package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts.map +1 -1
  100. package/dist/builtin-extensions/pi-mcp-adapter/state.js.map +1 -1
  101. package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts +1 -1
  102. package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts.map +1 -1
  103. package/dist/builtin-extensions/pi-ollama-cloud/index.js +1 -1
  104. package/dist/builtin-extensions/pi-ollama-cloud/index.js.map +1 -1
  105. package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts +11 -5
  106. package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-ollama-cloud/models.js +12 -32
  108. package/dist/builtin-extensions/pi-ollama-cloud/models.js.map +1 -1
  109. package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts.map +1 -1
  110. package/dist/builtin-extensions/pi-prompt-template-model/index.js +5 -3
  111. package/dist/builtin-extensions/pi-prompt-template-model/index.js.map +1 -1
  112. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts +2 -1
  113. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  114. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +21 -12
  115. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  116. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  117. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +7 -24
  118. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  119. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  120. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +39 -77
  121. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  122. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts +4 -1
  123. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts.map +1 -1
  124. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js +2 -0
  125. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js.map +1 -1
  126. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +6 -1
  127. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  128. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +17 -31
  129. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  130. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
  131. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +7 -2
  132. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
  133. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +5 -1
  134. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  135. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +78 -42
  136. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  137. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  138. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +8 -1
  139. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  140. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +0 -3
  141. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  142. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +134 -28
  143. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  144. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  145. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +26 -5
  146. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  147. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +1 -1
  148. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  149. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +1 -1
  150. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  151. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +7 -8
  152. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  153. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js +60 -32
  154. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  155. package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.d.ts +7 -1
  156. package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.d.ts.map +1 -1
  157. package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.js +70 -38
  158. package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.js.map +1 -1
  159. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +9 -0
  160. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  161. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  162. package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts +1 -1
  163. package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts.map +1 -1
  164. package/dist/builtin-extensions/pi-subagents/src/shared/utils.js +15 -5
  165. package/dist/builtin-extensions/pi-subagents/src/shared/utils.js.map +1 -1
  166. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  167. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +4 -3
  168. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  169. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  170. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +13 -62
  171. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  172. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +1 -1
  173. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  174. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +18 -9
  175. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  176. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  177. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +3 -3
  178. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  179. package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
  180. package/dist/builtin-extensions/pi-tps.js +28 -17
  181. package/dist/builtin-extensions/pi-tps.js.map +1 -1
  182. package/dist/builtin-extensions/pi-web-access/activity.d.ts +1 -0
  183. package/dist/builtin-extensions/pi-web-access/activity.d.ts.map +1 -1
  184. package/dist/builtin-extensions/pi-web-access/activity.js +27 -5
  185. package/dist/builtin-extensions/pi-web-access/activity.js.map +1 -1
  186. package/dist/builtin-extensions/pi-web-access/bounded-body.d.ts +3 -0
  187. package/dist/builtin-extensions/pi-web-access/bounded-body.d.ts.map +1 -0
  188. package/dist/builtin-extensions/pi-web-access/bounded-body.js +43 -0
  189. package/dist/builtin-extensions/pi-web-access/bounded-body.js.map +1 -0
  190. package/dist/builtin-extensions/pi-web-access/content-page.d.ts +24 -0
  191. package/dist/builtin-extensions/pi-web-access/content-page.d.ts.map +1 -0
  192. package/dist/builtin-extensions/pi-web-access/content-page.js +57 -0
  193. package/dist/builtin-extensions/pi-web-access/content-page.js.map +1 -0
  194. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  195. package/dist/builtin-extensions/pi-web-access/extract.js +7 -2
  196. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  197. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts +0 -1
  198. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  199. package/dist/builtin-extensions/pi-web-access/github-extract.js +147 -36
  200. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  201. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  202. package/dist/builtin-extensions/pi-web-access/index.js +48 -73
  203. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  204. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +12 -4
  205. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -1
  206. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +35 -12
  207. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -1
  208. package/dist/builtin-extensions/pi-web-access/storage.d.ts +9 -6
  209. package/dist/builtin-extensions/pi-web-access/storage.d.ts.map +1 -1
  210. package/dist/builtin-extensions/pi-web-access/storage.js +36 -24
  211. package/dist/builtin-extensions/pi-web-access/storage.js.map +1 -1
  212. package/dist/builtin-extensions/simple-pi-memory.d.ts +1 -1
  213. package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
  214. package/dist/builtin-extensions/simple-pi-memory.js +1 -1
  215. package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
  216. package/dist/catalog/models.json +1 -1
  217. package/dist/catalog/providers/google-vertex.json +1 -1
  218. package/dist/catalog/providers/google.json +1 -1
  219. package/dist/catalog/publication.json +3 -3
  220. package/dist/cli/install-cli.d.ts.map +1 -1
  221. package/dist/cli/install-cli.js +38 -30
  222. package/dist/cli/install-cli.js.map +1 -1
  223. package/dist/core/agent-session-runtime.d.ts +13 -0
  224. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  225. package/dist/core/agent-session-runtime.js +75 -11
  226. package/dist/core/agent-session-runtime.js.map +1 -1
  227. package/dist/core/agent-session-services.d.ts +1 -0
  228. package/dist/core/agent-session-services.d.ts.map +1 -1
  229. package/dist/core/agent-session-services.js +1 -0
  230. package/dist/core/agent-session-services.js.map +1 -1
  231. package/dist/core/agent-session.d.ts +46 -21
  232. package/dist/core/agent-session.d.ts.map +1 -1
  233. package/dist/core/agent-session.js +344 -126
  234. package/dist/core/agent-session.js.map +1 -1
  235. package/dist/core/browser/runtime.d.ts +2 -0
  236. package/dist/core/browser/runtime.d.ts.map +1 -1
  237. package/dist/core/browser/runtime.js +80 -45
  238. package/dist/core/browser/runtime.js.map +1 -1
  239. package/dist/core/browser/setup.d.ts.map +1 -1
  240. package/dist/core/browser/setup.js +12 -1
  241. package/dist/core/browser/setup.js.map +1 -1
  242. package/dist/core/cache-stats.d.ts +1 -1
  243. package/dist/core/cache-stats.d.ts.map +1 -1
  244. package/dist/core/cache-stats.js +1 -1
  245. package/dist/core/cache-stats.js.map +1 -1
  246. package/dist/core/compaction/branch-summarization.d.ts +2 -1
  247. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  248. package/dist/core/compaction/branch-summarization.js +1 -0
  249. package/dist/core/compaction/branch-summarization.js.map +1 -1
  250. package/dist/core/compaction/compaction.d.ts +5 -11
  251. package/dist/core/compaction/compaction.d.ts.map +1 -1
  252. package/dist/core/compaction/compaction.js +38 -92
  253. package/dist/core/compaction/compaction.js.map +1 -1
  254. package/dist/core/computer-use/adapter.d.ts.map +1 -1
  255. package/dist/core/computer-use/adapter.js +7 -2
  256. package/dist/core/computer-use/adapter.js.map +1 -1
  257. package/dist/core/computer-use/image.d.ts.map +1 -1
  258. package/dist/core/computer-use/image.js +17 -5
  259. package/dist/core/computer-use/image.js.map +1 -1
  260. package/dist/core/computer-use/schemas.d.ts.map +1 -1
  261. package/dist/core/computer-use/schemas.js +23 -6
  262. package/dist/core/computer-use/schemas.js.map +1 -1
  263. package/dist/core/computer-use/workflow.d.ts.map +1 -1
  264. package/dist/core/computer-use/workflow.js +459 -119
  265. package/dist/core/computer-use/workflow.js.map +1 -1
  266. package/dist/core/context-breakdown.d.ts +2 -2
  267. package/dist/core/context-breakdown.d.ts.map +1 -1
  268. package/dist/core/context-breakdown.js +22 -20
  269. package/dist/core/context-breakdown.js.map +1 -1
  270. package/dist/core/cron/jobs.d.ts +26 -8
  271. package/dist/core/cron/jobs.d.ts.map +1 -1
  272. package/dist/core/cron/jobs.js +357 -232
  273. package/dist/core/cron/jobs.js.map +1 -1
  274. package/dist/core/cron/origin-context.d.ts +1 -0
  275. package/dist/core/cron/origin-context.d.ts.map +1 -1
  276. package/dist/core/cron/origin-context.js.map +1 -1
  277. package/dist/core/cron/scheduler.d.ts +22 -17
  278. package/dist/core/cron/scheduler.d.ts.map +1 -1
  279. package/dist/core/cron/scheduler.js +153 -73
  280. package/dist/core/cron/scheduler.js.map +1 -1
  281. package/dist/core/extensions/index.d.ts +1 -1
  282. package/dist/core/extensions/index.d.ts.map +1 -1
  283. package/dist/core/extensions/index.js.map +1 -1
  284. package/dist/core/extensions/runner.d.ts +1 -0
  285. package/dist/core/extensions/runner.d.ts.map +1 -1
  286. package/dist/core/extensions/runner.js +8 -0
  287. package/dist/core/extensions/runner.js.map +1 -1
  288. package/dist/core/extensions/types.d.ts +11 -1
  289. package/dist/core/extensions/types.d.ts.map +1 -1
  290. package/dist/core/extensions/types.js.map +1 -1
  291. package/dist/core/footer-data-provider.d.ts +4 -0
  292. package/dist/core/footer-data-provider.d.ts.map +1 -1
  293. package/dist/core/footer-data-provider.js +22 -1
  294. package/dist/core/footer-data-provider.js.map +1 -1
  295. package/dist/core/large-subagent-launch.d.ts +1 -1
  296. package/dist/core/large-subagent-launch.d.ts.map +1 -1
  297. package/dist/core/large-subagent-launch.js +7 -7
  298. package/dist/core/large-subagent-launch.js.map +1 -1
  299. package/dist/core/model-registry.d.ts +2 -0
  300. package/dist/core/model-registry.d.ts.map +1 -1
  301. package/dist/core/model-registry.js +5 -0
  302. package/dist/core/model-registry.js.map +1 -1
  303. package/dist/core/model-runtime.d.ts +4 -1
  304. package/dist/core/model-runtime.d.ts.map +1 -1
  305. package/dist/core/model-runtime.js +40 -4
  306. package/dist/core/model-runtime.js.map +1 -1
  307. package/dist/core/package-manager.d.ts.map +1 -1
  308. package/dist/core/package-manager.js.map +1 -1
  309. package/dist/core/permissions.d.ts +3 -3
  310. package/dist/core/permissions.d.ts.map +1 -1
  311. package/dist/core/permissions.js +11 -35
  312. package/dist/core/permissions.js.map +1 -1
  313. package/dist/core/plan-mode.d.ts +5 -13
  314. package/dist/core/plan-mode.d.ts.map +1 -1
  315. package/dist/core/plan-mode.js +126 -116
  316. package/dist/core/plan-mode.js.map +1 -1
  317. package/dist/core/project-trust.d.ts.map +1 -1
  318. package/dist/core/project-trust.js +1 -1
  319. package/dist/core/project-trust.js.map +1 -1
  320. package/dist/core/prompt-resource-bridge.d.ts +12 -0
  321. package/dist/core/prompt-resource-bridge.d.ts.map +1 -0
  322. package/dist/core/prompt-resource-bridge.js +9 -0
  323. package/dist/core/prompt-resource-bridge.js.map +1 -0
  324. package/dist/core/protected-targets.d.ts +6 -0
  325. package/dist/core/protected-targets.d.ts.map +1 -0
  326. package/dist/core/protected-targets.js +45 -0
  327. package/dist/core/protected-targets.js.map +1 -0
  328. package/dist/core/resource-loader.d.ts.map +1 -1
  329. package/dist/core/resource-loader.js +7 -0
  330. package/dist/core/resource-loader.js.map +1 -1
  331. package/dist/core/rollback.d.ts +19 -3
  332. package/dist/core/rollback.d.ts.map +1 -1
  333. package/dist/core/rollback.js +172 -56
  334. package/dist/core/rollback.js.map +1 -1
  335. package/dist/core/runtime-credentials.d.ts +3 -0
  336. package/dist/core/runtime-credentials.d.ts.map +1 -1
  337. package/dist/core/runtime-credentials.js +14 -1
  338. package/dist/core/runtime-credentials.js.map +1 -1
  339. package/dist/core/sdk.d.ts +3 -0
  340. package/dist/core/sdk.d.ts.map +1 -1
  341. package/dist/core/sdk.js +1 -0
  342. package/dist/core/sdk.js.map +1 -1
  343. package/dist/core/session-manager.d.ts +11 -1
  344. package/dist/core/session-manager.d.ts.map +1 -1
  345. package/dist/core/session-manager.js +111 -33
  346. package/dist/core/session-manager.js.map +1 -1
  347. package/dist/core/session-ownership.d.ts.map +1 -1
  348. package/dist/core/session-ownership.js +8 -3
  349. package/dist/core/session-ownership.js.map +1 -1
  350. package/dist/core/session-retention.d.ts.map +1 -1
  351. package/dist/core/session-retention.js +18 -7
  352. package/dist/core/session-retention.js.map +1 -1
  353. package/dist/core/session-startup-settings.d.ts +10 -0
  354. package/dist/core/session-startup-settings.d.ts.map +1 -0
  355. package/dist/core/session-startup-settings.js +70 -0
  356. package/dist/core/session-startup-settings.js.map +1 -0
  357. package/dist/core/subscriptions.d.ts +16 -7
  358. package/dist/core/subscriptions.d.ts.map +1 -1
  359. package/dist/core/subscriptions.js +96 -55
  360. package/dist/core/subscriptions.js.map +1 -1
  361. package/dist/core/trust-manager.d.ts +2 -1
  362. package/dist/core/trust-manager.d.ts.map +1 -1
  363. package/dist/core/trust-manager.js +6 -1
  364. package/dist/core/trust-manager.js.map +1 -1
  365. package/dist/core/update-check.d.ts.map +1 -1
  366. package/dist/core/update-check.js.map +1 -1
  367. package/dist/core/usage-accounting.d.ts +47 -0
  368. package/dist/core/usage-accounting.d.ts.map +1 -0
  369. package/dist/core/usage-accounting.js +205 -0
  370. package/dist/core/usage-accounting.js.map +1 -0
  371. package/dist/core/usage-adapters/kimi-coding.d.ts +2 -2
  372. package/dist/core/usage-adapters/kimi-coding.d.ts.map +1 -1
  373. package/dist/core/usage-adapters/kimi-coding.js +2 -2
  374. package/dist/core/usage-adapters/kimi-coding.js.map +1 -1
  375. package/dist/core/usage-adapters/openai-codex.d.ts +3 -2
  376. package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
  377. package/dist/core/usage-adapters/openai-codex.js +3 -3
  378. package/dist/core/usage-adapters/openai-codex.js.map +1 -1
  379. package/dist/core/usage-adapters/xai.d.ts +2 -2
  380. package/dist/core/usage-adapters/xai.d.ts.map +1 -1
  381. package/dist/core/usage-adapters/xai.js +3 -3
  382. package/dist/core/usage-adapters/xai.js.map +1 -1
  383. package/dist/core/usage-adapters/zai.d.ts +2 -2
  384. package/dist/core/usage-adapters/zai.d.ts.map +1 -1
  385. package/dist/core/usage-adapters/zai.js +2 -2
  386. package/dist/core/usage-adapters/zai.js.map +1 -1
  387. package/dist/core/usage-history.d.ts +1 -18
  388. package/dist/core/usage-history.d.ts.map +1 -1
  389. package/dist/core/usage-history.js +46 -114
  390. package/dist/core/usage-history.js.map +1 -1
  391. package/dist/core/usage-service.d.ts +9 -2
  392. package/dist/core/usage-service.d.ts.map +1 -1
  393. package/dist/core/usage-service.js +95 -50
  394. package/dist/core/usage-service.js.map +1 -1
  395. package/dist/gateway/agent-bridge.d.ts +9 -1
  396. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  397. package/dist/gateway/agent-bridge.js +91 -37
  398. package/dist/gateway/agent-bridge.js.map +1 -1
  399. package/dist/gateway/buttons.d.ts +8 -1
  400. package/dist/gateway/buttons.d.ts.map +1 -1
  401. package/dist/gateway/buttons.js +76 -18
  402. package/dist/gateway/buttons.js.map +1 -1
  403. package/dist/gateway/commands.d.ts +1 -0
  404. package/dist/gateway/commands.d.ts.map +1 -1
  405. package/dist/gateway/commands.js +10 -4
  406. package/dist/gateway/commands.js.map +1 -1
  407. package/dist/gateway/cron.d.ts +12 -11
  408. package/dist/gateway/cron.d.ts.map +1 -1
  409. package/dist/gateway/cron.js +65 -56
  410. package/dist/gateway/cron.js.map +1 -1
  411. package/dist/gateway/index.d.ts.map +1 -1
  412. package/dist/gateway/index.js +2 -1
  413. package/dist/gateway/index.js.map +1 -1
  414. package/dist/gateway/mobile-commands.d.ts +1 -0
  415. package/dist/gateway/mobile-commands.d.ts.map +1 -1
  416. package/dist/gateway/mobile-commands.js +69 -15
  417. package/dist/gateway/mobile-commands.js.map +1 -1
  418. package/dist/gateway/presenter.d.ts +12 -2
  419. package/dist/gateway/presenter.d.ts.map +1 -1
  420. package/dist/gateway/presenter.js +73 -38
  421. package/dist/gateway/presenter.js.map +1 -1
  422. package/dist/gateway/router.d.ts +2 -2
  423. package/dist/gateway/router.d.ts.map +1 -1
  424. package/dist/gateway/router.js +17 -2
  425. package/dist/gateway/router.js.map +1 -1
  426. package/dist/gateway/service.d.ts +2 -0
  427. package/dist/gateway/service.d.ts.map +1 -1
  428. package/dist/gateway/service.js +153 -0
  429. package/dist/gateway/service.js.map +1 -1
  430. package/dist/main.d.ts.map +1 -1
  431. package/dist/main.js +86 -33
  432. package/dist/main.js.map +1 -1
  433. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  434. package/dist/modes/interactive/components/assistant-message.js +6 -4
  435. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  436. package/dist/modes/interactive/components/context-view.d.ts.map +1 -1
  437. package/dist/modes/interactive/components/context-view.js +2 -2
  438. package/dist/modes/interactive/components/context-view.js.map +1 -1
  439. package/dist/modes/interactive/components/copyable-text.d.ts.map +1 -1
  440. package/dist/modes/interactive/components/copyable-text.js +3 -2
  441. package/dist/modes/interactive/components/copyable-text.js.map +1 -1
  442. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  443. package/dist/modes/interactive/components/extension-editor.js +1 -1
  444. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  445. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  446. package/dist/modes/interactive/components/footer.js +8 -12
  447. package/dist/modes/interactive/components/footer.js.map +1 -1
  448. package/dist/modes/interactive/components/usage-view.d.ts +5 -0
  449. package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
  450. package/dist/modes/interactive/components/usage-view.js +21 -6
  451. package/dist/modes/interactive/components/usage-view.js.map +1 -1
  452. package/dist/modes/interactive/interactive-mode.d.ts +3 -7
  453. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  454. package/dist/modes/interactive/interactive-mode.js +151 -131
  455. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  456. package/dist/modes/interactive/smooth-streaming.d.ts.map +1 -1
  457. package/dist/modes/interactive/smooth-streaming.js.map +1 -1
  458. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  459. package/dist/modes/rpc/rpc-mode.js +2 -1
  460. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  461. package/dist/node-runtime/{adapter-VFG7WNPX.js → adapter-247RTYLS.js} +4 -5
  462. package/dist/node-runtime/agent-session-services-RTUGP3XR.js +54 -0
  463. package/dist/node-runtime/{brave-UWDA3I22.js → brave-2AFFAXNN.js} +1 -1
  464. package/dist/node-runtime/{builtin-extensions-I2HIFEMY.js → builtin-extensions-N4EUD6SB.js} +8 -7
  465. package/dist/node-runtime/{chunk-QH6YL7VK.js → chunk-252ZVPPF.js} +3 -3
  466. package/dist/node-runtime/{chunk-PCEW76PM.js → chunk-2OIPYKLZ.js} +6 -6
  467. package/dist/node-runtime/{chunk-XBWPBZBN.js → chunk-2SWW7KMW.js} +1 -1
  468. package/dist/node-runtime/{chunk-UQUCFAJ3.js → chunk-2VIW3IMF.js} +40 -7
  469. package/dist/node-runtime/{chunk-UOEDI7RP.js → chunk-4KNKQGHM.js} +2 -2
  470. package/dist/node-runtime/chunk-4QRUZ64T.js +1203 -0
  471. package/dist/node-runtime/{chunk-FQMM2EZ2.js → chunk-64XTQNLA.js} +29 -7
  472. package/dist/node-runtime/{chunk-SPVDBUOS.js → chunk-6O3IW3IA.js} +2 -2
  473. package/dist/node-runtime/{chunk-5ZQXRPMC.js → chunk-6ZZHGUSA.js} +2 -2
  474. package/dist/node-runtime/{chunk-WIF24I7G.js → chunk-APVM5NEU.js} +149 -144
  475. package/dist/node-runtime/{chunk-LWYIVUGV.js → chunk-B2IBAXNX.js} +48 -31
  476. package/dist/node-runtime/{chunk-M3LZLQW2.js → chunk-BDRGN3L2.js} +1 -0
  477. package/dist/node-runtime/{chunk-LJTIVM7I.js → chunk-BMRXLQWQ.js} +464 -160
  478. package/dist/node-runtime/{chunk-GJ2RDBRL.js → chunk-BYC6RKCN.js} +4 -2
  479. package/dist/node-runtime/{chunk-T4DA4XE7.js → chunk-DFMPRAQQ.js} +162 -82
  480. package/dist/node-runtime/{chunk-SN2KSMPQ.js → chunk-DQSCFU7R.js} +13 -7
  481. package/dist/node-runtime/{chunk-UVWCDQYF.js → chunk-E5DQGNJI.js} +455 -278
  482. package/dist/node-runtime/{chunk-4SBQAI4T.js → chunk-EBLAZVSA.js} +2058 -73
  483. package/dist/node-runtime/{chunk-CSFI6YXL.js → chunk-ES6PBSIE.js} +1 -1
  484. package/dist/node-runtime/{chunk-IF24A3FH.js → chunk-EVM653DD.js} +4 -4
  485. package/dist/node-runtime/{chunk-HTFRRDSF.js → chunk-F2SMQ6ES.js} +3 -2
  486. package/dist/node-runtime/chunk-F2V2F4ZG.js +114 -0
  487. package/dist/node-runtime/{chunk-IKU6Y7DL.js → chunk-FE3WZI7F.js} +9 -6
  488. package/dist/node-runtime/{chunk-6VYZ5UFP.js → chunk-FLGEEH27.js} +1 -1
  489. package/dist/node-runtime/{chunk-5EFIU3OM.js → chunk-FTKEZL27.js} +1 -1
  490. package/dist/node-runtime/{chunk-RGQAEOM5.js → chunk-FYIFPFXE.js} +23 -6
  491. package/dist/node-runtime/{chunk-HMBGROQK.js → chunk-GLDXBBL6.js} +3 -3
  492. package/dist/node-runtime/{chunk-KWA4OC2J.js → chunk-H6YBCWKG.js} +1 -1
  493. package/dist/node-runtime/{chunk-2MI5OPMN.js → chunk-HNNHHJAB.js} +68 -50
  494. package/dist/node-runtime/{chunk-I74LN5JG.js → chunk-HUD2RFJW.js} +2 -2
  495. package/dist/node-runtime/{chunk-XHIRAZ26.js → chunk-IAZSK7KK.js} +1 -1
  496. package/dist/node-runtime/{chunk-GYIXXQAO.js → chunk-ICKGAKWX.js} +23 -59
  497. package/dist/node-runtime/{chunk-X3PGBLQ7.js → chunk-IHHTWSXN.js} +9 -9
  498. package/dist/node-runtime/{chunk-DAPBPCBP.js → chunk-IPP5BIV5.js} +25 -3
  499. package/dist/node-runtime/{chunk-QFWG2RVL.js → chunk-IXG6F4NT.js} +11 -0
  500. package/dist/node-runtime/{chunk-L24TPBS4.js → chunk-JEK35V2M.js} +45 -31
  501. package/dist/node-runtime/{chunk-RDDAZOMU.js → chunk-JL4HYQXK.js} +1 -1
  502. package/dist/node-runtime/{chunk-2HMIRK7W.js → chunk-LHV3V67B.js} +5 -5
  503. package/dist/node-runtime/{chunk-UAEOTO52.js → chunk-MNQXDFPV.js} +6 -2
  504. package/dist/node-runtime/{chunk-MPKSOJBT.js → chunk-NHATCSOI.js} +4 -7
  505. package/dist/node-runtime/{chunk-RMQZU2YU.js → chunk-NNNR3QIY.js} +1 -1
  506. package/dist/node-runtime/{chunk-2KIPT4HJ.js → chunk-PWHTSQC4.js} +83 -21
  507. package/dist/node-runtime/{chunk-RWTKOC3B.js → chunk-QBTJG3UM.js} +1 -1
  508. package/dist/node-runtime/{chunk-RCR3XAQY.js → chunk-QT3F6UEV.js} +233 -169
  509. package/dist/node-runtime/{chunk-GS42T6MX.js → chunk-QW3AAHWN.js} +1 -1
  510. package/dist/node-runtime/{chunk-DVQSHCVP.js → chunk-R4WSB2MQ.js} +5 -5
  511. package/dist/node-runtime/{chunk-B4HP6ZWM.js → chunk-RHCGYWO7.js} +1 -1
  512. package/dist/node-runtime/{chunk-2CFDTH5B.js → chunk-RLGY2QIL.js} +45 -59
  513. package/dist/node-runtime/{chunk-CDVHZOOK.js → chunk-RY3FJ6WI.js} +29 -27
  514. package/dist/node-runtime/{chunk-KKUTQQV7.js → chunk-RYRGL7P4.js} +1 -1
  515. package/dist/node-runtime/{chunk-I54LGHWM.js → chunk-STMX7W5I.js} +3 -3
  516. package/dist/node-runtime/chunk-SWWHZ2RI.js +158 -0
  517. package/dist/node-runtime/{chunk-5Q4A37RB.js → chunk-TCT6PCUR.js} +32 -11
  518. package/dist/node-runtime/{chunk-P7XBVXGT.js → chunk-U3YVZ6UC.js} +18 -14
  519. package/dist/node-runtime/{chunk-D5UCKPBQ.js → chunk-UBWW2PID.js} +1 -1
  520. package/dist/node-runtime/{chunk-E75WFZ33.js → chunk-UNUZICC4.js} +3 -3
  521. package/dist/node-runtime/{chunk-RAK2QA2B.js → chunk-UYRKUKFE.js} +4 -4
  522. package/dist/node-runtime/{chunk-LWJXTA6Z.js → chunk-VSUEAI7O.js} +1377 -45
  523. package/dist/node-runtime/{chunk-NAY6UUQZ.js → chunk-WDIVLMOH.js} +1 -1
  524. package/dist/node-runtime/{chunk-E24EO34J.js → chunk-WPXUR3HE.js} +1 -1
  525. package/dist/node-runtime/{chunk-SLVOAQOY.js → chunk-WXYNALHD.js} +113 -1
  526. package/dist/node-runtime/{chunk-KJ6DWS3K.js → chunk-XEOCUEUJ.js} +121 -60
  527. package/dist/node-runtime/chunk-YD3IZAZ7.js +47 -0
  528. package/dist/node-runtime/chunk-YSB6URMT.js +41 -0
  529. package/dist/node-runtime/{chunk-YWOJIGFY.js → chunk-ZEVFBFNF.js} +95 -142
  530. package/dist/node-runtime/{chunk-5B6VKFEV.js → chunk-ZIQUS5QO.js} +1 -1
  531. package/dist/node-runtime/cli-runtime.js +4 -4
  532. package/dist/node-runtime/{command-FSBU2EVZ.js → command-YRT7I2BW.js} +5 -5
  533. package/dist/node-runtime/{commands-NAAL7KNT.js → commands-2ETOWWRA.js} +16 -16
  534. package/dist/node-runtime/{commands-EMBQQVVT.js → commands-D6A6H4TS.js} +11 -18
  535. package/dist/node-runtime/{config-QDD5PUE2.js → config-CU7M7BTK.js} +1 -1
  536. package/dist/node-runtime/{config-D4QUPAHX.js → config-DS7XLMEM.js} +2 -2
  537. package/dist/node-runtime/{direct-tool-executor-4D7UXYU4.js → direct-tool-executor-2QJXVQD2.js} +6 -11
  538. package/dist/node-runtime/{exa-LL64QZR2.js → exa-6VBZNPGE.js} +1 -1
  539. package/dist/node-runtime/{export-html-VM4J2MNR.js → export-html-DBQRRMAY.js} +4 -4
  540. package/dist/node-runtime/{extension-input-E7BJZ35H.js → extension-input-VBBMX7YV.js} +5 -5
  541. package/dist/node-runtime/{extension-selector-WU42XDTU.js → extension-selector-T5AOG5XB.js} +5 -5
  542. package/dist/node-runtime/{extract-EQJE7FZZ.js → extract-BFX2N35A.js} +3 -3
  543. package/dist/node-runtime/{gateway-DQM333YV.js → gateway-V6K2CDWN.js} +51 -42
  544. package/dist/node-runtime/{gemini-search-35OCRFLN.js → gemini-search-C66QHDT6.js} +2 -2
  545. package/dist/node-runtime/{gemini-url-context-UQY3PHHW.js → gemini-url-context-T7DEK73R.js} +3 -3
  546. package/dist/node-runtime/{github-extract-F64RZOEA.js → github-extract-HOGE3D6F.js} +107 -38
  547. package/dist/node-runtime/{goal-NJEE5CTU.js → goal-J7TYMOBK.js} +14 -8
  548. package/dist/node-runtime/index.js +51 -48
  549. package/dist/node-runtime/{init-P5AUV77I.js → init-JBQJIPYI.js} +3 -6
  550. package/dist/node-runtime/{install-cli-NN4YAU44.js → install-cli-INGHIVBY.js} +30 -25
  551. package/dist/node-runtime/interactive-mode-ASZ7APYP.js +75 -0
  552. package/dist/node-runtime/{interactive-view-NGFAMHPW.js → interactive-view-K33PM4OS.js} +8 -8
  553. package/dist/node-runtime/{lsp-manager-3ASUSO4T.js → lsp-manager-S554V5HR.js} +240 -155
  554. package/dist/node-runtime/{lunr-browser-IR7TL3J7.js → lunr-browser-H4FDOR3C.js} +7 -7
  555. package/dist/node-runtime/{lunr-computer-use-Y23CCDIJ.js → lunr-computer-use-VDP2QNRQ.js} +9 -9
  556. package/dist/node-runtime/{lunr-cron-USHC4LXH.js → lunr-cron-WD3YH4CR.js} +93 -80
  557. package/dist/node-runtime/main.js +43 -41
  558. package/dist/node-runtime/{mobile-commands-O5LCHL32.js → mobile-commands-ICUXFW5V.js} +12 -12
  559. package/dist/node-runtime/{model-runtime-OO5HFLWE.js → model-runtime-MZ2JMDV4.js} +4 -4
  560. package/dist/node-runtime/{openai-search-B3MSNCQA.js → openai-search-K72LJDYN.js} +1 -1
  561. package/dist/node-runtime/{package-manager-cli-Q7BL6KZO.js → package-manager-cli-CYM262SI.js} +20 -20
  562. package/dist/node-runtime/{parallel-AI2MNSCU.js → parallel-X724NCNU.js} +1 -1
  563. package/dist/node-runtime/{perplexity-QVJW3I35.js → perplexity-RDHQHVMK.js} +2 -2
  564. package/dist/node-runtime/{pi-intercom-QM53RLTS.js → pi-intercom-NHHEPBMI.js} +2 -2
  565. package/dist/node-runtime/{pi-mcp-adapter-3PHF4KZ4.js → pi-mcp-adapter-PP3GQJQ2.js} +98 -94
  566. package/dist/node-runtime/{pi-ollama-cloud-2F3Y2QNM.js → pi-ollama-cloud-4MNWIMFN.js} +11 -24
  567. package/dist/node-runtime/{pi-prompt-template-model-QWTCGLJU.js → pi-prompt-template-model-FTGELLS5.js} +32 -36
  568. package/dist/node-runtime/{pi-subagents-7IBSSGEW.js → pi-subagents-QPU3OXE4.js} +114 -167
  569. package/dist/node-runtime/{pi-web-access-WTGMNZ32.js → pi-web-access-Z3LP246C.js} +144 -108
  570. package/dist/node-runtime/{print-mode-XQ76CYMT.js → print-mode-2XHN5SUA.js} +3 -3
  571. package/dist/node-runtime/{process-registry-4FAKZQOL.js → process-registry-Q4QWIU33.js} +3 -3
  572. package/dist/node-runtime/{proxy-modes-5FAPSZEZ.js → proxy-modes-VEGC6QG5.js} +8 -15
  573. package/dist/node-runtime/rpc-entry.js +43 -41
  574. package/dist/node-runtime/{rpc-mode-O3XV4SID.js → rpc-mode-32DHJPEJ.js} +4 -4
  575. package/dist/node-runtime/{runtime-4VA6JKNF.js → runtime-EDUUGAQD.js} +56 -46
  576. package/dist/node-runtime/{runtime-EFPPD2UW.js → runtime-UGXM4NPQ.js} +2 -2
  577. package/dist/node-runtime/{runtime-bridges-7WVCLI76.js → runtime-bridges-DNKMNJCF.js} +7 -7
  578. package/dist/node-runtime/{service-MDQIPQ26.js → service-IHLGFLBT.js} +6 -4
  579. package/dist/node-runtime/{session-handoff-GWARVEWT.js → session-handoff-LYH53ESV.js} +4 -4
  580. package/dist/node-runtime/{session-manager-JB5J6XBN.js → session-manager-ZJ3N5Q74.js} +3 -3
  581. package/dist/node-runtime/{session-selector-GIM4DHQ2.js → session-selector-I73U3EIO.js} +7 -7
  582. package/dist/node-runtime/{settings-manager-DJDM5AHM.js → settings-manager-P2TKGYTR.js} +5 -5
  583. package/dist/node-runtime/{setup-JBKOLJ6F.js → setup-H7CCELIL.js} +15 -1
  584. package/dist/node-runtime/{setup-PFBWRNUI.js → setup-OLQ4GXWS.js} +17 -17
  585. package/dist/node-runtime/{src-IVPNZ2BX.js → src-6RV4PXKJ.js} +64 -36
  586. package/dist/node-runtime/{subagent-executor-LPZ4BHWE.js → subagent-executor-UI6SHG3X.js} +412 -288
  587. package/dist/node-runtime/{tavily-WEZFVFP7.js → tavily-KZBFYQB6.js} +1 -1
  588. package/dist/node-runtime/{theme-UOO5RVFN.js → theme-YLVZKKZD.js} +2 -2
  589. package/dist/node-runtime/{trust-manager-MMISNCYO.js → trust-manager-ZCU76D23.js} +2 -2
  590. package/dist/node-runtime/{update-cli-HNMOTNGX.js → update-cli-F3XXJANQ.js} +6 -6
  591. package/dist/node-runtime/{usage-service-LFB2SWYV.js → usage-service-CPAGBED5.js} +1 -1
  592. package/dist/node-runtime/{video-extract-OOZHR7SU.js → video-extract-UPKYIBW3.js} +3 -3
  593. package/dist/node-runtime/{workflow-OHPBEFO4.js → workflow-ICDI4N3J.js} +208 -78
  594. package/dist/node-runtime/{youtube-extract-FNPAUNHU.js → youtube-extract-77NT7FWH.js} +4 -4
  595. package/dist/utils/clipboard-image.d.ts.map +1 -1
  596. package/dist/utils/clipboard-image.js.map +1 -1
  597. package/dist/utils/exif-orientation.d.ts.map +1 -1
  598. package/dist/utils/exif-orientation.js +25 -10
  599. package/dist/utils/exif-orientation.js.map +1 -1
  600. package/dist/utils/image-resize-core.d.ts.map +1 -1
  601. package/dist/utils/image-resize-core.js +2 -0
  602. package/dist/utils/image-resize-core.js.map +1 -1
  603. package/dist/utils/paths.d.ts +4 -0
  604. package/dist/utils/paths.d.ts.map +1 -1
  605. package/dist/utils/paths.js +33 -2
  606. package/dist/utils/paths.js.map +1 -1
  607. package/dist/utils/sanitize-terminal-text.d.ts +7 -0
  608. package/dist/utils/sanitize-terminal-text.d.ts.map +1 -0
  609. package/dist/utils/sanitize-terminal-text.js +67 -0
  610. package/dist/utils/sanitize-terminal-text.js.map +1 -0
  611. package/docs/browser.md +1 -1
  612. package/docs/custom-provider.md +3 -3
  613. package/docs/extensions.md +8 -4
  614. package/docs/features.md +25 -7
  615. package/docs/keybindings.md +1 -1
  616. package/docs/models.md +5 -5
  617. package/docs/packages.md +1 -1
  618. package/docs/providers.md +2 -2
  619. package/docs/rpc.md +7 -7
  620. package/docs/security.md +10 -5
  621. package/docs/sessions.md +2 -2
  622. package/docs/skills.md +1 -1
  623. package/docs/terminal-setup.md +7 -7
  624. package/docs/themes.md +1 -1
  625. package/docs/usage.md +1 -1
  626. package/examples/extensions/auto-commit-on-exit.ts +1 -1
  627. package/examples/extensions/bash-spawn-hook.ts +1 -1
  628. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  629. package/examples/extensions/claude-rules.ts +1 -1
  630. package/examples/extensions/commands.ts +1 -1
  631. package/examples/extensions/custom-compaction.ts +1 -1
  632. package/examples/extensions/custom-provider-anthropic/index.ts +3 -3
  633. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  634. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  635. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  636. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  637. package/examples/extensions/doom-overlay/index.ts +1 -1
  638. package/examples/extensions/git-merge-and-resolve.ts +2 -2
  639. package/examples/extensions/gondolin/index.ts +1 -1
  640. package/examples/extensions/gondolin/package-lock.json +2 -2
  641. package/examples/extensions/gondolin/package.json +1 -1
  642. package/examples/extensions/hidden-thinking-label.ts +1 -1
  643. package/examples/extensions/inline-bash.ts +2 -2
  644. package/examples/extensions/input-transform-streaming.ts +2 -2
  645. package/examples/extensions/input-transform.ts +2 -2
  646. package/examples/extensions/interactive-shell.ts +1 -1
  647. package/examples/extensions/kimi-deferred-tools.ts +1 -1
  648. package/examples/extensions/mac-system-theme.ts +1 -1
  649. package/examples/extensions/minimal-mode.ts +1 -1
  650. package/examples/extensions/modal-editor.ts +1 -1
  651. package/examples/extensions/model-status.ts +1 -1
  652. package/examples/extensions/notify.ts +3 -3
  653. package/examples/extensions/overlay-qa-tests.ts +1 -1
  654. package/examples/extensions/overlay-test.ts +1 -1
  655. package/examples/extensions/pirate.ts +1 -1
  656. package/examples/extensions/preset.ts +3 -3
  657. package/examples/extensions/project-trust.ts +4 -4
  658. package/examples/extensions/prompt-customizer.ts +1 -1
  659. package/examples/extensions/rainbow-editor.ts +1 -1
  660. package/examples/extensions/rpc-demo.ts +1 -1
  661. package/examples/extensions/sandbox/index.ts +7 -7
  662. package/examples/extensions/sandbox/package-lock.json +2 -2
  663. package/examples/extensions/sandbox/package.json +1 -1
  664. package/examples/extensions/shutdown-command.ts +5 -5
  665. package/examples/extensions/ssh.ts +2 -2
  666. package/examples/extensions/subagent/README.md +3 -3
  667. package/examples/extensions/subagent/index.ts +2 -2
  668. package/examples/extensions/titlebar-spinner.ts +1 -1
  669. package/examples/extensions/tool-override.ts +1 -1
  670. package/examples/extensions/tools.ts +1 -1
  671. package/examples/extensions/with-deps/package-lock.json +2 -2
  672. package/examples/extensions/with-deps/package.json +1 -1
  673. package/examples/extensions/working-indicator.ts +1 -1
  674. package/examples/extensions/working-message-test.ts +1 -1
  675. package/examples/sdk/01-minimal.ts +1 -1
  676. package/examples/sdk/03-custom-prompt.ts +1 -1
  677. package/examples/sdk/04-skills.ts +1 -1
  678. package/examples/sdk/06-extensions.ts +2 -2
  679. package/examples/sdk/08-prompt-templates.ts +1 -1
  680. package/install-lock/package-lock.json +24 -24
  681. package/install-lock/package.json +2 -2
  682. package/npm-shrinkwrap.json +60 -24
  683. package/package.json +9 -9
  684. package/dist/modes/interactive/components/exit-card.d.ts +0 -22
  685. package/dist/modes/interactive/components/exit-card.d.ts.map +0 -1
  686. package/dist/modes/interactive/components/exit-card.js +0 -69
  687. package/dist/modes/interactive/components/exit-card.js.map +0 -1
  688. package/dist/node-runtime/agent-session-services-5YXS2PLF.js +0 -51
  689. package/dist/node-runtime/chunk-2IDTZAG5.js +0 -1415
  690. package/dist/node-runtime/chunk-3MISGG4S.js +0 -769
  691. package/dist/node-runtime/chunk-4HXHDDCF.js +0 -16
  692. package/dist/node-runtime/chunk-5B5QN3ZQ.js +0 -356
  693. package/dist/node-runtime/chunk-7IQGBKBJ.js +0 -2033
  694. package/dist/node-runtime/chunk-AUXVGBO4.js +0 -19
  695. package/dist/node-runtime/chunk-PTFBPO3C.js +0 -50
  696. package/dist/node-runtime/interactive-mode-YOHZVMKX.js +0 -74
  697. package/dist/node-runtime/mcp-auth-flow-QVLFVLEO.js +0 -33
@@ -1,3 +1,4 @@
1
+ import { collectUsageRequests, usageTokens } from "../../core/usage-accounting.js";
1
2
  /**
2
3
  * Interactive mode for the coding agent.
3
4
  * Handles TUI rendering and user interaction, delegating business logic to AgentSession.
@@ -8,7 +9,6 @@ import * as os from "node:os";
8
9
  import * as path from "node:path";
9
10
  import { getSupportedThinkingLevels, } from "@ashx-j/lunr-ai/compat";
10
11
  import { CombinedAutocompleteProvider, Container, collectImageMarkerIds, formatImageMarker, fuzzyFilter, isFocusable, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TUI, visibleWidth, } from "@ashx-j/lunr-tui";
11
- import chalk from "chalk";
12
12
  import { spawn, spawnSync } from "child_process";
13
13
  import { APP_NAME, APP_TITLE, appendDebugLog, CONFIG_DIR_NAME, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, getShareViewerUrl, VERSION, } from "../../config.js";
14
14
  import { parseSkillBlock } from "../../core/agent-session.js";
@@ -30,10 +30,9 @@ import { refreshModelCandidatesForInit } from "../../core/model-runtime.js";
30
30
  import { getModelTiersBridge } from "../../core/model-tiers.js";
31
31
  import { registerPermissionModeBridge } from "../../core/permission-mode.js";
32
32
  import { nextModeForGoal, registerPermissionModeControlBridge } from "../../core/permission-mode-control.js";
33
- import { AUTO_MODE_ADDENDUM, getPermissionMode, nextPermissionMode, registerApprovalHandler, resetPermissions, restorePermissionModeAfterPlan, setPermissionMode, } from "../../core/permissions.js";
34
- import { READ_ONLY_MODE_ADDENDUM } from "../../core/plan-mode.js";
33
+ import { nextPermissionMode, registerApprovalHandler, restorePermissionModeAfterPlan, } from "../../core/permissions.js";
35
34
  import * as processRegistry from "../../core/process-registry.js";
36
- import { captureTreeChanges, clearRollback, disableRollbackForSession, enableRollbackForSession, initRollback, isRollbackEnabled, isRollbackSessionForceEnabled, migrateRollbackSession, peekRollbackTurnsConsumed, beginTurn as rollbackBeginTurn, rollbackLastTurn, setRollbackWarningHandler, } from "../../core/rollback.js";
35
+ import { captureTreeChanges, clearRollback, commitRollbackTurn, disableRollbackForSession, enableRollbackForSession, getRollbackRecoveryBlockReason, getRollbackTargetUserId, initRollback, isRollbackEnabled, isRollbackSessionForceEnabled, migrateRollbackSession, peekRollbackTurnsConsumed, beginTurn as rollbackBeginTurn, rollbackLastTurn, setRollbackWarningHandler, } from "../../core/rollback.js";
37
36
  import { getSearchCuratorSetting, setSearchCuratorSetting } from "../../core/search-curator.js";
38
37
  import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
39
38
  import { cancelSessionHandoff, markSessionHandoff, recordTuiActivity, registerTransferHandler, requestSessionTransfer, } from "../../core/session-handoff.js";
@@ -66,7 +65,6 @@ import { CustomEntryComponent } from "./components/custom-entry.js";
66
65
  import { CustomMessageComponent } from "./components/custom-message.js";
67
66
  import { DaxnutsComponent } from "./components/daxnuts.js";
68
67
  import { DynamicBorder } from "./components/dynamic-border.js";
69
- import { buildExitCard, computeExitCardStats } from "./components/exit-card.js";
70
68
  import { ExtensionEditorComponent } from "./components/extension-editor.js";
71
69
  import { ExtensionInputComponent } from "./components/extension-input.js";
72
70
  import { ExtensionSelectorComponent } from "./components/extension-selector.js";
@@ -143,27 +141,6 @@ function isAnthropicSubscriptionAuthKey(apiKey) {
143
141
  function isUnknownModel(model) {
144
142
  return !!model && model.provider === "unknown" && model.id === "unknown" && model.api === "unknown";
145
143
  }
146
- function quoteIfNeeded(value) {
147
- if (value.length > 0 && !/[^a-zA-Z0-9_\-./~:@]/.test(value)) {
148
- return value;
149
- }
150
- return `'${value.replace(/'/g, `'\\''`)}'`;
151
- }
152
- export function formatResumeCommand(sessionManager) {
153
- if (!process.stdout.isTTY)
154
- return undefined;
155
- if (!sessionManager.isPersisted())
156
- return undefined;
157
- const sessionFile = sessionManager.getSessionFile();
158
- if (!sessionFile || !fs.existsSync(sessionFile))
159
- return undefined;
160
- const args = [APP_NAME];
161
- if (!sessionManager.usesDefaultSessionDir()) {
162
- args.push("--session-dir", quoteIfNeeded(sessionManager.getSessionDir()));
163
- }
164
- args.push("--session", sessionManager.getSessionId());
165
- return args.join(" ");
166
- }
167
144
  function hasDefaultModelProvider(providerId) {
168
145
  return providerId in defaultModelPerProvider;
169
146
  }
@@ -345,11 +322,11 @@ export class InteractiveMode {
345
322
  this.options = options;
346
323
  this.autoTrustOnReloadCwd = options.autoTrustOnReloadCwd;
347
324
  this.runtimeHost.setBeforeSessionInvalidate((reason) => {
325
+ this.stopPlanUsagePolling();
348
326
  this.resetExtensionUI();
349
- // lunr: reset permission mode to configured default + clear session approvals
327
+ // Reset UI mode history before binding the replacement session.
350
328
  this.previousPermissionMode = undefined;
351
329
  this.preGoalPermissionMode = undefined;
352
- resetPermissions(this.settingsManager.getDefaultPermissionMode());
353
330
  // lunr: clear process registry and rollback state
354
331
  processRegistry.clearRegistry();
355
332
  // lunr: on fork (/rollback, tree navigation) the snapshots SURVIVE —
@@ -361,22 +338,21 @@ export class InteractiveMode {
361
338
  });
362
339
  this.runtimeHost.setRebindSession(async () => {
363
340
  await this.rebindCurrentSession({ renderBeforeBind: true });
341
+ this.startPlanUsagePolling();
364
342
  // lunr: re-init rollback for the new session id + re-apply auto force-enable.
365
343
  initRollback(this.settingsManager, this.sessionManager.getSessionId());
366
- const mode = this.sessionManager.getPermissionMode() ?? this.settingsManager.getDefaultPermissionMode();
367
- resetPermissions(mode);
344
+ const mode = this.session.permissionMode;
368
345
  this.syncPermissionModeEffects(mode);
369
346
  });
370
347
  this.version = VERSION;
371
348
  this.ui = options.startupView?.ui ?? new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());
372
349
  this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
373
350
  // lunr: register the permission-mode footer bridge (provider-side: InteractiveMode owns the state).
374
- registerPermissionModeBridge(() => getPermissionMode());
351
+ registerPermissionModeBridge(() => this.session.permissionMode);
375
352
  registerPermissionModeControlBridge({
376
353
  enterGoalAuto: () => this.enterGoalAuto(),
377
354
  leaveGoalAuto: () => this.leaveGoalAuto(),
378
355
  });
379
- resetPermissions(this.sessionManager.getPermissionMode() ?? this.settingsManager.getDefaultPermissionMode());
380
356
  this.headerContainer = new Container();
381
357
  if (options.startupView) {
382
358
  this.headerContainer.addChild(new Spacer(1));
@@ -630,7 +606,7 @@ export class InteractiveMode {
630
606
  // lunr: initialize rollback service for this session.
631
607
  initRollback(this.settingsManager, this.sessionManager.getSessionId());
632
608
  setRollbackWarningHandler((msg) => this.showStatus(msg));
633
- this.syncPermissionModeEffects(this.sessionManager.getPermissionMode() ?? this.settingsManager.getDefaultPermissionMode());
609
+ this.syncPermissionModeEffects(this.session.permissionMode);
634
610
  await this.themeController.applyFromSettings();
635
611
  this.headerContainer.clear();
636
612
  // Add boot screen header (unless silenced)
@@ -716,10 +692,13 @@ export class InteractiveMode {
716
692
  }
717
693
  }
718
694
  planUsageTimer;
695
+ planUsageBridge;
719
696
  startPlanUsagePolling() {
720
- const bridge = getUsageServiceBridge();
697
+ this.stopPlanUsagePolling();
698
+ const bridge = getUsageServiceBridge(this.session.modelRuntime);
721
699
  if (!bridge)
722
700
  return;
701
+ this.planUsageBridge = bridge;
723
702
  bridge.setOnUpdate(() => this.ui.requestRender());
724
703
  const tick = () => {
725
704
  const provider = this.session.model?.provider;
@@ -730,6 +709,14 @@ export class InteractiveMode {
730
709
  this.planUsageTimer = setInterval(tick, 60_000);
731
710
  this.planUsageTimer.unref?.();
732
711
  }
712
+ stopPlanUsagePolling() {
713
+ if (this.planUsageTimer) {
714
+ clearInterval(this.planUsageTimer);
715
+ this.planUsageTimer = undefined;
716
+ }
717
+ this.planUsageBridge?.setOnUpdate(undefined);
718
+ this.planUsageBridge = undefined;
719
+ }
733
720
  /** Background npm version check. Never blocks first paint. Workspace installs skip. */
734
721
  async maybeNotifyCliUpdate() {
735
722
  try {
@@ -858,7 +845,7 @@ export class InteractiveMode {
858
845
  return "tmux extended-keys is off. Modified Enter keys may not work. Add `set -g extended-keys on` to ~/.tmux.conf and restart tmux.";
859
846
  }
860
847
  if (extendedKeysFormat === "xterm") {
861
- return "tmux extended-keys-format is xterm. Pi works best with csi-u. Add `set -g extended-keys-format csi-u` to ~/.tmux.conf and restart tmux.";
848
+ return "tmux extended-keys-format is xterm. lunR works best with csi-u. Add `set -g extended-keys-format csi-u` to ~/.tmux.conf and restart tmux.";
862
849
  }
863
850
  return undefined;
864
851
  }
@@ -3051,9 +3038,7 @@ export class InteractiveMode {
3051
3038
  }
3052
3039
  case "agent_end":
3053
3040
  this.session.refreshModelFromRegistry();
3054
- if (this.settingsManager.getShowTerminalProgress()) {
3055
- this.ui.terminal.setProgress(false);
3056
- }
3041
+ this.ui.terminal.setProgress(false);
3057
3042
  this.clearStatusIndicator("working");
3058
3043
  this.stopSmoothStreaming();
3059
3044
  if (this.streamingComponent) {
@@ -3090,9 +3075,7 @@ export class InteractiveMode {
3090
3075
  break;
3091
3076
  }
3092
3077
  case "compaction_end": {
3093
- if (this.settingsManager.getShowTerminalProgress()) {
3094
- this.ui.terminal.setProgress(false);
3095
- }
3078
+ this.ui.terminal.setProgress(false);
3096
3079
  if (this.autoCompactionEscapeHandler) {
3097
3080
  this.defaultEditor.onEscape = this.autoCompactionEscapeHandler;
3098
3081
  this.autoCompactionEscapeHandler = undefined;
@@ -3403,7 +3386,7 @@ export class InteractiveMode {
3403
3386
  }
3404
3387
  /**
3405
3388
  * Show a transcript notice when a completed assistant message paid for a
3406
- * significant cache miss. Only states observable facts: the miss itself,
3389
+ * significant cache miss. The overlap estimate cannot establish identical prompt content. It also shows
3407
3390
  * a model switch, or an idle gap past the cache TTL.
3408
3391
  */
3409
3392
  maybeShowCacheMissNotice(message) {
@@ -3418,10 +3401,10 @@ export class InteractiveMode {
3418
3401
  if (miss.missedTokens < 20_000 && miss.missedCost < 0.1)
3419
3402
  return;
3420
3403
  const cost = miss.missedCost >= 0.01 ? ` (~$${miss.missedCost.toFixed(2)})` : "";
3421
- const reBilled = `${formatTokens(miss.missedTokens)} tokens re-billed${cost}`;
3422
- let label = "Cache miss";
3404
+ const reBilled = `~${formatTokens(miss.missedTokens)} tokens may have missed cache${cost}`;
3405
+ let label = "Estimated cache miss";
3423
3406
  if (miss.modelChanged) {
3424
- label = "Cache miss after model switch";
3407
+ label = "Estimated cache miss after model switch";
3425
3408
  }
3426
3409
  else if (miss.idleMs >= CACHE_TTL_MS) {
3427
3410
  label = `Cache miss after ${Math.round(miss.idleMs / 60_000)}m idle`;
@@ -3497,13 +3480,10 @@ export class InteractiveMode {
3497
3480
  if (this.isShuttingDown)
3498
3481
  return;
3499
3482
  this.isShuttingDown = true;
3483
+ this.session.stopAdmission();
3500
3484
  this.unregisterSessionTransfer?.();
3501
3485
  this.stopSmoothStreaming();
3502
- if (this.planUsageTimer) {
3503
- clearInterval(this.planUsageTimer);
3504
- this.planUsageTimer = undefined;
3505
- }
3506
- getUsageServiceBridge()?.setOnUpdate(undefined);
3486
+ this.stopPlanUsagePolling();
3507
3487
  // Keep signal handlers registered until terminal cleanup has completed.
3508
3488
  // `signal-exit` checks the listener list during the same SIGTERM/SIGHUP
3509
3489
  // dispatch and re-sends the signal if only its own listeners remain.
@@ -3542,21 +3522,6 @@ export class InteractiveMode {
3542
3522
  }
3543
3523
  this.stop();
3544
3524
  await this.runtimeHost.dispose();
3545
- // lunr: exit summary card — print a closing card for non-empty sessions,
3546
- // before the resume line. Fires on all interactive exits reaching shutdown
3547
- // (/quit, double ctrl+c, ctrl+d). Skipped for empty sessions (0 user msgs).
3548
- const entries = this.sessionManager?.getEntries?.();
3549
- const exitStats = entries ? computeExitCardStats(entries) : { turns: 0, tokens: 0, filesChanged: 0 };
3550
- const cardLines = buildExitCard(exitStats);
3551
- if (cardLines.length > 0) {
3552
- process.stdout.write(`${chalk.dim(cardLines.join("\n"))}\n`);
3553
- }
3554
- const resumeCommand = this.sessionManager && typeof this.sessionManager.isPersisted === "function"
3555
- ? formatResumeCommand(this.sessionManager)
3556
- : undefined;
3557
- if (resumeCommand) {
3558
- process.stdout.write(`${chalk.dim("To resume this session:")} ${resumeCommand}\n`);
3559
- }
3560
3525
  process.exit(0);
3561
3526
  }
3562
3527
  emergencyTerminalExit() {
@@ -3756,7 +3721,7 @@ export class InteractiveMode {
3756
3721
  }
3757
3722
  }
3758
3723
  cyclePermissionMode() {
3759
- this.applyPermissionMode(nextPermissionMode(getPermissionMode()), { silent: true });
3724
+ this.applyPermissionMode(nextPermissionMode(this.session.permissionMode), { silent: true });
3760
3725
  }
3761
3726
  async cycleModel(direction) {
3762
3727
  if (this.runtimeHost.isDetached || this.transferInProgress)
@@ -3876,7 +3841,7 @@ export class InteractiveMode {
3876
3841
  this.ui.stop();
3877
3842
  // Split by space to support editor arguments (e.g., "code --wait")
3878
3843
  const [editor, ...editorArgs] = editorCmd.split(" ");
3879
- process.stdout.write(`Launching external editor: ${editorCmd}\nPi will resume when the editor exits.\n`);
3844
+ process.stdout.write(`Launching external editor: ${editorCmd}\nlunR will resume when the editor exits.\n`);
3880
3845
  // Do not use spawnSync here. On Windows, synchronous child_process calls can keep
3881
3846
  // Node/libuv's console input read active after ui.stop() pauses stdin, racing
3882
3847
  // vim/nvim for the console input buffer until Ctrl+C cancels the pending read.
@@ -4351,6 +4316,8 @@ export class InteractiveMode {
4351
4316
  },
4352
4317
  onShowTerminalProgressChange: (enabled) => {
4353
4318
  this.settingsManager.setShowTerminalProgress(enabled);
4319
+ if (!enabled)
4320
+ this.ui.terminal.setProgress(false);
4354
4321
  },
4355
4322
  onModelTiersEnabledChange: (enabled) => {
4356
4323
  this.settingsManager.setModelTiersEnabled(enabled);
@@ -4573,7 +4540,16 @@ export class InteractiveMode {
4573
4540
  const cloudRefresh = globalThis[Symbol.for("@lunr/ollama-cloud-refresh")];
4574
4541
  if (cloudRefresh && allowNetwork) {
4575
4542
  try {
4576
- await cloudRefresh({ ui: runner.createCommandContext().ui });
4543
+ const resolution = await runtime.getAuth("ollama-cloud");
4544
+ await cloudRefresh({
4545
+ ui: runner.createCommandContext().ui,
4546
+ auth: resolution
4547
+ ? {
4548
+ apiKey: resolution.auth.apiKey,
4549
+ headers: Object.fromEntries(Object.entries(resolution.auth.headers ?? {}).filter((entry) => entry[1] !== null)),
4550
+ }
4551
+ : undefined,
4552
+ });
4577
4553
  }
4578
4554
  catch (error) {
4579
4555
  ollama = `ollama-cloud refresh failed: ${error instanceof Error ? error.message : String(error)}`;
@@ -6304,9 +6280,24 @@ export class InteractiveMode {
6304
6280
  const prompt = "Generate a title of at most 6 words summarizing this request. " +
6305
6281
  "Reply with the title only — no quotes, no trailing punctuation, no prefix.\n\n" +
6306
6282
  `Request:\n${firstUserText.slice(0, 2000)}`;
6283
+ const requestSessionId = this.sessionManager.getSessionId();
6284
+ const requestSessionFile = this.sessionManager.getSessionFile();
6307
6285
  const response = await this.session.modelRuntime.complete(model, {
6308
6286
  messages: [{ role: "user", content: [{ type: "text", text: prompt }], timestamp: Date.now() }],
6309
6287
  });
6288
+ if (this.sessionManager.getSessionId() !== requestSessionId) {
6289
+ if (requestSessionFile) {
6290
+ const target = SessionManager.open(requestSessionFile);
6291
+ try {
6292
+ target.appendRequestUsage("title", response);
6293
+ }
6294
+ finally {
6295
+ target.dispose();
6296
+ }
6297
+ }
6298
+ return;
6299
+ }
6300
+ this.sessionManager.appendRequestUsage("title", response);
6310
6301
  let title = response.content
6311
6302
  .filter((c) => c.type === "text")
6312
6303
  .map((c) => c.text)
@@ -6332,19 +6323,12 @@ export class InteractiveMode {
6332
6323
  // Cost/token totals per provider/model actually used (e.g. OpenRouter `auto`
6333
6324
  // resolves to a concrete responseModel), sorted by cost descending.
6334
6325
  const perModelMap = new Map();
6335
- for (const entry of entries) {
6336
- if (entry.type !== "message" || entry.message.role !== "assistant")
6337
- continue;
6338
- const message = entry.message;
6339
- const usage = message.usage;
6340
- const key = `${message.provider}/${message.responseModel ?? message.model}`;
6341
- let bucket = perModelMap.get(key);
6342
- if (!bucket) {
6343
- bucket = { key, cost: 0, tokens: 0 };
6344
- perModelMap.set(key, bucket);
6345
- }
6346
- bucket.cost += usage.cost.total;
6347
- bucket.tokens += usage.input + usage.output + usage.cacheRead + usage.cacheWrite;
6326
+ for (const request of collectUsageRequests(entries)) {
6327
+ const key = `${request.provider}/${request.model}`;
6328
+ const bucket = perModelMap.get(key) ?? { key, cost: 0, tokens: 0 };
6329
+ bucket.cost += request.usage.cost.total;
6330
+ bucket.tokens += usageTokens(request.usage);
6331
+ perModelMap.set(key, bucket);
6348
6332
  }
6349
6333
  const perModel = Array.from(perModelMap.values()).sort((a, b) => b.cost - a.cost);
6350
6334
  let info = `${theme.bold("Session Info")}\n\n`;
@@ -6358,7 +6342,7 @@ export class InteractiveMode {
6358
6342
  info += `${theme.fg("dim", "User:")} ${stats.userMessages}\n`;
6359
6343
  info += `${theme.fg("dim", "Assistant:")} ${stats.assistantMessages}\n`;
6360
6344
  info += `${theme.fg("dim", "Tools:")} ${stats.toolCalls} calls, ${stats.toolResults} results\n\n`;
6361
- info += `${theme.bold("Tokens")}\n`;
6345
+ info += `${theme.bold("Parent tokens including auxiliary requests")}\n`;
6362
6346
  // "Input" is the full prompt volume. With cache activity, split it into
6363
6347
  // cached (served from cache) vs uncached (everything else) - the only
6364
6348
  // provider-independent split. Cache writes, where reported, are a detail
@@ -6374,6 +6358,17 @@ export class InteractiveMode {
6374
6358
  }
6375
6359
  info += `${theme.fg("dim", "Output:")} ${stats.tokens.output.toLocaleString()}\n`;
6376
6360
  info += `${theme.fg("dim", "Total:")} ${stats.tokens.total.toLocaleString()}\n`;
6361
+ if (stats.childUsage?.total) {
6362
+ info += `Children: ${stats.childUsage.total.toLocaleString()} tokens, $${stats.childUsage.cost.toFixed(3)}\n`;
6363
+ info += `Combined: ${stats.combinedUsage?.total.toLocaleString()} tokens, $${stats.combinedUsage?.cost.toFixed(3)}\n`;
6364
+ }
6365
+ if (stats.parentUsage?.unknownRequests)
6366
+ info += `Usage unavailable for ${stats.parentUsage.unknownRequests} request(s).\n`;
6367
+ if (stats.parentUsage?.partialRequests)
6368
+ info += `Usage incomplete for ${stats.parentUsage.partialRequests} request(s).\n`;
6369
+ if (stats.parentUsage?.unknownCosts)
6370
+ info += `Pricing unavailable for ${stats.parentUsage.unknownCosts} request(s).\n`;
6371
+ info += "Costs use catalog estimates unless the provider reports its account charge.\n";
6377
6372
  if (stats.cost > 0 || cacheWaste.missedTokens > 0) {
6378
6373
  info += `\n${theme.bold("Cost")}\n`;
6379
6374
  info += `${theme.fg("dim", "Total:")} $${stats.cost.toFixed(3)}`;
@@ -6387,8 +6382,8 @@ export class InteractiveMode {
6387
6382
  const detail = `${cacheWaste.missedTokens.toLocaleString()} tokens, ${missLabel}`;
6388
6383
  info +=
6389
6384
  cacheWaste.missedCost >= 0.0001
6390
- ? `\n${theme.fg("dim", "Cache Re-billed:")} $${cacheWaste.missedCost.toFixed(3)} ${theme.fg("dim", `(${detail})`)}`
6391
- : `\n${theme.fg("dim", "Cache Re-billed:")} ${detail}`;
6385
+ ? `\n${theme.fg("dim", "Estimated cache misses:")} $${cacheWaste.missedCost.toFixed(3)} ${theme.fg("dim", `(${detail})`)}`
6386
+ : `\n${theme.fg("dim", "Estimated cache misses:")} ${detail}`;
6392
6387
  }
6393
6388
  }
6394
6389
  this.chatContainer.addChild(new Spacer(1));
@@ -6436,20 +6431,33 @@ export class InteractiveMode {
6436
6431
  // context-window bar, and subscription plan usage.
6437
6432
  async handleUsageCommand() {
6438
6433
  const stats = this.session.getSessionStats();
6439
- const sessionTotals = stats.tokens.total > 0
6434
+ const sessionTotals = stats.tokens.total > 0 ||
6435
+ stats.parentUsage?.requests ||
6436
+ stats.parentUsage?.unknownRequests ||
6437
+ stats.parentUsage?.partialRequests
6440
6438
  ? {
6441
6439
  input: stats.tokens.input,
6442
6440
  output: stats.tokens.output,
6443
6441
  cacheRead: stats.tokens.cacheRead,
6444
6442
  cacheWrite: stats.tokens.cacheWrite,
6445
6443
  total: stats.tokens.total,
6444
+ requests: stats.parentUsage?.requests,
6445
+ unknownRequests: stats.parentUsage?.unknownRequests,
6446
+ partialRequests: stats.parentUsage?.partialRequests,
6446
6447
  }
6447
6448
  : undefined;
6448
6449
  const context = this.session.getContextUsage();
6449
6450
  const provider = this.session.model?.provider;
6450
6451
  const planResult = await getAllPlanUsageResults(provider, this.session.modelRuntime);
6451
6452
  const breakdown = this.collectUsageBreakdown();
6452
- const lines = renderUsageBox({ sessionTotals, context, plan: planResult.usages, breakdown }, this.ui.terminal.columns);
6453
+ const lines = renderUsageBox({
6454
+ sessionTotals,
6455
+ childTotals: stats.childUsage,
6456
+ combinedTotals: stats.combinedUsage,
6457
+ context,
6458
+ plan: planResult.usages,
6459
+ breakdown,
6460
+ }, this.ui.terminal.columns);
6453
6461
  this.chatContainer.addChild(new Spacer(1));
6454
6462
  this.chatContainer.addChild(new Text(lines.join("\n"), 1, 0));
6455
6463
  if (planResult.errors.length > 0)
@@ -6480,9 +6488,11 @@ export class InteractiveMode {
6480
6488
  // /plan is a shortcut into read-only mode for planning.
6481
6489
  async handlePlanCommand(args) {
6482
6490
  const sub = args.toLowerCase();
6483
- const inReadOnly = getPermissionMode() === "read-only";
6491
+ const inReadOnly = this.session.permissionMode === "read-only";
6484
6492
  if (sub === "status") {
6485
- this.showStatus(inReadOnly ? "Read mode is active. /plan off to leave it." : `Permission mode: ${getPermissionMode()}.`);
6493
+ this.showStatus(inReadOnly
6494
+ ? "Read mode is active. /plan off to leave it."
6495
+ : `Permission mode: ${this.session.permissionMode}.`);
6486
6496
  return;
6487
6497
  }
6488
6498
  if (sub !== "" && sub !== "on" && sub !== "off") {
@@ -6501,7 +6511,7 @@ export class InteractiveMode {
6501
6511
  handleModeCommand(args) {
6502
6512
  const sub = args.toLowerCase();
6503
6513
  if (sub === "status") {
6504
- this.showStatus(`Permission mode: ${getPermissionMode() === "read-only" ? "read" : getPermissionMode()}`);
6514
+ this.showStatus(`Permission mode: ${this.session.permissionMode === "read-only" ? "read" : this.session.permissionMode}`);
6505
6515
  return;
6506
6516
  }
6507
6517
  if (sub === "yolo" || sub === "auto" || sub === "read-only" || sub === "read") {
@@ -6536,53 +6546,35 @@ export class InteractiveMode {
6536
6546
  syncPermissionModeEffects(mode) {
6537
6547
  if (this.runtimeHost.isDetached || this.transferInProgress)
6538
6548
  return;
6539
- this.sessionManager.setPermissionMode(mode);
6540
- if (mode === "read-only") {
6541
- this.session.setSystemPromptAppend(READ_ONLY_MODE_ADDENDUM);
6542
- }
6543
- else if (mode === "auto") {
6544
- this.session.setSystemPromptAppend(AUTO_MODE_ADDENDUM);
6549
+ this.session.setPermissionMode(mode);
6550
+ if (mode === "auto")
6545
6551
  enableRollbackForSession(this.sessionManager.getSessionId());
6546
- }
6547
- else {
6548
- this.session.setSystemPromptAppend(undefined);
6549
- }
6550
6552
  }
6551
6553
  // lunr: `/goal` forces session auto without writing settings.
6552
6554
  enterGoalAuto() {
6553
- const next = nextModeForGoal(getPermissionMode(), "enter", this.preGoalPermissionMode);
6555
+ const next = nextModeForGoal(this.session.permissionMode, "enter", this.preGoalPermissionMode);
6554
6556
  this.preGoalPermissionMode = next.saved;
6555
- if (next.mode !== getPermissionMode()) {
6557
+ if (next.mode !== this.session.permissionMode) {
6556
6558
  this.applyPermissionMode(next.mode, { silent: true });
6557
6559
  }
6558
6560
  }
6559
6561
  leaveGoalAuto() {
6560
- const next = nextModeForGoal(getPermissionMode(), "leave", this.preGoalPermissionMode);
6562
+ const next = nextModeForGoal(this.session.permissionMode, "leave", this.preGoalPermissionMode);
6561
6563
  this.preGoalPermissionMode = next.saved;
6562
- if (next.mode !== getPermissionMode()) {
6564
+ if (next.mode !== this.session.permissionMode) {
6563
6565
  this.applyPermissionMode(next.mode, { silent: true });
6564
6566
  }
6565
6567
  }
6566
6568
  applyPermissionMode(mode, opts) {
6567
6569
  if (this.runtimeHost.isDetached || this.transferInProgress)
6568
6570
  return;
6569
- this.sessionManager.setPermissionMode(mode);
6570
6571
  recordTuiActivity(this.sessionManager, this.runtimeHost.services.agentDir);
6571
- const prev = getPermissionMode();
6572
+ const prev = this.session.permissionMode;
6572
6573
  if (mode === "read-only" && prev !== "read-only") {
6573
6574
  this.previousPermissionMode = prev;
6574
6575
  }
6575
- setPermissionMode(mode);
6576
+ this.session.setPermissionMode(mode);
6576
6577
  this.ui.requestRender();
6577
- if (mode === "read-only") {
6578
- this.session.setSystemPromptAppend(READ_ONLY_MODE_ADDENDUM);
6579
- }
6580
- else if (mode === "auto") {
6581
- this.session.setSystemPromptAppend(AUTO_MODE_ADDENDUM);
6582
- }
6583
- else {
6584
- this.session.setSystemPromptAppend(undefined);
6585
- }
6586
6578
  if (mode === "auto" && prev !== "auto") {
6587
6579
  enableRollbackForSession(this.sessionManager.getSessionId());
6588
6580
  }
@@ -6682,10 +6674,15 @@ export class InteractiveMode {
6682
6674
  this.showWarning("Wait for the current response to finish before running /rollback.");
6683
6675
  return;
6684
6676
  }
6685
- if (!isRollbackEnabled()) {
6677
+ if (!isRollbackEnabled(this.sessionManager.getSessionId())) {
6686
6678
  this.showStatus("Rollback is disabled — enable it in /settings → Rollback");
6687
6679
  return;
6688
6680
  }
6681
+ const recoveryBlocked = getRollbackRecoveryBlockReason(this.sessionManager.getSessionId());
6682
+ if (recoveryBlocked) {
6683
+ this.showWarning(recoveryBlocked);
6684
+ return;
6685
+ }
6689
6686
  // lunr: how many turns the rollback will consume — the newest non-empty turn
6690
6687
  // plus any empty (chat-only) turns on top of it. The conversation must rewind
6691
6688
  // past the same number of user messages or files and messages desync.
@@ -6695,43 +6692,68 @@ export class InteractiveMode {
6695
6692
  // the current branch) BEFORE mutating anything — forking to it is what makes
6696
6693
  // the rewind persistent.
6697
6694
  const branch = this.sessionManager.getBranch();
6698
- let targetUserId;
6695
+ let targetUserId = getRollbackTargetUserId(this.sessionManager.getSessionId());
6696
+ if (targetUserId && !branch.some((entry) => entry.id === targetUserId)) {
6697
+ this.showWarning("Rollback recovery belongs to another chat branch. Return to that branch to retry.");
6698
+ return;
6699
+ }
6699
6700
  let userMessagesSeen = 0;
6700
- for (let i = branch.length - 1; i >= 0; i--) {
6701
+ let fallbackUserId;
6702
+ for (let i = branch.length - 1; !targetUserId && i >= 0; i--) {
6701
6703
  const entry = branch[i];
6702
6704
  if (entry.type === "message" && entry.message.role === "user") {
6703
6705
  userMessagesSeen++;
6704
- targetUserId = entry.id;
6706
+ fallbackUserId = entry.id;
6705
6707
  if (userMessagesSeen >= turnsToConsume)
6706
6708
  break;
6707
6709
  }
6708
6710
  }
6711
+ targetUserId ??= fallbackUserId;
6709
6712
  if (!targetUserId) {
6710
6713
  this.showStatus("Nothing to roll back");
6711
6714
  return;
6712
6715
  }
6713
6716
  let result;
6714
6717
  try {
6715
- // lunr: fork FIRST. If the fork throws or is cancelled by an extension veto,
6716
- // no snapshot has been popped yet, so files and conversation stay consistent
6717
- // and /rollback can simply be retried. Fork teardown skips the rollback wipe
6718
- // (reason === "fork"); the snapshots are then migrated to the forked session id.
6718
+ result = rollbackLastTurn(this.sessionManager.getSessionId(), { deferCommit: true, targetUserId });
6719
+ }
6720
+ catch (error) {
6721
+ this.showError(`Rollback could not prepare recovery: ${error instanceof Error ? error.message : String(error)}`);
6722
+ return;
6723
+ }
6724
+ if (!result.complete) {
6725
+ const failures = result.failed
6726
+ .slice(0, 3)
6727
+ .map(({ path: file, error }) => `${path.basename(file)}: ${error}`)
6728
+ .join("; ");
6729
+ this.showWarning(`Rollback incomplete. ${result.restored.length} file(s) restored, ${result.deleted.length} deleted, ${result.failed.length} failed. ${failures}. Chat unchanged. /rollback retries this turn's unfinished recovery.`);
6730
+ return;
6731
+ }
6732
+ let chatRewound = false;
6733
+ try {
6734
+ // Restore first, but keep snapshots and completed-path receipts until
6735
+ // the fork succeeds. A veto or exception retries only this chat rewind.
6719
6736
  const oldSid = this.sessionManager.getSessionId();
6720
6737
  const forkResult = await this.runtimeHost.fork(targetUserId, { position: "before" });
6721
6738
  if (forkResult.cancelled) {
6722
- this.showStatus("Rollback cancelled");
6739
+ this.showWarning("File recovery complete. Chat rewind cancelled. /rollback retries the same turn without restoring completed files again.");
6723
6740
  return;
6724
6741
  }
6742
+ chatRewound = true;
6725
6743
  migrateRollbackSession(oldSid, this.sessionManager.getSessionId());
6726
- result = rollbackLastTurn(this.sessionManager.getSessionId());
6727
- // /redo cannot redo across a fork — the branched session has new entry ids.
6744
+ if (result.turnIndex !== undefined)
6745
+ commitRollbackTurn(this.sessionManager.getSessionId(), result.turnIndex);
6746
+ // /redo cannot cross a fork because the branched session has new entry ids.
6728
6747
  this.redoStack.length = 0;
6729
6748
  if (forkResult.selectedText && !this.editor.getText().trim()) {
6730
6749
  this.editor.setText(forkResult.selectedText);
6731
6750
  }
6732
6751
  }
6733
6752
  catch (error) {
6734
- this.showError(error instanceof Error ? error.message : String(error));
6753
+ const message = error instanceof Error ? error.message : String(error);
6754
+ this.showError(chatRewound
6755
+ ? `Chat rewound, but finishing rollback failed: ${message}`
6756
+ : `File recovery complete; chat rewind failed: ${message}. /rollback retries the same turn.`);
6735
6757
  return;
6736
6758
  }
6737
6759
  const names = (paths) => {
@@ -6747,7 +6769,7 @@ export class InteractiveMode {
6747
6769
  if (result.deleted.length > 0)
6748
6770
  parts.push(`${result.deleted.length} file(s) deleted (${names(result.deleted)})`);
6749
6771
  if (parts.length === 0)
6750
- parts.push("no file changes to restore");
6772
+ parts.push(result.turnIndex === undefined ? "no file changes to restore" : "file recovery complete");
6751
6773
  this.showStatus(`Rollback complete — ${parts.join("; ")}.`);
6752
6774
  }
6753
6775
  /**
@@ -7023,9 +7045,7 @@ ${toggleThinking ? `| \`${toggleThinking}\` | Toggle thinking block visibility |
7023
7045
  this.setThinkingAnimation(false);
7024
7046
  this.stopCatalogRefresh?.();
7025
7047
  this.stopCatalogRefresh = undefined;
7026
- if (this.settingsManager.getShowTerminalProgress()) {
7027
- this.ui.terminal.setProgress(false);
7028
- }
7048
+ this.ui.terminal.setProgress(false);
7029
7049
  this.clearStatusIndicator();
7030
7050
  this.themeController.disableAutoSync();
7031
7051
  this.clearExtensionTerminalInputListeners();