@ashx-j/lunr 0.2.16 → 0.2.18

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 (349) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/README.md +2 -1
  3. package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -0
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-thinking.js +44 -19
  6. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  7. package/dist/builtin-extensions/ashxj-tui.d.ts +2 -2
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +8 -11
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/index.d.ts.map +1 -1
  12. package/dist/builtin-extensions/index.js +2 -1
  13. package/dist/builtin-extensions/index.js.map +1 -1
  14. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
  15. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  16. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +172 -171
  17. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  18. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +50 -0
  19. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
  20. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +131 -0
  21. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
  22. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
  23. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
  24. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
  25. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
  26. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
  27. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  28. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
  29. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  30. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  31. package/dist/builtin-extensions/pi-mcp-adapter/index.js +276 -109
  32. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  33. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
  34. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  35. package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
  36. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  37. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
  38. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
  39. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
  40. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
  41. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  42. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
  43. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  44. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  45. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
  46. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  47. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  48. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  49. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  50. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  51. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +68 -15
  54. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  56. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +6 -2
  57. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +5 -2
  61. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
  63. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
  64. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
  65. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
  66. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +3 -16
  68. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  69. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  71. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  72. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  74. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  76. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  77. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +72 -31
  79. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  80. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
  83. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  84. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  85. package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
  86. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  87. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  88. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  89. package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
  90. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  91. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  92. package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
  93. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  94. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  95. package/dist/builtin-extensions/pi-web-access/index.js +259 -168
  96. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  97. package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
  98. package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
  99. package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
  100. package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
  101. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
  102. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
  103. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
  104. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
  105. package/dist/cli-runtime.d.ts +3 -0
  106. package/dist/cli-runtime.d.ts.map +1 -0
  107. package/dist/cli-runtime.js +72 -0
  108. package/dist/cli-runtime.js.map +1 -0
  109. package/dist/cli.d.ts.map +1 -1
  110. package/dist/cli.js +11 -60
  111. package/dist/cli.js.map +1 -1
  112. package/dist/config.d.ts +1 -0
  113. package/dist/config.d.ts.map +1 -1
  114. package/dist/config.js +1 -0
  115. package/dist/config.js.map +1 -1
  116. package/dist/core/agent-session.d.ts.map +1 -1
  117. package/dist/core/agent-session.js +6 -3
  118. package/dist/core/agent-session.js.map +1 -1
  119. package/dist/core/extensions/host-static.d.ts.map +1 -1
  120. package/dist/core/extensions/host-static.js +34 -12
  121. package/dist/core/extensions/host-static.js.map +1 -1
  122. package/dist/core/extensions/loader.d.ts +1 -2
  123. package/dist/core/extensions/loader.d.ts.map +1 -1
  124. package/dist/core/extensions/loader.js +10 -64
  125. package/dist/core/extensions/loader.js.map +1 -1
  126. package/dist/core/keybindings.d.ts +2 -2
  127. package/dist/core/keybindings.d.ts.map +1 -1
  128. package/dist/core/keybindings.js +2 -2
  129. package/dist/core/keybindings.js.map +1 -1
  130. package/dist/core/package-manager.d.ts.map +1 -1
  131. package/dist/core/package-manager.js +1 -1
  132. package/dist/core/package-manager.js.map +1 -1
  133. package/dist/core/sdk.d.ts +1 -1
  134. package/dist/core/sdk.d.ts.map +1 -1
  135. package/dist/core/sdk.js +1 -1
  136. package/dist/core/sdk.js.map +1 -1
  137. package/dist/core/timings.d.ts +2 -1
  138. package/dist/core/timings.d.ts.map +1 -1
  139. package/dist/core/timings.js +17 -2
  140. package/dist/core/timings.js.map +1 -1
  141. package/dist/gateway/agent-bridge.d.ts +6 -1
  142. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  143. package/dist/gateway/agent-bridge.js +23 -6
  144. package/dist/gateway/agent-bridge.js.map +1 -1
  145. package/dist/gateway/cron.d.ts +1 -1
  146. package/dist/gateway/cron.d.ts.map +1 -1
  147. package/dist/gateway/cron.js +3 -1
  148. package/dist/gateway/cron.js.map +1 -1
  149. package/dist/main.d.ts.map +1 -1
  150. package/dist/main.js +20 -14
  151. package/dist/main.js.map +1 -1
  152. package/dist/modes/interactive/injected-context.d.ts +2 -0
  153. package/dist/modes/interactive/injected-context.d.ts.map +1 -0
  154. package/dist/modes/interactive/injected-context.js +7 -0
  155. package/dist/modes/interactive/injected-context.js.map +1 -0
  156. package/dist/modes/interactive/interactive-mode.d.ts +2 -0
  157. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  158. package/dist/modes/interactive/interactive-mode.js +32 -8
  159. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  160. package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
  161. package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
  162. package/dist/modes/interactive/thinking-level-slash.js +23 -0
  163. package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
  164. package/dist/node-runtime/agent-session-services-35WNVGMR.js +36 -0
  165. package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
  166. package/dist/node-runtime/brave-UWDA3I22.js +143 -0
  167. package/dist/node-runtime/builtin-extensions-QATGXENO.js +28 -0
  168. package/dist/node-runtime/chunk-2SJB2AWP.js +47 -0
  169. package/dist/node-runtime/chunk-3NMWLTPV.js +64 -0
  170. package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
  171. package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
  172. package/dist/node-runtime/chunk-4CSFRBCN.js +7558 -0
  173. package/dist/node-runtime/chunk-4DJ6HEGH.js +296 -0
  174. package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
  175. package/dist/node-runtime/chunk-4I23VTC4.js +429 -0
  176. package/dist/node-runtime/chunk-4TLO4PO2.js +3427 -0
  177. package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
  178. package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
  179. package/dist/node-runtime/chunk-5EFIU3OM.js +295 -0
  180. package/dist/node-runtime/chunk-6BEIBLQ3.js +53 -0
  181. package/dist/node-runtime/chunk-6KDIOJL3.js +72 -0
  182. package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
  183. package/dist/node-runtime/chunk-7NBZ5P7I.js +24 -0
  184. package/dist/node-runtime/chunk-AD6VXAO7.js +342 -0
  185. package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
  186. package/dist/node-runtime/chunk-AROOY4BB.js +173 -0
  187. package/dist/node-runtime/chunk-ATGA2WLC.js +5646 -0
  188. package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
  189. package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
  190. package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
  191. package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
  192. package/dist/node-runtime/chunk-BOHIDQT4.js +21 -0
  193. package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
  194. package/dist/node-runtime/chunk-CBGB57XT.js +20211 -0
  195. package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
  196. package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
  197. package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
  198. package/dist/node-runtime/chunk-CSFI6YXL.js +130 -0
  199. package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
  200. package/dist/node-runtime/chunk-DDWHZ633.js +37 -0
  201. package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
  202. package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
  203. package/dist/node-runtime/chunk-EBF6COVM.js +1734 -0
  204. package/dist/node-runtime/chunk-FQMM2EZ2.js +248 -0
  205. package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
  206. package/dist/node-runtime/chunk-G4P75AIS.js +9471 -0
  207. package/dist/node-runtime/chunk-G6LRAP36.js +105 -0
  208. package/dist/node-runtime/chunk-GKLEQ3I4.js +860 -0
  209. package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
  210. package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
  211. package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
  212. package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
  213. package/dist/node-runtime/chunk-IRPJXI6U.js +1269 -0
  214. package/dist/node-runtime/chunk-J26TSGDL.js +633 -0
  215. package/dist/node-runtime/chunk-JZQ7F36T.js +610 -0
  216. package/dist/node-runtime/chunk-KBKMCJDU.js +126 -0
  217. package/dist/node-runtime/chunk-KWA4OC2J.js +100 -0
  218. package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
  219. package/dist/node-runtime/chunk-MCUNIRD5.js +8388 -0
  220. package/dist/node-runtime/chunk-NI6OTSBH.js +966 -0
  221. package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
  222. package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
  223. package/dist/node-runtime/chunk-OCVIXVTZ.js +88 -0
  224. package/dist/node-runtime/chunk-OPEK5RRY.js +466 -0
  225. package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
  226. package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
  227. package/dist/node-runtime/chunk-PNJSG3IZ.js +807 -0
  228. package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
  229. package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
  230. package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
  231. package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
  232. package/dist/node-runtime/chunk-QZMODZQ2.js +305 -0
  233. package/dist/node-runtime/chunk-R5EDISSV.js +375 -0
  234. package/dist/node-runtime/chunk-RNBHABBA.js +986 -0
  235. package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
  236. package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
  237. package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
  238. package/dist/node-runtime/chunk-STERBGUB.js +949 -0
  239. package/dist/node-runtime/chunk-UWQYRSYQ.js +8973 -0
  240. package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
  241. package/dist/node-runtime/chunk-VSELYKWU.js +772 -0
  242. package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
  243. package/dist/node-runtime/chunk-WJVFOIB5.js +24921 -0
  244. package/dist/node-runtime/chunk-WKDK4C5P.js +2834 -0
  245. package/dist/node-runtime/chunk-XATUM2HK.js +46 -0
  246. package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
  247. package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
  248. package/dist/node-runtime/chunk-ZBV7FAHG.js +1345 -0
  249. package/dist/node-runtime/cli-runtime.js +80 -0
  250. package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
  251. package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
  252. package/dist/node-runtime/command-AAV3YRR5.js +13 -0
  253. package/dist/node-runtime/commands-MV5KOZ64.js +291 -0
  254. package/dist/node-runtime/config-QDD5PUE2.js +73 -0
  255. package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
  256. package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
  257. package/dist/node-runtime/direct-tool-executor-BK7CLEBX.js +188 -0
  258. package/dist/node-runtime/exa-LL64QZR2.js +329 -0
  259. package/dist/node-runtime/export-html-TEXVV5RP.js +150 -0
  260. package/dist/node-runtime/extension-input-O4HSAEM4.js +14 -0
  261. package/dist/node-runtime/extension-selector-X5FCX43D.js +14 -0
  262. package/dist/node-runtime/extract-XLQSJN4V.js +17 -0
  263. package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
  264. package/dist/node-runtime/gateway-OAC4OBBL.js +2137 -0
  265. package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
  266. package/dist/node-runtime/gemini-search-U7SUMPQA.js +330 -0
  267. package/dist/node-runtime/gemini-url-context-PXWCBQHK.js +103 -0
  268. package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
  269. package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
  270. package/dist/node-runtime/goal-NJEE5CTU.js +1831 -0
  271. package/dist/node-runtime/index.js +859 -0
  272. package/dist/node-runtime/init-3C7Z24OI.js +28 -0
  273. package/dist/node-runtime/install-cli-EXMJQESX.js +308 -0
  274. package/dist/node-runtime/interactive-mode-2SZUO53H.js +56 -0
  275. package/dist/node-runtime/interactive-view-S6J3QHEF.js +247 -0
  276. package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
  277. package/dist/node-runtime/lunr-cron-AUUYP4N4.js +272 -0
  278. package/dist/node-runtime/main.js +54 -0
  279. package/dist/node-runtime/mcp-auth-flow-QIXHW6QN.js +32 -0
  280. package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
  281. package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
  282. package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
  283. package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
  284. package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
  285. package/dist/node-runtime/package-manager-cli-7RKSZGEN.js +749 -0
  286. package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
  287. package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
  288. package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
  289. package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
  290. package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
  291. package/dist/node-runtime/pi-mcp-adapter-GUFZWW54.js +428 -0
  292. package/dist/node-runtime/pi-ollama-cloud-2F3Y2QNM.js +1440 -0
  293. package/dist/node-runtime/pi-prompt-template-model-QWTCGLJU.js +3946 -0
  294. package/dist/node-runtime/pi-subagents-7YJ3I4VE.js +6048 -0
  295. package/dist/node-runtime/pi-web-access-2CQGFLT2.js +1867 -0
  296. package/dist/node-runtime/print-mode-XSFM26EL.js +12 -0
  297. package/dist/node-runtime/proxy-modes-V6YVFH3C.js +685 -0
  298. package/dist/node-runtime/rpc-entry.js +62 -0
  299. package/dist/node-runtime/rpc-mode-W5ZTLTMZ.js +13 -0
  300. package/dist/node-runtime/runtime-bridges-3RKBDLNA.js +14 -0
  301. package/dist/node-runtime/session-manager-E7AREDTV.js +33 -0
  302. package/dist/node-runtime/session-selector-FJ7M2AIX.js +14 -0
  303. package/dist/node-runtime/settings-manager-GHPTUN7R.js +21 -0
  304. package/dist/node-runtime/src-BPQFJR76.js +2427 -0
  305. package/dist/node-runtime/subagent-executor-5Q5A4HJ2.js +8499 -0
  306. package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
  307. package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
  308. package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
  309. package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
  310. package/dist/node-runtime/update-cli-L3JIBH2U.js +70 -0
  311. package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
  312. package/dist/node-runtime/video-extract-OYT5WKS5.js +304 -0
  313. package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
  314. package/dist/node-runtime/youtube-extract-TQYKGFGS.js +264 -0
  315. package/dist/rpc.d.ts +3 -0
  316. package/dist/rpc.d.ts.map +1 -0
  317. package/dist/rpc.js +18 -0
  318. package/dist/rpc.js.map +1 -0
  319. package/dist/startup/benchmark-request.d.ts +3 -0
  320. package/dist/startup/benchmark-request.d.ts.map +1 -0
  321. package/dist/startup/benchmark-request.js +65 -0
  322. package/dist/startup/benchmark-request.js.map +1 -0
  323. package/dist/startup/interactive-view.d.ts.map +1 -1
  324. package/dist/startup/interactive-view.js +1 -2
  325. package/dist/startup/interactive-view.js.map +1 -1
  326. package/dist/startup/startup-milestones.d.ts +1 -1
  327. package/dist/startup/startup-milestones.d.ts.map +1 -1
  328. package/dist/startup/startup-milestones.js.map +1 -1
  329. package/dist/utils/await-with-abort.d.ts +2 -0
  330. package/dist/utils/await-with-abort.d.ts.map +1 -0
  331. package/dist/utils/await-with-abort.js +19 -0
  332. package/dist/utils/await-with-abort.js.map +1 -0
  333. package/docs/development.md +5 -1
  334. package/docs/features.md +2 -2
  335. package/docs/interactive-startup.md +95 -48
  336. package/docs/keybindings.md +2 -2
  337. package/docs/terminal-setup.md +1 -1
  338. package/docs/usage.md +1 -1
  339. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  340. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  341. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  342. package/examples/extensions/gondolin/package-lock.json +2 -2
  343. package/examples/extensions/gondolin/package.json +1 -1
  344. package/examples/extensions/hidden-thinking-label.ts +1 -1
  345. package/examples/extensions/sandbox/package-lock.json +2 -2
  346. package/examples/extensions/sandbox/package.json +1 -1
  347. package/examples/extensions/with-deps/package-lock.json +2 -2
  348. package/examples/extensions/with-deps/package.json +1 -1
  349. package/package.json +8 -8
@@ -0,0 +1,305 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ APP_NAME,
4
+ CONFIG_DIR_NAME,
5
+ ENV_AGENT_DIR,
6
+ ENV_SESSION_DIR
7
+ } from "./chunk-FQMM2EZ2.js";
8
+
9
+ // packages/coding-agent/dist/cli/args.js
10
+ import chalk from "chalk";
11
+ var VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
12
+ function isValidThinkingLevel(level) {
13
+ return VALID_THINKING_LEVELS.includes(level);
14
+ }
15
+ function parseArgs(args) {
16
+ let result = {
17
+ messages: [],
18
+ fileArgs: [],
19
+ unknownFlags: /* @__PURE__ */ new Map(),
20
+ diagnostics: []
21
+ };
22
+ for (let i = 0; i < args.length; i++) {
23
+ let arg = args[i];
24
+ if (arg === "--help" || arg === "-h")
25
+ result.help = !0;
26
+ else if (arg === "--version" || arg === "-v")
27
+ result.version = !0;
28
+ else if (arg === "--mode" && i + 1 < args.length) {
29
+ let mode = args[++i];
30
+ (mode === "text" || mode === "json" || mode === "rpc") && (result.mode = mode);
31
+ } else if (arg === "--continue" || arg === "-c")
32
+ result.continue = !0;
33
+ else if (arg === "--resume" || arg === "-r")
34
+ result.resume = !0;
35
+ else if (arg === "--provider" && i + 1 < args.length)
36
+ result.provider = args[++i];
37
+ else if (arg === "--model" && i + 1 < args.length)
38
+ result.model = args[++i];
39
+ else if (arg === "--api-key" && i + 1 < args.length)
40
+ result.apiKey = args[++i];
41
+ else if (arg === "--system-prompt" && i + 1 < args.length)
42
+ result.systemPrompt = args[++i];
43
+ else if (arg === "--append-system-prompt" && i + 1 < args.length)
44
+ result.appendSystemPrompt = result.appendSystemPrompt ?? [], result.appendSystemPrompt.push(args[++i]);
45
+ else if (arg === "--name" || arg === "-n")
46
+ i + 1 < args.length ? result.name = args[++i] : result.diagnostics.push({ type: "error", message: "--name requires a value" });
47
+ else if (arg === "--no-session")
48
+ result.noSession = !0;
49
+ else if (arg === "--session" && i + 1 < args.length)
50
+ result.session = args[++i];
51
+ else if (arg === "--session-id" && i + 1 < args.length)
52
+ result.sessionId = args[++i];
53
+ else if (arg === "--fork" && i + 1 < args.length)
54
+ result.fork = args[++i];
55
+ else if (arg === "--session-dir" && i + 1 < args.length)
56
+ result.sessionDir = args[++i];
57
+ else if (arg === "--models" && i + 1 < args.length)
58
+ result.models = args[++i].split(",").map((s) => s.trim());
59
+ else if (arg === "--no-tools" || arg === "-nt")
60
+ result.noTools = !0;
61
+ else if (arg === "--no-builtin-tools" || arg === "-nbt")
62
+ result.noBuiltinTools = !0;
63
+ else if ((arg === "--tools" || arg === "-t") && i + 1 < args.length)
64
+ result.tools = args[++i].split(",").map((s) => s.trim()).filter((name) => name.length > 0);
65
+ else if ((arg === "--exclude-tools" || arg === "-xt") && i + 1 < args.length)
66
+ result.excludeTools = args[++i].split(",").map((s) => s.trim()).filter((name) => name.length > 0);
67
+ else if (arg === "--thinking" && i + 1 < args.length) {
68
+ let level = args[++i];
69
+ isValidThinkingLevel(level) ? result.thinking = level : result.diagnostics.push({
70
+ type: "warning",
71
+ message: `Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`
72
+ });
73
+ } else if (arg === "--print" || arg === "-p") {
74
+ result.print = !0;
75
+ let next = args[i + 1];
76
+ next !== void 0 && !next.startsWith("@") && (!next.startsWith("-") || next.startsWith("---")) && (result.messages.push(next), i++);
77
+ } else if (arg === "--export" && i + 1 < args.length)
78
+ result.export = args[++i];
79
+ else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length)
80
+ result.extensions = result.extensions ?? [], result.extensions.push(args[++i]);
81
+ else if (arg === "--no-extensions" || arg === "-ne")
82
+ result.noExtensions = !0;
83
+ else if (arg === "--skill" && i + 1 < args.length)
84
+ result.skills = result.skills ?? [], result.skills.push(args[++i]);
85
+ else if (arg === "--prompt-template" && i + 1 < args.length)
86
+ result.promptTemplates = result.promptTemplates ?? [], result.promptTemplates.push(args[++i]);
87
+ else if (arg === "--theme" && i + 1 < args.length)
88
+ result.themes = result.themes ?? [], result.themes.push(args[++i]);
89
+ else if (arg === "--no-skills" || arg === "-ns")
90
+ result.noSkills = !0;
91
+ else if (arg === "--no-prompt-templates" || arg === "-np")
92
+ result.noPromptTemplates = !0;
93
+ else if (arg === "--no-themes")
94
+ result.noThemes = !0;
95
+ else if (arg === "--no-context-files" || arg === "-nc")
96
+ result.noContextFiles = !0;
97
+ else if (arg === "--list-models")
98
+ i + 1 < args.length && !args[i + 1].startsWith("-") && !args[i + 1].startsWith("@") ? result.listModels = args[++i] : result.listModels = !0;
99
+ else if (arg === "--verbose")
100
+ result.verbose = !0;
101
+ else if (arg === "--approve" || arg === "-a")
102
+ result.projectTrustOverride = !0;
103
+ else if (arg === "--no-approve" || arg === "-na")
104
+ result.projectTrustOverride = !1;
105
+ else if (arg === "--offline")
106
+ result.offline = !0;
107
+ else if (arg.startsWith("@"))
108
+ result.fileArgs.push(arg.slice(1));
109
+ else if (arg.startsWith("--")) {
110
+ let eqIndex = arg.indexOf("=");
111
+ if (eqIndex !== -1)
112
+ result.unknownFlags.set(arg.slice(2, eqIndex), arg.slice(eqIndex + 1));
113
+ else {
114
+ let flagName = arg.slice(2), next = args[i + 1];
115
+ next !== void 0 && !next.startsWith("-") && !next.startsWith("@") ? (result.unknownFlags.set(flagName, next), i++) : result.unknownFlags.set(flagName, !0);
116
+ }
117
+ } else arg.startsWith("-") && !arg.startsWith("--") ? result.diagnostics.push({ type: "error", message: `Unknown option: ${arg}` }) : arg.startsWith("-") || result.messages.push(arg);
118
+ }
119
+ return result;
120
+ }
121
+ function printHelp(extensionFlags) {
122
+ let extensionFlagsText = extensionFlags && extensionFlags.length > 0 ? `
123
+ ${chalk.bold("Extension CLI Flags:")}
124
+ ${extensionFlags.map((flag) => {
125
+ let value = flag.type === "string" ? " <value>" : "", description = flag.description ?? `Registered by ${flag.extensionPath}`;
126
+ return ` --${flag.name}${value}`.padEnd(30) + description;
127
+ }).join(`
128
+ `)}
129
+ ` : "";
130
+ console.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools
131
+
132
+ ${chalk.bold("Usage:")}
133
+ ${APP_NAME} [options] [@files...] [messages...]
134
+
135
+ ${chalk.bold("Commands:")}
136
+ ${APP_NAME} setup First-run / reconfigure optional features
137
+ ${APP_NAME} features [list|enable|disable]
138
+ ${APP_NAME} uninstall Remove this ${APP_NAME} install (keeps agent dir unless --purge)
139
+ ${APP_NAME} uninstall <source> [-l] Remove an extension package (alias for remove)
140
+ ${APP_NAME} install <source> [-l] Install extension source and add to settings
141
+ ${APP_NAME} remove <source> [-l] Remove extension source from settings
142
+ ${APP_NAME} list List installed extensions from settings
143
+ ${APP_NAME} config [-l] Open TUI to enable/disable package resources (Tab switches scope)
144
+ ${APP_NAME} gateway [\u2026] Chat gateway daemon (requires chat-platforms feature)
145
+ ${APP_NAME} <command> --help Show help for install/remove/uninstall/list/config
146
+
147
+ ${chalk.bold("Options:")}
148
+ --provider <name> Provider name (default: google)
149
+ --model <pattern> Model pattern or ID (supports "provider/id" and optional ":<thinking>")
150
+ --api-key <key> API key (defaults to env vars)
151
+ --system-prompt <text> System prompt (default: coding assistant prompt)
152
+ --append-system-prompt <text> Append text or file contents to the system prompt (can be used multiple times)
153
+ --mode <mode> Output mode: text (default), json, or rpc
154
+ --print, -p Non-interactive mode: process prompt and exit
155
+ --continue, -c Continue previous session
156
+ --resume, -r Select a session to resume
157
+ --session <path|id> Use specific session file or partial UUID
158
+ --session-id <id> Use exact project session ID, creating it if missing
159
+ --fork <path|id> Fork specific session file or partial UUID into a new session
160
+ --session-dir <dir> Directory for session storage and lookup
161
+ --no-session Don't save session (ephemeral)
162
+ --name, -n <name> Set session display name
163
+ --models <patterns> Comma-separated model patterns for Ctrl+P cycling
164
+ Supports globs (anthropic/*, *sonnet*) and fuzzy matching
165
+ --no-tools, -nt Disable all tools by default (built-in and extension)
166
+ --no-builtin-tools, -nbt Disable built-in tools by default but keep extension/custom tools enabled
167
+ --tools, -t <tools> Comma-separated allowlist of tool names to enable
168
+ Applies to built-in, extension, and custom tools
169
+ --exclude-tools, -xt <tools> Comma-separated denylist of tool names to disable
170
+ Applies to built-in, extension, and custom tools
171
+ --thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh, max
172
+ --extension, -e <path> Load an extension file (can be used multiple times)
173
+ --no-extensions, -ne Disable extension discovery (explicit -e paths still work)
174
+ --skill <path> Load a skill file or directory (can be used multiple times)
175
+ --no-skills, -ns Disable skills discovery and loading
176
+ --prompt-template <path> Load a prompt template file or directory (can be used multiple times)
177
+ --no-prompt-templates, -np Disable prompt template discovery and loading
178
+ --theme <path> Load a theme file or directory (can be used multiple times)
179
+ --no-themes Disable theme discovery and loading
180
+ --no-context-files, -nc Disable AGENTS.md and CLAUDE.md discovery and loading
181
+ --export <file> Export session file to HTML and exit
182
+ --list-models [search] List available models (with optional fuzzy search)
183
+ --verbose Force verbose startup (overrides quietStartup setting)
184
+ --approve, -a Trust project-local files for this run
185
+ --no-approve, -na Ignore project-local files for this run
186
+ --offline Disable startup network operations (same as PI_OFFLINE=1)
187
+ --help, -h Show this help
188
+ --version, -v Show version number
189
+
190
+ Extensions can register additional flags (e.g., --plan from plan-mode extension).${extensionFlagsText}
191
+
192
+ ${chalk.bold("Examples:")}
193
+ # Interactive mode
194
+ ${APP_NAME}
195
+
196
+ # Interactive mode with initial prompt
197
+ ${APP_NAME} "List all .ts files in src/"
198
+
199
+ # Include files in initial message
200
+ ${APP_NAME} @prompt.md @image.png "What color is the sky?"
201
+
202
+ # Non-interactive mode (process and exit)
203
+ ${APP_NAME} -p "List all .ts files in src/"
204
+
205
+ # Multiple messages (interactive)
206
+ ${APP_NAME} "Read package.json" "What dependencies do we have?"
207
+
208
+ # Continue previous session
209
+ ${APP_NAME} --continue "What did we discuss?"
210
+
211
+ # Start a named session
212
+ ${APP_NAME} --name "Refactor auth module"
213
+
214
+ # Use different model
215
+ ${APP_NAME} --provider openai --model gpt-4o-mini "Help me refactor this code"
216
+
217
+ # Use model with provider prefix (no --provider needed)
218
+ ${APP_NAME} --model openai/gpt-4o "Help me refactor this code"
219
+
220
+ # Use model with thinking level shorthand
221
+ ${APP_NAME} --model sonnet:high "Solve this complex problem"
222
+
223
+ # Limit model cycling to specific models
224
+ ${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o
225
+
226
+ # Limit to a specific provider with glob pattern
227
+ ${APP_NAME} --models "github-copilot/*"
228
+
229
+ # Cycle models with fixed thinking levels
230
+ ${APP_NAME} --models sonnet:high,haiku:low
231
+
232
+ # Start with a specific thinking level
233
+ ${APP_NAME} --thinking high "Solve this complex problem"
234
+
235
+ # Read-only mode (no file modifications possible)
236
+ ${APP_NAME} --tools read,grep,find,ls -p "Review the code in src/"
237
+
238
+ # Disable one tool while keeping the rest available
239
+ ${APP_NAME} --exclude-tools ask_question
240
+
241
+ # Export a session file to HTML
242
+ ${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl
243
+ ${APP_NAME} --export session.jsonl output.html
244
+
245
+ ${chalk.bold("Environment Variables:")}
246
+ ANTHROPIC_API_KEY - Anthropic Claude API key
247
+ ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)
248
+ ANT_LING_API_KEY - Ant Ling API key
249
+ OPENAI_API_KEY - OpenAI GPT API key
250
+ AZURE_OPENAI_API_KEY - Azure OpenAI API key
251
+ AZURE_OPENAI_BASE_URL - Azure OpenAI/Cognitive Services base URL (e.g. https://{resource}.openai.azure.com)
252
+ AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)
253
+ AZURE_OPENAI_API_VERSION - Azure OpenAI API version (default: v1)
254
+ AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)
255
+ DEEPSEEK_API_KEY - DeepSeek API key
256
+ NVIDIA_API_KEY - NVIDIA NIM API key
257
+ GEMINI_API_KEY - Google Gemini API key
258
+ GROQ_API_KEY - Groq API key
259
+ CEREBRAS_API_KEY - Cerebras API key
260
+ XAI_API_KEY - xAI Grok API key
261
+ FIREWORKS_API_KEY - Fireworks API key
262
+ TOGETHER_API_KEY - Together AI API key
263
+ OPENROUTER_API_KEY - OpenRouter API key
264
+ AI_GATEWAY_API_KEY - Vercel AI Gateway API key
265
+ ZAI_API_KEY - ZAI Coding Plan API key (Global)
266
+ ZAI_CODING_CN_API_KEY - ZAI Coding Plan API key (China)
267
+ MISTRAL_API_KEY - Mistral API key
268
+ MINIMAX_API_KEY - MiniMax API key
269
+ MOONSHOT_API_KEY - Moonshot AI API key
270
+ OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key
271
+ KIMI_API_KEY - Kimi For Coding API key
272
+ CLOUDFLARE_API_KEY - Cloudflare API token (Workers AI and AI Gateway)
273
+ CLOUDFLARE_ACCOUNT_ID - Cloudflare account id (required for both)
274
+ CLOUDFLARE_GATEWAY_ID - Cloudflare AI Gateway slug (required for AI Gateway)
275
+ XIAOMI_API_KEY - Xiaomi MiMo API key (api.xiaomimimo.com billing)
276
+ XIAOMI_TOKEN_PLAN_CN_API_KEY - Xiaomi MiMo Token Plan API key (China region)
277
+ XIAOMI_TOKEN_PLAN_AMS_API_KEY - Xiaomi MiMo Token Plan API key (Amsterdam region)
278
+ XIAOMI_TOKEN_PLAN_SGP_API_KEY - Xiaomi MiMo Token Plan API key (Singapore region)
279
+ AWS_PROFILE - AWS profile for Amazon Bedrock
280
+ AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock
281
+ AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock
282
+ AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)
283
+ AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)
284
+ ${ENV_AGENT_DIR.padEnd(32)} - Config directory (default: ~/${CONFIG_DIR_NAME}/agent)
285
+ ${ENV_SESSION_DIR.padEnd(32)} - Session storage directory (overridden by --session-dir)
286
+ PI_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)
287
+ PI_OFFLINE - Disable startup network operations when set to 1/true/yes
288
+ PI_SHARE_VIEWER_URL - Base URL for /share command (default: https://pi.dev/session/)
289
+
290
+ ${chalk.bold("Built-in Tool Names:")}
291
+ read - Read file contents
292
+ bash - Execute bash commands
293
+ edit - Edit files with find/replace
294
+ write - Write files (creates/overwrites)
295
+ grep - Search file contents (read-only, off by default)
296
+ find - Find files by glob pattern (read-only, off by default)
297
+ ls - List directory contents (read-only, off by default)
298
+ `);
299
+ }
300
+
301
+ export {
302
+ isValidThinkingLevel,
303
+ parseArgs,
304
+ printHelp
305
+ };
@@ -0,0 +1,375 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ CustomEditor
4
+ } from "./chunk-H2EOZYMP.js";
5
+
6
+ // packages/coding-agent/dist/builtin-extensions/ashxj-tui.js
7
+ var CUSTOMIZE_BRIDGE = /* @__PURE__ */ Symbol.for("@lunr/customize"), PERMISSION_MODE_BRIDGE = /* @__PURE__ */ Symbol.for("@lunr/permission-mode");
8
+ function lunrCustomizeBridge() {
9
+ return globalThis[CUSTOMIZE_BRIDGE];
10
+ }
11
+ function lunrPermissionModeBridge() {
12
+ return globalThis[PERMISSION_MODE_BRIDGE];
13
+ }
14
+ function lunrFooterToggles() {
15
+ let bridge = lunrCustomizeBridge();
16
+ return {
17
+ mcp: bridge?.getFooterMcp?.() ?? !0,
18
+ lsp: bridge?.getFooterLsp?.() ?? !1,
19
+ context: bridge?.getFooterContext?.() ?? !0,
20
+ tokens: bridge?.getFooterTokens?.() ?? !0,
21
+ cacheHitRate: bridge?.getFooterCacheHitRate?.() ?? !0,
22
+ tps: bridge?.getFooterTps?.() ?? !0,
23
+ statuses: bridge?.getFooterStatuses?.() ?? !0,
24
+ git: bridge?.getFooterGit?.() ?? !0,
25
+ plan: bridge?.getFooterPlan?.() ?? !0,
26
+ planBar: bridge?.getFooterPlanBar?.() ?? !0
27
+ };
28
+ }
29
+ var USAGE_SERVICE_BRIDGE = /* @__PURE__ */ Symbol.for("@lunr/usage-service");
30
+ function lunrUsageBridge() {
31
+ return globalThis[USAGE_SERVICE_BRIDGE];
32
+ }
33
+ function compactPlanBar(percent, theme) {
34
+ let clamped = Math.max(0, Math.min(100, percent)), filled = Math.round(clamped / 100 * 8), token = clamped > 90 ? "error" : clamped > 70 ? "warning" : "success", fill = filled > 0 ? color(theme, token, "\u2588".repeat(filled)) : "", rest = filled < 8 ? color(theme, "dim", "\u2591".repeat(8 - filled)) : "";
35
+ return fill + rest;
36
+ }
37
+ function lunrPermissionMode() {
38
+ return lunrPermissionModeBridge()?.getMode();
39
+ }
40
+ function lunrPromptGlyph(theme) {
41
+ let arrow = theme?.glyph?.("promptArrow") ?? ">";
42
+ return arrow ? `${arrow} ` : "";
43
+ }
44
+ function thinkingThemeToken(level) {
45
+ switch (level) {
46
+ case "off":
47
+ return "thinkingOff";
48
+ case "minimal":
49
+ return "thinkingMinimal";
50
+ case "low":
51
+ return "thinkingLow";
52
+ case "medium":
53
+ return "thinkingMedium";
54
+ case "high":
55
+ return "thinkingHigh";
56
+ case "xhigh":
57
+ return "thinkingXhigh";
58
+ case "max":
59
+ return "thinkingMax";
60
+ default:
61
+ return "thinkingOff";
62
+ }
63
+ }
64
+ function skipAnsi(str, pos) {
65
+ if (str.charCodeAt(pos) !== 27)
66
+ return 0;
67
+ let next = str.charCodeAt(pos + 1);
68
+ if (next === 91) {
69
+ let j = pos + 2;
70
+ for (; j < str.length; ) {
71
+ let c = str.charCodeAt(j);
72
+ if (c >= 64 && c <= 126)
73
+ return j + 1 - pos;
74
+ j++;
75
+ }
76
+ return str.length - pos;
77
+ }
78
+ if (next === 93 || next === 80 || next === 95 || next === 94 || next === 88) {
79
+ let j = pos + 2;
80
+ for (; j < str.length; ) {
81
+ let c = str.charCodeAt(j);
82
+ if (c === 7)
83
+ return j + 1 - pos;
84
+ if (c === 27 && str.charCodeAt(j + 1) === 92)
85
+ return j + 2 - pos;
86
+ j++;
87
+ }
88
+ return str.length - pos;
89
+ }
90
+ return Number.isNaN(next) ? 1 : 2;
91
+ }
92
+ function isWide(cp) {
93
+ return cp >= 4352 && cp <= 4447 || cp >= 11904 && cp <= 12350 || cp >= 12353 && cp <= 13311 || cp >= 13312 && cp <= 19903 || cp >= 19968 && cp <= 40959 || cp >= 40960 && cp <= 42191 || cp >= 44032 && cp <= 55203 || cp >= 63744 && cp <= 64255 || cp >= 65072 && cp <= 65103 || cp >= 65280 && cp <= 65376 || cp >= 65504 && cp <= 65510 || cp >= 127744 && cp <= 129791 || cp >= 131072 && cp <= 262141;
94
+ }
95
+ function charWidth(cp) {
96
+ return cp >= 32 && cp < 127 ? 1 : cp >= 768 && cp <= 879 || cp >= 65024 && cp <= 65039 || cp === 8205 ? 0 : isWide(cp) ? 2 : 1;
97
+ }
98
+ function displayWidth(str) {
99
+ let w = 0, i = 0;
100
+ for (; i < str.length; ) {
101
+ let skip = skipAnsi(str, i);
102
+ if (skip > 0) {
103
+ i += skip;
104
+ continue;
105
+ }
106
+ let cp = str.codePointAt(i) ?? 0;
107
+ w += charWidth(cp), i += cp > 65535 ? 2 : 1;
108
+ }
109
+ return w;
110
+ }
111
+ function padRight(line, width) {
112
+ let w = displayWidth(line);
113
+ return w >= width ? line : line + " ".repeat(width - w);
114
+ }
115
+ function truncatePlain(text, maxWidth) {
116
+ if (maxWidth <= 0)
117
+ return "";
118
+ if (displayWidth(text) <= maxWidth)
119
+ return text;
120
+ let out = "", w = 0, i = 0;
121
+ for (; i < text.length; ) {
122
+ let code = text.codePointAt(i) ?? 0, cw = charWidth(code);
123
+ if (w + cw > maxWidth)
124
+ break;
125
+ out += String.fromCodePoint(code), w += cw, i += code > 65535 ? 2 : 1;
126
+ }
127
+ return out;
128
+ }
129
+ function truncateToWidth(text, maxWidth, ellipsis = "") {
130
+ if (maxWidth <= 0)
131
+ return "";
132
+ if (displayWidth(text) <= maxWidth)
133
+ return text;
134
+ let target = Math.max(0, maxWidth - displayWidth(ellipsis)), out = "", w = 0, i = 0;
135
+ for (; i < text.length && w < target; ) {
136
+ let skip = skipAnsi(text, i);
137
+ if (skip > 0) {
138
+ out += text.slice(i, i + skip), i += skip;
139
+ continue;
140
+ }
141
+ let code = text.codePointAt(i) ?? 0, cw = charWidth(code);
142
+ if (w + cw > target)
143
+ break;
144
+ out += String.fromCodePoint(code), w += cw, i += code > 65535 ? 2 : 1;
145
+ }
146
+ return out += "\x1B[0m", out + ellipsis;
147
+ }
148
+ function clampLines(lines, width) {
149
+ return lines.map((l) => displayWidth(l) > width ? truncateToWidth(l, width, "") : l);
150
+ }
151
+ function color(theme, token, text) {
152
+ try {
153
+ return theme?.fg?.(token, text) ?? text;
154
+ } catch {
155
+ return text;
156
+ }
157
+ }
158
+ function stripAnsi(s) {
159
+ return s.replace(/\x1b\[[0-9;]*m/g, "");
160
+ }
161
+ function formatCount(count) {
162
+ return count < 1e3 ? count.toString() : count < 1e4 ? `${(count / 1e3).toFixed(1)}k` : count < 1e6 ? `${Math.round(count / 1e3)}k` : count < 1e7 ? `${(count / 1e6).toFixed(1)}M` : `${Math.round(count / 1e6)}M`;
163
+ }
164
+ function getUsageTotals(ctx) {
165
+ let input = 0, output = 0, cacheRead = 0, cacheWrite = 0, latestCacheHitRate, entries = ctx.sessionManager.getEntries?.() ?? ctx.sessionManager.getBranch?.() ?? [];
166
+ for (let entry of entries) {
167
+ if (entry.type !== "message")
168
+ continue;
169
+ let m = entry.message;
170
+ if (!m || m.role !== "assistant")
171
+ continue;
172
+ let u = m.usage;
173
+ if (!u)
174
+ continue;
175
+ let usageInput = u.input ?? 0, usageCacheRead = u.cacheRead ?? 0, usageCacheWrite = u.cacheWrite ?? 0;
176
+ input += usageInput, output += u.output ?? 0, cacheRead += usageCacheRead, cacheWrite += usageCacheWrite;
177
+ let promptTokens = usageInput + usageCacheRead + usageCacheWrite;
178
+ latestCacheHitRate = promptTokens > 0 ? usageCacheRead / promptTokens * 100 : void 0;
179
+ }
180
+ return { input, output, cacheActivity: cacheRead > 0 || cacheWrite > 0, latestCacheHitRate };
181
+ }
182
+ function formatProviderLabel(provider) {
183
+ return provider ? {
184
+ anthropic: "Anthropic",
185
+ gemini: "Google",
186
+ google: "Google",
187
+ ollama: "Ollama",
188
+ "ollama-cloud": "Ollama Cloud",
189
+ openai: "OpenAI",
190
+ "openai-codex": "OpenAI",
191
+ mistral: "Mistral"
192
+ }[provider] ?? provider.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()) : "Unknown";
193
+ }
194
+ function colorEffort(theme, level, text) {
195
+ let token = thinkingThemeToken(level), painted = color(theme, token, text);
196
+ return token === "thinkingMax" && painted === text ? color(theme, "thinkingXhigh", text) : painted;
197
+ }
198
+ function buildChip(ctx, pi) {
199
+ let modelId = ctx.model?.id ?? "no-model", provider = ctx.model?.provider, providerLabel = formatProviderLabel(provider), fast = provider === "openai-codex" && lunrCustomizeBridge()?.getOpenAIFastMode?.() ? " \xB7 fast" : "", level = pi.getThinkingLevel(), effort = level;
200
+ return { left: `${modelId}${fast} \xB7 ${providerLabel} \xB7 `, effort, level };
201
+ }
202
+ var ChatboxEditor = class extends CustomEditor {
203
+ ctx;
204
+ pi;
205
+ bind(ctx, pi) {
206
+ this.ctx = ctx, this.pi = pi;
207
+ }
208
+ /** Keep the displayed values while /new or /resume replaces the old runtime. */
209
+ unbind() {
210
+ let level = this.pi.getThinkingLevel();
211
+ this.bind({
212
+ mode: "tui",
213
+ hasUI: !0,
214
+ model: this.ctx.model,
215
+ sessionManager: { getEntries: () => [] },
216
+ getContextUsage: () => {
217
+ },
218
+ ui: { theme: this.ctx.ui?.theme, setEditorComponent() {
219
+ }, setFooter() {
220
+ } }
221
+ }, { getThinkingLevel: () => level, on() {
222
+ } });
223
+ }
224
+ constructor(tui, theme, keybindings, ctx, pi) {
225
+ super(tui, theme, keybindings, {
226
+ paddingX: 0
227
+ }), this.ctx = ctx, this.pi = pi;
228
+ }
229
+ color(token, text) {
230
+ return color(this.ctx.ui?.theme, token, text);
231
+ }
232
+ render(width) {
233
+ if (width <= 4)
234
+ return clampLines(super.render(width), width);
235
+ let glyph = lunrPromptGlyph(this.ctx.ui?.theme), glyphW = displayWidth(glyph), innerWidth = Math.max(1, width - glyphW), base = super.render(innerWidth), showing = this.isShowingAutocomplete(), acList = this.autocompleteList, acCount = 0;
236
+ if (showing && acList && typeof acList.render == "function")
237
+ try {
238
+ acCount = acList.render(innerWidth).length;
239
+ } catch {
240
+ acCount = 0;
241
+ }
242
+ let frame = base, acLines = [];
243
+ acCount > 0 && acCount < frame.length && (acLines = frame.slice(frame.length - acCount), frame = frame.slice(0, frame.length - acCount));
244
+ let inner = frame.length >= 2 ? frame.slice(1, frame.length - 1) : frame, body = inner.length > 0 ? inner : [""], top = ((s) => this.borderColor(s))("\u256D" + "\u2500".repeat(width - 2) + "\u256E"), gutter = glyphW > 0 ? " ".repeat(glyphW) : "", bodyLines = body.map((ln, i) => (i === 0 && glyphW > 0 ? this.color("dim", glyph) : gutter) + padRight(ln, innerWidth)), bottom = this.renderBottomBorder(width);
245
+ return [top, ...bodyLines, bottom, ...acLines];
246
+ }
247
+ renderBottomBorder(width) {
248
+ let border = (s) => this.borderColor(s), parts = buildChip(this.ctx, this.pi), plain = parts.left + parts.effort, overhead = 4, maxChip = Math.max(0, width - overhead), truncated = displayWidth(plain) > maxChip, chipPlain = truncated ? truncatePlain(plain, maxChip) : plain, chipW = displayWidth(chipPlain), dashTotal = Math.max(0, width - overhead - chipW), rightDashes = Math.min(dashTotal, 1), leftDashes = dashTotal - rightDashes, left = "\u2570" + "\u2500".repeat(leftDashes) + " ", right = " " + "\u2500".repeat(rightDashes) + "\u256F", theme = this.ctx.ui?.theme, chip = truncated ? this.color("white", chipPlain) : this.color("white", parts.left) + colorEffort(theme, parts.level, parts.effort);
249
+ return border(left) + chip + border(right);
250
+ }
251
+ };
252
+ function renderStatsLine(width, ctx, theme, footerData) {
253
+ let sep = color(theme, "accent2", " | "), parts = [], modeZone = [], mode = lunrPermissionMode();
254
+ mode === "yolo" || mode === "auto" ? modeZone.push(color(theme, "warning", mode)) : (mode === "manual" || mode === "plan") && modeZone.push(color(theme, "white", mode));
255
+ let footerToggles = lunrFooterToggles(), statuses = footerData.getExtensionStatuses?.();
256
+ if (statuses && statuses.size > 0) {
257
+ let modeKeys = footerToggles.statuses ? ["plan", "goal"] : [];
258
+ for (let key of modeKeys) {
259
+ let v = statuses.get(key);
260
+ v && modeZone.push(color(theme, "white", stripAnsi(v)));
261
+ }
262
+ let pipedKeys = [];
263
+ footerToggles.tps && pipedKeys.push("tps"), footerToggles.mcp && pipedKeys.push("mcp", "mcp-auth"), footerToggles.lsp && pipedKeys.push("lsp");
264
+ for (let key of pipedKeys) {
265
+ let v = statuses.get(key);
266
+ v && parts.push(color(theme, "white", stripAnsi(v)));
267
+ }
268
+ }
269
+ if (modeZone.length > 0 && parts.unshift(modeZone.join(color(theme, "dim", " \xB7 "))), footerToggles.git) {
270
+ let branch = footerData.getGitBranch?.();
271
+ if (branch) {
272
+ let diff = footerData.getGitDiffstat?.(), gitSeg = color(theme, "white", branch);
273
+ diff && (diff.added !== 0 || diff.removed !== 0) && (gitSeg += ` ${color(theme, "success", `+${diff.added}`)} ${color(theme, "error", `-${diff.removed}`)}`), parts.push(gitSeg);
274
+ }
275
+ }
276
+ if (footerToggles.plan) {
277
+ let provider = ctx.model?.provider;
278
+ if (provider) {
279
+ let usage = lunrUsageBridge();
280
+ usage?.prefetch?.(provider);
281
+ let seg = usage?.pickForFooter?.(provider);
282
+ if (seg) {
283
+ let pct = `${Math.round(seg.usedPercent)}%`, barColor = seg.usedPercent > 90 ? "error" : seg.usedPercent > 70 ? "warning" : "success", bar = footerToggles.planBar ? `${compactPlanBar(seg.usedPercent, theme)} ` : "";
284
+ parts.push(color(theme, "white", seg.label) + " " + bar + color(theme, barColor, pct));
285
+ }
286
+ }
287
+ }
288
+ if (footerToggles.context) {
289
+ let usage = ctx.getContextUsage(), win = ctx.model?.contextWindow ?? usage?.contextWindow ?? 0, ctxSeg = `${usage?.percent == null ? "?" : `${Math.round(usage.percent)}%`}/${formatCount(win)}`, pv = usage?.percent ?? 0;
290
+ pv > 90 ? parts.push(color(theme, "error", ctxSeg)) : pv > 70 ? parts.push(color(theme, "warning", ctxSeg)) : parts.push(color(theme, "white", ctxSeg));
291
+ }
292
+ let totals = getUsageTotals(ctx);
293
+ footerToggles.tokens && parts.push(color(theme, "white", `\u2191${formatCount(totals.input)} \u2193${formatCount(totals.output)}`)), footerToggles.cacheHitRate && totals.cacheActivity && totals.latestCacheHitRate !== void 0 && parts.push(color(theme, "white", `CH${totals.latestCacheHitRate.toFixed(1)}%`));
294
+ let line = parts.join(sep);
295
+ return displayWidth(line) > width && (line = truncateToWidth(line, width, "")), [line];
296
+ }
297
+ var chatboxEditors = /* @__PURE__ */ new WeakMap();
298
+ function getChatboxEditor(tui, theme, keybindings, ctx, pi) {
299
+ let editor = chatboxEditors.get(tui);
300
+ return editor ? editor.bind(ctx, pi) : (editor = new ChatboxEditor(tui, theme, keybindings, ctx, pi), chatboxEditors.set(tui, editor)), editor;
301
+ }
302
+ function installEditor(ctx, pi, setRequestor) {
303
+ if (typeof ctx.ui.setEditorComponent != "function")
304
+ return;
305
+ let editor, factory = (tui, _theme, _keybindings) => (setRequestor(() => {
306
+ try {
307
+ tui.requestRender();
308
+ } catch {
309
+ }
310
+ }), editor = getChatboxEditor(tui, _theme, _keybindings, ctx, pi), editor);
311
+ return ctx.ui.setEditorComponent(factory), () => editor?.unbind();
312
+ }
313
+ function installFooter(ctx, setRequestor) {
314
+ if (typeof ctx.ui.setFooter != "function")
315
+ return;
316
+ let disposed = !1, factory = (tui, _theme, _footerData) => (setRequestor(() => {
317
+ try {
318
+ tui.requestRender();
319
+ } catch {
320
+ }
321
+ }), {
322
+ invalidate() {
323
+ },
324
+ dispose() {
325
+ disposed = !0;
326
+ },
327
+ render(width) {
328
+ return disposed ? [] : renderStatsLine(width, ctx, _theme, _footerData);
329
+ }
330
+ });
331
+ ctx.ui.setFooter(factory);
332
+ }
333
+ function ashxj_tui_default(pi) {
334
+ let unbindEditor, renderRequestor, requestRender = () => {
335
+ try {
336
+ renderRequestor?.();
337
+ } catch {
338
+ }
339
+ };
340
+ pi.on("session_start", (_event, ctx) => {
341
+ !ctx.hasUI || ctx.mode !== "tui" || (unbindEditor = installEditor(ctx, pi, (r) => {
342
+ renderRequestor = r;
343
+ }), installFooter(ctx, (r) => {
344
+ renderRequestor || (renderRequestor = r);
345
+ }));
346
+ }), pi.on("session_shutdown", (_event, ctx) => {
347
+ unbindEditor?.(), unbindEditor = void 0;
348
+ try {
349
+ typeof ctx.ui?.setEditorComponent == "function" && ctx.ui.setEditorComponent(void 0);
350
+ } catch {
351
+ }
352
+ try {
353
+ typeof ctx.ui?.setFooter == "function" && ctx.ui.setFooter(void 0);
354
+ } catch {
355
+ }
356
+ renderRequestor = void 0;
357
+ });
358
+ let reRenderEvents = [
359
+ "model_select",
360
+ "thinking_level_select",
361
+ "agent_end",
362
+ "message_end",
363
+ "tool_execution_end",
364
+ "session_compact"
365
+ ];
366
+ for (let ev of reRenderEvents)
367
+ pi.on(ev, () => requestRender());
368
+ }
369
+
370
+ export {
371
+ thinkingThemeToken,
372
+ renderStatsLine,
373
+ getChatboxEditor,
374
+ ashxj_tui_default
375
+ };