@oh-my-pi/pi-coding-agent 16.3.6 → 16.3.8

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 (771) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/dist/cli.js +3329 -3314
  3. package/dist/types/advisor/index.d.ts +6 -6
  4. package/dist/types/advisor/runtime.d.ts +1 -1
  5. package/dist/types/advisor/watchdog.d.ts +1 -1
  6. package/dist/types/async/index.d.ts +1 -1
  7. package/dist/types/auto-thinking/classifier.d.ts +2 -2
  8. package/dist/types/autolearn/controller.d.ts +2 -2
  9. package/dist/types/autoresearch/dashboard.d.ts +2 -2
  10. package/dist/types/autoresearch/git.d.ts +1 -1
  11. package/dist/types/autoresearch/helpers.d.ts +1 -1
  12. package/dist/types/autoresearch/index.d.ts +1 -1
  13. package/dist/types/autoresearch/state.d.ts +3 -3
  14. package/dist/types/autoresearch/storage.d.ts +1 -1
  15. package/dist/types/autoresearch/tools/init-experiment.d.ts +2 -2
  16. package/dist/types/autoresearch/tools/log-experiment.d.ts +2 -2
  17. package/dist/types/autoresearch/tools/run-experiment.d.ts +2 -2
  18. package/dist/types/autoresearch/tools/update-notes.d.ts +2 -2
  19. package/dist/types/autoresearch/types.d.ts +3 -3
  20. package/dist/types/capability/context-file.d.ts +2 -2
  21. package/dist/types/capability/extension-module.d.ts +2 -2
  22. package/dist/types/capability/extension.d.ts +3 -3
  23. package/dist/types/capability/hook.d.ts +2 -2
  24. package/dist/types/capability/index.d.ts +3 -3
  25. package/dist/types/capability/instruction.d.ts +2 -2
  26. package/dist/types/capability/mcp.d.ts +2 -2
  27. package/dist/types/capability/prompt.d.ts +2 -2
  28. package/dist/types/capability/rule-buckets.d.ts +2 -2
  29. package/dist/types/capability/rule.d.ts +2 -2
  30. package/dist/types/capability/settings.d.ts +2 -2
  31. package/dist/types/capability/skill.d.ts +2 -2
  32. package/dist/types/capability/slash-command.d.ts +2 -2
  33. package/dist/types/capability/ssh.d.ts +2 -2
  34. package/dist/types/capability/system-prompt.d.ts +2 -2
  35. package/dist/types/capability/tool.d.ts +2 -2
  36. package/dist/types/cli/args.d.ts +1 -1
  37. package/dist/types/cli/bench-cli.d.ts +2 -2
  38. package/dist/types/cli/dry-balance-cli.d.ts +1 -1
  39. package/dist/types/cli/extension-flags.d.ts +1 -1
  40. package/dist/types/cli/flag-tables.d.ts +2 -2
  41. package/dist/types/cli/gallery-cli.d.ts +1 -1
  42. package/dist/types/cli/gallery-fixtures/agentic.d.ts +1 -1
  43. package/dist/types/cli/gallery-fixtures/codeintel.d.ts +1 -1
  44. package/dist/types/cli/gallery-fixtures/edit.d.ts +1 -1
  45. package/dist/types/cli/gallery-fixtures/fs.d.ts +1 -1
  46. package/dist/types/cli/gallery-fixtures/index.d.ts +2 -2
  47. package/dist/types/cli/gallery-fixtures/interaction.d.ts +1 -1
  48. package/dist/types/cli/gallery-fixtures/memory.d.ts +1 -1
  49. package/dist/types/cli/gallery-fixtures/misc.d.ts +1 -1
  50. package/dist/types/cli/gallery-fixtures/search.d.ts +1 -1
  51. package/dist/types/cli/gallery-fixtures/shell.d.ts +1 -1
  52. package/dist/types/cli/gallery-fixtures/types.d.ts +1 -1
  53. package/dist/types/cli/gallery-fixtures/web.d.ts +1 -1
  54. package/dist/types/cli/gallery-screenshot.d.ts +1 -1
  55. package/dist/types/cli/initial-message.d.ts +1 -1
  56. package/dist/types/cli/models-cli.d.ts +1 -1
  57. package/dist/types/cli/plugin-cli.d.ts +1 -1
  58. package/dist/types/cli/session-picker.d.ts +1 -1
  59. package/dist/types/cli/startup-cwd.d.ts +1 -1
  60. package/dist/types/cli/tiny-models-cli.d.ts +1 -1
  61. package/dist/types/cli/web-search-cli.d.ts +1 -1
  62. package/dist/types/collab/crypto.d.ts +1 -1
  63. package/dist/types/collab/display-name.d.ts +1 -1
  64. package/dist/types/collab/guest.d.ts +4 -4
  65. package/dist/types/collab/host.d.ts +2 -2
  66. package/dist/types/collab/protocol.d.ts +3 -3
  67. package/dist/types/collab/relay-client.d.ts +1 -1
  68. package/dist/types/commands/auth-broker.d.ts +1 -1
  69. package/dist/types/commands/auth-gateway.d.ts +1 -1
  70. package/dist/types/commands/config.d.ts +1 -1
  71. package/dist/types/commands/plugin.d.ts +1 -1
  72. package/dist/types/commands/setup.d.ts +2 -2
  73. package/dist/types/commands/ssh.d.ts +1 -1
  74. package/dist/types/commands/tiny-models.d.ts +1 -1
  75. package/dist/types/commands/ttsr.d.ts +2 -2
  76. package/dist/types/commit/agentic/agent.d.ts +4 -4
  77. package/dist/types/commit/agentic/fallback.d.ts +2 -2
  78. package/dist/types/commit/agentic/index.d.ts +1 -1
  79. package/dist/types/commit/agentic/state.d.ts +1 -1
  80. package/dist/types/commit/agentic/tools/analyze-file.d.ts +5 -5
  81. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +2 -2
  82. package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
  83. package/dist/types/commit/agentic/tools/git-overview.d.ts +2 -2
  84. package/dist/types/commit/agentic/tools/index.d.ts +5 -5
  85. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +2 -2
  86. package/dist/types/commit/agentic/tools/propose-commit.d.ts +2 -2
  87. package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
  88. package/dist/types/commit/agentic/tools/split-commit.d.ts +2 -2
  89. package/dist/types/commit/agentic/topo-sort.d.ts +1 -1
  90. package/dist/types/commit/agentic/trivial.d.ts +1 -1
  91. package/dist/types/commit/agentic/validation.d.ts +1 -1
  92. package/dist/types/commit/analysis/conventional.d.ts +1 -1
  93. package/dist/types/commit/analysis/index.d.ts +4 -4
  94. package/dist/types/commit/analysis/scope.d.ts +1 -1
  95. package/dist/types/commit/analysis/summary.d.ts +1 -1
  96. package/dist/types/commit/analysis/validation.d.ts +1 -1
  97. package/dist/types/commit/changelog/detect.d.ts +1 -1
  98. package/dist/types/commit/changelog/generate.d.ts +1 -1
  99. package/dist/types/commit/changelog/parse.d.ts +1 -1
  100. package/dist/types/commit/cli.d.ts +1 -1
  101. package/dist/types/commit/git/diff.d.ts +1 -1
  102. package/dist/types/commit/index.d.ts +1 -1
  103. package/dist/types/commit/map-reduce/index.d.ts +1 -1
  104. package/dist/types/commit/map-reduce/map-phase.d.ts +1 -1
  105. package/dist/types/commit/map-reduce/reduce-phase.d.ts +1 -1
  106. package/dist/types/commit/message.d.ts +1 -1
  107. package/dist/types/commit/model-selection.d.ts +3 -3
  108. package/dist/types/commit/pipeline.d.ts +1 -1
  109. package/dist/types/commit/shared-llm.d.ts +1 -1
  110. package/dist/types/commit/utils.d.ts +1 -1
  111. package/dist/types/config/model-discovery.d.ts +1 -1
  112. package/dist/types/config/model-registry.d.ts +3 -3
  113. package/dist/types/config/model-resolver.d.ts +4 -4
  114. package/dist/types/config/model-roles.d.ts +2 -2
  115. package/dist/types/config/models-config.d.ts +2 -2
  116. package/dist/types/config/service-tier.d.ts +1 -1
  117. package/dist/types/config/settings-schema.d.ts +7 -13
  118. package/dist/types/config/settings.d.ts +7 -7
  119. package/dist/types/config.d.ts +1 -1
  120. package/dist/types/dap/client.d.ts +1 -1
  121. package/dist/types/dap/config.d.ts +1 -1
  122. package/dist/types/dap/index.d.ts +4 -4
  123. package/dist/types/dap/session.d.ts +3 -3
  124. package/dist/types/debug/index.d.ts +1 -1
  125. package/dist/types/debug/log-viewer.d.ts +1 -1
  126. package/dist/types/debug/raw-sse.d.ts +1 -1
  127. package/dist/types/debug/report-bundle.d.ts +1 -1
  128. package/dist/types/discovery/agents.d.ts +1 -1
  129. package/dist/types/discovery/helpers.d.ts +4 -4
  130. package/dist/types/discovery/index.d.ts +47 -47
  131. package/dist/types/discovery/omp-extension-roots.d.ts +1 -1
  132. package/dist/types/edit/apply-patch/index.d.ts +2 -2
  133. package/dist/types/edit/apply-patch/parser.d.ts +1 -1
  134. package/dist/types/edit/diff.d.ts +1 -1
  135. package/dist/types/edit/hashline/execute.d.ts +4 -4
  136. package/dist/types/edit/hashline/filesystem.d.ts +3 -3
  137. package/dist/types/edit/hashline/index.d.ts +5 -5
  138. package/dist/types/edit/index.d.ts +19 -19
  139. package/dist/types/edit/modes/apply-patch.d.ts +1 -1
  140. package/dist/types/edit/modes/patch.d.ts +3 -3
  141. package/dist/types/edit/modes/replace.d.ts +3 -3
  142. package/dist/types/edit/renderer.d.ts +15 -15
  143. package/dist/types/edit/snapshot-details.d.ts +1 -1
  144. package/dist/types/edit/streaming.d.ts +2 -2
  145. package/dist/types/eval/agent-bridge.d.ts +4 -4
  146. package/dist/types/eval/backend-helpers.d.ts +3 -3
  147. package/dist/types/eval/backend.d.ts +2 -2
  148. package/dist/types/eval/bridge-timeout.d.ts +1 -1
  149. package/dist/types/eval/budget-bridge.d.ts +2 -2
  150. package/dist/types/eval/completion-bridge.d.ts +2 -2
  151. package/dist/types/eval/concurrency-bridge.d.ts +2 -2
  152. package/dist/types/eval/executor-base.d.ts +3 -3
  153. package/dist/types/eval/index.d.ts +6 -6
  154. package/dist/types/eval/jl/executor.d.ts +4 -4
  155. package/dist/types/eval/jl/index.d.ts +2 -2
  156. package/dist/types/eval/jl/kernel.d.ts +5 -5
  157. package/dist/types/eval/js/context-manager.d.ts +4 -4
  158. package/dist/types/eval/js/executor.d.ts +3 -3
  159. package/dist/types/eval/js/index.d.ts +2 -2
  160. package/dist/types/eval/js/shared/helpers.d.ts +1 -1
  161. package/dist/types/eval/js/shared/runtime.d.ts +2 -2
  162. package/dist/types/eval/js/tool-bridge.d.ts +5 -5
  163. package/dist/types/eval/js/worker-core.d.ts +1 -1
  164. package/dist/types/eval/js/worker-protocol.d.ts +2 -2
  165. package/dist/types/eval/kernel-base.d.ts +1 -1
  166. package/dist/types/eval/py/executor.d.ts +3 -3
  167. package/dist/types/eval/py/index.d.ts +2 -2
  168. package/dist/types/eval/py/kernel.d.ts +5 -5
  169. package/dist/types/eval/py/tool-bridge.d.ts +2 -2
  170. package/dist/types/eval/rb/executor.d.ts +3 -3
  171. package/dist/types/eval/rb/index.d.ts +2 -2
  172. package/dist/types/eval/rb/kernel.d.ts +6 -6
  173. package/dist/types/eval/session-id.d.ts +1 -1
  174. package/dist/types/eval/types.d.ts +1 -1
  175. package/dist/types/exa/index.d.ts +2 -2
  176. package/dist/types/exa/mcp-client.d.ts +3 -3
  177. package/dist/types/exec/bash-executor.d.ts +1 -1
  178. package/dist/types/export/html/index.d.ts +2 -2
  179. package/dist/types/export/share.d.ts +3 -3
  180. package/dist/types/export/ttsr.d.ts +2 -2
  181. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +2 -2
  182. package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +2 -2
  183. package/dist/types/extensibility/custom-commands/index.d.ts +2 -2
  184. package/dist/types/extensibility/custom-commands/loader.d.ts +1 -1
  185. package/dist/types/extensibility/custom-commands/types.d.ts +3 -3
  186. package/dist/types/extensibility/custom-tools/index.d.ts +3 -3
  187. package/dist/types/extensibility/custom-tools/loader.d.ts +3 -3
  188. package/dist/types/extensibility/custom-tools/types.d.ts +12 -12
  189. package/dist/types/extensibility/custom-tools/wrapper.d.ts +2 -2
  190. package/dist/types/extensibility/extensions/compact-handler.d.ts +1 -1
  191. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +5 -5
  192. package/dist/types/extensibility/extensions/index.d.ts +5 -5
  193. package/dist/types/extensibility/extensions/loader.d.ts +2 -2
  194. package/dist/types/extensibility/extensions/model-api.d.ts +3 -3
  195. package/dist/types/extensibility/extensions/runner.d.ts +6 -6
  196. package/dist/types/extensibility/extensions/types.d.ts +43 -31
  197. package/dist/types/extensibility/extensions/wrapper.d.ts +2 -2
  198. package/dist/types/extensibility/hooks/index.d.ts +6 -6
  199. package/dist/types/extensibility/hooks/loader.d.ts +4 -4
  200. package/dist/types/extensibility/hooks/runner.d.ts +5 -5
  201. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +1 -1
  202. package/dist/types/extensibility/hooks/types.d.ts +18 -18
  203. package/dist/types/extensibility/legacy-pi-ai-shim.d.ts +12 -4
  204. package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +194 -5
  205. package/dist/types/extensibility/plugins/doctor.d.ts +1 -1
  206. package/dist/types/extensibility/plugins/index.d.ts +7 -7
  207. package/dist/types/extensibility/plugins/installer.d.ts +1 -1
  208. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +1 -1
  209. package/dist/types/extensibility/plugins/loader.d.ts +1 -1
  210. package/dist/types/extensibility/plugins/manager.d.ts +1 -1
  211. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +1 -1
  212. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -6
  213. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +1 -1
  214. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +1 -1
  215. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +1 -1
  216. package/dist/types/extensibility/plugins/runtime-config.d.ts +1 -1
  217. package/dist/types/extensibility/session-handler-types.d.ts +1 -1
  218. package/dist/types/extensibility/shared-events.d.ts +4 -4
  219. package/dist/types/extensibility/skills.d.ts +3 -3
  220. package/dist/types/extensibility/slash-commands.d.ts +1 -1
  221. package/dist/types/extensibility/typebox.d.ts +1 -1
  222. package/dist/types/extensibility/utils.d.ts +1 -1
  223. package/dist/types/goals/guided-setup.d.ts +1 -1
  224. package/dist/types/goals/index.d.ts +3 -3
  225. package/dist/types/goals/runtime.d.ts +1 -1
  226. package/dist/types/goals/state.d.ts +1 -1
  227. package/dist/types/goals/tools/goal-tool.d.ts +4 -4
  228. package/dist/types/hindsight/backend.d.ts +2 -2
  229. package/dist/types/hindsight/bank.d.ts +2 -2
  230. package/dist/types/hindsight/client.d.ts +1 -1
  231. package/dist/types/hindsight/config.d.ts +1 -1
  232. package/dist/types/hindsight/index.d.ts +8 -8
  233. package/dist/types/hindsight/mental-models.d.ts +3 -3
  234. package/dist/types/hindsight/state.d.ts +5 -5
  235. package/dist/types/hindsight/transcript.d.ts +2 -2
  236. package/dist/types/index.d.ts +38 -38
  237. package/dist/types/internal-urls/agent-protocol.d.ts +1 -1
  238. package/dist/types/internal-urls/artifact-protocol.d.ts +1 -1
  239. package/dist/types/internal-urls/filesystem-resource.d.ts +1 -1
  240. package/dist/types/internal-urls/history-protocol.d.ts +1 -1
  241. package/dist/types/internal-urls/index.d.ts +16 -16
  242. package/dist/types/internal-urls/issue-pr-protocol.d.ts +1 -1
  243. package/dist/types/internal-urls/local-protocol.d.ts +1 -1
  244. package/dist/types/internal-urls/mcp-protocol.d.ts +1 -1
  245. package/dist/types/internal-urls/memory-protocol.d.ts +1 -1
  246. package/dist/types/internal-urls/omp-protocol.d.ts +1 -1
  247. package/dist/types/internal-urls/parse.d.ts +1 -1
  248. package/dist/types/internal-urls/router.d.ts +1 -1
  249. package/dist/types/internal-urls/rule-protocol.d.ts +1 -1
  250. package/dist/types/internal-urls/skill-protocol.d.ts +1 -1
  251. package/dist/types/internal-urls/ssh-protocol.d.ts +1 -1
  252. package/dist/types/internal-urls/types.d.ts +2 -2
  253. package/dist/types/internal-urls/vault-protocol.d.ts +1 -1
  254. package/dist/types/irc/bus.d.ts +2 -2
  255. package/dist/types/lib/xai-http.d.ts +1 -1
  256. package/dist/types/lsp/client.d.ts +23 -1
  257. package/dist/types/lsp/clients/biome-client.d.ts +1 -1
  258. package/dist/types/lsp/clients/index.d.ts +4 -4
  259. package/dist/types/lsp/clients/lsp-linter-client.d.ts +1 -1
  260. package/dist/types/lsp/clients/swiftlint-client.d.ts +1 -1
  261. package/dist/types/lsp/config.d.ts +1 -1
  262. package/dist/types/lsp/diagnostics-ledger.d.ts +1 -1
  263. package/dist/types/lsp/edits.d.ts +1 -1
  264. package/dist/types/lsp/index.d.ts +6 -6
  265. package/dist/types/lsp/render.d.ts +2 -2
  266. package/dist/types/lsp/startup-events.d.ts +1 -1
  267. package/dist/types/lsp/utils.d.ts +2 -2
  268. package/dist/types/main.d.ts +12 -12
  269. package/dist/types/markit/converters/docx.d.ts +1 -1
  270. package/dist/types/markit/converters/epub.d.ts +1 -1
  271. package/dist/types/markit/converters/pdf/columns.d.ts +1 -1
  272. package/dist/types/markit/converters/pdf/extract.d.ts +1 -1
  273. package/dist/types/markit/converters/pdf/grid.d.ts +1 -1
  274. package/dist/types/markit/converters/pdf/headers.d.ts +1 -1
  275. package/dist/types/markit/converters/pdf/index.d.ts +1 -1
  276. package/dist/types/markit/converters/pdf/render.d.ts +1 -1
  277. package/dist/types/markit/converters/pptx.d.ts +1 -1
  278. package/dist/types/markit/converters/xlsx.d.ts +1 -1
  279. package/dist/types/markit/index.d.ts +2 -2
  280. package/dist/types/markit/registry.d.ts +1 -1
  281. package/dist/types/mcp/client.d.ts +1 -1
  282. package/dist/types/mcp/config-writer.d.ts +1 -1
  283. package/dist/types/mcp/config.d.ts +2 -2
  284. package/dist/types/mcp/index.d.ts +12 -12
  285. package/dist/types/mcp/loader.d.ts +5 -5
  286. package/dist/types/mcp/manager.d.ts +7 -7
  287. package/dist/types/mcp/oauth-credentials.d.ts +3 -3
  288. package/dist/types/mcp/oauth-flow.d.ts +1 -1
  289. package/dist/types/mcp/render.d.ts +3 -3
  290. package/dist/types/mcp/smithery-registry.d.ts +1 -1
  291. package/dist/types/mcp/tool-bridge.d.ts +5 -5
  292. package/dist/types/mcp/tool-cache.d.ts +2 -2
  293. package/dist/types/mcp/transports/http.d.ts +1 -1
  294. package/dist/types/mcp/transports/index.d.ts +3 -3
  295. package/dist/types/mcp/transports/sse.d.ts +1 -1
  296. package/dist/types/mcp/transports/stdio.d.ts +1 -1
  297. package/dist/types/mcp/types.d.ts +1 -1
  298. package/dist/types/memories/index.d.ts +4 -4
  299. package/dist/types/memory-backend/index.d.ts +7 -7
  300. package/dist/types/memory-backend/local-backend.d.ts +1 -1
  301. package/dist/types/memory-backend/off-backend.d.ts +1 -1
  302. package/dist/types/memory-backend/resolve.d.ts +2 -2
  303. package/dist/types/memory-backend/runtime.d.ts +2 -2
  304. package/dist/types/memory-backend/types.d.ts +5 -5
  305. package/dist/types/mnemopi/backend.d.ts +2 -2
  306. package/dist/types/mnemopi/config.d.ts +1 -1
  307. package/dist/types/mnemopi/embed-client.d.ts +2 -2
  308. package/dist/types/mnemopi/embed-worker.d.ts +1 -1
  309. package/dist/types/mnemopi/index.d.ts +3 -3
  310. package/dist/types/mnemopi/state.d.ts +38 -2
  311. package/dist/types/modes/acp/acp-agent.d.ts +2 -2
  312. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -1
  313. package/dist/types/modes/acp/acp-event-mapper.d.ts +1 -1
  314. package/dist/types/modes/acp/acp-mode.d.ts +1 -1
  315. package/dist/types/modes/acp/index.d.ts +2 -2
  316. package/dist/types/modes/components/advisor-config.d.ts +3 -3
  317. package/dist/types/modes/components/advisor-message.d.ts +2 -2
  318. package/dist/types/modes/components/agent-dashboard.d.ts +2 -2
  319. package/dist/types/modes/components/agent-hub.d.ts +11 -9
  320. package/dist/types/modes/components/agent-transcript-viewer.d.ts +6 -6
  321. package/dist/types/modes/components/assistant-message.d.ts +2 -2
  322. package/dist/types/modes/components/background-tan-message.d.ts +2 -2
  323. package/dist/types/modes/components/bash-execution.d.ts +1 -1
  324. package/dist/types/modes/components/bordered-loader.d.ts +1 -1
  325. package/dist/types/modes/components/chat-transcript-builder.d.ts +3 -3
  326. package/dist/types/modes/components/collab-prompt-message.d.ts +2 -2
  327. package/dist/types/modes/components/compaction-summary-message.d.ts +1 -1
  328. package/dist/types/modes/components/copy-selector.d.ts +1 -1
  329. package/dist/types/modes/components/custom-editor.d.ts +1 -1
  330. package/dist/types/modes/components/custom-message.d.ts +2 -2
  331. package/dist/types/modes/components/eval-execution.d.ts +1 -1
  332. package/dist/types/modes/components/execution-shared.d.ts +1 -1
  333. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +2 -2
  334. package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
  335. package/dist/types/modes/components/extensions/index.d.ts +5 -5
  336. package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
  337. package/dist/types/modes/components/extensions/state-manager.d.ts +1 -1
  338. package/dist/types/modes/components/extensions/types.d.ts +1 -1
  339. package/dist/types/modes/components/footer.d.ts +1 -1
  340. package/dist/types/modes/components/history-search.d.ts +1 -1
  341. package/dist/types/modes/components/hook-message.d.ts +2 -2
  342. package/dist/types/modes/components/index.d.ts +38 -38
  343. package/dist/types/modes/components/keybinding-hints.d.ts +1 -1
  344. package/dist/types/modes/components/logout-account-selector.d.ts +1 -1
  345. package/dist/types/modes/components/mcp-add-wizard.d.ts +1 -1
  346. package/dist/types/modes/components/message-frame.d.ts +1 -1
  347. package/dist/types/modes/components/model-selector.d.ts +3 -3
  348. package/dist/types/modes/components/oauth-selector.d.ts +1 -1
  349. package/dist/types/modes/components/plan-review-overlay.d.ts +1 -1
  350. package/dist/types/modes/components/plugin-settings.d.ts +3 -3
  351. package/dist/types/modes/components/read-tool-group.d.ts +1 -1
  352. package/dist/types/modes/components/reset-usage-selector.d.ts +1 -1
  353. package/dist/types/modes/components/segment-track.d.ts +1 -1
  354. package/dist/types/modes/components/session-selector.d.ts +1 -1
  355. package/dist/types/modes/components/settings-defs.d.ts +1 -1
  356. package/dist/types/modes/components/settings-selector.d.ts +2 -2
  357. package/dist/types/modes/components/skill-message.d.ts +1 -1
  358. package/dist/types/modes/components/status-line/component.d.ts +2 -2
  359. package/dist/types/modes/components/status-line/context-thresholds.d.ts +1 -1
  360. package/dist/types/modes/components/status-line/index.d.ts +5 -5
  361. package/dist/types/modes/components/status-line/presets.d.ts +1 -1
  362. package/dist/types/modes/components/status-line/segments.d.ts +2 -2
  363. package/dist/types/modes/components/status-line/separators.d.ts +2 -2
  364. package/dist/types/modes/components/status-line/types.d.ts +8 -4
  365. package/dist/types/modes/components/tiny-title-download-progress.d.ts +2 -2
  366. package/dist/types/modes/components/todo-reminder.d.ts +1 -1
  367. package/dist/types/modes/components/tool-execution.d.ts +1 -1
  368. package/dist/types/modes/components/tree-selector.d.ts +2 -2
  369. package/dist/types/modes/components/ttsr-notification.d.ts +1 -1
  370. package/dist/types/modes/controllers/btw-controller.d.ts +1 -1
  371. package/dist/types/modes/controllers/command-controller-shared.d.ts +2 -2
  372. package/dist/types/modes/controllers/command-controller.d.ts +7 -7
  373. package/dist/types/modes/controllers/event-controller.d.ts +3 -3
  374. package/dist/types/modes/controllers/extension-ui-controller.d.ts +5 -5
  375. package/dist/types/modes/controllers/extension-ui-controller.test.d.ts +1 -0
  376. package/dist/types/modes/controllers/input-controller.d.ts +2 -2
  377. package/dist/types/modes/controllers/mcp-command-controller.d.ts +1 -1
  378. package/dist/types/modes/controllers/omfg-controller.d.ts +1 -1
  379. package/dist/types/modes/controllers/omfg-rule.d.ts +1 -1
  380. package/dist/types/modes/controllers/selector-controller.d.ts +2 -2
  381. package/dist/types/modes/controllers/session-focus-controller.d.ts +4 -4
  382. package/dist/types/modes/controllers/ssh-command-controller.d.ts +1 -1
  383. package/dist/types/modes/controllers/streaming-reveal.d.ts +11 -3
  384. package/dist/types/modes/controllers/tan-command-controller.d.ts +1 -1
  385. package/dist/types/modes/controllers/todo-command-controller.d.ts +1 -1
  386. package/dist/types/modes/controllers/tool-args-reveal.d.ts +6 -2
  387. package/dist/types/modes/image-references.d.ts +1 -1
  388. package/dist/types/modes/index.d.ts +3 -3
  389. package/dist/types/modes/interactive-mode.d.ts +34 -34
  390. package/dist/types/modes/orchestrate.d.ts +1 -1
  391. package/dist/types/modes/print-mode.d.ts +1 -1
  392. package/dist/types/modes/prompt-action-autocomplete.d.ts +1 -1
  393. package/dist/types/modes/rpc/host-tools.d.ts +1 -1
  394. package/dist/types/modes/rpc/host-uris.d.ts +3 -3
  395. package/dist/types/modes/rpc/rpc-client.d.ts +3 -3
  396. package/dist/types/modes/rpc/rpc-mode.d.ts +6 -6
  397. package/dist/types/modes/rpc/rpc-subagents.d.ts +3 -3
  398. package/dist/types/modes/rpc/rpc-types.d.ts +7 -7
  399. package/dist/types/modes/running-subagent-badge.d.ts +1 -1
  400. package/dist/types/modes/runtime-init.d.ts +2 -2
  401. package/dist/types/modes/session-observer-registry.d.ts +2 -2
  402. package/dist/types/modes/setup-wizard/index.d.ts +6 -6
  403. package/dist/types/modes/setup-wizard/lazy.d.ts +1 -1
  404. package/dist/types/modes/setup-wizard/scenes/glyph.d.ts +1 -1
  405. package/dist/types/modes/setup-wizard/scenes/providers.d.ts +1 -1
  406. package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +1 -1
  407. package/dist/types/modes/setup-wizard/scenes/theme.d.ts +1 -1
  408. package/dist/types/modes/setup-wizard/scenes/types.d.ts +1 -1
  409. package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +1 -1
  410. package/dist/types/modes/setup-wizard/startup-splash.d.ts +1 -1
  411. package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +2 -2
  412. package/dist/types/modes/shared.d.ts +1 -1
  413. package/dist/types/modes/skill-command.d.ts +2 -2
  414. package/dist/types/modes/theme/shimmer.d.ts +1 -1
  415. package/dist/types/modes/theme/theme.d.ts +1 -1
  416. package/dist/types/modes/types.d.ts +31 -31
  417. package/dist/types/modes/ultrathink.d.ts +1 -1
  418. package/dist/types/modes/utils/context-usage.d.ts +5 -5
  419. package/dist/types/modes/utils/hotkeys-markdown.d.ts +1 -1
  420. package/dist/types/modes/utils/interactive-context-helpers.d.ts +2 -2
  421. package/dist/types/modes/utils/tools-markdown.d.ts +1 -1
  422. package/dist/types/modes/utils/transcript-render-helpers.d.ts +10 -2
  423. package/dist/types/modes/utils/transcript-render-helpers.test.d.ts +1 -0
  424. package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
  425. package/dist/types/modes/workflow.d.ts +1 -1
  426. package/dist/types/plan-mode/plan-handoff.d.ts +1 -1
  427. package/dist/types/registry/agent-lifecycle.d.ts +2 -2
  428. package/dist/types/registry/agent-registry.d.ts +1 -1
  429. package/dist/types/sdk.d.ts +40 -36
  430. package/dist/types/secrets/index.d.ts +2 -2
  431. package/dist/types/secrets/obfuscator.d.ts +1 -1
  432. package/dist/types/session/agent-session.d.ts +56 -42
  433. package/dist/types/session/agent-storage.d.ts +1 -1
  434. package/dist/types/session/auth-broker-config.d.ts +1 -1
  435. package/dist/types/session/codex-auto-reset.d.ts +1 -1
  436. package/dist/types/session/exit-diagnostics.d.ts +1 -1
  437. package/dist/types/session/indexed-session-storage.d.ts +2 -2
  438. package/dist/types/session/messages.d.ts +22 -3
  439. package/dist/types/session/redis-session-storage.d.ts +1 -1
  440. package/dist/types/session/session-context.d.ts +1 -1
  441. package/dist/types/session/session-entries.d.ts +4 -0
  442. package/dist/types/session/session-listing.d.ts +1 -1
  443. package/dist/types/session/session-loader.d.ts +4 -4
  444. package/dist/types/session/session-manager.d.ts +9 -8
  445. package/dist/types/session/session-migrations.d.ts +1 -1
  446. package/dist/types/session/session-paths.d.ts +1 -1
  447. package/dist/types/session/session-persistence.d.ts +2 -2
  448. package/dist/types/session/session-storage.d.ts +1 -1
  449. package/dist/types/session/session-title-slot.d.ts +1 -1
  450. package/dist/types/session/settings-stream-fn.d.ts +1 -1
  451. package/dist/types/session/sql-session-storage.d.ts +1 -1
  452. package/dist/types/session/unexpected-stop-classifier.d.ts +2 -2
  453. package/dist/types/slash-commands/acp-builtins.d.ts +2 -2
  454. package/dist/types/slash-commands/available-commands.d.ts +5 -5
  455. package/dist/types/slash-commands/builtin-registry.d.ts +2 -2
  456. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +1 -1
  457. package/dist/types/slash-commands/helpers/context-report.d.ts +1 -1
  458. package/dist/types/slash-commands/helpers/format.d.ts +1 -1
  459. package/dist/types/slash-commands/helpers/logout.d.ts +1 -1
  460. package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +2 -2
  461. package/dist/types/slash-commands/helpers/mcp.d.ts +1 -1
  462. package/dist/types/slash-commands/helpers/parse.d.ts +1 -1
  463. package/dist/types/slash-commands/helpers/reset-usage.d.ts +1 -1
  464. package/dist/types/slash-commands/helpers/ssh.d.ts +1 -1
  465. package/dist/types/slash-commands/helpers/todo.d.ts +1 -1
  466. package/dist/types/slash-commands/helpers/usage-report.d.ts +1 -1
  467. package/dist/types/slash-commands/types.d.ts +6 -4
  468. package/dist/types/ssh/file-transfer.d.ts +1 -1
  469. package/dist/types/ssh/ssh-executor.d.ts +1 -1
  470. package/dist/types/ssh/sshfs-mount.d.ts +1 -1
  471. package/dist/types/stt/asr-client.d.ts +3 -3
  472. package/dist/types/stt/asr-protocol.d.ts +1 -1
  473. package/dist/types/stt/asr-worker.d.ts +1 -1
  474. package/dist/types/stt/downloader.d.ts +1 -1
  475. package/dist/types/stt/index.d.ts +8 -8
  476. package/dist/types/stt/models.d.ts +1 -1
  477. package/dist/types/system-prompt.d.ts +4 -4
  478. package/dist/types/task/agents.d.ts +1 -1
  479. package/dist/types/task/discovery.d.ts +1 -1
  480. package/dist/types/task/executor.d.ts +20 -20
  481. package/dist/types/task/index.d.ts +11 -11
  482. package/dist/types/task/isolation-runner.d.ts +7 -6
  483. package/dist/types/task/persisted-revive.d.ts +5 -5
  484. package/dist/types/task/provider-concurrency.d.ts +2 -2
  485. package/dist/types/task/render.d.ts +3 -3
  486. package/dist/types/task/renderer.d.ts +1 -1
  487. package/dist/types/task/repair-args.d.ts +1 -1
  488. package/dist/types/task/subprocess-tool-registry.d.ts +1 -1
  489. package/dist/types/task/types.d.ts +2 -2
  490. package/dist/types/task/yield-assembly.d.ts +1 -1
  491. package/dist/types/tiny/title-client.d.ts +2 -2
  492. package/dist/types/tiny/title-protocol.d.ts +1 -1
  493. package/dist/types/tiny/worker.d.ts +1 -1
  494. package/dist/types/tool-discovery/mode.d.ts +2 -2
  495. package/dist/types/tools/__tests__/glob.test.d.ts +1 -0
  496. package/dist/types/tools/acp-bridge.d.ts +2 -2
  497. package/dist/types/tools/ask.d.ts +3 -3
  498. package/dist/types/tools/ast-edit.d.ts +4 -4
  499. package/dist/types/tools/ast-grep.d.ts +4 -4
  500. package/dist/types/tools/bash-command-fixup.d.ts +3 -11
  501. package/dist/types/tools/bash-interactive.d.ts +1 -1
  502. package/dist/types/tools/bash-interceptor.d.ts +1 -1
  503. package/dist/types/tools/bash-skill-urls.d.ts +3 -3
  504. package/dist/types/tools/bash.d.ts +4 -4
  505. package/dist/types/tools/browser/cmux/cmux-tab.d.ts +6 -6
  506. package/dist/types/tools/browser/cmux/rpc.d.ts +1 -1
  507. package/dist/types/tools/browser/registry.d.ts +3 -3
  508. package/dist/types/tools/browser/render.d.ts +3 -3
  509. package/dist/types/tools/browser/tab-supervisor.d.ts +4 -4
  510. package/dist/types/tools/browser/tab-worker.d.ts +1 -1
  511. package/dist/types/tools/browser.d.ts +9 -9
  512. package/dist/types/tools/checkpoint.d.ts +2 -2
  513. package/dist/types/tools/conflict-detect.d.ts +1 -1
  514. package/dist/types/tools/context.d.ts +2 -2
  515. package/dist/types/tools/debug.d.ts +4 -4
  516. package/dist/types/tools/eval-backends.d.ts +1 -1
  517. package/dist/types/tools/eval-render.d.ts +3 -3
  518. package/dist/types/tools/eval.d.ts +3 -3
  519. package/dist/types/tools/fetch.d.ts +7 -7
  520. package/dist/types/tools/gh-renderer.d.ts +3 -3
  521. package/dist/types/tools/gh.d.ts +5 -5
  522. package/dist/types/tools/github-cache.d.ts +1 -1
  523. package/dist/types/tools/glob.d.ts +7 -5
  524. package/dist/types/tools/grep.d.ts +5 -5
  525. package/dist/types/tools/image-gen.d.ts +2 -2
  526. package/dist/types/tools/index.d.ts +70 -70
  527. package/dist/types/tools/inspect-image-renderer.d.ts +2 -2
  528. package/dist/types/tools/inspect-image.d.ts +2 -2
  529. package/dist/types/tools/irc.d.ts +5 -5
  530. package/dist/types/tools/job.d.ts +3 -3
  531. package/dist/types/tools/json-tree.d.ts +1 -1
  532. package/dist/types/tools/learn.d.ts +1 -1
  533. package/dist/types/tools/list-limit.d.ts +1 -1
  534. package/dist/types/tools/manage-skill.d.ts +1 -1
  535. package/dist/types/tools/memory-edit.d.ts +1 -1
  536. package/dist/types/tools/memory-recall.d.ts +1 -1
  537. package/dist/types/tools/memory-reflect.d.ts +1 -1
  538. package/dist/types/tools/memory-render.d.ts +2 -2
  539. package/dist/types/tools/memory-retain.d.ts +1 -1
  540. package/dist/types/tools/output-meta.d.ts +3 -3
  541. package/dist/types/tools/path-utils.d.ts +2 -2
  542. package/dist/types/tools/plan-mode-guard.d.ts +1 -1
  543. package/dist/types/tools/read.d.ts +7 -7
  544. package/dist/types/tools/render-utils.d.ts +3 -3
  545. package/dist/types/tools/renderers.d.ts +2 -2
  546. package/dist/types/tools/report-tool-issue.d.ts +2 -2
  547. package/dist/types/tools/resolve.d.ts +3 -3
  548. package/dist/types/tools/review.d.ts +2 -2
  549. package/dist/types/tools/search-tool-bm25.d.ts +4 -4
  550. package/dist/types/tools/ssh.d.ts +5 -5
  551. package/dist/types/tools/todo.d.ts +4 -4
  552. package/dist/types/tools/tool-result.d.ts +2 -2
  553. package/dist/types/tools/tts.d.ts +1 -1
  554. package/dist/types/tools/write.d.ts +7 -7
  555. package/dist/types/tools/yield.d.ts +1 -1
  556. package/dist/types/tts/index.d.ts +10 -10
  557. package/dist/types/tts/models.d.ts +1 -1
  558. package/dist/types/tts/speech-enhancer.d.ts +2 -2
  559. package/dist/types/tts/streaming-player.d.ts +1 -1
  560. package/dist/types/tts/tts-client.d.ts +2 -2
  561. package/dist/types/tts/tts-protocol.d.ts +1 -1
  562. package/dist/types/tts/tts-worker.d.ts +1 -1
  563. package/dist/types/tts/vocalizer.d.ts +7 -1
  564. package/dist/types/tui/code-cell.d.ts +1 -1
  565. package/dist/types/tui/file-list.d.ts +1 -1
  566. package/dist/types/tui/index.d.ts +9 -9
  567. package/dist/types/tui/output-block.d.ts +2 -2
  568. package/dist/types/tui/status-line.d.ts +2 -2
  569. package/dist/types/tui/tree-list.d.ts +2 -2
  570. package/dist/types/tui/types.d.ts +1 -1
  571. package/dist/types/tui/utils.d.ts +2 -2
  572. package/dist/types/utils/changelog.d.ts +1 -1
  573. package/dist/types/utils/commit-message-generator.d.ts +2 -2
  574. package/dist/types/utils/git.d.ts +1 -1
  575. package/dist/types/utils/image-loading.d.ts +1 -1
  576. package/dist/types/utils/image-vision-fallback.d.ts +3 -3
  577. package/dist/types/utils/markit.d.ts +1 -1
  578. package/dist/types/utils/title-generator.d.ts +2 -2
  579. package/dist/types/web/parallel.d.ts +1 -1
  580. package/dist/types/web/scrapers/artifacthub.d.ts +1 -1
  581. package/dist/types/web/scrapers/arxiv.d.ts +1 -1
  582. package/dist/types/web/scrapers/aur.d.ts +1 -1
  583. package/dist/types/web/scrapers/biorxiv.d.ts +1 -1
  584. package/dist/types/web/scrapers/bluesky.d.ts +1 -1
  585. package/dist/types/web/scrapers/brew.d.ts +1 -1
  586. package/dist/types/web/scrapers/cheatsh.d.ts +1 -1
  587. package/dist/types/web/scrapers/chocolatey.d.ts +1 -1
  588. package/dist/types/web/scrapers/choosealicense.d.ts +1 -1
  589. package/dist/types/web/scrapers/cisa-kev.d.ts +1 -1
  590. package/dist/types/web/scrapers/clojars.d.ts +1 -1
  591. package/dist/types/web/scrapers/coingecko.d.ts +1 -1
  592. package/dist/types/web/scrapers/crates-io.d.ts +1 -1
  593. package/dist/types/web/scrapers/crossref.d.ts +1 -1
  594. package/dist/types/web/scrapers/devto.d.ts +1 -1
  595. package/dist/types/web/scrapers/discogs.d.ts +1 -1
  596. package/dist/types/web/scrapers/discourse.d.ts +1 -1
  597. package/dist/types/web/scrapers/dockerhub.d.ts +1 -1
  598. package/dist/types/web/scrapers/docs-rs.d.ts +8 -1
  599. package/dist/types/web/scrapers/fdroid.d.ts +1 -1
  600. package/dist/types/web/scrapers/firefox-addons.d.ts +1 -1
  601. package/dist/types/web/scrapers/flathub.d.ts +1 -1
  602. package/dist/types/web/scrapers/github-gist.d.ts +1 -1
  603. package/dist/types/web/scrapers/github.d.ts +1 -1
  604. package/dist/types/web/scrapers/gitlab.d.ts +1 -1
  605. package/dist/types/web/scrapers/go-pkg.d.ts +1 -1
  606. package/dist/types/web/scrapers/hackage.d.ts +1 -1
  607. package/dist/types/web/scrapers/hackernews.d.ts +1 -1
  608. package/dist/types/web/scrapers/hex.d.ts +1 -1
  609. package/dist/types/web/scrapers/huggingface.d.ts +1 -1
  610. package/dist/types/web/scrapers/iacr.d.ts +1 -1
  611. package/dist/types/web/scrapers/index.d.ts +77 -77
  612. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +1 -1
  613. package/dist/types/web/scrapers/lemmy.d.ts +1 -1
  614. package/dist/types/web/scrapers/lobsters.d.ts +1 -1
  615. package/dist/types/web/scrapers/mastodon.d.ts +1 -1
  616. package/dist/types/web/scrapers/maven.d.ts +1 -1
  617. package/dist/types/web/scrapers/mdn.d.ts +1 -1
  618. package/dist/types/web/scrapers/metacpan.d.ts +1 -1
  619. package/dist/types/web/scrapers/musicbrainz.d.ts +1 -1
  620. package/dist/types/web/scrapers/npm.d.ts +1 -1
  621. package/dist/types/web/scrapers/nuget.d.ts +1 -1
  622. package/dist/types/web/scrapers/nvd.d.ts +1 -1
  623. package/dist/types/web/scrapers/ollama.d.ts +1 -1
  624. package/dist/types/web/scrapers/open-vsx.d.ts +1 -1
  625. package/dist/types/web/scrapers/opencorporates.d.ts +1 -1
  626. package/dist/types/web/scrapers/openlibrary.d.ts +1 -1
  627. package/dist/types/web/scrapers/orcid.d.ts +1 -1
  628. package/dist/types/web/scrapers/osv.d.ts +1 -1
  629. package/dist/types/web/scrapers/packagist.d.ts +1 -1
  630. package/dist/types/web/scrapers/pub-dev.d.ts +1 -1
  631. package/dist/types/web/scrapers/pubmed.d.ts +1 -1
  632. package/dist/types/web/scrapers/pypi.d.ts +1 -1
  633. package/dist/types/web/scrapers/rawg.d.ts +1 -1
  634. package/dist/types/web/scrapers/readthedocs.d.ts +1 -1
  635. package/dist/types/web/scrapers/reddit.d.ts +1 -1
  636. package/dist/types/web/scrapers/repology.d.ts +1 -1
  637. package/dist/types/web/scrapers/rfc.d.ts +1 -1
  638. package/dist/types/web/scrapers/rubygems.d.ts +1 -1
  639. package/dist/types/web/scrapers/searchcode.d.ts +1 -1
  640. package/dist/types/web/scrapers/sec-edgar.d.ts +1 -1
  641. package/dist/types/web/scrapers/semantic-scholar.d.ts +1 -1
  642. package/dist/types/web/scrapers/snapcraft.d.ts +1 -1
  643. package/dist/types/web/scrapers/sourcegraph.d.ts +1 -1
  644. package/dist/types/web/scrapers/spdx.d.ts +1 -1
  645. package/dist/types/web/scrapers/spotify.d.ts +1 -1
  646. package/dist/types/web/scrapers/stackoverflow.d.ts +1 -1
  647. package/dist/types/web/scrapers/terraform.d.ts +1 -1
  648. package/dist/types/web/scrapers/tldr.d.ts +1 -1
  649. package/dist/types/web/scrapers/twitter.d.ts +1 -1
  650. package/dist/types/web/scrapers/types.d.ts +1 -1
  651. package/dist/types/web/scrapers/vimeo.d.ts +1 -1
  652. package/dist/types/web/scrapers/vscode-marketplace.d.ts +1 -1
  653. package/dist/types/web/scrapers/w3c.d.ts +1 -1
  654. package/dist/types/web/scrapers/wikidata.d.ts +1 -1
  655. package/dist/types/web/scrapers/wikipedia.d.ts +1 -1
  656. package/dist/types/web/scrapers/youtube.d.ts +1 -1
  657. package/dist/types/web/search/index.d.ts +7 -7
  658. package/dist/types/web/search/provider.d.ts +5 -5
  659. package/dist/types/web/search/providers/anthropic.d.ts +3 -3
  660. package/dist/types/web/search/providers/base.d.ts +1 -1
  661. package/dist/types/web/search/providers/brave.d.ts +3 -3
  662. package/dist/types/web/search/providers/codex.d.ts +3 -3
  663. package/dist/types/web/search/providers/duckduckgo.d.ts +3 -3
  664. package/dist/types/web/search/providers/exa.d.ts +3 -3
  665. package/dist/types/web/search/providers/firecrawl.d.ts +3 -3
  666. package/dist/types/web/search/providers/gemini.d.ts +3 -3
  667. package/dist/types/web/search/providers/jina.d.ts +3 -3
  668. package/dist/types/web/search/providers/kagi.d.ts +3 -3
  669. package/dist/types/web/search/providers/kimi.d.ts +3 -3
  670. package/dist/types/web/search/providers/parallel.d.ts +3 -3
  671. package/dist/types/web/search/providers/perplexity.d.ts +3 -3
  672. package/dist/types/web/search/providers/searxng.d.ts +3 -3
  673. package/dist/types/web/search/providers/synthetic.d.ts +3 -3
  674. package/dist/types/web/search/providers/tavily.d.ts +3 -3
  675. package/dist/types/web/search/providers/tinyfish.d.ts +3 -3
  676. package/dist/types/web/search/providers/utils.d.ts +2 -2
  677. package/dist/types/web/search/providers/xai.d.ts +3 -3
  678. package/dist/types/web/search/providers/zai.d.ts +3 -3
  679. package/dist/types/web/search/render.d.ts +3 -3
  680. package/package.json +13 -13
  681. package/src/advisor/__tests__/advisor.test.ts +59 -0
  682. package/src/auto-thinking/classifier.ts +6 -5
  683. package/src/collab/relay-client.ts +73 -7
  684. package/src/config/model-registry.ts +43 -2
  685. package/src/config/model-resolver.ts +1 -1
  686. package/src/config/settings-schema.ts +5 -12
  687. package/src/config/settings.ts +25 -5
  688. package/src/edit/hashline/filesystem.ts +19 -1
  689. package/src/edit/modes/patch.ts +9 -1
  690. package/src/edit/modes/replace.ts +1 -1
  691. package/src/edit/renderer.ts +42 -30
  692. package/src/eval/__tests__/agent-bridge.test.ts +19 -0
  693. package/src/eval/__tests__/budget-bridge.test.ts +12 -1
  694. package/src/eval/agent-bridge.ts +27 -19
  695. package/src/eval/js/context-manager.ts +3 -0
  696. package/src/export/ttsr.ts +10 -0
  697. package/src/extensibility/extensions/loader.ts +2 -2
  698. package/src/extensibility/extensions/types.ts +16 -4
  699. package/src/extensibility/hooks/loader.ts +3 -3
  700. package/src/extensibility/hooks/types.ts +4 -4
  701. package/src/extensibility/legacy-pi-ai-shim.ts +17 -4
  702. package/src/extensibility/legacy-pi-coding-agent-shim.ts +554 -2
  703. package/src/extensibility/plugins/legacy-pi-compat.ts +190 -58
  704. package/src/internal-urls/docs-index.generated.txt +1 -1
  705. package/src/internal-urls/memory-protocol.ts +105 -3
  706. package/src/lsp/client.ts +70 -0
  707. package/src/lsp/index.ts +65 -12
  708. package/src/main.ts +5 -3
  709. package/src/markit/converters/pdf/extract.ts +26 -2
  710. package/src/mnemopi/state.ts +76 -0
  711. package/src/modes/acp/acp-agent.ts +5 -1
  712. package/src/modes/components/agent-hub.ts +27 -9
  713. package/src/modes/components/chat-transcript-builder.ts +7 -3
  714. package/src/modes/components/copy-selector.ts +16 -4
  715. package/src/modes/components/model-selector.ts +17 -17
  716. package/src/modes/components/session-selector.ts +12 -4
  717. package/src/modes/components/status-line/component.ts +4 -0
  718. package/src/modes/components/status-line/segments.ts +6 -5
  719. package/src/modes/components/status-line/types.ts +4 -0
  720. package/src/modes/components/tool-execution.ts +8 -3
  721. package/src/modes/controllers/command-controller.ts +10 -0
  722. package/src/modes/controllers/event-controller.ts +4 -3
  723. package/src/modes/controllers/extension-ui-controller.test.ts +58 -0
  724. package/src/modes/controllers/extension-ui-controller.ts +12 -6
  725. package/src/modes/controllers/input-controller.ts +8 -0
  726. package/src/modes/controllers/selector-controller.ts +18 -9
  727. package/src/modes/controllers/streaming-reveal.ts +12 -5
  728. package/src/modes/controllers/tool-args-reveal.ts +13 -6
  729. package/src/modes/interactive-mode.ts +54 -28
  730. package/src/modes/prompt-action-autocomplete.ts +18 -0
  731. package/src/modes/theme/shimmer.ts +37 -1
  732. package/src/modes/utils/transcript-render-helpers.test.ts +38 -0
  733. package/src/modes/utils/transcript-render-helpers.ts +14 -0
  734. package/src/modes/utils/ui-helpers.ts +5 -1
  735. package/src/prompts/system/workflow-notice.md +1 -1
  736. package/src/prompts/tools/bash.md +9 -7
  737. package/src/prompts/tools/grep.md +1 -1
  738. package/src/prompts/tools/memory-edit.md +2 -0
  739. package/src/prompts/tools/recall.md +2 -0
  740. package/src/sdk.ts +112 -12
  741. package/src/session/agent-session.ts +203 -61
  742. package/src/session/messages.ts +102 -2
  743. package/src/session/session-context.ts +60 -10
  744. package/src/session/session-entries.ts +4 -0
  745. package/src/session/session-history-format.ts +12 -0
  746. package/src/session/session-manager.ts +129 -10
  747. package/src/session/settings-stream-fn.ts +1 -0
  748. package/src/session/unexpected-stop-classifier.ts +6 -3
  749. package/src/slash-commands/builtin-registry.ts +7 -4
  750. package/src/slash-commands/helpers/usage-report.ts +3 -0
  751. package/src/slash-commands/types.ts +2 -0
  752. package/src/task/executor.ts +23 -3
  753. package/src/task/isolation-runner.ts +38 -9
  754. package/src/tools/__tests__/glob.test.ts +37 -0
  755. package/src/tools/acp-bridge.ts +11 -1
  756. package/src/tools/bash-command-fixup.ts +3 -36
  757. package/src/tools/bash.ts +4 -13
  758. package/src/tools/browser/render.ts +6 -4
  759. package/src/tools/glob.ts +11 -1
  760. package/src/tools/index.ts +1 -1
  761. package/src/tools/inspect-image-renderer.ts +5 -4
  762. package/src/tools/read.ts +13 -8
  763. package/src/tools/render-utils.ts +4 -1
  764. package/src/tools/write.ts +9 -7
  765. package/src/tts/speech-enhancer.ts +7 -5
  766. package/src/tts/vocalizer.ts +9 -0
  767. package/src/utils/commit-message-generator.ts +7 -5
  768. package/src/utils/shell-snapshot.ts +10 -0
  769. package/src/utils/title-generator.ts +12 -7
  770. package/src/web/scrapers/docs-rs.ts +12 -1
  771. package/src/web/search/providers/xai.ts +43 -47
@@ -2,6 +2,7 @@ import * as fs from "node:fs/promises";
2
2
  import * as path from "node:path";
3
3
  import { getAgentDir, isEnoent } from "@oh-my-pi/pi-utils";
4
4
  import { getMemoryRoot } from "../memories";
5
+ import { getMnemopiSessionState, type MnemopiScopedMemoryHit, type MnemopiSessionState } from "../mnemopi/state";
5
6
  import { AgentRegistry } from "../registry/agent-registry";
6
7
  import { buildDirectoryResource } from "./filesystem-resource";
7
8
  import { validateRelativePath } from "./skill-protocol";
@@ -124,6 +125,75 @@ async function tryResolveInRoot(url: InternalUrl, memoryRoot: string): Promise<I
124
125
  };
125
126
  }
126
127
 
128
+ /**
129
+ * Snapshot of live mnemopi session states, deduplicated. A mnemopi backend
130
+ * always keeps its state on the {@link AgentSession} it was initialised for;
131
+ * subagents alias their parent's state, so different `session` objects can
132
+ * point at the same underlying banks. The dedupe below picks the
133
+ * canonical (non-aliased) state per bank set so `memory://<id>` resolves in
134
+ * one pass regardless of how many subagents are alive.
135
+ */
136
+ function mnemopiSessionStatesFromRegistry(): MnemopiSessionState[] {
137
+ const seen = new Set<unknown>();
138
+ const states: MnemopiSessionState[] = [];
139
+ for (const ref of AgentRegistry.global().list()) {
140
+ const session = ref.session;
141
+ if (!session) continue;
142
+ const state = getMnemopiSessionState(session);
143
+ if (!state) continue;
144
+ const primary = state.aliasOf ?? state;
145
+ if (seen.has(primary)) continue;
146
+ seen.add(primary);
147
+ states.push(primary);
148
+ }
149
+ return states;
150
+ }
151
+
152
+ /**
153
+ * Look up a mnemopi memory row by id across every live session's scoped banks.
154
+ * First hit wins; returns `null` when the id is not stored anywhere in scope.
155
+ */
156
+ function tryResolveMnemopiMemory(id: string): MnemopiScopedMemoryHit | null {
157
+ for (const state of mnemopiSessionStatesFromRegistry()) {
158
+ const hit = state?.getScopedMemory(id);
159
+ if (hit) return hit;
160
+ }
161
+ return null;
162
+ }
163
+
164
+ /**
165
+ * Render a mnemopi memory row as text/markdown with a small YAML-front-matter
166
+ * header. The frontmatter carries the metadata an agent needs to reason about
167
+ * a working vs episodic memory (bank, store, timestamps, importance) without
168
+ * having to reconstruct it from the recall preview.
169
+ */
170
+ function renderMnemopiMemory(url: InternalUrl, hit: MnemopiScopedMemoryHit): InternalResource {
171
+ const { row, bank, store } = hit;
172
+ const meta = row.metadata == null ? "" : `metadata: ${JSON.stringify(row.metadata)}\n`;
173
+ const header =
174
+ "---\n" +
175
+ `id: ${row.id}\n` +
176
+ `bank: ${bank}\n` +
177
+ `store: ${store}\n` +
178
+ (row.memory_type ? `memory_type: ${row.memory_type}\n` : "") +
179
+ (row.source ? `source: ${row.source}\n` : "") +
180
+ (row.timestamp ? `timestamp: ${row.timestamp}\n` : "") +
181
+ (row.created_at ? `created_at: ${row.created_at}\n` : "") +
182
+ (row.importance != null ? `importance: ${row.importance}\n` : "") +
183
+ (row.veracity ? `veracity: ${row.veracity}\n` : "") +
184
+ (row.session_id ? `session_id: ${row.session_id}\n` : "") +
185
+ meta +
186
+ "---\n\n";
187
+ const content = `${header}${row.content}`;
188
+ return {
189
+ url: url.href,
190
+ content,
191
+ contentType: "text/markdown",
192
+ size: Buffer.byteLength(content, "utf-8"),
193
+ notes: [],
194
+ };
195
+ }
196
+
127
197
  /**
128
198
  * Protocol handler for memory:// URLs.
129
199
  *
@@ -136,8 +206,31 @@ export class MemoryProtocolHandler implements ProtocolHandler {
136
206
  readonly immutable = true;
137
207
 
138
208
  async resolve(url: InternalUrl): Promise<InternalResource> {
139
- const roots = memoryRootsFromRegistry();
209
+ const namespace = url.rawHost || url.hostname;
210
+ if (!namespace) {
211
+ throw new Error("memory:// URL requires a namespace: memory://root or memory://<memory-id>");
212
+ }
140
213
 
214
+ // Mnemopi rows live in SQLite banks per session, keyed by memory id.
215
+ // Any host other than the file-backed `root` namespace is treated as a
216
+ // mnemopi memory id lookup. This is the read counterpart to
217
+ // `memory_edit update` and lets agents inspect the full content of a
218
+ // clipped recall preview before overwriting it (issue #4443).
219
+ if (namespace !== MEMORY_NAMESPACE) {
220
+ const mnemopiStates = mnemopiSessionStatesFromRegistry();
221
+ if (mnemopiStates.length === 0) {
222
+ throw new Error(
223
+ `Unknown memory namespace: ${namespace}. Supported: ${MEMORY_NAMESPACE} (file-backed memory summary), or a mnemopi memory id when memory.backend=mnemopi is active.`,
224
+ );
225
+ }
226
+ const hit = tryResolveMnemopiMemory(namespace);
227
+ if (hit) return renderMnemopiMemory(url, hit);
228
+ throw new Error(
229
+ `Mnemopi memory ${namespace} not found in any scoped bank. Use \`recall\` to list available ids.`,
230
+ );
231
+ }
232
+
233
+ const roots = memoryRootsFromRegistry();
141
234
  if (roots.length === 0) {
142
235
  throw new Error(
143
236
  "Memory artifacts are not available for this project yet. Run a session with memories enabled first.",
@@ -167,7 +260,16 @@ export class MemoryProtocolHandler implements ProtocolHandler {
167
260
  }
168
261
 
169
262
  async complete(): Promise<UrlCompletion[]> {
170
- if (memoryRootsFromRegistry().length === 0) return [];
171
- return [{ value: MEMORY_NAMESPACE, description: "Project memory summary" }];
263
+ const completions: UrlCompletion[] = [];
264
+ if (memoryRootsFromRegistry().length > 0) {
265
+ completions.push({ value: MEMORY_NAMESPACE, description: "Project memory summary" });
266
+ }
267
+ if (mnemopiSessionStatesFromRegistry().length > 0) {
268
+ completions.push({
269
+ value: "<memory-id>",
270
+ description: "Full mnemopi memory by id (from recall)",
271
+ });
272
+ }
273
+ return completions;
172
274
  }
173
275
  }
package/src/lsp/client.ts CHANGED
@@ -176,6 +176,19 @@ const CLIENT_CAPABILITIES = {
176
176
  },
177
177
  };
178
178
 
179
+ /** LSP `FileChangeType` values for workspace/didChangeWatchedFiles notifications. */
180
+ export enum FileChangeType {
181
+ Created = 1,
182
+ Changed = 2,
183
+ Deleted = 3,
184
+ }
185
+
186
+ /** Filesystem change authored by the harness and announced to active LSP clients. */
187
+ export interface WatchedFileChange {
188
+ filePath: string;
189
+ type: FileChangeType;
190
+ }
191
+
179
192
  // =============================================================================
180
193
  // LSP Message Protocol
181
194
  // =============================================================================
@@ -944,6 +957,63 @@ export async function notifySaved(client: LspClient, filePath: string, signal?:
944
957
  client.lastActivity = Date.now();
945
958
  }
946
959
 
960
+ function isPathInsideWorkspace(filePath: string, workspace: string): boolean {
961
+ const relative = path.relative(workspace, path.resolve(filePath));
962
+ return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
963
+ }
964
+
965
+ /** Budget for the one-way watched-files notification: a wedged server that
966
+ * stops draining stdin must never hang the filesystem mutation that
967
+ * triggered it. Failures degrade to a debug log below. */
968
+ const WATCHED_FILES_NOTIFY_TIMEOUT_MS = 2_000;
969
+
970
+ /**
971
+ * Announce harness-authored filesystem changes to active LSP clients for `cwd`.
972
+ *
973
+ * This covers sibling files that are not open text documents, such as generated
974
+ * CSS modules or type files that another edited document imports immediately.
975
+ *
976
+ * The underlying stdin flush is self-bounded by
977
+ * {@link WATCHED_FILES_NOTIFY_TIMEOUT_MS}; only an abort of the caller's
978
+ * `signal` rejects.
979
+ */
980
+ export async function notifyWorkspaceWatchedFiles(
981
+ cwd: string,
982
+ changes: readonly WatchedFileChange[],
983
+ signal?: AbortSignal,
984
+ ): Promise<void> {
985
+ throwIfAborted(signal);
986
+ if (changes.length === 0) return;
987
+
988
+ const workspace = path.resolve(cwd);
989
+ const activeClients = Array.from(clients.values()).filter(
990
+ client => client.status === "ready" && path.resolve(client.cwd) === workspace,
991
+ );
992
+ if (activeClients.length === 0) return;
993
+
994
+ const timeoutSignal = AbortSignal.timeout(WATCHED_FILES_NOTIFY_TIMEOUT_MS);
995
+ const sendSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
996
+ const results = await Promise.allSettled(
997
+ activeClients.map(async client => {
998
+ const clientChanges = changes
999
+ .filter(change => isPathInsideWorkspace(change.filePath, workspace))
1000
+ .map(change => {
1001
+ const uri = fileToUri(change.filePath);
1002
+ client.diagnostics.delete(uri);
1003
+ return { uri, type: change.type };
1004
+ });
1005
+ if (clientChanges.length === 0) return;
1006
+ await sendNotification(client, "workspace/didChangeWatchedFiles", { changes: clientChanges }, sendSignal);
1007
+ }),
1008
+ );
1009
+ throwIfAborted(signal);
1010
+ for (const result of results) {
1011
+ if (result.status === "rejected") {
1012
+ logger.debug("LSP watched-files notification failed", { cwd, error: String(result.reason) });
1013
+ }
1014
+ }
1015
+ }
1016
+
947
1017
  /**
948
1018
  * Refresh a file in the LSP client.
949
1019
  * Increments version, sends didChange and didSave notifications.
package/src/lsp/index.ts CHANGED
@@ -18,10 +18,12 @@ import { ToolAbortError, ToolError, throwIfAborted } from "../tools/tool-errors"
18
18
  import { clampTimeout } from "../tools/tool-timeouts";
19
19
  import {
20
20
  ensureFileOpen,
21
+ FileChangeType,
21
22
  getActiveClients,
22
23
  getOrCreateClient,
23
24
  type LspServerStatus,
24
25
  notifySaved,
26
+ notifyWorkspaceWatchedFiles,
25
27
  refreshFile,
26
28
  sendNotification,
27
29
  sendRequest,
@@ -946,6 +948,7 @@ interface PendingWritethrough {
946
948
  dst: string;
947
949
  content: string;
948
950
  file?: BunFile;
951
+ changeType: FileChangeType;
949
952
  }
950
953
 
951
954
  interface LspWritethroughBatchRequest {
@@ -1139,6 +1142,7 @@ async function runLspWritethrough(
1139
1142
  content: string,
1140
1143
  cwd: string,
1141
1144
  options: ResolvedWritethroughOptions,
1145
+ changeType: FileChangeType,
1142
1146
  signal?: AbortSignal,
1143
1147
  file?: BunFile,
1144
1148
  deferred?: {
@@ -1147,16 +1151,42 @@ async function runLspWritethrough(
1147
1151
  },
1148
1152
  ): Promise<FileDiagnosticsResult | undefined> {
1149
1153
  const { enableFormat, enableDiagnostics } = options;
1154
+
1155
+ let finalContent = content;
1156
+ const writeContent = async (value: string) => (file ? file.write(value) : Bun.write(dst, value));
1157
+ const getWritePromise = once(() => writeContent(finalContent));
1158
+ let writeNotified = false;
1159
+ const notifyWriteCommitted = async (notifySignal: AbortSignal | undefined = signal) => {
1160
+ if (writeNotified) return;
1161
+ writeNotified = true;
1162
+ try {
1163
+ await notifyWorkspaceWatchedFiles(cwd, [{ filePath: dst, type: changeType }], notifySignal);
1164
+ } catch (error) {
1165
+ if (notifySignal?.aborted && !signal?.aborted) {
1166
+ // The operation budget died mid-notify while the caller is still
1167
+ // live: allow the post-write retry below to re-announce with the
1168
+ // caller's signal (didChangeWatchedFiles is idempotent).
1169
+ writeNotified = false;
1170
+ return;
1171
+ }
1172
+ throw error;
1173
+ }
1174
+ };
1175
+ if (!enableFormat && !enableDiagnostics) {
1176
+ await getWritePromise();
1177
+ await notifyWriteCommitted();
1178
+ return undefined;
1179
+ }
1180
+
1150
1181
  const config = getConfig(cwd);
1151
1182
  const servers = getServersForFile(config, dst);
1183
+
1152
1184
  if (servers.length === 0) {
1153
- return writethroughNoop(dst, content, signal, file);
1185
+ await getWritePromise();
1186
+ await notifyWriteCommitted();
1187
+ return undefined;
1154
1188
  }
1155
1189
  const { lspServers, customLinterServers } = splitServers(servers);
1156
-
1157
- let finalContent = content;
1158
- const writeContent = async (value: string) => (file ? file.write(value) : Bun.write(dst, value));
1159
- const getWritePromise = once(() => writeContent(finalContent));
1160
1190
  const useCustomFormatter = enableFormat && customLinterServers.length > 0;
1161
1191
 
1162
1192
  // Capture diagnostic versions BEFORE syncing to detect stale diagnostics
@@ -1169,6 +1199,7 @@ async function runLspWritethrough(
1169
1199
  let diagnostics: FileDiagnosticsResult | undefined;
1170
1200
  let timedOut = false;
1171
1201
  let synced = false;
1202
+ let operationSignal: AbortSignal | undefined;
1172
1203
  try {
1173
1204
  const timeoutSignal = AbortSignal.timeout(5_000);
1174
1205
  timeoutSignal.addEventListener(
@@ -1178,7 +1209,7 @@ async function runLspWritethrough(
1178
1209
  },
1179
1210
  { once: true },
1180
1211
  );
1181
- const operationSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
1212
+ operationSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
1182
1213
  await untilAborted(operationSignal, async () => {
1183
1214
  if (useCustomFormatter) {
1184
1215
  // Custom linters (e.g. Biome CLI) require on-disk input.
@@ -1186,6 +1217,7 @@ async function runLspWritethrough(
1186
1217
  finalContent = await formatContent(dst, content, cwd, customLinterServers, operationSignal);
1187
1218
  formatter = finalContent !== content ? FileFormatResult.FORMATTED : FileFormatResult.UNCHANGED;
1188
1219
  await writeContent(finalContent);
1220
+ await notifyWriteCommitted(operationSignal);
1189
1221
  await syncFileContent(dst, finalContent, cwd, lspServers, operationSignal);
1190
1222
  } else {
1191
1223
  // 1. Sync original content to LSP servers
@@ -1204,6 +1236,7 @@ async function runLspWritethrough(
1204
1236
 
1205
1237
  // 4. Write to disk
1206
1238
  await getWritePromise();
1239
+ await notifyWriteCommitted(operationSignal);
1207
1240
  }
1208
1241
 
1209
1242
  if (enableDiagnostics) {
@@ -1232,6 +1265,10 @@ async function runLspWritethrough(
1232
1265
  }
1233
1266
  }
1234
1267
  await getWritePromise();
1268
+ // The write above committed even though the operation budget elapsed:
1269
+ // announce it on the caller's signal — the dead `operationSignal` would
1270
+ // abort the notify before it ever reaches the server.
1271
+ await notifyWriteCommitted();
1235
1272
  }
1236
1273
 
1237
1274
  if (synced && enableDiagnostics) {
@@ -1279,7 +1316,16 @@ async function flushWritethroughBatch(
1279
1316
  onDeferredDiagnostics: bundle.onDeferredDiagnostics,
1280
1317
  signal: bundle.signal,
1281
1318
  } as const);
1282
- const diag = await runLspWritethrough(entry.dst, entry.content, cwd, options, signal, entry.file, deferredInner);
1319
+ const diag = await runLspWritethrough(
1320
+ entry.dst,
1321
+ entry.content,
1322
+ cwd,
1323
+ options,
1324
+ entry.changeType,
1325
+ signal,
1326
+ entry.file,
1327
+ deferredInner,
1328
+ );
1283
1329
  bundle?.finalize(diag);
1284
1330
  results.push(diag);
1285
1331
  }
@@ -1293,9 +1339,6 @@ export function createLspWritethrough(cwd: string, options?: WritethroughOptions
1293
1339
  enableDiagnostics: options?.enableDiagnostics ?? false,
1294
1340
  transformDiagnostics: options?.transformDiagnostics,
1295
1341
  };
1296
- if (!resolvedOptions.enableFormat && !resolvedOptions.enableDiagnostics) {
1297
- return writethroughNoop;
1298
- }
1299
1342
  return async (
1300
1343
  dst: string,
1301
1344
  content: string,
@@ -1304,6 +1347,7 @@ export function createLspWritethrough(cwd: string, options?: WritethroughOptions
1304
1347
  batch?: LspWritethroughBatchRequest,
1305
1348
  getDeferred?: (dst: string) => WritethroughDeferredHandle | undefined,
1306
1349
  ) => {
1350
+ const changeType = (await Bun.file(dst).exists()) ? FileChangeType.Changed : FileChangeType.Created;
1307
1351
  if (!batch) {
1308
1352
  const bundle = getDeferred?.(dst);
1309
1353
  const deferredInner =
@@ -1312,13 +1356,22 @@ export function createLspWritethrough(cwd: string, options?: WritethroughOptions
1312
1356
  onDeferredDiagnostics: bundle.onDeferredDiagnostics,
1313
1357
  signal: bundle.signal,
1314
1358
  } as const);
1315
- const diagnostics = await runLspWritethrough(dst, content, cwd, resolvedOptions, signal, file, deferredInner);
1359
+ const diagnostics = await runLspWritethrough(
1360
+ dst,
1361
+ content,
1362
+ cwd,
1363
+ resolvedOptions,
1364
+ changeType,
1365
+ signal,
1366
+ file,
1367
+ deferredInner,
1368
+ );
1316
1369
  bundle?.finalize(diagnostics);
1317
1370
  return diagnostics;
1318
1371
  }
1319
1372
 
1320
1373
  const state = getOrCreateWritethroughBatch(batch.id, resolvedOptions);
1321
- state.entries.set(dst, { dst, content, file });
1374
+ state.entries.set(dst, { dst, content, file, changeType });
1322
1375
 
1323
1376
  if (!batch.flush) {
1324
1377
  await writethroughNoop(dst, content, signal, file);
package/src/main.ts CHANGED
@@ -806,11 +806,13 @@ async function buildSessionOptions(
806
806
 
807
807
  // Auto-discover SYSTEM.md if no CLI system prompt provided
808
808
  const systemPromptSource = parsed.systemPrompt ?? discoverSystemPromptFile();
809
- const resolvedSystemPrompt = await resolvePromptInput(systemPromptSource, "system prompt");
810
809
  const appendPromptSource = parsed.appendSystemPrompt ?? discoverAppendSystemPromptFile();
811
- const resolvedAppendPrompt = await resolvePromptInput(appendPromptSource, "append system prompt");
812
810
  const titleSystemPromptSource = discoverTitleSystemPromptFile();
813
- const titleSystemPrompt = await resolvePromptInput(titleSystemPromptSource, "title system prompt");
811
+ const [resolvedSystemPrompt, resolvedAppendPrompt, titleSystemPrompt] = await Promise.all([
812
+ resolvePromptInput(systemPromptSource, "system prompt"),
813
+ resolvePromptInput(appendPromptSource, "append system prompt"),
814
+ resolvePromptInput(titleSystemPromptSource, "title system prompt"),
815
+ ]);
814
816
 
815
817
  if (sessionManager) {
816
818
  options.sessionManager = sessionManager;
@@ -398,12 +398,13 @@ function extractSegmentsFromContentStream(raw: string, pageNumber: number): Segm
398
398
 
399
399
  /**
400
400
  * Fast tokenizer for PDF content streams.
401
- * Splits on whitespace, skipping comments and string literals.
401
+ * Splits on whitespace, skipping comments, string literals, and inline image payloads.
402
402
  */
403
403
  function tokenizeContentStream(raw: string): string[] {
404
404
  const tokens: string[] = [];
405
405
  const len = raw.length;
406
406
  let i = 0;
407
+ let inInlineImage = false;
407
408
  while (i < len) {
408
409
  const ch = raw.charCodeAt(i);
409
410
  // Skip whitespace
@@ -449,6 +450,12 @@ function tokenizeContentStream(raw: string): string[] {
449
450
  i += 2;
450
451
  continue;
451
452
  }
453
+ // Skip stray closing delimiters from malformed streams. They cannot start
454
+ // a token, so leaving i unchanged would spin forever.
455
+ if (ch === 41 || ch === 62) {
456
+ i++;
457
+ continue;
458
+ }
452
459
  // Regular token: read until whitespace or delimiter
453
460
  const start = i;
454
461
  while (i < len) {
@@ -457,7 +464,24 @@ function tokenizeContentStream(raw: string): string[] {
457
464
  i++;
458
465
  }
459
466
  if (i > start) {
460
- tokens.push(raw.substring(start, i));
467
+ const token = raw.substring(start, i);
468
+ tokens.push(token);
469
+ if (token === "BI") {
470
+ inInlineImage = true;
471
+ } else if (token === "ID" && inInlineImage) {
472
+ while (i < len && raw.charCodeAt(i) <= 32) i++;
473
+ while (i < len) {
474
+ const c = raw.charCodeAt(i);
475
+ const prev = i === 0 ? 32 : raw.charCodeAt(i - 1);
476
+ const next = i + 2 >= len ? 32 : raw.charCodeAt(i + 2);
477
+ if (c === 69 && raw.charCodeAt(i + 1) === 73 && prev <= 32 && next <= 32) {
478
+ i += 2;
479
+ break;
480
+ }
481
+ i++;
482
+ }
483
+ inInlineImage = false;
484
+ }
461
485
  }
462
486
  }
463
487
  return tokens;
@@ -114,8 +114,41 @@ export interface MnemopiMemoryEditResult {
114
114
  }
115
115
 
116
116
  interface MnemopiStoredMemoryRow {
117
+ id?: unknown;
118
+ content?: unknown;
119
+ source?: unknown;
120
+ timestamp?: unknown;
121
+ importance?: unknown;
122
+ veracity?: unknown;
123
+ created_at?: unknown;
117
124
  memory_store?: unknown;
125
+ memory_type?: unknown;
118
126
  session_id?: unknown;
127
+ metadata?: unknown;
128
+ metadata_json?: unknown;
129
+ }
130
+
131
+ /**
132
+ * Full-row lookup result produced by {@link MnemopiSessionState.getScopedMemory}.
133
+ * Mirrors the shape stored in mnemopi's working/episodic tables, tagged with
134
+ * the scoped bank that actually held the row so callers can render it with
135
+ * meaningful context.
136
+ */
137
+ export interface MnemopiScopedMemoryHit {
138
+ bank: string;
139
+ store: "working" | "episodic";
140
+ row: {
141
+ id: string;
142
+ content: string;
143
+ source: string | null;
144
+ timestamp: string | null;
145
+ importance: number | null;
146
+ veracity: string | null;
147
+ created_at: string | null;
148
+ session_id: string | null;
149
+ memory_type: string | null;
150
+ metadata: unknown;
151
+ };
119
152
  }
120
153
 
121
154
  type MnemopiRetentionMessage = { role: string; content: string };
@@ -201,6 +234,49 @@ export class MnemopiSessionState {
201
234
  return this.scoped.retain;
202
235
  }
203
236
 
237
+ /**
238
+ * Read counterpart to {@link editScopedMemory}: fetch a memory row by id
239
+ * from any bank this session recalls from (retain, recall, global). First
240
+ * hit wins in the same order {@link editScopedMemory} would touch, so the
241
+ * shape matches what an `update`/`forget`/`invalidate` on the same id will
242
+ * see. Returns `null` when the id is not found anywhere in scope.
243
+ *
244
+ * Backs the coding-agent `memory://<id>` URL so agents can inspect the
245
+ * FULL content of a recall preview (recall clips content — see
246
+ * {@link RecallResult.truncated}) before issuing a wholesale
247
+ * `memory_edit update` that would otherwise overwrite unseen bytes
248
+ * (issue #4443).
249
+ */
250
+ getScopedMemory(id: string): MnemopiScopedMemoryHit | null {
251
+ const targets = dedupeScopedTargets([
252
+ this.scoped.retain,
253
+ ...this.scoped.recall,
254
+ ...(this.scoped.global ? [this.scoped.global] : []),
255
+ ]);
256
+ for (const target of targets) {
257
+ const raw = target.memory.get(id) as MnemopiStoredMemoryRow | null;
258
+ if (!raw) continue;
259
+ const store: MnemopiScopedMemoryHit["store"] = raw.memory_store === "episodic" ? "episodic" : "working";
260
+ return {
261
+ bank: target.bank,
262
+ store,
263
+ row: {
264
+ id: typeof raw.id === "string" ? raw.id : id,
265
+ content: typeof raw.content === "string" ? raw.content : "",
266
+ source: typeof raw.source === "string" ? raw.source : null,
267
+ timestamp: typeof raw.timestamp === "string" ? raw.timestamp : null,
268
+ importance: typeof raw.importance === "number" ? raw.importance : null,
269
+ veracity: typeof raw.veracity === "string" ? raw.veracity : null,
270
+ created_at: typeof raw.created_at === "string" ? raw.created_at : null,
271
+ session_id: typeof raw.session_id === "string" ? raw.session_id : null,
272
+ memory_type: typeof raw.memory_type === "string" ? raw.memory_type : null,
273
+ metadata: raw.metadata ?? raw.metadata_json ?? null,
274
+ },
275
+ };
276
+ }
277
+ return null;
278
+ }
279
+
204
280
  editScopedMemory(
205
281
  op: MnemopiMemoryEditOperation,
206
282
  id: string,
@@ -1823,6 +1823,10 @@ export class AcpAgent implements Agent {
1823
1823
  output: usage.output,
1824
1824
  cacheRead: usage.cacheRead,
1825
1825
  cacheWrite: usage.cacheWrite,
1826
+ totalTokens: usage.totalTokens,
1827
+ orchestrationInput: usage.orchestrationInput,
1828
+ orchestrationOutput: usage.orchestrationOutput,
1829
+ orchestrationCacheRead: usage.orchestrationCacheRead,
1826
1830
  premiumRequests: usage.premiumRequests,
1827
1831
  cost: usage.cost,
1828
1832
  };
@@ -1833,7 +1837,7 @@ export class AcpAgent implements Agent {
1833
1837
  const outputTokens = Math.max(0, current.output - previous.output);
1834
1838
  const cachedReadTokens = Math.max(0, current.cacheRead - previous.cacheRead);
1835
1839
  const cachedWriteTokens = Math.max(0, current.cacheWrite - previous.cacheWrite);
1836
- const totalTokens = inputTokens + outputTokens + cachedReadTokens + cachedWriteTokens;
1840
+ const totalTokens = Math.max(0, current.totalTokens - previous.totalTokens);
1837
1841
 
1838
1842
  if (totalTokens === 0) {
1839
1843
  return undefined;
@@ -68,16 +68,23 @@ function statusBadge(status: AgentStatus): string {
68
68
  }
69
69
  }
70
70
 
71
- function registerPersistedSubagents(registry: AgentRegistry, sessionFile: string | null | undefined): void {
71
+ async function registerPersistedSubagents(
72
+ registry: AgentRegistry,
73
+ sessionFile: string | null | undefined,
74
+ ): Promise<void> {
72
75
  if (!sessionFile?.endsWith(".jsonl")) return;
73
76
  const root = sessionFile.slice(0, -6);
74
- registerPersistedSubagentsFromDir(registry, root, undefined);
77
+ await registerPersistedSubagentsFromDir(registry, root, undefined);
75
78
  }
76
79
 
77
- function registerPersistedSubagentsFromDir(registry: AgentRegistry, dir: string, parentId: string | undefined): void {
80
+ async function registerPersistedSubagentsFromDir(
81
+ registry: AgentRegistry,
82
+ dir: string,
83
+ parentId: string | undefined,
84
+ ): Promise<void> {
78
85
  let entries: fs.Dirent[];
79
86
  try {
80
- entries = fs.readdirSync(dir, { withFileTypes: true });
87
+ entries = await fs.promises.readdir(dir, { withFileTypes: true });
81
88
  } catch {
82
89
  return;
83
90
  }
@@ -126,7 +133,7 @@ function registerPersistedSubagentsFromDir(registry: AgentRegistry, dir: string,
126
133
  status: "parked",
127
134
  });
128
135
  }
129
- registerPersistedSubagentsFromDir(registry, path.join(dir, id), id);
136
+ await registerPersistedSubagentsFromDir(registry, path.join(dir, id), id);
130
137
  }
131
138
  }
132
139
 
@@ -192,6 +199,8 @@ export class AgentHubOverlayComponent extends Container {
192
199
  #unsubscribers: Array<() => void> = [];
193
200
  #ageTimer: NodeJS.Timeout | undefined;
194
201
  #remote: AgentHubRemote | undefined;
202
+ /** Resolves after persisted historical subagents have been registered and rows refreshed. */
203
+ readonly persistedSubagentsReady: Promise<void>;
195
204
 
196
205
  // Table state
197
206
  #rows: AgentRef[] = [];
@@ -247,14 +256,23 @@ export class AgentHubOverlayComponent extends Container {
247
256
  this.#ageTimer = setInterval(() => this.#requestRender(), AGE_TICK_MS);
248
257
  this.#ageTimer.unref?.();
249
258
 
250
- if (!this.#remote) registerPersistedSubagents(this.#registry, deps.sessionFile);
259
+ this.persistedSubagentsReady = this.#remote
260
+ ? Promise.resolve()
261
+ : registerPersistedSubagents(this.#registry, deps.sessionFile)
262
+ .catch((error: unknown) => {
263
+ logger.warn("Failed to register persisted subagents", { error });
264
+ })
265
+ .then(() => {
266
+ this.#refreshRows();
267
+ })
268
+ .finally(() => this.#requestRender());
251
269
  this.#refreshRows();
252
270
  }
253
271
 
254
272
  /**
255
- * Whether the table view has no agents to show (every registered agent except
256
- * Main, after the persisted-subagent scan in the constructor). The double-←
257
- * gesture reads this to stay inert when there is nothing to open.
273
+ * Whether the current table view has no agents to show (every registered agent
274
+ * except Main). Persisted historical rows may arrive later; callers that need
275
+ * those included must wait for {@link persistedSubagentsReady} first.
258
276
  */
259
277
  get isEmpty(): boolean {
260
278
  return this.#rows.length === 0;