@astralyn/pi 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/bundle/chunks/{anthropic-messages-YIOJIMVL.js → anthropic-messages-3K3DWVY6.js} +1 -1
  3. package/dist/bundle/chunks/anthropic.js +1 -1
  4. package/dist/bundle/chunks/{azure-openai-responses-LDW4FGAQ.js → azure-openai-responses-CH74HGP4.js} +1 -1
  5. package/dist/bundle/chunks/bedrock-converse-stream.js +2 -2
  6. package/dist/bundle/chunks/{chunk-UCXU7KLO.js → chunk-3MMB5I7J.js} +1 -1
  7. package/dist/bundle/chunks/{chunk-GIG5IHES.js → chunk-5KJH3GGH.js} +1 -1
  8. package/dist/bundle/chunks/chunk-6VYRLG5F.js +2 -0
  9. package/dist/bundle/chunks/{chunk-73WG7F7N.js → chunk-C2ARIVS3.js} +1 -1
  10. package/dist/bundle/chunks/{chunk-23OTKHCH.js → chunk-D3XW5X3Z.js} +490 -260
  11. package/dist/bundle/chunks/{chunk-IFELM7MW.js → chunk-EJEOEBSJ.js} +1 -1
  12. package/dist/bundle/chunks/chunk-H35KWBT5.js +11 -0
  13. package/dist/bundle/chunks/chunk-KAC2YPTW.js +2 -0
  14. package/dist/bundle/chunks/chunk-MAC4N3BW.js +2 -0
  15. package/dist/bundle/chunks/chunk-QLU3LESZ.js +2 -0
  16. package/dist/bundle/chunks/{chunk-A6ALEEY5.js → chunk-TEAAYBTS.js} +1 -1
  17. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-XO45ZT3V.js +2 -0
  18. package/dist/bundle/chunks/codemode-worker.js +101 -5
  19. package/dist/bundle/chunks/github-copilot.js +1 -1
  20. package/dist/bundle/chunks/{google-generative-ai-S5A5IBU4.js → google-generative-ai-VVO64ZRQ.js} +1 -1
  21. package/dist/bundle/chunks/{google-vertex-UBRQFDB4.js → google-vertex-LKS5NUHA.js} +1 -1
  22. package/dist/bundle/chunks/image-resize-worker.js +1 -1
  23. package/dist/bundle/chunks/{llama-cpp-classify-R7DQLTQN.js → llama-cpp-classify-H3IZDR5O.js} +2 -2
  24. package/dist/bundle/chunks/{mistral-conversations-A2N5FSOV.js → mistral-conversations-NJUOG4ET.js} +2 -2
  25. package/dist/bundle/chunks/openai-chatgpt.js +1 -1
  26. package/dist/bundle/chunks/{openai-codex-responses-Q6JHCWLE.js → openai-codex-responses-TZWBTTYM.js} +2 -2
  27. package/dist/bundle/chunks/openai-codex.js +1 -1
  28. package/dist/bundle/chunks/{openai-completions-H4VMO7AU.js → openai-completions-7HTTU6FH.js} +1 -1
  29. package/dist/bundle/chunks/openai-decisions-776H4VDZ.js +5 -0
  30. package/dist/bundle/chunks/{openai-responses-G4PGNM2H.js → openai-responses-7A6BAQ5X.js} +1 -1
  31. package/dist/bundle/chunks/{openrouter-images-YP3YVB54.js → openrouter-images-TDLJV5N4.js} +1 -1
  32. package/dist/bundle/chunks/{pi-messages-HZZ7GEEW.js → pi-messages-ZXNERWJG.js} +1 -1
  33. package/dist/bundle/chunks/typesafe-system-one-2DQLG4R2.js +2 -0
  34. package/dist/bundle/chunks/{virtual-modules-IJTAY26N.js → virtual-modules-2NHGQRS6.js} +1 -1
  35. package/dist/bundle/cli.js +1 -1
  36. package/dist/bundle/index.js +1 -1
  37. package/dist/bundle/rpc-entry.js +1 -1
  38. package/dist/cli/args.d.ts +2 -1
  39. package/dist/cli/args.d.ts.map +1 -1
  40. package/dist/cli/args.js +24 -5
  41. package/dist/cli/args.js.map +1 -1
  42. package/dist/core/agent-session.d.ts +38 -10
  43. package/dist/core/agent-session.d.ts.map +1 -1
  44. package/dist/core/agent-session.js +190 -186
  45. package/dist/core/agent-session.js.map +1 -1
  46. package/dist/core/bash-executor.d.ts.map +1 -1
  47. package/dist/core/bash-executor.js +40 -45
  48. package/dist/core/bash-executor.js.map +1 -1
  49. package/dist/core/context-snapshot.d.ts +4 -1
  50. package/dist/core/context-snapshot.d.ts.map +1 -1
  51. package/dist/core/context-snapshot.js +45 -0
  52. package/dist/core/context-snapshot.js.map +1 -1
  53. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  54. package/dist/core/export-html/tool-renderer.js +2 -0
  55. package/dist/core/export-html/tool-renderer.js.map +1 -1
  56. package/dist/core/extensions/types.d.ts +13 -0
  57. package/dist/core/extensions/types.d.ts.map +1 -1
  58. package/dist/core/extensions/types.js.map +1 -1
  59. package/dist/core/mcp-servers.d.ts +8 -0
  60. package/dist/core/mcp-servers.d.ts.map +1 -1
  61. package/dist/core/mcp-servers.js +30 -7
  62. package/dist/core/mcp-servers.js.map +1 -1
  63. package/dist/core/model-runtime.d.ts.map +1 -1
  64. package/dist/core/model-runtime.js +2 -1
  65. package/dist/core/model-runtime.js.map +1 -1
  66. package/dist/core/nested-tool-calls.d.ts +1 -0
  67. package/dist/core/nested-tool-calls.d.ts.map +1 -1
  68. package/dist/core/nested-tool-calls.js +1 -0
  69. package/dist/core/nested-tool-calls.js.map +1 -1
  70. package/dist/core/resource-loader.d.ts +3 -0
  71. package/dist/core/resource-loader.d.ts.map +1 -1
  72. package/dist/core/resource-loader.js +3 -3
  73. package/dist/core/resource-loader.js.map +1 -1
  74. package/dist/core/sdk.d.ts +13 -4
  75. package/dist/core/sdk.d.ts.map +1 -1
  76. package/dist/core/sdk.js +19 -6
  77. package/dist/core/sdk.js.map +1 -1
  78. package/dist/core/settings-manager.d.ts +13 -0
  79. package/dist/core/settings-manager.d.ts.map +1 -1
  80. package/dist/core/settings-manager.js +37 -13
  81. package/dist/core/settings-manager.js.map +1 -1
  82. package/dist/core/skills.d.ts +4 -1
  83. package/dist/core/skills.d.ts.map +1 -1
  84. package/dist/core/skills.js +6 -1
  85. package/dist/core/skills.js.map +1 -1
  86. package/dist/core/system-prompt.d.ts +6 -0
  87. package/dist/core/system-prompt.d.ts.map +1 -1
  88. package/dist/core/system-prompt.js +9 -4
  89. package/dist/core/system-prompt.js.map +1 -1
  90. package/dist/core/tasks/session.d.ts +9 -0
  91. package/dist/core/tasks/session.d.ts.map +1 -1
  92. package/dist/core/tasks/session.js +21 -0
  93. package/dist/core/tasks/session.js.map +1 -1
  94. package/dist/core/tools/read.d.ts +13 -0
  95. package/dist/core/tools/read.d.ts.map +1 -1
  96. package/dist/core/tools/read.js +18 -1
  97. package/dist/core/tools/read.js.map +1 -1
  98. package/dist/core/tools/renderers/bash.d.ts.map +1 -1
  99. package/dist/core/tools/renderers/bash.js +8 -3
  100. package/dist/core/tools/renderers/bash.js.map +1 -1
  101. package/dist/core/tools/renderers/edit.js +1 -1
  102. package/dist/core/tools/renderers/edit.js.map +1 -1
  103. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  104. package/dist/extensions/codemode/execute.js +65 -8
  105. package/dist/extensions/codemode/execute.js.map +1 -1
  106. package/dist/extensions/codemode/index.d.ts.map +1 -1
  107. package/dist/extensions/codemode/index.js +1 -0
  108. package/dist/extensions/codemode/index.js.map +1 -1
  109. package/dist/extensions/codemode/tool.d.ts +9 -2
  110. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  111. package/dist/extensions/codemode/tool.js +14 -6
  112. package/dist/extensions/codemode/tool.js.map +1 -1
  113. package/dist/extensions/index.js +2 -2
  114. package/dist/extensions/index.js.map +1 -1
  115. package/dist/extensions/llama/provider.d.ts.map +1 -1
  116. package/dist/extensions/llama/provider.js +34 -11
  117. package/dist/extensions/llama/provider.js.map +1 -1
  118. package/dist/extensions/mcp/cli.js +17 -23
  119. package/dist/extensions/mcp/cli.js.map +1 -1
  120. package/dist/extensions/mcp/index.d.ts.map +1 -1
  121. package/dist/extensions/mcp/index.js +165 -64
  122. package/dist/extensions/mcp/index.js.map +1 -1
  123. package/dist/extensions/mcp/oauth.d.ts +5 -3
  124. package/dist/extensions/mcp/oauth.d.ts.map +1 -1
  125. package/dist/extensions/mcp/oauth.js +36 -10
  126. package/dist/extensions/mcp/oauth.js.map +1 -1
  127. package/dist/extensions/mcp/resources.d.ts +3 -4
  128. package/dist/extensions/mcp/resources.d.ts.map +1 -1
  129. package/dist/extensions/mcp/resources.js +3 -4
  130. package/dist/extensions/mcp/resources.js.map +1 -1
  131. package/dist/extensions/mcp/runtime.d.ts +4 -1
  132. package/dist/extensions/mcp/runtime.d.ts.map +1 -1
  133. package/dist/extensions/mcp/runtime.js +22 -5
  134. package/dist/extensions/mcp/runtime.js.map +1 -1
  135. package/dist/extensions/mcp/tools.d.ts +2 -1
  136. package/dist/extensions/mcp/tools.d.ts.map +1 -1
  137. package/dist/extensions/mcp/tools.js +2 -1
  138. package/dist/extensions/mcp/tools.js.map +1 -1
  139. package/dist/extensions/mcp/ui.d.ts +3 -3
  140. package/dist/extensions/mcp/ui.d.ts.map +1 -1
  141. package/dist/extensions/mcp/ui.js +10 -2
  142. package/dist/extensions/mcp/ui.js.map +1 -1
  143. package/dist/extensions/search/code-search.d.ts +29 -0
  144. package/dist/extensions/search/code-search.d.ts.map +1 -0
  145. package/dist/extensions/search/code-search.js +120 -0
  146. package/dist/extensions/search/code-search.js.map +1 -0
  147. package/dist/extensions/search/command.d.ts +5 -0
  148. package/dist/extensions/search/command.d.ts.map +1 -0
  149. package/dist/extensions/search/command.js +69 -0
  150. package/dist/extensions/search/command.js.map +1 -0
  151. package/dist/extensions/search/credential.d.ts +25 -0
  152. package/dist/extensions/search/credential.d.ts.map +1 -0
  153. package/dist/extensions/search/credential.js +117 -0
  154. package/dist/extensions/search/credential.js.map +1 -0
  155. package/dist/extensions/search/devin.d.ts +34 -0
  156. package/dist/extensions/search/devin.d.ts.map +1 -0
  157. package/dist/extensions/search/devin.js +210 -0
  158. package/dist/extensions/search/devin.js.map +1 -0
  159. package/dist/extensions/search/index.d.ts +5 -0
  160. package/dist/extensions/search/index.d.ts.map +1 -0
  161. package/dist/extensions/search/index.js +110 -0
  162. package/dist/extensions/search/index.js.map +1 -0
  163. package/dist/extensions/search/panel.d.ts +53 -0
  164. package/dist/extensions/search/panel.d.ts.map +1 -0
  165. package/dist/extensions/search/panel.js +157 -0
  166. package/dist/extensions/search/panel.js.map +1 -0
  167. package/dist/extensions/search/prompt.d.ts +14 -0
  168. package/dist/extensions/search/prompt.d.ts.map +1 -0
  169. package/dist/extensions/search/prompt.js +221 -0
  170. package/dist/extensions/search/prompt.js.map +1 -0
  171. package/dist/extensions/search/render.d.ts +28 -0
  172. package/dist/extensions/search/render.d.ts.map +1 -0
  173. package/dist/extensions/search/render.js +86 -0
  174. package/dist/extensions/search/render.js.map +1 -0
  175. package/dist/extensions/search/workspace.d.ts +38 -0
  176. package/dist/extensions/search/workspace.d.ts.map +1 -0
  177. package/dist/extensions/search/workspace.js +245 -0
  178. package/dist/extensions/search/workspace.js.map +1 -0
  179. package/dist/main.d.ts.map +1 -1
  180. package/dist/main.js +1 -0
  181. package/dist/main.js.map +1 -1
  182. package/dist/modes/interactive/components/bash-execution.d.ts +5 -1
  183. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  184. package/dist/modes/interactive/components/bash-execution.js +14 -14
  185. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  186. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
  187. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  188. package/dist/modes/interactive/components/branch-summary-message.js +5 -2
  189. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  190. package/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -1
  191. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  192. package/dist/modes/interactive/components/compaction-summary-message.js +5 -2
  193. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  194. package/dist/modes/interactive/components/custom-entry.d.ts +3 -1
  195. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  196. package/dist/modes/interactive/components/custom-entry.js +7 -2
  197. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  198. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  199. package/dist/modes/interactive/components/custom-message.js +1 -0
  200. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  201. package/dist/modes/interactive/components/settings-selector.js +1 -1
  202. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  203. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
  204. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  205. package/dist/modes/interactive/components/skill-invocation-message.js +5 -2
  206. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  207. package/dist/modes/interactive/interactive-mode.d.ts +2 -0
  208. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  209. package/dist/modes/interactive/interactive-mode.js +52 -59
  210. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  211. package/dist/modes/interactive/program-status-reporter.d.ts +34 -0
  212. package/dist/modes/interactive/program-status-reporter.d.ts.map +1 -0
  213. package/dist/modes/interactive/program-status-reporter.js +107 -0
  214. package/dist/modes/interactive/program-status-reporter.js.map +1 -0
  215. package/dist/modes/interactive/tasks/host-hooks.d.ts +14 -0
  216. package/dist/modes/interactive/tasks/host-hooks.d.ts.map +1 -0
  217. package/dist/modes/interactive/tasks/host-hooks.js +31 -0
  218. package/dist/modes/interactive/tasks/host-hooks.js.map +1 -0
  219. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  220. package/dist/modes/interactive/theme/theme.js +1 -0
  221. package/dist/modes/interactive/theme/theme.js.map +1 -1
  222. package/dist/modes/interactive/tool-view/tool-execution.d.ts +5 -0
  223. package/dist/modes/interactive/tool-view/tool-execution.d.ts.map +1 -1
  224. package/dist/modes/interactive/tool-view/tool-execution.js +7 -0
  225. package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
  226. package/dist/package-manager-cli.d.ts.map +1 -1
  227. package/dist/package-manager-cli.js +24 -0
  228. package/dist/package-manager-cli.js.map +1 -1
  229. package/dist/utils/ansi.d.ts +8 -0
  230. package/dist/utils/ansi.d.ts.map +1 -1
  231. package/dist/utils/ansi.js +30 -11
  232. package/dist/utils/ansi.js.map +1 -1
  233. package/dist/utils/clipboard.d.ts.map +1 -1
  234. package/dist/utils/clipboard.js +12 -11
  235. package/dist/utils/clipboard.js.map +1 -1
  236. package/dist/utils/image-resize-core.d.ts +12 -0
  237. package/dist/utils/image-resize-core.d.ts.map +1 -1
  238. package/dist/utils/image-resize-core.js +5 -0
  239. package/dist/utils/image-resize-core.js.map +1 -1
  240. package/dist/utils/image-resize-worker.js +3 -2
  241. package/dist/utils/image-resize-worker.js.map +1 -1
  242. package/dist/utils/image-resize.d.ts.map +1 -1
  243. package/dist/utils/image-resize.js +9 -10
  244. package/dist/utils/image-resize.js.map +1 -1
  245. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  246. package/dist/utils/syntax-highlight.js +6 -1
  247. package/dist/utils/syntax-highlight.js.map +1 -1
  248. package/docs/bundled/README.md +1 -1
  249. package/docs/bundled/extensions/provider.md +1 -1
  250. package/docs/bundled/extensions/question.md +1 -1
  251. package/docs/bundled/extensions/search.md +50 -0
  252. package/docs/bundled/extensions/statusline.md +15 -41
  253. package/docs/codemode.md +26 -5
  254. package/docs/docs.json +0 -4
  255. package/docs/environment-variables.md +1 -0
  256. package/docs/extensions.md +6 -2
  257. package/docs/json.md +2 -2
  258. package/docs/llama-cpp.md +8 -1
  259. package/docs/mcp.md +3 -1
  260. package/docs/models.md +4 -1
  261. package/docs/providers.md +17 -0
  262. package/docs/rpc.md +6 -3
  263. package/docs/session-format.md +1 -0
  264. package/docs/settings.md +4 -4
  265. package/docs/terminal-setup.md +14 -0
  266. package/docs/usage.md +19 -5
  267. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  268. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  269. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  270. package/examples/extensions/gondolin/package-lock.json +2 -2
  271. package/examples/extensions/gondolin/package.json +1 -1
  272. package/examples/extensions/sandbox/package-lock.json +2 -2
  273. package/examples/extensions/sandbox/package.json +1 -1
  274. package/examples/extensions/with-deps/package-lock.json +2 -2
  275. package/examples/extensions/with-deps/package.json +1 -1
  276. package/npm-shrinkwrap.json +54 -54
  277. package/package.json +13 -11
  278. package/dist/bundle/chunks/chunk-57XI7YJH.js +0 -2
  279. package/dist/bundle/chunks/chunk-JI4WGISU.js +0 -2
  280. package/dist/bundle/chunks/chunk-TCQ4HHQD.js +0 -2
  281. package/dist/bundle/chunks/chunk-TXJO4AJ7.js +0 -11
  282. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-OWU5SM6J.js +0 -2
  283. package/dist/bundle/chunks/typesafe-system-one-KYKKNU3E.js +0 -2
  284. package/dist/extensions/web-search/auth.d.ts +0 -12
  285. package/dist/extensions/web-search/auth.d.ts.map +0 -1
  286. package/dist/extensions/web-search/auth.js +0 -90
  287. package/dist/extensions/web-search/auth.js.map +0 -1
  288. package/dist/extensions/web-search/constants.d.ts +0 -13
  289. package/dist/extensions/web-search/constants.d.ts.map +0 -1
  290. package/dist/extensions/web-search/constants.js +0 -26
  291. package/dist/extensions/web-search/constants.js.map +0 -1
  292. package/dist/extensions/web-search/execute.d.ts +0 -9
  293. package/dist/extensions/web-search/execute.d.ts.map +0 -1
  294. package/dist/extensions/web-search/execute.js +0 -96
  295. package/dist/extensions/web-search/execute.js.map +0 -1
  296. package/dist/extensions/web-search/format.d.ts +0 -21
  297. package/dist/extensions/web-search/format.d.ts.map +0 -1
  298. package/dist/extensions/web-search/format.js +0 -117
  299. package/dist/extensions/web-search/format.js.map +0 -1
  300. package/dist/extensions/web-search/index.d.ts +0 -6
  301. package/dist/extensions/web-search/index.d.ts.map +0 -1
  302. package/dist/extensions/web-search/index.js +0 -50
  303. package/dist/extensions/web-search/index.js.map +0 -1
  304. package/dist/extensions/web-search/providers/deepseek.d.ts +0 -13
  305. package/dist/extensions/web-search/providers/deepseek.d.ts.map +0 -1
  306. package/dist/extensions/web-search/providers/deepseek.js +0 -110
  307. package/dist/extensions/web-search/providers/deepseek.js.map +0 -1
  308. package/dist/extensions/web-search/providers/http.d.ts +0 -4
  309. package/dist/extensions/web-search/providers/http.d.ts.map +0 -1
  310. package/dist/extensions/web-search/providers/http.js +0 -42
  311. package/dist/extensions/web-search/providers/http.js.map +0 -1
  312. package/dist/extensions/web-search/providers/minimax.d.ts +0 -12
  313. package/dist/extensions/web-search/providers/minimax.d.ts.map +0 -1
  314. package/dist/extensions/web-search/providers/minimax.js +0 -61
  315. package/dist/extensions/web-search/providers/minimax.js.map +0 -1
  316. package/dist/extensions/web-search/render.d.ts +0 -15
  317. package/dist/extensions/web-search/render.d.ts.map +0 -1
  318. package/dist/extensions/web-search/render.js +0 -142
  319. package/dist/extensions/web-search/render.js.map +0 -1
  320. package/dist/extensions/web-search/results.d.ts +0 -35
  321. package/dist/extensions/web-search/results.d.ts.map +0 -1
  322. package/dist/extensions/web-search/results.js +0 -167
  323. package/dist/extensions/web-search/results.js.map +0 -1
  324. package/dist/extensions/web-search/schema.d.ts +0 -10
  325. package/dist/extensions/web-search/schema.d.ts.map +0 -1
  326. package/dist/extensions/web-search/schema.js +0 -36
  327. package/dist/extensions/web-search/schema.js.map +0 -1
  328. package/dist/extensions/web-search/types.d.ts +0 -51
  329. package/dist/extensions/web-search/types.d.ts.map +0 -1
  330. package/dist/extensions/web-search/types.js +0 -5
  331. package/dist/extensions/web-search/types.js.map +0 -1
  332. package/docs/bundled/extensions/web-search.md +0 -46
@@ -0,0 +1,34 @@
1
+ import type { ProgramStatus, Terminal } from "@earendil-works/pi-tui";
2
+ import type { AgentSessionEvent } from "../../core/agent-session.ts";
3
+ export type BlockedStatus = {
4
+ kind: NonNullable<ProgramStatus["kind"]>;
5
+ message: string;
6
+ };
7
+ /**
8
+ * Reports interactive-mode state to the terminal (OSC 7501): `working` during agent runs and
9
+ * compaction, `blocked` while a dialog waits for the user, then `done`, `error`, or `idle` once the run
10
+ * settles. Messages are limited to the session name, dialog titles, and the first line of errors; prompts
11
+ * and assistant output are never reported.
12
+ */
13
+ export declare class ProgramStatusReporter {
14
+ private readonly getTerminal;
15
+ private readonly getSessionName;
16
+ private runActive;
17
+ private compacting;
18
+ /** Outcome of the current run, reported once it settles. */
19
+ private runResult;
20
+ /** Status while no run is active. */
21
+ private restingStatus;
22
+ /** Open dialogs by source, in the order they opened. The most recent one is reported. */
23
+ private readonly blocked;
24
+ private lastReport;
25
+ constructor(getTerminal: () => Terminal, getSessionName: () => string | undefined);
26
+ handleEvent(event: AgentSessionEvent): void;
27
+ /** Report `blocked` for a dialog until it is cleared with `undefined`. Reopening a source replaces it. */
28
+ setBlocked(source: string, status: BlockedStatus | undefined): void;
29
+ /** Forget the previous session's run, for example after switching sessions. */
30
+ reset(): void;
31
+ report(): void;
32
+ private currentStatus;
33
+ }
34
+ //# sourceMappingURL=program-status-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-status-reporter.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/program-status-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAM1F;;;;;GAKG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,4DAA4D;IAC5D,OAAO,CAAC,SAAS,CAAoC;IACrD,qCAAqC;IACrC,OAAO,CAAC,aAAa,CAAoC;IACzD,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,UAAU,CAAqB;gBAE3B,WAAW,EAAE,MAAM,QAAQ,EAAE,cAAc,EAAE,MAAM,MAAM,GAAG,SAAS;IAKjF,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IA4C3C,0GAA0G;IAC1G,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAMnE,+EAA+E;IAC/E,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,IAAI;IAQd,OAAO,CAAC,aAAa;CAQrB"}
@@ -0,0 +1,107 @@
1
+ import { APP_NAME } from "../../config.js";
2
+ function firstLine(text) {
3
+ return text?.split(/\r?\n/, 1)[0]?.trim() || "Error";
4
+ }
5
+ /**
6
+ * Reports interactive-mode state to the terminal (OSC 7501): `working` during agent runs and
7
+ * compaction, `blocked` while a dialog waits for the user, then `done`, `error`, or `idle` once the run
8
+ * settles. Messages are limited to the session name, dialog titles, and the first line of errors; prompts
9
+ * and assistant output are never reported.
10
+ */
11
+ export class ProgramStatusReporter {
12
+ constructor(getTerminal, getSessionName) {
13
+ this.runActive = false;
14
+ this.compacting = false;
15
+ /** Outcome of the current run, reported once it settles. */
16
+ this.runResult = { state: "done" };
17
+ /** Status while no run is active. */
18
+ this.restingStatus = { state: "idle" };
19
+ /** Open dialogs by source, in the order they opened. The most recent one is reported. */
20
+ this.blocked = new Map();
21
+ this.getTerminal = getTerminal;
22
+ this.getSessionName = getSessionName;
23
+ }
24
+ handleEvent(event) {
25
+ switch (event.type) {
26
+ case "agent_start":
27
+ this.runActive = true;
28
+ this.runResult = { state: "done" };
29
+ break;
30
+ case "message_end":
31
+ // The latest response decides the outcome, so a retried error is replaced by its successful retry.
32
+ if (event.message.role !== "assistant")
33
+ return;
34
+ this.runResult =
35
+ event.message.stopReason === "error"
36
+ ? { state: "error", message: firstLine(event.message.errorMessage) }
37
+ : { state: "done" };
38
+ break;
39
+ case "compaction_start":
40
+ this.compacting = true;
41
+ break;
42
+ case "compaction_end":
43
+ this.compacting = false;
44
+ if (this.runActive) {
45
+ // A failed recovery compaction ends the run unless a later response succeeds.
46
+ if (event.aborted)
47
+ this.runResult = { state: "idle" };
48
+ else if (event.errorMessage)
49
+ this.runResult = { state: "error", message: firstLine(event.errorMessage) };
50
+ }
51
+ else if (event.aborted) {
52
+ this.restingStatus = { state: "idle" };
53
+ }
54
+ else if (event.reason === "manual") {
55
+ this.restingStatus = event.errorMessage
56
+ ? { state: "error", message: firstLine(event.errorMessage) }
57
+ : { state: "done" };
58
+ }
59
+ break;
60
+ case "agent_settled":
61
+ this.runActive = false;
62
+ this.restingStatus = event.aborted ? { state: "idle" } : this.runResult;
63
+ break;
64
+ case "session_info_changed":
65
+ // The session name is part of working and done reports.
66
+ break;
67
+ default:
68
+ return;
69
+ }
70
+ this.report();
71
+ }
72
+ /** Report `blocked` for a dialog until it is cleared with `undefined`. Reopening a source replaces it. */
73
+ setBlocked(source, status) {
74
+ this.blocked.delete(source);
75
+ if (status)
76
+ this.blocked.set(source, status);
77
+ this.report();
78
+ }
79
+ /** Forget the previous session's run, for example after switching sessions. */
80
+ reset() {
81
+ this.runActive = false;
82
+ this.compacting = false;
83
+ this.runResult = { state: "done" };
84
+ this.restingStatus = { state: "idle" };
85
+ this.report();
86
+ }
87
+ report() {
88
+ const status = { ...this.currentStatus(), app: APP_NAME };
89
+ const key = JSON.stringify(status);
90
+ if (key === this.lastReport)
91
+ return;
92
+ this.lastReport = key;
93
+ this.getTerminal().setProgramStatus(status);
94
+ }
95
+ currentStatus() {
96
+ const blocked = [...this.blocked.values()].at(-1);
97
+ if (blocked)
98
+ return { state: "blocked", ...blocked };
99
+ if (this.compacting)
100
+ return { state: "working", message: "Compacting context" };
101
+ const status = this.runActive ? { state: "working" } : this.restingStatus;
102
+ if (status.state === "working" || status.state === "done")
103
+ return { ...status, message: this.getSessionName() };
104
+ return status;
105
+ }
106
+ }
107
+ //# sourceMappingURL=program-status-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-status-reporter.js","sourceRoot":"","sources":["../../../src/modes/interactive/program-status-reporter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ProgramStatus, Terminal } from \"@earendil-works/pi-tui\";\nimport { APP_NAME } from \"../../config.ts\";\nimport type { AgentSessionEvent } from \"../../core/agent-session.ts\";\n\nexport type BlockedStatus = { kind: NonNullable<ProgramStatus[\"kind\"]>; message: string };\n\nfunction firstLine(text: string | undefined): string {\n\treturn text?.split(/\\r?\\n/, 1)[0]?.trim() || \"Error\";\n}\n\n/**\n * Reports interactive-mode state to the terminal (OSC 7501): `working` during agent runs and\n * compaction, `blocked` while a dialog waits for the user, then `done`, `error`, or `idle` once the run\n * settles. Messages are limited to the session name, dialog titles, and the first line of errors; prompts\n * and assistant output are never reported.\n */\nexport class ProgramStatusReporter {\n\tprivate readonly getTerminal: () => Terminal;\n\tprivate readonly getSessionName: () => string | undefined;\n\tprivate runActive = false;\n\tprivate compacting = false;\n\t/** Outcome of the current run, reported once it settles. */\n\tprivate runResult: ProgramStatus = { state: \"done\" };\n\t/** Status while no run is active. */\n\tprivate restingStatus: ProgramStatus = { state: \"idle\" };\n\t/** Open dialogs by source, in the order they opened. The most recent one is reported. */\n\tprivate readonly blocked = new Map<string, BlockedStatus>();\n\tprivate lastReport: string | undefined;\n\n\tconstructor(getTerminal: () => Terminal, getSessionName: () => string | undefined) {\n\t\tthis.getTerminal = getTerminal;\n\t\tthis.getSessionName = getSessionName;\n\t}\n\n\thandleEvent(event: AgentSessionEvent): void {\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.runActive = true;\n\t\t\t\tthis.runResult = { state: \"done\" };\n\t\t\t\tbreak;\n\t\t\tcase \"message_end\":\n\t\t\t\t// The latest response decides the outcome, so a retried error is replaced by its successful retry.\n\t\t\t\tif (event.message.role !== \"assistant\") return;\n\t\t\t\tthis.runResult =\n\t\t\t\t\tevent.message.stopReason === \"error\"\n\t\t\t\t\t\t? { state: \"error\", message: firstLine(event.message.errorMessage) }\n\t\t\t\t\t\t: { state: \"done\" };\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_start\":\n\t\t\t\tthis.compacting = true;\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_end\":\n\t\t\t\tthis.compacting = false;\n\t\t\t\tif (this.runActive) {\n\t\t\t\t\t// A failed recovery compaction ends the run unless a later response succeeds.\n\t\t\t\t\tif (event.aborted) this.runResult = { state: \"idle\" };\n\t\t\t\t\telse if (event.errorMessage) this.runResult = { state: \"error\", message: firstLine(event.errorMessage) };\n\t\t\t\t} else if (event.aborted) {\n\t\t\t\t\tthis.restingStatus = { state: \"idle\" };\n\t\t\t\t} else if (event.reason === \"manual\") {\n\t\t\t\t\tthis.restingStatus = event.errorMessage\n\t\t\t\t\t\t? { state: \"error\", message: firstLine(event.errorMessage) }\n\t\t\t\t\t\t: { state: \"done\" };\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"agent_settled\":\n\t\t\t\tthis.runActive = false;\n\t\t\t\tthis.restingStatus = event.aborted ? { state: \"idle\" } : this.runResult;\n\t\t\t\tbreak;\n\t\t\tcase \"session_info_changed\":\n\t\t\t\t// The session name is part of working and done reports.\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t\tthis.report();\n\t}\n\n\t/** Report `blocked` for a dialog until it is cleared with `undefined`. Reopening a source replaces it. */\n\tsetBlocked(source: string, status: BlockedStatus | undefined): void {\n\t\tthis.blocked.delete(source);\n\t\tif (status) this.blocked.set(source, status);\n\t\tthis.report();\n\t}\n\n\t/** Forget the previous session's run, for example after switching sessions. */\n\treset(): void {\n\t\tthis.runActive = false;\n\t\tthis.compacting = false;\n\t\tthis.runResult = { state: \"done\" };\n\t\tthis.restingStatus = { state: \"idle\" };\n\t\tthis.report();\n\t}\n\n\treport(): void {\n\t\tconst status: ProgramStatus = { ...this.currentStatus(), app: APP_NAME };\n\t\tconst key = JSON.stringify(status);\n\t\tif (key === this.lastReport) return;\n\t\tthis.lastReport = key;\n\t\tthis.getTerminal().setProgramStatus(status);\n\t}\n\n\tprivate currentStatus(): ProgramStatus {\n\t\tconst blocked = [...this.blocked.values()].at(-1);\n\t\tif (blocked) return { state: \"blocked\", ...blocked };\n\t\tif (this.compacting) return { state: \"working\", message: \"Compacting context\" };\n\t\tconst status = this.runActive ? { state: \"working\" as const } : this.restingStatus;\n\t\tif (status.state === \"working\" || status.state === \"done\") return { ...status, message: this.getSessionName() };\n\t\treturn status;\n\t}\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { type AppKeybinding } from "../../../core/keybindings.ts";
2
+ import type { TaskSnapshot } from "../../../core/tasks/types.ts";
3
+ /**
4
+ * Task rows for `/hotkeys`. Task keybindings act outside the editor, so they never showed up in
5
+ * the editor-driven sections; labels come from KEYBINDINGS so the table cannot drift from the
6
+ * binding registry.
7
+ */
8
+ export declare function hotkeysTaskSection(display: (action: AppKeybinding) => string): string;
9
+ /**
10
+ * Ask before tree navigation cancels running tasks: results are saved on their launch branch,
11
+ * so leaving it stops them. Resolves true when navigation may continue.
12
+ */
13
+ export declare function confirmStopBranchTasks(stopped: readonly TaskSnapshot[], confirm: (title: string, message: string) => Promise<boolean>): Promise<boolean>;
14
+ //# sourceMappingURL=host-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-hooks.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/tasks/host-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,8BAA8B,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,GAAG,MAAM,CAUrF;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3D,OAAO,CAAC,OAAO,CAAC,CAQlB"}
@@ -0,0 +1,31 @@
1
+ import { KEYBINDINGS } from "../../../core/keybindings.js";
2
+ import { cleanTaskText, firstCommandLine } from "./text.js";
3
+ /**
4
+ * Task rows for `/hotkeys`. Task keybindings act outside the editor, so they never showed up in
5
+ * the editor-driven sections; labels come from KEYBINDINGS so the table cannot drift from the
6
+ * binding registry.
7
+ */
8
+ export function hotkeysTaskSection(display) {
9
+ const detach = KEYBINDINGS["app.tasks.detach"];
10
+ const detachSelected = KEYBINDINGS["app.tasks.detachSelected"];
11
+ return `
12
+ **Tasks**
13
+ | Key | Action |
14
+ |-----|--------|
15
+ | \`${display("app.tasks.detach")}\` | ${detach.description} |
16
+ | \`${display("app.tasks.detachSelected")}\` | ${detachSelected.description} (while /tasks is open) |
17
+ `;
18
+ }
19
+ /**
20
+ * Ask before tree navigation cancels running tasks: results are saved on their launch branch,
21
+ * so leaving it stops them. Resolves true when navigation may continue.
22
+ */
23
+ export async function confirmStopBranchTasks(stopped, confirm) {
24
+ if (stopped.length === 0)
25
+ return true;
26
+ const shown = stopped.slice(0, 5).map((task) => ` ${cleanTaskText(firstCommandLine(task.command ?? task.title))}`);
27
+ if (stopped.length > shown.length)
28
+ shown.push(` …and ${stopped.length - shown.length} more`);
29
+ return confirm(`Stop ${stopped.length} running task${stopped.length === 1 ? "" : "s"}?`, `They were started on the branch you are leaving and will be cancelled:\n${shown.join("\n")}`);
30
+ }
31
+ //# sourceMappingURL=host-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-hooks.js","sourceRoot":"","sources":["../../../../src/modes/interactive/tasks/host-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE5D;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA0C;IAC5E,MAAM,MAAM,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAC/D,OAAO;;;;MAIF,OAAO,CAAC,kBAAkB,CAAC,QAAQ,MAAM,CAAC,WAAW;MACrD,OAAO,CAAC,0BAA0B,CAAC,QAAQ,cAAc,CAAC,WAAW;CAC1E,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,OAAgC,EAChC,OAA6D;IAE7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACpH,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC;IAC9F,OAAO,OAAO,CACb,QAAQ,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EACxE,2EAA2E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7F,CAAC;AACH,CAAC","sourcesContent":["import { type AppKeybinding, KEYBINDINGS } from \"../../../core/keybindings.ts\";\nimport type { TaskSnapshot } from \"../../../core/tasks/types.ts\";\nimport { cleanTaskText, firstCommandLine } from \"./text.ts\";\n\n/**\n * Task rows for `/hotkeys`. Task keybindings act outside the editor, so they never showed up in\n * the editor-driven sections; labels come from KEYBINDINGS so the table cannot drift from the\n * binding registry.\n */\nexport function hotkeysTaskSection(display: (action: AppKeybinding) => string): string {\n\tconst detach = KEYBINDINGS[\"app.tasks.detach\"];\n\tconst detachSelected = KEYBINDINGS[\"app.tasks.detachSelected\"];\n\treturn `\n**Tasks**\n| Key | Action |\n|-----|--------|\n| \\`${display(\"app.tasks.detach\")}\\` | ${detach.description} |\n| \\`${display(\"app.tasks.detachSelected\")}\\` | ${detachSelected.description} (while /tasks is open) |\n`;\n}\n\n/**\n * Ask before tree navigation cancels running tasks: results are saved on their launch branch,\n * so leaving it stops them. Resolves true when navigation may continue.\n */\nexport async function confirmStopBranchTasks(\n\tstopped: readonly TaskSnapshot[],\n\tconfirm: (title: string, message: string) => Promise<boolean>,\n): Promise<boolean> {\n\tif (stopped.length === 0) return true;\n\tconst shown = stopped.slice(0, 5).map((task) => ` ${cleanTaskText(firstCommandLine(task.command ?? task.title))}`);\n\tif (stopped.length > shown.length) shown.push(` …and ${stopped.length - shown.length} more`);\n\treturn confirm(\n\t\t`Stop ${stopped.length} running task${stopped.length === 1 ? \"\" : \"s\"}?`,\n\t\t`They were started on the branch you are leaving and will be cancelled:\\n${shown.join(\"\\n\")}`,\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme.ts"],"names":[],"mappings":"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"}
@@ -724,6 +724,7 @@ function buildCliHighlightTheme(t) {
724
724
  number: (s) => t.fg("syntaxNumber", s),
725
725
  regexp: (s) => t.fg("syntaxString", s),
726
726
  string: (s) => t.fg("syntaxString", s),
727
+ subst: (s) => t.fg("text", s),
727
728
  comment: (s) => t.fg("syntaxComment", s),
728
729
  doctag: (s) => t.fg("syntaxComment", s),
729
730
  meta: (s) => t.fg("muted", s),