@oh-my-pi/pi-coding-agent 17.2.4 → 17.2.6

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 (348) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/{CHANGELOG-bpmhv26t.md → CHANGELOG-gs76k6wc.md} +69 -0
  3. package/dist/cli.js +4438 -3962
  4. package/dist/{template-8vdv6xb4.js → template-c2hyaytt.js} +8 -26
  5. package/dist/types/cli/args.d.ts +4 -1
  6. package/dist/types/cli/browser-relay-cli.d.ts +15 -0
  7. package/dist/types/cli/command-help.d.ts +99 -0
  8. package/dist/types/cli/gc-cli.d.ts +1 -0
  9. package/dist/types/cli/help-extra.d.ts +2 -0
  10. package/dist/types/cli/thinking-levels.d.ts +5 -0
  11. package/dist/types/cli/update-cli.d.ts +13 -0
  12. package/dist/types/commands/browser-relay.d.ts +38 -0
  13. package/dist/types/commands/commit.d.ts +3 -0
  14. package/dist/types/commands/complete.d.ts +1 -1
  15. package/dist/types/commands/completions.d.ts +6 -0
  16. package/dist/types/commands/grep.d.ts +3 -0
  17. package/dist/types/commands/join.d.ts +4 -0
  18. package/dist/types/commands/launch-help.d.ts +171 -0
  19. package/dist/types/commands/launch.d.ts +5 -1
  20. package/dist/types/commands/models.d.ts +3 -0
  21. package/dist/types/commands/say.d.ts +10 -0
  22. package/dist/types/commands/worktree.d.ts +3 -0
  23. package/dist/types/config/keybindings.d.ts +5 -0
  24. package/dist/types/config/model-discovery.d.ts +2 -2
  25. package/dist/types/config/models-config-schema-bundle.d.ts +3 -0
  26. package/dist/types/config/models-config-schema.d.ts +2 -0
  27. package/dist/types/config/models-config.d.ts +1 -0
  28. package/dist/types/config/service-tier.d.ts +2 -0
  29. package/dist/types/config/settings-schema.d.ts +69 -21
  30. package/dist/types/cursor-bridge-tools.d.ts +1 -1
  31. package/dist/types/cursor.d.ts +7 -4
  32. package/dist/types/edit/index.d.ts +3 -3
  33. package/dist/types/edit/modes/replace.d.ts +22 -15
  34. package/dist/types/edit/renderer.d.ts +1 -1
  35. package/dist/types/eval/py/kernel.d.ts +3 -1
  36. package/dist/types/eval/py/spawn-options.d.ts +12 -16
  37. package/dist/types/extensibility/legacy-pi-ai-shim.d.ts +8 -1
  38. package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +1 -1
  39. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
  40. package/dist/types/launch/broker.d.ts +1 -1
  41. package/dist/types/launch/client.d.ts +15 -4
  42. package/dist/types/launch/ensure.d.ts +8 -0
  43. package/dist/types/launch/paths.d.ts +1 -1
  44. package/dist/types/launch/protocol.d.ts +19 -2
  45. package/dist/types/lsp/client.d.ts +2 -0
  46. package/dist/types/lsp/mux/daemon.d.ts +15 -0
  47. package/dist/types/lsp/mux/protocol.d.ts +57 -0
  48. package/dist/types/lsp/mux/server.d.ts +18 -0
  49. package/dist/types/lsp/types.d.ts +22 -2
  50. package/dist/types/main.d.ts +2 -0
  51. package/dist/types/mnemopi/embed-client.d.ts +1 -1
  52. package/dist/types/mnemopi/state.d.ts +0 -23
  53. package/dist/types/modes/components/assistant-message.d.ts +2 -0
  54. package/dist/types/modes/components/btw-panel.d.ts +3 -0
  55. package/dist/types/modes/components/custom-editor.d.ts +2 -1
  56. package/dist/types/modes/components/read-tool-group.d.ts +2 -0
  57. package/dist/types/modes/components/stripped-tool-calls-placeholder.d.ts +12 -0
  58. package/dist/types/modes/components/tool-execution.d.ts +2 -0
  59. package/dist/types/modes/controllers/btw-controller.d.ts +2 -0
  60. package/dist/types/modes/controllers/command-controller.d.ts +1 -0
  61. package/dist/types/modes/controllers/input-controller.d.ts +1 -0
  62. package/dist/types/modes/interactive-mode.d.ts +5 -1
  63. package/dist/types/modes/types.d.ts +4 -1
  64. package/dist/types/modes/workflow.d.ts +2 -1
  65. package/dist/types/sdk.d.ts +3 -1
  66. package/dist/types/secrets/index.d.ts +1 -1
  67. package/dist/types/security/contracts/schemas.d.ts +405 -403
  68. package/dist/types/session/agent-session-types.d.ts +8 -1
  69. package/dist/types/session/agent-session.d.ts +26 -2
  70. package/dist/types/session/indexed-session-storage.d.ts +1 -0
  71. package/dist/types/session/launch-completion.d.ts +10 -0
  72. package/dist/types/session/session-advisors.d.ts +1 -1
  73. package/dist/types/session/session-context.d.ts +2 -1
  74. package/dist/types/session/session-entries.d.ts +15 -1
  75. package/dist/types/session/session-maintenance.d.ts +1 -0
  76. package/dist/types/session/session-manager.d.ts +23 -11
  77. package/dist/types/session/session-stats.d.ts +10 -0
  78. package/dist/types/session/session-storage.d.ts +15 -3
  79. package/dist/types/session/yield-queue.d.ts +6 -1
  80. package/dist/types/system-prompt.d.ts +4 -1
  81. package/dist/types/task/index.d.ts +2 -1
  82. package/dist/types/task/spawn-policy.d.ts +5 -0
  83. package/dist/types/thinking.d.ts +1 -7
  84. package/dist/types/tools/ast-grep.d.ts +1 -1
  85. package/dist/types/tools/browser/registry.d.ts +2 -1
  86. package/dist/types/tools/browser/relay/bridge.d.ts +35 -0
  87. package/dist/types/tools/browser/relay/daemon.d.ts +16 -0
  88. package/dist/types/tools/browser/relay/kind.d.ts +19 -0
  89. package/dist/types/tools/browser/relay/protocol.d.ts +97 -0
  90. package/dist/types/tools/browser/relay/server.d.ts +35 -0
  91. package/dist/types/tools/browser/render.d.ts +1 -0
  92. package/dist/types/tools/browser.d.ts +3 -0
  93. package/dist/types/tools/computer/exposure.d.ts +9 -7
  94. package/dist/types/tools/computer/protocol.d.ts +70 -17
  95. package/dist/types/tools/computer/supervisor.d.ts +23 -10
  96. package/dist/types/tools/computer/worker-entry.d.ts +1 -0
  97. package/dist/types/tools/computer/worker.d.ts +42 -7
  98. package/dist/types/tools/computer-renderer.d.ts +7 -5
  99. package/dist/types/tools/computer.d.ts +25 -44
  100. package/dist/types/tools/context.d.ts +3 -0
  101. package/dist/types/tools/glob.d.ts +1 -1
  102. package/dist/types/tools/grep.d.ts +1 -1
  103. package/dist/types/tools/index.d.ts +9 -0
  104. package/dist/types/tools/render-utils.d.ts +2 -0
  105. package/dist/types/tools/{browser/run-cancellation.d.ts → run-scope.d.ts} +8 -8
  106. package/dist/types/tools/tool-timeouts.d.ts +5 -0
  107. package/dist/types/tools/xdev.d.ts +8 -0
  108. package/dist/types/utils/clipboard.d.ts +2 -2
  109. package/dist/types/web/kagi.d.ts +1 -0
  110. package/dist/types/web/search/index.d.ts +1 -1
  111. package/dist/types/web/search/providers/anthropic.d.ts +1 -0
  112. package/dist/types/web/search/providers/base.d.ts +2 -0
  113. package/dist/types/web/search/providers/brave.d.ts +1 -0
  114. package/dist/types/web/search/providers/browser-page.d.ts +1 -0
  115. package/dist/types/web/search/providers/codex.d.ts +1 -0
  116. package/dist/types/web/search/providers/exa.d.ts +1 -0
  117. package/dist/types/web/search/providers/firecrawl.d.ts +1 -0
  118. package/dist/types/web/search/providers/gemini.d.ts +1 -0
  119. package/dist/types/web/search/providers/jina.d.ts +1 -0
  120. package/dist/types/web/search/providers/kagi.d.ts +1 -0
  121. package/dist/types/web/search/providers/kimi.d.ts +1 -0
  122. package/dist/types/web/search/providers/parallel.d.ts +1 -0
  123. package/dist/types/web/search/providers/perplexity.d.ts +1 -0
  124. package/dist/types/web/search/providers/searxng.d.ts +1 -0
  125. package/dist/types/web/search/providers/tavily.d.ts +1 -0
  126. package/dist/types/web/search/providers/tinyfish.d.ts +1 -0
  127. package/dist/types/web/search/providers/utils.d.ts +6 -9
  128. package/dist/types/web/search/providers/zai.d.ts +1 -0
  129. package/dist/types/web/search/types.d.ts +4 -0
  130. package/package.json +12 -12
  131. package/src/cli/args.ts +7 -87
  132. package/src/cli/browser-relay-cli.ts +119 -0
  133. package/src/cli/command-help.ts +103 -0
  134. package/src/cli/completion-gen.ts +5 -5
  135. package/src/cli/flag-tables.ts +9 -0
  136. package/src/cli/gc-cli.ts +641 -21
  137. package/src/cli/help-extra.ts +89 -0
  138. package/src/cli/setup-cli.ts +13 -21
  139. package/src/cli/thinking-levels.ts +7 -0
  140. package/src/cli/update-cli.ts +26 -7
  141. package/src/cli-commands.ts +170 -33
  142. package/src/cli.ts +17 -5
  143. package/src/commands/acp.ts +3 -1
  144. package/src/commands/agents.ts +3 -2
  145. package/src/commands/auth-broker.ts +3 -2
  146. package/src/commands/auth-gateway.ts +3 -2
  147. package/src/commands/bench.ts +2 -3
  148. package/src/commands/browser-relay.ts +53 -0
  149. package/src/commands/cleanse.ts +2 -2
  150. package/src/commands/commit.ts +3 -2
  151. package/src/commands/complete.ts +2 -1
  152. package/src/commands/completions.ts +3 -2
  153. package/src/commands/config.ts +3 -2
  154. package/src/commands/dry-balance.ts +2 -2
  155. package/src/commands/gallery.ts +3 -2
  156. package/src/commands/gc.ts +3 -2
  157. package/src/commands/grep.ts +3 -2
  158. package/src/commands/grievances.ts +3 -2
  159. package/src/commands/install.ts +2 -2
  160. package/src/commands/join.ts +3 -2
  161. package/src/commands/launch-help.ts +116 -0
  162. package/src/commands/launch.ts +7 -191
  163. package/src/commands/models.ts +3 -2
  164. package/src/commands/plugin.ts +3 -2
  165. package/src/commands/read.ts +3 -2
  166. package/src/commands/say.ts +3 -2
  167. package/src/commands/setup.ts +3 -2
  168. package/src/commands/shell.ts +3 -2
  169. package/src/commands/ssh.ts +3 -2
  170. package/src/commands/stats.ts +3 -2
  171. package/src/commands/tiny-models.ts +2 -2
  172. package/src/commands/token.ts +2 -2
  173. package/src/commands/ttsr.ts +2 -2
  174. package/src/commands/update.ts +3 -2
  175. package/src/commands/usage.ts +3 -2
  176. package/src/commands/web-search.ts +3 -2
  177. package/src/commands/worktree.ts +3 -2
  178. package/src/config/keybindings.ts +5 -0
  179. package/src/config/model-discovery.ts +44 -27
  180. package/src/config/model-registry.ts +19 -13
  181. package/src/config/models-config-schema-bundle.ts +9 -0
  182. package/src/config/resolve-config-value.ts +2 -1
  183. package/src/config/service-tier.ts +5 -0
  184. package/src/config/settings-schema.ts +72 -20
  185. package/src/config/settings.ts +1 -1
  186. package/src/cursor-bridge-tools.ts +1 -1
  187. package/src/cursor.ts +10 -14
  188. package/src/edit/diff.ts +17 -8
  189. package/src/edit/index.ts +20 -7
  190. package/src/edit/modes/replace.ts +93 -40
  191. package/src/edit/renderer.ts +1 -1
  192. package/src/edit/streaming.ts +14 -17
  193. package/src/eval/py/kernel.ts +2 -1
  194. package/src/eval/py/spawn-options.ts +24 -29
  195. package/src/export/html/index.ts +10 -3
  196. package/src/export/html/template.js +8 -26
  197. package/src/export/share.ts +4 -0
  198. package/src/extensibility/extensions/wrapper.ts +1 -0
  199. package/src/extensibility/legacy-pi-ai-shim.ts +22 -1
  200. package/src/extensibility/legacy-pi-coding-agent-shim.ts +7 -6
  201. package/src/extensibility/plugins/legacy-pi-compat.ts +124 -57
  202. package/src/extensibility/skills.ts +11 -0
  203. package/src/extensibility/utils.ts +10 -2
  204. package/src/launch/broker.ts +223 -7
  205. package/src/launch/client.ts +192 -21
  206. package/src/launch/ensure.ts +73 -0
  207. package/src/launch/paths.ts +1 -1
  208. package/src/launch/protocol.ts +54 -2
  209. package/src/lsp/client.ts +23 -2
  210. package/src/lsp/index.ts +8 -0
  211. package/src/lsp/mux/daemon.ts +348 -0
  212. package/src/lsp/mux/protocol.ts +96 -0
  213. package/src/lsp/mux/server.ts +797 -0
  214. package/src/lsp/types.ts +28 -2
  215. package/src/main.ts +20 -8
  216. package/src/mcp/config-writer.ts +1 -1
  217. package/src/mcp/oauth-flow.ts +11 -1
  218. package/src/mnemopi/embed-client.ts +49 -2
  219. package/src/mnemopi/state.ts +57 -23
  220. package/src/modes/components/assistant-message.ts +11 -0
  221. package/src/modes/components/btw-panel.ts +41 -4
  222. package/src/modes/components/chat-transcript-builder.ts +4 -0
  223. package/src/modes/components/custom-editor.ts +9 -0
  224. package/src/modes/components/read-tool-group.ts +10 -0
  225. package/src/modes/components/status-line/component.ts +1 -1
  226. package/src/modes/components/stripped-tool-calls-placeholder.ts +35 -0
  227. package/src/modes/components/tool-execution.ts +8 -0
  228. package/src/modes/components/tree-selector.ts +46 -48
  229. package/src/modes/controllers/btw-controller.ts +55 -7
  230. package/src/modes/controllers/command-controller.ts +31 -0
  231. package/src/modes/controllers/event-controller.ts +17 -0
  232. package/src/modes/controllers/input-controller.ts +63 -8
  233. package/src/modes/controllers/mcp-command-controller.ts +11 -5
  234. package/src/modes/controllers/selector-controller.ts +20 -0
  235. package/src/modes/interactive-mode.ts +18 -2
  236. package/src/modes/types.ts +9 -1
  237. package/src/modes/utils/hotkeys-markdown.ts +1 -0
  238. package/src/modes/utils/interactive-context-helpers.ts +1 -0
  239. package/src/modes/utils/ui-helpers.ts +6 -10
  240. package/src/modes/workflow.ts +8 -2
  241. package/src/prompts/agents/init.md +1 -1
  242. package/src/prompts/session/launch-completion.md +1 -0
  243. package/src/prompts/system/plan-mode-active.md +2 -2
  244. package/src/prompts/system/system-prompt.md +26 -52
  245. package/src/prompts/system/workflow-notice.md +3 -3
  246. package/src/prompts/tools/ast-grep.md +1 -1
  247. package/src/prompts/tools/bash.md +1 -1
  248. package/src/prompts/tools/browser.md +1 -0
  249. package/src/prompts/tools/computer.md +21 -21
  250. package/src/prompts/tools/glob.md +1 -1
  251. package/src/prompts/tools/grep.md +1 -1
  252. package/src/prompts/tools/replace.md +5 -4
  253. package/src/prompts/tools/task.md +4 -4
  254. package/src/sdk.ts +49 -6
  255. package/src/secrets/index.ts +1 -1
  256. package/src/security/contracts/schemas.ts +205 -183
  257. package/src/security/contracts/validation.ts +5 -1
  258. package/src/security/store.ts +2 -2
  259. package/src/session/agent-session-types.ts +9 -1
  260. package/src/session/agent-session.ts +204 -15
  261. package/src/session/indexed-session-storage.ts +9 -0
  262. package/src/session/launch-completion.ts +37 -0
  263. package/src/session/prewalk.ts +24 -2
  264. package/src/session/session-advisors.ts +2 -2
  265. package/src/session/session-context.ts +42 -12
  266. package/src/session/session-dump-format.ts +1 -1
  267. package/src/session/session-entries.ts +17 -1
  268. package/src/session/session-maintenance.ts +38 -4
  269. package/src/session/session-manager.ts +123 -67
  270. package/src/session/session-paths.ts +118 -55
  271. package/src/session/session-stats.ts +48 -3
  272. package/src/session/session-storage.ts +30 -22
  273. package/src/session/stream-guards.ts +1 -1
  274. package/src/session/yield-queue.ts +121 -16
  275. package/src/slash-commands/builtin-registry.ts +37 -24
  276. package/src/system-prompt.ts +8 -3
  277. package/src/task/index.ts +23 -8
  278. package/src/task/spawn-policy.ts +14 -0
  279. package/src/thinking.ts +2 -8
  280. package/src/tools/ast-grep.ts +10 -4
  281. package/src/tools/browser/cmux/cmux-tab.ts +97 -14
  282. package/src/tools/browser/cmux/rpc.ts +2 -8
  283. package/src/tools/browser/registry.ts +53 -2
  284. package/src/tools/browser/relay/bridge.ts +945 -0
  285. package/src/tools/browser/relay/daemon.ts +117 -0
  286. package/src/tools/browser/relay/extension-assets/background.js.txt +242 -0
  287. package/src/tools/browser/relay/extension-assets/manifest.json.txt +14 -0
  288. package/src/tools/browser/relay/extension-assets/options.html.txt +53 -0
  289. package/src/tools/browser/relay/extension-assets/options.js.txt +23 -0
  290. package/src/tools/browser/relay/kind.ts +41 -0
  291. package/src/tools/browser/relay/protocol.ts +54 -0
  292. package/src/tools/browser/relay/server.ts +141 -0
  293. package/src/tools/browser/render.ts +4 -1
  294. package/src/tools/browser/shared-daemon.ts +7 -58
  295. package/src/tools/browser/tab-supervisor.ts +5 -4
  296. package/src/tools/browser/tab-worker.ts +33 -12
  297. package/src/tools/browser.ts +26 -1
  298. package/src/tools/computer/exposure.ts +11 -35
  299. package/src/tools/computer/protocol.ts +51 -10
  300. package/src/tools/computer/supervisor.ts +227 -124
  301. package/src/tools/computer/worker-entry.ts +11 -6
  302. package/src/tools/computer/worker.ts +695 -81
  303. package/src/tools/computer-renderer.ts +104 -65
  304. package/src/tools/computer.ts +134 -428
  305. package/src/tools/context.ts +3 -0
  306. package/src/tools/glob.ts +9 -2
  307. package/src/tools/grep.ts +12 -6
  308. package/src/tools/hub/launch.ts +122 -6
  309. package/src/tools/index.ts +9 -0
  310. package/src/tools/inspect-image.ts +32 -6
  311. package/src/tools/render-utils.ts +2 -0
  312. package/src/tools/{browser/run-cancellation.ts → run-scope.ts} +11 -11
  313. package/src/tools/tool-timeouts.ts +1 -0
  314. package/src/tools/xdev.ts +29 -2
  315. package/src/utils/clipboard.ts +40 -14
  316. package/src/utils/command-args.ts +26 -28
  317. package/src/utils/tool-choice.ts +0 -13
  318. package/src/web/kagi.ts +2 -1
  319. package/src/web/search/index.ts +18 -2
  320. package/src/web/search/providers/anthropic.ts +4 -1
  321. package/src/web/search/providers/base.ts +2 -0
  322. package/src/web/search/providers/brave.ts +3 -1
  323. package/src/web/search/providers/browser-page.ts +6 -4
  324. package/src/web/search/providers/codex.ts +4 -1
  325. package/src/web/search/providers/duckduckgo.ts +2 -1
  326. package/src/web/search/providers/ecosia.ts +2 -1
  327. package/src/web/search/providers/exa.ts +4 -2
  328. package/src/web/search/providers/firecrawl.ts +3 -1
  329. package/src/web/search/providers/gemini.ts +8 -2
  330. package/src/web/search/providers/google.ts +2 -1
  331. package/src/web/search/providers/jina.ts +12 -2
  332. package/src/web/search/providers/kagi.ts +3 -0
  333. package/src/web/search/providers/kimi.ts +5 -1
  334. package/src/web/search/providers/mojeek.ts +2 -1
  335. package/src/web/search/providers/parallel.ts +5 -1
  336. package/src/web/search/providers/perplexity.ts +6 -3
  337. package/src/web/search/providers/public.ts +1 -1
  338. package/src/web/search/providers/searxng.ts +11 -5
  339. package/src/web/search/providers/startpage.ts +10 -4
  340. package/src/web/search/providers/synthetic.ts +11 -5
  341. package/src/web/search/providers/tavily.ts +3 -1
  342. package/src/web/search/providers/tinyfish.ts +3 -1
  343. package/src/web/search/providers/utils.ts +12 -10
  344. package/src/web/search/providers/xai.ts +2 -2
  345. package/src/web/search/providers/zai.ts +18 -3
  346. package/src/web/search/types.ts +6 -0
  347. package/dist/types/config/file-lock.d.ts +0 -29
  348. package/src/config/file-lock.ts +0 -164
@@ -1,4 +1,3 @@
1
- import type { ptree } from "@oh-my-pi/pi-utils";
2
1
  export declare const lspSchema: import("arktype/internal/variants/object.ts").ObjectType<{
3
2
  action: "capabilities" | "code_actions" | "definition" | "diagnostics" | "hover" | "implementation" | "references" | "reload" | "rename" | "rename_file" | "request" | "status" | "symbols" | "type_definition";
4
3
  file?: string | undefined;
@@ -229,6 +228,27 @@ export interface ServerConfig {
229
228
  */
230
229
  createClient?: LinterClientFactory;
231
230
  }
231
+ /** Minimal write sink for the server-bound byte stream (satisfied by `Bun.FileSink` and the mux socket adapter). */
232
+ export interface LspWriteSink {
233
+ write(data: string | Uint8Array): number | Promise<number>;
234
+ flush(): number | void | Promise<number | void>;
235
+ }
236
+ /**
237
+ * Byte transport carrying one LSP JSON-RPC link. Structurally satisfied by
238
+ * `ptree.ChildProcess<"pipe">` (local server spawn) and by the socket adapter
239
+ * in `mux/daemon.ts` (broker-shared server). `exited` may reject (ptree kill).
240
+ */
241
+ export interface LspTransport {
242
+ readonly stdin: LspWriteSink;
243
+ readonly stdout: ReadableStream<Uint8Array>;
244
+ readonly exited: Promise<number>;
245
+ readonly exitCode: number | null;
246
+ readonly pid?: number;
247
+ /** Present and true on broker-shared mux links; `lsp reload` uses it to request a shared-server restart. */
248
+ readonly sharedMux?: boolean;
249
+ kill(): void;
250
+ peekStderr(): string;
251
+ }
232
252
  export interface OpenFile {
233
253
  version: number;
234
254
  languageId: string;
@@ -257,7 +277,7 @@ export interface LspClient {
257
277
  name: string;
258
278
  cwd: string;
259
279
  config: ServerConfig;
260
- proc: ptree.ChildProcess<"pipe">;
280
+ proc: LspTransport;
261
281
  requestId: number;
262
282
  diagnostics: Map<string, PublishedDiagnostics>;
263
283
  diagnosticsVersion: number;
@@ -13,6 +13,8 @@ import { type SessionInfo } from "./session/session-listing.js";
13
13
  import { SessionManager } from "./session/session-manager.js";
14
14
  type RunAcpMode = (createSession: AcpSessionFactory) => Promise<never>;
15
15
  export declare function writeStartupNotice(parsedArgs: Pick<Args, "mode">, text: string): void;
16
+ /** Reads a non-TTY stdin stream as prompt text. */
17
+ export declare function readPipedInput(): Promise<string | undefined>;
16
18
  export interface InteractiveModeNotify {
17
19
  kind: "warn" | "error" | "info";
18
20
  message: string;
@@ -34,7 +34,7 @@ export interface MnemopiSubprocessEmbeddingModel {
34
34
  }
35
35
  export declare class MnemopiEmbedClient {
36
36
  #private;
37
- constructor(spawnWorker?: () => MnemopiEmbedWorkerHandle);
37
+ constructor(spawnWorker?: () => MnemopiEmbedWorkerHandle, requestTimeoutMs?: number);
38
38
  /**
39
39
  * Load the named fastembed model inside the subprocess. Resolves to a
40
40
  * thin wrapper whose `embed()` round-trips through the same worker, or
@@ -162,29 +162,6 @@ export declare class MnemopiSessionState {
162
162
  extract?: boolean;
163
163
  sleep?: boolean;
164
164
  }): Promise<void>;
165
- /**
166
- * Release the per-session resources. Defaults to running a lighter
167
- * {@link consolidate} pass before closing handles: it retains the current
168
- * transcript and flushes in-flight extractions, but skips the synchronous
169
- * bank sleep so normal session shutdown returns promptly. Full promotion of
170
- * working memory into long-term storage is still performed by the explicit
171
- * `/memory enqueue` and backend enqueue paths. Callers that are about to
172
- * delete the DB files — e.g. `mnemopiBackend.clear` — pass
173
- * `{ consolidate: false }` to skip the retain/flush pass, since spending
174
- * tokens on memories that will be wiped on the next line is wasted work
175
- * (PR #2327 review).
176
- *
177
- * `timeoutMs` caps how long the consolidate await blocks the caller
178
- * (the user-visible `/quit` / `/exit` shutdown path passes this so
179
- * dispose returns within a UX budget — issue #3641). When the cap is
180
- * hit, dispose returns immediately and detaches the still-in-flight
181
- * consolidate; the SQLite handles are closed in the background once
182
- * the consolidate settles so writes never race a closed handle, and
183
- * any pending embeddings are SIGKILL'd along with the embed worker
184
- * (a tolerable loss — working memory rows are durable; only the
185
- * episodic promotion / embedding for the LAST few turns is skipped,
186
- * and `maybeRetainOnAgentEnd` has already retained earlier turns).
187
- */
188
165
  dispose(options?: {
189
166
  consolidate?: boolean;
190
167
  timeoutMs?: number;
@@ -63,6 +63,8 @@ export declare class AssistantMessageComponent extends Container {
63
63
  messagePersistenceKey(): string | undefined;
64
64
  /** Toggle rendering for assistant-native and tool-result images. */
65
65
  setImagesVisible(visible: boolean): void;
66
+ /** Toggle only images produced by tool results; assistant-native images remain governed by setImagesVisible. */
67
+ setToolResultImagesVisible(visible: boolean): void;
66
68
  setToolResultImages(toolCallId: string, images: ImageContent[]): void;
67
69
  updateContent(message: AssistantMessage, opts?: {
68
70
  transient?: boolean;
@@ -2,6 +2,7 @@ import { Container, type TUI } from "@oh-my-pi/pi-tui";
2
2
  interface BtwPanelComponentOptions {
3
3
  question: string;
4
4
  tui: TUI;
5
+ canBranch?: () => boolean;
5
6
  }
6
7
  export declare class BtwPanelComponent extends Container {
7
8
  #private;
@@ -9,6 +10,8 @@ export declare class BtwPanelComponent extends Container {
9
10
  appendText(delta: string): void;
10
11
  setAnswer(text: string): void;
11
12
  markComplete(): void;
13
+ /** Shows that the completed answer is being promoted into the chat session. */
14
+ markBranching(): void;
12
15
  markAborted(): void;
13
16
  markError(message: string): void;
14
17
  isBranchable(): boolean;
@@ -1,7 +1,7 @@
1
1
  import type { ImageContent } from "@oh-my-pi/pi-ai";
2
2
  import { Editor, type KeyId, TUI } from "@oh-my-pi/pi-tui";
3
3
  import type { AppKeybinding } from "../../config/keybindings.js";
4
- type ConfigurableEditorAction = Extract<AppKeybinding, "app.interrupt" | "app.clear" | "app.exit" | "app.suspend" | "app.display.reset" | "app.thinking.cycle" | "app.model.cycleForward" | "app.model.cycleBackward" | "app.model.select" | "app.model.selectTemporary" | "app.tools.expand" | "app.thinking.toggle" | "app.editor.external" | "app.history.search" | "app.message.dequeue" | "app.retry" | "app.clipboard.pasteImage" | "app.clipboard.pasteTextRaw" | "app.clipboard.copyPrompt">;
4
+ type ConfigurableEditorAction = Extract<AppKeybinding, "app.interrupt" | "app.clear" | "app.exit" | "app.suspend" | "app.display.reset" | "app.thinking.cycle" | "app.model.cycleForward" | "app.model.cycleBackward" | "app.model.select" | "app.model.selectTemporary" | "app.tools.expand" | "app.tools.toggleVisibility" | "app.thinking.toggle" | "app.editor.external" | "app.history.search" | "app.message.dequeue" | "app.retry" | "app.clipboard.pasteImage" | "app.clipboard.pasteTextRaw" | "app.clipboard.copyPrompt">;
5
5
  /** Max gap (ms) between two spaces for the later one to count as OS key auto-repeat rather than a
6
6
  * deliberate press. OS auto-repeat is fast; a deliberate tap (even a fast one) is slower. */
7
7
  export declare const SPACE_REPEAT_MAX_GAP_MS = 120;
@@ -141,6 +141,7 @@ export declare class CustomEditor extends Editor {
141
141
  onCycleModelBackward?: () => void;
142
142
  onSelectModel?: () => void;
143
143
  onExpandTools?: () => void;
144
+ onToggleToolActivity?: () => void;
144
145
  onToggleThinking?: () => void;
145
146
  onExternalEditor?: () => void;
146
147
  onHistorySearch?: () => void;
@@ -27,6 +27,7 @@ type ReadToolGroupOptions = {
27
27
  export declare class ReadToolGroupComponent extends Container implements ToolExecutionHandle {
28
28
  #private;
29
29
  constructor(options?: ReadToolGroupOptions);
30
+ render(width: number): readonly string[];
30
31
  isTranscriptBlockFinalized(): boolean;
31
32
  finalize(): void;
32
33
  /**
@@ -60,6 +61,7 @@ export declare class ReadToolGroupComponent extends Container implements ToolExe
60
61
  attachUsage(toolCallIds: readonly string[], usage: Usage, durationMs?: number, ttftMs?: number, timestamp?: number): boolean;
61
62
  setArgsComplete(_toolCallId?: string): void;
62
63
  setExpanded(expanded: boolean): void;
64
+ setToolActivityVisible(visible: boolean): void;
63
65
  getComponent(): Component;
64
66
  }
65
67
  export {};
@@ -0,0 +1,12 @@
1
+ import { Text } from "@oh-my-pi/pi-tui";
2
+ /**
3
+ * Dim transcript marker for tool calls stripped from the resolved branch
4
+ * (failed/retried turns, results on sibling branches). It is tool activity,
5
+ * so it hides and reappears with the `display.hideToolActivity` toggle.
6
+ */
7
+ export declare class StrippedToolCallsPlaceholder extends Text {
8
+ #private;
9
+ constructor(strippedToolCalls: number, toolActivityVisible: boolean);
10
+ setToolActivityVisible(visible: boolean): void;
11
+ render(width: number): readonly string[];
12
+ }
@@ -48,6 +48,7 @@ export interface ToolExecutionHandle extends Component {
48
48
  }, isPartial?: boolean, toolCallId?: string): void;
49
49
  setArgsComplete(toolCallId?: string): void;
50
50
  setExpanded(expanded: boolean): void;
51
+ setToolActivityVisible(visible: boolean): void;
51
52
  /** Freeze the block as final history: stop spinners and let it commit to scrollback. */
52
53
  seal(): void;
53
54
  }
@@ -139,6 +140,7 @@ export declare class ToolExecutionComponent extends Container implements NativeS
139
140
  */
140
141
  stopAnimation(): void;
141
142
  setExpanded(expanded: boolean): void;
143
+ setToolActivityVisible(visible: boolean): void;
142
144
  setShowImages(show: boolean): void;
143
145
  invalidate(): void;
144
146
  render(width: number): readonly string[];
@@ -5,6 +5,8 @@ export declare class BtwController {
5
5
  constructor(ctx: InteractiveModeContext);
6
6
  hasActiveRequest(): boolean;
7
7
  canBranch(): boolean;
8
+ /** Whether plain `b` is currently reserved for a completed or pending branch action. */
9
+ handlesBranchKey(): boolean;
8
10
  canCopy(): boolean;
9
11
  handleCopy(): Promise<boolean>;
10
12
  handleBranch(): Promise<boolean>;
@@ -27,6 +27,7 @@ export declare class CommandController {
27
27
  handleMemoryCommand(text: string): Promise<void>;
28
28
  handleClearCommand(): Promise<void>;
29
29
  handleFreshCommand(): Promise<void>;
30
+ handleResetContextCommand(): Promise<void>;
30
31
  handleDropCommand(): Promise<void>;
31
32
  handleForkCommand(): Promise<void>;
32
33
  /**
@@ -66,6 +66,7 @@ export declare class InputController {
66
66
  cycleThinkingLevel(): void;
67
67
  cycleRoleModel(direction?: "forward" | "backward"): Promise<void>;
68
68
  toggleToolOutputExpansion(): void;
69
+ toggleToolActivityVisibility(): void;
69
70
  setToolsExpanded(expanded: boolean): void;
70
71
  toggleThinkingBlockVisibility(): void;
71
72
  openExternalEditor(): Promise<void>;
@@ -103,6 +103,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
103
103
  initialChatRendered: boolean;
104
104
  isBashMode: boolean;
105
105
  toolOutputExpanded: boolean;
106
+ hideToolActivity: boolean;
106
107
  todoExpanded: boolean;
107
108
  planModeEnabled: boolean;
108
109
  planModePaused: boolean;
@@ -336,6 +337,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
336
337
  handleContextCommand(): void;
337
338
  handleClearCommand(): Promise<void>;
338
339
  handleFreshCommand(): Promise<void>;
340
+ handleResetContextCommand(): Promise<void>;
339
341
  handleDropCommand(): Promise<void>;
340
342
  handleForkCommand(): Promise<void>;
341
343
  handleMoveCommand(targetPath?: string): Promise<void>;
@@ -392,10 +394,12 @@ export declare class InteractiveMode implements InteractiveModeContext {
392
394
  hasActiveBtw(): boolean;
393
395
  handleBtwEscape(): boolean;
394
396
  canBranchBtw(): boolean;
397
+ /** Reserves plain `b` only after /btw has a completed branch action to handle. */
398
+ handlesBtwBranchKey(): boolean;
395
399
  handleBtwBranchKey(): Promise<boolean>;
396
400
  canCopyBtw(): boolean;
397
401
  handleBtwCopyKey(): Promise<boolean>;
398
- handleBtwBranch(question: string, assistantMessage: AssistantMessage): Promise<void>;
402
+ handleBtwBranch(question: string, assistantMessage: AssistantMessage, leafId: string, sessionId: string): Promise<void>;
399
403
  handleOmfgCommand(complaint: string): Promise<void>;
400
404
  hasActiveOmfg(): boolean;
401
405
  handleOmfgEscape(): boolean;
@@ -141,6 +141,7 @@ export interface InteractiveModeContext {
141
141
  initialChatRendered: boolean;
142
142
  isBashMode: boolean;
143
143
  toolOutputExpanded: boolean;
144
+ hideToolActivity: boolean;
144
145
  todoExpanded: boolean;
145
146
  planModeEnabled: boolean;
146
147
  vibeModeEnabled: boolean;
@@ -325,6 +326,7 @@ export interface InteractiveModeContext {
325
326
  handleDebugTranscriptCommand(): Promise<void>;
326
327
  handleClearCommand(): Promise<void>;
327
328
  handleFreshCommand(): Promise<void>;
329
+ handleResetContextCommand(): Promise<void>;
328
330
  handleDropCommand(): Promise<void>;
329
331
  handleForkCommand(): Promise<void>;
330
332
  handleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;
@@ -387,9 +389,10 @@ export interface InteractiveModeContext {
387
389
  handleBtwEscape(): boolean;
388
390
  handleBtwBranchKey(): Promise<boolean>;
389
391
  canBranchBtw(): boolean;
392
+ handlesBtwBranchKey(): boolean;
390
393
  canCopyBtw(): boolean;
391
394
  handleBtwCopyKey(): Promise<boolean>;
392
- handleBtwBranch(question: string, assistantMessage: AssistantMessage): Promise<void>;
395
+ handleBtwBranch(question: string, assistantMessage: AssistantMessage, leafId: string, sessionId: string): Promise<void>;
393
396
  handleOmfgCommand(complaint: string): Promise<void>;
394
397
  hasActiveOmfg(): boolean;
395
398
  handleOmfgEscape(): boolean;
@@ -2,8 +2,9 @@ import { type KeywordHighlighter } from "./gradient-highlight.js";
2
2
  /** WORKFLOW_NOTICE is the default hidden notice for sessions with batched task calls enabled. */
3
3
  export declare const WORKFLOW_NOTICE: string;
4
4
  /** renderWorkflowNotice renders the workflow notice for the active task schema. */
5
- export declare function renderWorkflowNotice({ taskBatch }: {
5
+ export declare function renderWorkflowNotice({ taskBatch, scoutAvailable, }: {
6
6
  taskBatch: boolean;
7
+ scoutAvailable?: boolean;
7
8
  }): string;
8
9
  /**
9
10
  * Whether `text` contains the standalone keyword "workflowz"
@@ -1,5 +1,5 @@
1
1
  import { Agent, type AgentOptions, type AgentTelemetryConfig, type AgentTool, type ThinkingLevel } from "@oh-my-pi/pi-agent-core";
2
- import type { Effort, Model, SimpleStreamOptions } from "@oh-my-pi/pi-ai";
2
+ import type { Effort, Model, ServiceTier, SimpleStreamOptions } from "@oh-my-pi/pi-ai";
3
3
  import type { Dialect } from "@oh-my-pi/pi-ai/dialect";
4
4
  import { type Rule } from "./capability/rule.js";
5
5
  import { ModelRegistry } from "./config/model-registry.js";
@@ -61,6 +61,8 @@ export interface CreateAgentSessionOptions {
61
61
  thinkingLevel?: ConfiguredThinkingLevel;
62
62
  /** Hard ceiling on the session's thinking effort (e.g. a task spawn's `task.maxEffort`-capped hint); retry-fallback recovery re-clamps to it. */
63
63
  thinkingLevelCeiling?: Effort;
64
+ /** OpenAI service-tier override for this session. `null` omits `service_tier`. */
65
+ openAIServiceTier?: ServiceTier | null;
64
66
  /** Models available for cycling (Ctrl+P in interactive mode) */
65
67
  scopedModels?: Array<{
66
68
  model: Model;
@@ -31,7 +31,7 @@ export declare function collectEnvSecrets(): SecretEntry[];
31
31
  * API keys) that are NOT configured via secrets.yml or the environment. Without
32
32
  * these, such a token in a tool result falls through to pi-ai's irreversible
33
33
  * provider-boundary redaction (`[openai_token_redacted]`); the model then echoes
34
- * that placeholder into edit-tool `old_text`, which can never match the real
34
+ * that placeholder into edit-tool `old_string`, which can never match the real
35
35
  * bytes on disk (issue #6968). Routing the same shapes through the obfuscator
36
36
  * mints reversible keyed placeholders that `deobfuscateToolArguments` restores
37
37
  * before tool execution, keeping exact-match edits working while the credential