@ashx-j/lunr-dev 0.2.13-dev.8.1 → 0.2.16-dev.9.1

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 (339) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/dist/builtin-extensions/ashxj-tui.d.ts +14 -0
  3. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  4. package/dist/builtin-extensions/ashxj-tui.js +37 -3
  5. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  6. package/dist/builtin-extensions/index.d.ts +1 -15
  7. package/dist/builtin-extensions/index.d.ts.map +1 -1
  8. package/dist/builtin-extensions/index.js +7 -21
  9. package/dist/builtin-extensions/index.js.map +1 -1
  10. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  11. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
  12. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  13. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
  14. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +163 -169
  16. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  17. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +46 -0
  18. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
  19. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +109 -0
  20. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
  21. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
  22. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
  23. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
  24. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
  25. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
  26. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  27. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
  28. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  29. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  30. package/dist/builtin-extensions/pi-mcp-adapter/index.js +251 -94
  31. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  32. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
  33. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  34. package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
  35. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  36. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
  37. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
  38. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
  39. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  40. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
  41. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  42. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  43. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  44. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  45. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  46. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  47. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  48. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +38 -14
  49. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  51. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  54. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
  56. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  57. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +2 -1
  60. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
  64. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  65. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  66. package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
  67. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  68. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  69. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  70. package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
  71. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  72. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  73. package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
  74. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  75. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  76. package/dist/builtin-extensions/pi-web-access/index.js +167 -77
  77. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  78. package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
  79. package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
  80. package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
  81. package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
  82. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
  83. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
  84. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
  85. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
  86. package/dist/catalog/publication.json +12 -12
  87. package/dist/cli-runtime.d.ts +3 -0
  88. package/dist/cli-runtime.d.ts.map +1 -0
  89. package/dist/cli-runtime.js +73 -0
  90. package/dist/cli-runtime.js.map +1 -0
  91. package/dist/cli.d.ts.map +1 -1
  92. package/dist/cli.js +14 -53
  93. package/dist/cli.js.map +1 -1
  94. package/dist/config.d.ts +1 -0
  95. package/dist/config.d.ts.map +1 -1
  96. package/dist/config.js +1 -0
  97. package/dist/config.js.map +1 -1
  98. package/dist/core/agent-session.d.ts +3 -0
  99. package/dist/core/agent-session.d.ts.map +1 -1
  100. package/dist/core/agent-session.js +56 -12
  101. package/dist/core/agent-session.js.map +1 -1
  102. package/dist/core/compaction/compaction.d.ts.map +1 -1
  103. package/dist/core/compaction/compaction.js +10 -5
  104. package/dist/core/compaction/compaction.js.map +1 -1
  105. package/dist/core/extensions/host-static.d.ts.map +1 -1
  106. package/dist/core/extensions/host-static.js +34 -12
  107. package/dist/core/extensions/host-static.js.map +1 -1
  108. package/dist/core/extensions/loader.d.ts +1 -2
  109. package/dist/core/extensions/loader.d.ts.map +1 -1
  110. package/dist/core/extensions/loader.js +10 -64
  111. package/dist/core/extensions/loader.js.map +1 -1
  112. package/dist/core/extensions/types.d.ts +2 -2
  113. package/dist/core/extensions/types.d.ts.map +1 -1
  114. package/dist/core/extensions/types.js.map +1 -1
  115. package/dist/core/footer-data-provider.d.ts.map +1 -1
  116. package/dist/core/footer-data-provider.js +2 -0
  117. package/dist/core/footer-data-provider.js.map +1 -1
  118. package/dist/core/permissions.d.ts +0 -2
  119. package/dist/core/permissions.d.ts.map +1 -1
  120. package/dist/core/permissions.js +10 -18
  121. package/dist/core/permissions.js.map +1 -1
  122. package/dist/core/sdk.d.ts +1 -1
  123. package/dist/core/sdk.d.ts.map +1 -1
  124. package/dist/core/sdk.js +1 -1
  125. package/dist/core/sdk.js.map +1 -1
  126. package/dist/core/slash-commands.d.ts.map +1 -1
  127. package/dist/core/slash-commands.js +0 -1
  128. package/dist/core/slash-commands.js.map +1 -1
  129. package/dist/core/timings.d.ts +2 -1
  130. package/dist/core/timings.d.ts.map +1 -1
  131. package/dist/core/timings.js +17 -2
  132. package/dist/core/timings.js.map +1 -1
  133. package/dist/gateway/commands.d.ts +1 -1
  134. package/dist/gateway/commands.d.ts.map +1 -1
  135. package/dist/gateway/commands.js +1 -18
  136. package/dist/gateway/commands.js.map +1 -1
  137. package/dist/main.d.ts +2 -2
  138. package/dist/main.d.ts.map +1 -1
  139. package/dist/main.js +57 -48
  140. package/dist/main.js.map +1 -1
  141. package/dist/modes/interactive/interactive-mode.d.ts +12 -21
  142. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  143. package/dist/modes/interactive/interactive-mode.js +120 -144
  144. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  145. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  146. package/dist/modes/interactive/theme/theme.js +95 -84
  147. package/dist/modes/interactive/theme/theme.js.map +1 -1
  148. package/dist/node-runtime/agent-session-services-IFJMSX7Z.js +36 -0
  149. package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
  150. package/dist/node-runtime/brave-UWDA3I22.js +143 -0
  151. package/dist/node-runtime/builtin-extensions-LYZ3BFWQ.js +28 -0
  152. package/dist/node-runtime/chunk-2QKLKMKC.js +173 -0
  153. package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
  154. package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
  155. package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
  156. package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
  157. package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
  158. package/dist/node-runtime/chunk-4TLO4PO2.js +3427 -0
  159. package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
  160. package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
  161. package/dist/node-runtime/chunk-5P7PZMRU.js +610 -0
  162. package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
  163. package/dist/node-runtime/chunk-7NBZ5P7I.js +24 -0
  164. package/dist/node-runtime/chunk-A2KQXUJD.js +105 -0
  165. package/dist/node-runtime/chunk-AD6VXAO7.js +342 -0
  166. package/dist/node-runtime/chunk-AHSTJBIB.js +64 -0
  167. package/dist/node-runtime/chunk-AJX357CL.js +20211 -0
  168. package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
  169. package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
  170. package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
  171. package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
  172. package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
  173. package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
  174. package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
  175. package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
  176. package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
  177. package/dist/node-runtime/chunk-CDFZEWPU.js +8388 -0
  178. package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
  179. package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
  180. package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
  181. package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
  182. package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
  183. package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
  184. package/dist/node-runtime/chunk-ECD5L7YI.js +1369 -0
  185. package/dist/node-runtime/chunk-EDBJNRSM.js +46 -0
  186. package/dist/node-runtime/chunk-F4VQFJI2.js +1269 -0
  187. package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
  188. package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
  189. package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
  190. package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
  191. package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
  192. package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
  193. package/dist/node-runtime/chunk-IPA627GP.js +296 -0
  194. package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
  195. package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
  196. package/dist/node-runtime/chunk-LZAW4ZX3.js +633 -0
  197. package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
  198. package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
  199. package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
  200. package/dist/node-runtime/chunk-MKKH27PH.js +8956 -0
  201. package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
  202. package/dist/node-runtime/chunk-N77MY65L.js +966 -0
  203. package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
  204. package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
  205. package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
  206. package/dist/node-runtime/chunk-PBC2Y6GS.js +903 -0
  207. package/dist/node-runtime/chunk-PCGNAY2O.js +1324 -0
  208. package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
  209. package/dist/node-runtime/chunk-PGAJ5MO5.js +7558 -0
  210. package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
  211. package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
  212. package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
  213. package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
  214. package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
  215. package/dist/node-runtime/chunk-QH42CDX3.js +9451 -0
  216. package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
  217. package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
  218. package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
  219. package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
  220. package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
  221. package/dist/node-runtime/chunk-TQNSPERU.js +949 -0
  222. package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
  223. package/dist/node-runtime/chunk-VSELYKWU.js +772 -0
  224. package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
  225. package/dist/node-runtime/chunk-WJVFOIB5.js +24921 -0
  226. package/dist/node-runtime/chunk-WOVTOV5P.js +5653 -0
  227. package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
  228. package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
  229. package/dist/node-runtime/chunk-YF63P5ZT.js +864 -0
  230. package/dist/node-runtime/chunk-YSKSB3BJ.js +295 -0
  231. package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
  232. package/dist/node-runtime/chunk-ZKMFUD3Q.js +2834 -0
  233. package/dist/node-runtime/cli-runtime.js +81 -0
  234. package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
  235. package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
  236. package/dist/node-runtime/command-L3LAHDIH.js +13 -0
  237. package/dist/node-runtime/commands-RL5YBW5I.js +291 -0
  238. package/dist/node-runtime/config-FMEOZSWE.js +77 -0
  239. package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
  240. package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
  241. package/dist/node-runtime/direct-tool-executor-JVDXTO7A.js +188 -0
  242. package/dist/node-runtime/exa-LL64QZR2.js +329 -0
  243. package/dist/node-runtime/export-html-KR26FOUZ.js +150 -0
  244. package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
  245. package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
  246. package/dist/node-runtime/extract-XLQSJN4V.js +17 -0
  247. package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
  248. package/dist/node-runtime/gateway-X2TI5X7F.js +2484 -0
  249. package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
  250. package/dist/node-runtime/gemini-search-U7SUMPQA.js +330 -0
  251. package/dist/node-runtime/gemini-url-context-PXWCBQHK.js +103 -0
  252. package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
  253. package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
  254. package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
  255. package/dist/node-runtime/index.js +859 -0
  256. package/dist/node-runtime/init-NJV2T55N.js +28 -0
  257. package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
  258. package/dist/node-runtime/interactive-mode-KOM35YF2.js +56 -0
  259. package/dist/node-runtime/interactive-view-U6OILKF3.js +249 -0
  260. package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
  261. package/dist/node-runtime/lunr-cron-YJ5UHYRD.js +268 -0
  262. package/dist/node-runtime/main.js +54 -0
  263. package/dist/node-runtime/mcp-auth-flow-QIXHW6QN.js +32 -0
  264. package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
  265. package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
  266. package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
  267. package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
  268. package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
  269. package/dist/node-runtime/package-manager-cli-TZZHJCVI.js +749 -0
  270. package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
  271. package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
  272. package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
  273. package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
  274. package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
  275. package/dist/node-runtime/pi-mcp-adapter-QFB37AVN.js +422 -0
  276. package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
  277. package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
  278. package/dist/node-runtime/pi-subagents-7XJ4H53P.js +6023 -0
  279. package/dist/node-runtime/pi-web-access-DPGAVKOA.js +1864 -0
  280. package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
  281. package/dist/node-runtime/proxy-modes-HEEFK4KC.js +685 -0
  282. package/dist/node-runtime/rpc-entry.js +62 -0
  283. package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
  284. package/dist/node-runtime/runtime-bridges-PPHNBFWL.js +14 -0
  285. package/dist/node-runtime/session-manager-MQNBYACL.js +35 -0
  286. package/dist/node-runtime/session-selector-5AZLJS6U.js +14 -0
  287. package/dist/node-runtime/settings-manager-5LF2VQWC.js +21 -0
  288. package/dist/node-runtime/src-Y7JSCK64.js +2407 -0
  289. package/dist/node-runtime/subagent-executor-5RNDEPIJ.js +8483 -0
  290. package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
  291. package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
  292. package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
  293. package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
  294. package/dist/node-runtime/update-cli-A253SZ7P.js +73 -0
  295. package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
  296. package/dist/node-runtime/video-extract-OYT5WKS5.js +304 -0
  297. package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
  298. package/dist/node-runtime/youtube-extract-TQYKGFGS.js +264 -0
  299. package/dist/startup/benchmark-request.d.ts +3 -0
  300. package/dist/startup/benchmark-request.d.ts.map +1 -0
  301. package/dist/startup/benchmark-request.js +65 -0
  302. package/dist/startup/benchmark-request.js.map +1 -0
  303. package/dist/startup/interactive-view.d.ts +55 -0
  304. package/dist/startup/interactive-view.d.ts.map +1 -0
  305. package/dist/startup/interactive-view.js +332 -0
  306. package/dist/startup/interactive-view.js.map +1 -0
  307. package/dist/startup/launch-routing.d.ts.map +1 -1
  308. package/dist/startup/launch-routing.js +9 -10
  309. package/dist/startup/launch-routing.js.map +1 -1
  310. package/dist/startup/startup-milestones.d.ts +1 -1
  311. package/dist/startup/startup-milestones.d.ts.map +1 -1
  312. package/dist/startup/startup-milestones.js +3 -2
  313. package/dist/startup/startup-milestones.js.map +1 -1
  314. package/dist/utils/await-with-abort.d.ts +2 -0
  315. package/dist/utils/await-with-abort.d.ts.map +1 -0
  316. package/dist/utils/await-with-abort.js +19 -0
  317. package/dist/utils/await-with-abort.js.map +1 -0
  318. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  319. package/dist/utils/syntax-highlight.js +10 -4
  320. package/dist/utils/syntax-highlight.js.map +1 -1
  321. package/docs/compaction.md +5 -3
  322. package/docs/development.md +5 -1
  323. package/docs/features.md +0 -1
  324. package/docs/interactive-startup.md +98 -0
  325. package/docs/usage.md +0 -1
  326. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  327. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  328. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  329. package/examples/extensions/gondolin/package-lock.json +2 -2
  330. package/examples/extensions/gondolin/package.json +1 -1
  331. package/examples/extensions/sandbox/package-lock.json +2 -2
  332. package/examples/extensions/sandbox/package.json +1 -1
  333. package/examples/extensions/with-deps/package-lock.json +2 -2
  334. package/examples/extensions/with-deps/package.json +1 -1
  335. package/package.json +20 -20
  336. package/dist/core/swarm.d.ts +0 -23
  337. package/dist/core/swarm.d.ts.map +0 -1
  338. package/dist/core/swarm.js +0 -45
  339. package/dist/core/swarm.js.map +0 -1
@@ -0,0 +1,96 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+
3
+ // packages/coding-agent/dist/core/messages.js
4
+ var COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:
5
+
6
+ <summary>
7
+ `, COMPACTION_SUMMARY_SUFFIX = `
8
+ </summary>`, BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:
9
+
10
+ <summary>
11
+ `, BRANCH_SUMMARY_SUFFIX = "</summary>";
12
+ function bashExecutionToText(msg) {
13
+ let text = `Ran \`${msg.command}\`
14
+ `;
15
+ return msg.output ? text += `\`\`\`
16
+ ${msg.output}
17
+ \`\`\`` : text += "(no output)", msg.cancelled ? text += `
18
+
19
+ (command cancelled)` : msg.exitCode !== null && msg.exitCode !== void 0 && msg.exitCode !== 0 && (text += `
20
+
21
+ Command exited with code ${msg.exitCode}`), msg.truncated && msg.fullOutputPath && (text += `
22
+
23
+ [Output truncated. Full output: ${msg.fullOutputPath}]`), text;
24
+ }
25
+ function createBranchSummaryMessage(summary, fromId, timestamp) {
26
+ return {
27
+ role: "branchSummary",
28
+ summary,
29
+ fromId,
30
+ timestamp: new Date(timestamp).getTime()
31
+ };
32
+ }
33
+ function createCompactionSummaryMessage(summary, tokensBefore, timestamp) {
34
+ return {
35
+ role: "compactionSummary",
36
+ summary,
37
+ tokensBefore,
38
+ timestamp: new Date(timestamp).getTime()
39
+ };
40
+ }
41
+ function createCustomMessage(customType, content, display, details, timestamp) {
42
+ return {
43
+ role: "custom",
44
+ customType,
45
+ content,
46
+ display,
47
+ details,
48
+ timestamp: new Date(timestamp).getTime()
49
+ };
50
+ }
51
+ function convertToLlm(messages) {
52
+ return messages.map((m) => {
53
+ switch (m.role) {
54
+ case "bashExecution":
55
+ return m.excludeFromContext ? void 0 : {
56
+ role: "user",
57
+ content: [{ type: "text", text: bashExecutionToText(m) }],
58
+ timestamp: m.timestamp
59
+ };
60
+ case "custom":
61
+ return {
62
+ role: "user",
63
+ content: typeof m.content == "string" ? [{ type: "text", text: m.content }] : m.content,
64
+ timestamp: m.timestamp
65
+ };
66
+ case "branchSummary":
67
+ return {
68
+ role: "user",
69
+ content: [{ type: "text", text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],
70
+ timestamp: m.timestamp
71
+ };
72
+ case "compactionSummary":
73
+ return {
74
+ role: "user",
75
+ content: [
76
+ { type: "text", text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX }
77
+ ],
78
+ timestamp: m.timestamp
79
+ };
80
+ case "user":
81
+ case "assistant":
82
+ case "toolResult":
83
+ return m;
84
+ default:
85
+ let _exhaustiveCheck = m;
86
+ return;
87
+ }
88
+ }).filter((m) => m !== void 0);
89
+ }
90
+
91
+ export {
92
+ createBranchSummaryMessage,
93
+ createCompactionSummaryMessage,
94
+ createCustomMessage,
95
+ convertToLlm
96
+ };
@@ -0,0 +1,126 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ sanitizeBinaryOutput
4
+ } from "./chunk-ZCHMJ34K.js";
5
+ import {
6
+ resolvePath
7
+ } from "./chunk-PCIGF2XK.js";
8
+
9
+ // packages/coding-agent/dist/core/tools/render-utils.js
10
+ import * as os from "node:os";
11
+ import { basename } from "node:path";
12
+ import { pathToFileURL } from "node:url";
13
+ import { getCapabilities, getImageDimensions, hyperlink, imageFallback } from "@ashx-j/lunr-tui";
14
+
15
+ // packages/coding-agent/dist/utils/ansi.js
16
+ function ansiRegex({ onlyFirst = !1 } = {}) {
17
+ let pattern = "(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
18
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
19
+ }
20
+ var regex = ansiRegex();
21
+ function stripAnsi(value) {
22
+ if (typeof value != "string")
23
+ throw new TypeError(`Expected a \`string\`, got \`${typeof value}\``);
24
+ return !value.includes("\x1B") && !value.includes("\x9B") ? value : value.replace(regex, "");
25
+ }
26
+
27
+ // packages/coding-agent/dist/core/tools/render-utils.js
28
+ function shortenPath(path) {
29
+ if (typeof path != "string")
30
+ return "";
31
+ let home = os.homedir();
32
+ return path.startsWith(home) ? `~${path.slice(home.length)}` : path;
33
+ }
34
+ function linkPath(styledText, rawPath, cwd) {
35
+ if (!getCapabilities().hyperlinks)
36
+ return styledText;
37
+ let absolutePath = resolvePath(rawPath, cwd);
38
+ return hyperlink(styledText, pathToFileURL(absolutePath).href);
39
+ }
40
+ function str(value) {
41
+ return typeof value == "string" ? value : value == null ? "" : null;
42
+ }
43
+ function replaceTabs(text) {
44
+ return text.replace(/\t/g, " ");
45
+ }
46
+ function normalizeDisplayText(text) {
47
+ return text.replace(/\r/g, "");
48
+ }
49
+ function getTextOutput(result, showImages) {
50
+ if (!result)
51
+ return "";
52
+ let textBlocks = result.content.filter((c) => c.type === "text"), imageBlocks = result.content.filter((c) => c.type === "image"), output = textBlocks.map((c) => sanitizeBinaryOutput(stripAnsi(c.text || "")).replace(/\r/g, "")).join(`
53
+ `), caps = getCapabilities();
54
+ if (imageBlocks.length > 0 && (!caps.images || !showImages)) {
55
+ let imageIndicators = imageBlocks.map((img) => {
56
+ let mimeType = img.mimeType ?? "image/unknown", dims = img.data && img.mimeType ? getImageDimensions(img.data, img.mimeType) ?? void 0 : void 0;
57
+ return imageFallback(mimeType, dims);
58
+ }).join(`
59
+ `);
60
+ output = output ? `${output}
61
+ ${imageIndicators}` : imageIndicators;
62
+ }
63
+ return output;
64
+ }
65
+ function invalidArgText(theme) {
66
+ return theme.fg("error", "[invalid arg]");
67
+ }
68
+ function toolGroupRole(continuation, followed) {
69
+ return !continuation && followed ? "first" : continuation && followed ? "middle" : continuation && !followed ? "last" : "singleton";
70
+ }
71
+ function toolGroupTree(context) {
72
+ return !context.expanded;
73
+ }
74
+ function formatGroupedCall(opts) {
75
+ let detail = opts.detail?.trim() ? opts.detail : "";
76
+ if (!((opts.tree ?? opts.compact === !0) && opts.role !== "singleton" && detail.length > 0))
77
+ return detail ? `${opts.dot} ${opts.title} ${detail}` : `${opts.dot} ${opts.title}`;
78
+ let branch = opts.role === "last" ? "\u2514\u2500" : "\u251C\u2500";
79
+ return opts.role === "first" ? `${opts.dot} ${opts.title}
80
+ ${branch} ${detail}` : ` ${branch} ${detail}`;
81
+ }
82
+ function toolStatusDot(state, theme) {
83
+ return theme.fg(state === "pending" ? "muted" : state, "\u25CF");
84
+ }
85
+ function toolStatusDotFromContext(context, theme) {
86
+ return toolStatusDot(context.isPartial ? "pending" : context.isError ? "error" : "success", theme);
87
+ }
88
+ function renderToolPath(rawPath, theme, cwd, options) {
89
+ if (rawPath === null)
90
+ return invalidArgText(theme);
91
+ let value = rawPath || options?.emptyFallback;
92
+ return value ? linkPath(theme.fg("accent", shortenPath(value)), value, cwd) : theme.fg("toolOutput", "...");
93
+ }
94
+ function renderToolFileName(rawPath, theme, cwd) {
95
+ if (rawPath === null)
96
+ return invalidArgText(theme);
97
+ if (!rawPath)
98
+ return theme.fg("toolOutput", "...");
99
+ let name = basename(rawPath) || rawPath;
100
+ return linkPath(theme.fg("accent", name), rawPath, cwd);
101
+ }
102
+ function renderCollapsedSearchPath(rawPath, theme, cwd) {
103
+ if (rawPath === null)
104
+ return invalidArgText(theme);
105
+ let value = rawPath.trim();
106
+ if (!(!value || value === "." || value === "./"))
107
+ return renderToolFileName(value, theme, cwd);
108
+ }
109
+
110
+ export {
111
+ stripAnsi,
112
+ shortenPath,
113
+ str,
114
+ replaceTabs,
115
+ normalizeDisplayText,
116
+ getTextOutput,
117
+ invalidArgText,
118
+ toolGroupRole,
119
+ toolGroupTree,
120
+ formatGroupedCall,
121
+ toolStatusDot,
122
+ toolStatusDotFromContext,
123
+ renderToolPath,
124
+ renderToolFileName,
125
+ renderCollapsedSearchPath
126
+ };
@@ -0,0 +1,57 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+
3
+ // packages/coding-agent/dist/modes/interactive/components/custom-editor.js
4
+ import { Editor } from "@ashx-j/lunr-tui";
5
+ var CustomEditor = class extends Editor {
6
+ keybindings;
7
+ actionHandlers = /* @__PURE__ */ new Map();
8
+ // Special handlers that can be dynamically replaced
9
+ onEscape;
10
+ onCtrlD;
11
+ onPasteImage;
12
+ /** Handler for extension-registered shortcuts. Returns true if handled. */
13
+ onExtensionShortcut;
14
+ constructor(tui, theme, keybindings, options) {
15
+ super(tui, theme, options), this.keybindings = keybindings;
16
+ }
17
+ /**
18
+ * Register a handler for an app action.
19
+ */
20
+ onAction(action, handler) {
21
+ this.actionHandlers.set(action, handler);
22
+ }
23
+ handleInput(data) {
24
+ if (!this.onExtensionShortcut?.(data)) {
25
+ if (this.keybindings.matches(data, "app.clipboard.pasteImage")) {
26
+ (this.onPasteImage ?? this.actionHandlers.get("app.clipboard.pasteImage"))?.();
27
+ return;
28
+ }
29
+ if (this.keybindings.matches(data, "app.interrupt")) {
30
+ if (!this.isShowingAutocomplete()) {
31
+ let handler = this.onEscape ?? this.actionHandlers.get("app.interrupt");
32
+ if (handler) {
33
+ handler();
34
+ return;
35
+ }
36
+ }
37
+ super.handleInput(data);
38
+ return;
39
+ }
40
+ if (this.keybindings.matches(data, "app.exit") && this.getText().length === 0) {
41
+ let handler = this.onCtrlD ?? this.actionHandlers.get("app.exit");
42
+ handler && handler();
43
+ return;
44
+ }
45
+ for (let [action, handler] of this.actionHandlers)
46
+ if (action !== "app.interrupt" && action !== "app.exit" && this.keybindings.matches(data, action)) {
47
+ handler();
48
+ return;
49
+ }
50
+ super.handleInput(data);
51
+ }
52
+ }
53
+ };
54
+
55
+ export {
56
+ CustomEditor
57
+ };
@@ -0,0 +1,56 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+
3
+ // packages/coding-agent/dist/core/customize.js
4
+ var CUSTOMIZE_BRIDGE_SYMBOL = /* @__PURE__ */ Symbol.for("@lunr/customize"), activeSettingsManager, bridge = {
5
+ getOpenAIFastMode() {
6
+ return activeSettingsManager?.getOpenAIFastMode() ?? !1;
7
+ },
8
+ getFooterMcp() {
9
+ return activeSettingsManager?.getFooterMcp() ?? !0;
10
+ },
11
+ getFooterLsp() {
12
+ return activeSettingsManager?.getFooterLsp() ?? !1;
13
+ },
14
+ getFooterContext() {
15
+ return activeSettingsManager?.getFooterContext() ?? !0;
16
+ },
17
+ getFooterTokens() {
18
+ return activeSettingsManager?.getFooterTokens() ?? !0;
19
+ },
20
+ getFooterCacheHitRate() {
21
+ return activeSettingsManager?.getFooterCacheHitRate() ?? !0;
22
+ },
23
+ getFooterTps() {
24
+ return activeSettingsManager?.getFooterTps() ?? !0;
25
+ },
26
+ getFooterStatuses() {
27
+ return activeSettingsManager?.getFooterStatuses() ?? !0;
28
+ },
29
+ getFooterGit() {
30
+ return activeSettingsManager?.getFooterGit() ?? !0;
31
+ },
32
+ getFooterPlan() {
33
+ return activeSettingsManager?.getFooterPlan() ?? !0;
34
+ },
35
+ getFooterPlanBar() {
36
+ return activeSettingsManager?.getFooterPlanBar() ?? !0;
37
+ },
38
+ getHideThinkingBlock() {
39
+ return activeSettingsManager?.getHideThinkingBlock() ?? !1;
40
+ },
41
+ setHideThinkingBlock(hide) {
42
+ activeSettingsManager?.setHideThinkingBlock(hide);
43
+ }
44
+ };
45
+ function registerCustomizeBridge(settingsManager) {
46
+ activeSettingsManager = settingsManager, globalThis[CUSTOMIZE_BRIDGE_SYMBOL] = bridge;
47
+ }
48
+ function getCustomizeBridge() {
49
+ return globalThis[CUSTOMIZE_BRIDGE_SYMBOL];
50
+ }
51
+
52
+ export {
53
+ CUSTOMIZE_BRIDGE_SYMBOL,
54
+ registerCustomizeBridge,
55
+ getCustomizeBridge
56
+ };
@@ -0,0 +1,19 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+
3
+ // packages/coding-agent/dist/builtin-extensions/pi-mcp-adapter/panel-keys.js
4
+ import { matchesKey } from "@ashx-j/lunr-tui";
5
+ function createPanelKeys(keybindings) {
6
+ return keybindings ? {
7
+ selectUp: (data) => keybindings.matches(data, "tui.select.up"),
8
+ selectDown: (data) => keybindings.matches(data, "tui.select.down"),
9
+ selectConfirm: (data) => keybindings.matches(data, "tui.select.confirm")
10
+ } : {
11
+ selectUp: (data) => matchesKey(data, "up"),
12
+ selectDown: (data) => matchesKey(data, "down"),
13
+ selectConfirm: (data) => matchesKey(data, "return")
14
+ };
15
+ }
16
+
17
+ export {
18
+ createPanelKeys
19
+ };
@@ -0,0 +1,22 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+
3
+ // packages/coding-agent/dist/modes/interactive/components/countdown-timer.js
4
+ var CountdownTimer = class {
5
+ intervalId;
6
+ remainingSeconds;
7
+ tui;
8
+ onTick;
9
+ onExpire;
10
+ constructor(timeoutMs, tui, onTick, onExpire) {
11
+ this.tui = tui, this.onTick = onTick, this.onExpire = onExpire, this.remainingSeconds = Math.ceil(timeoutMs / 1e3), this.onTick(this.remainingSeconds), this.intervalId = setInterval(() => {
12
+ this.remainingSeconds--, this.onTick(this.remainingSeconds), this.tui?.requestRender(), this.remainingSeconds <= 0 && (this.dispose(), this.onExpire());
13
+ }, 1e3);
14
+ }
15
+ dispose() {
16
+ this.intervalId && (clearInterval(this.intervalId), this.intervalId = void 0);
17
+ }
18
+ };
19
+
20
+ export {
21
+ CountdownTimer
22
+ };
@@ -0,0 +1,296 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ areExperimentalFeaturesEnabled,
4
+ getProjectTrustOptions,
5
+ hasTrustRequiringProjectResources
6
+ } from "./chunk-2QKLKMKC.js";
7
+ import {
8
+ DefaultPackageManager,
9
+ emitProjectTrustEvent
10
+ } from "./chunk-PGAJ5MO5.js";
11
+ import {
12
+ SettingsManager
13
+ } from "./chunk-AJX357CL.js";
14
+ import {
15
+ ExtensionSelectorComponent
16
+ } from "./chunk-MJQDX3BA.js";
17
+ import {
18
+ ExtensionInputComponent
19
+ } from "./chunk-MGWCVY6Y.js";
20
+ import {
21
+ KeybindingsManager
22
+ } from "./chunk-YSKSB3BJ.js";
23
+ import {
24
+ DynamicBorder
25
+ } from "./chunk-3GHXVUAK.js";
26
+ import {
27
+ keyHint,
28
+ rawKeyHint
29
+ } from "./chunk-C4O2RSQQ.js";
30
+ import {
31
+ detectTerminalBackgroundFromEnv,
32
+ detectTerminalThemeForAuto,
33
+ initTheme,
34
+ loadThemeFromPath,
35
+ parseAutoThemeSetting,
36
+ resolveThemeSetting,
37
+ setRegisteredThemes,
38
+ setTheme,
39
+ theme
40
+ } from "./chunk-MX3GJNXJ.js";
41
+ import {
42
+ APP_NAME,
43
+ CONFIG_DIR_NAME,
44
+ ENV_AGENT_DIR,
45
+ PACKAGE_NAME,
46
+ getAgentDir,
47
+ getSettingsPath
48
+ } from "./chunk-PCIGF2XK.js";
49
+
50
+ // packages/coding-agent/dist/cli/startup-ui.js
51
+ import { ProcessTerminal, setKeybindings, TUI } from "@ashx-j/lunr-tui";
52
+ import { existsSync } from "fs";
53
+
54
+ // packages/coding-agent/dist/modes/interactive/components/first-time-setup.js
55
+ import { Container, getKeybindings, Spacer, Text } from "@ashx-j/lunr-tui";
56
+ var THEME_OPTIONS = [{ value: "moon", label: "Moon" }], ANALYTICS_OPTIONS = [
57
+ { value: !0, label: "Share anonymous usage data" },
58
+ { value: !1, label: "Don't share" }
59
+ ], SETUP_LOGO_LINES = ["\u2588\u2588\u2588\u2588\u2588\u2588", "\u2588\u2588 \u2588\u2588", "\u2588\u2588\u2588\u2588 \u2588\u2588", "\u2588\u2588 \u2588\u2588"], FirstTimeSetupComponent = class extends Container {
60
+ step = "theme";
61
+ themeIndex;
62
+ analyticsIndex = 0;
63
+ options;
64
+ constructor(options) {
65
+ super(), this.options = options, this.themeIndex = Math.max(0, THEME_OPTIONS.findIndex((option) => option.value === options.detectedTheme)), this.update();
66
+ }
67
+ // Rebuild the whole dialog on every change so theme previews recolor all text.
68
+ update() {
69
+ this.clear(), this.addChild(new DynamicBorder()), this.addChild(new Spacer(1)), this.addChild(new Text(theme.fg("accent", SETUP_LOGO_LINES.join(`
70
+ `)), 1, 0)), this.addChild(new Spacer(1)), this.addChild(new Text(theme.fg("accent", theme.bold("Welcome to lunR.")), 1, 0)), this.addChild(new Spacer(1)), this.step === "theme" ? (this.addChild(new Text(theme.fg("text", "Pick a theme."), 1, 0)), this.addChild(new Text(theme.fg("muted", `Detected system appearance: ${this.options.detectedTheme}`), 1, 0)), this.addChild(new Spacer(1)), this.addOptionList(THEME_OPTIONS.map((option) => option.label), this.themeIndex)) : (this.addChild(new Text(theme.fg("text", "Opt-in to anonymous usage data sharing?"), 1, 0)), this.addChild(new Text(theme.fg("muted", `Opting in stores a tracking identifier in settings.json and enables anonymous
71
+ usage analytics. This helps us to better debug, reproduce, and resolve issues
72
+ and bugs within lunR. You can observe what is shared using /privacy and make
73
+ changes anytime in settings.json.`), 1, 0)), this.addChild(new Spacer(1)), this.addOptionList(ANALYTICS_OPTIONS.map((option) => option.label), this.analyticsIndex)), this.addChild(new Spacer(1)), this.addChild(new Text(rawKeyHint("\u2191\u2193", "navigate") + " " + keyHint("tui.select.confirm", this.step === "theme" ? "continue" : "finish") + " " + keyHint("tui.select.cancel", "skip setup"), 1, 0)), this.addChild(new Spacer(1)), this.addChild(new DynamicBorder());
74
+ }
75
+ addOptionList(labels, selectedIndex) {
76
+ for (let i = 0; i < labels.length; i++) {
77
+ let isSelected = i === selectedIndex, prefix = isSelected ? theme.fg("accent", "\u2192 ") : " ", label = isSelected ? theme.fg("accent", labels[i]) : theme.fg("text", labels[i]);
78
+ this.addChild(new Text(`${prefix}${label}`, 1, 0));
79
+ }
80
+ }
81
+ moveSelection(delta) {
82
+ if (this.step === "theme") {
83
+ let next = Math.max(0, Math.min(THEME_OPTIONS.length - 1, this.themeIndex + delta));
84
+ next !== this.themeIndex && (this.themeIndex = next, this.options.onThemePreview(THEME_OPTIONS[this.themeIndex].value));
85
+ } else
86
+ this.analyticsIndex = Math.max(0, Math.min(ANALYTICS_OPTIONS.length - 1, this.analyticsIndex + delta));
87
+ this.update();
88
+ }
89
+ handleInput(keyData) {
90
+ let kb = getKeybindings();
91
+ kb.matches(keyData, "tui.select.up") || keyData === "k" ? this.moveSelection(-1) : kb.matches(keyData, "tui.select.down") || keyData === "j" ? this.moveSelection(1) : kb.matches(keyData, "tui.select.confirm") || keyData === `
92
+ ` ? this.step === "theme" ? (this.step = "analytics", this.update()) : this.options.onSubmit({
93
+ theme: THEME_OPTIONS[this.themeIndex].value,
94
+ shareAnalytics: ANALYTICS_OPTIONS[this.analyticsIndex].value
95
+ }) : kb.matches(keyData, "tui.select.cancel") && this.options.onCancel();
96
+ }
97
+ };
98
+
99
+ // packages/coding-agent/dist/cli/startup-ui.js
100
+ var OFFICIAL_PACKAGE_NAME = "@ashx-j/lunr-dev", OFFICIAL_APP_NAME = "pi", OFFICIAL_CONFIG_DIR_NAME = ".pi", LUNR_APP_NAME = "lunr", LUNR_CONFIG_DIR_NAME = ".lunr";
101
+ function isOfficialDistribution({ packageName, appName, configDirName }) {
102
+ return packageName === OFFICIAL_PACKAGE_NAME && (appName === OFFICIAL_APP_NAME && configDirName === OFFICIAL_CONFIG_DIR_NAME || appName === LUNR_APP_NAME && configDirName === LUNR_CONFIG_DIR_NAME);
103
+ }
104
+ function loadThemes(resources) {
105
+ let themes = [], seen = /* @__PURE__ */ new Set();
106
+ for (let resource of resources)
107
+ if (resource.enabled)
108
+ try {
109
+ let loadedTheme = loadThemeFromPath(resource.path);
110
+ if (loadedTheme.name) {
111
+ if (seen.has(loadedTheme.name))
112
+ continue;
113
+ seen.add(loadedTheme.name);
114
+ }
115
+ themes.push(loadedTheme);
116
+ } catch {
117
+ }
118
+ return themes;
119
+ }
120
+ async function loadStartupThemes(settingsManager) {
121
+ let globalSettingsManager = SettingsManager.inMemory(settingsManager.getGlobalSettings(), {
122
+ projectTrusted: !1
123
+ }), resolvedPaths = await new DefaultPackageManager({
124
+ cwd: process.cwd(),
125
+ agentDir: getAgentDir(),
126
+ settingsManager: globalSettingsManager
127
+ }).resolve(async () => "skip");
128
+ return loadThemes(resolvedPaths.themes);
129
+ }
130
+ async function createStartupTui(settingsManager) {
131
+ setRegisteredThemes(await loadStartupThemes(settingsManager));
132
+ let terminalTheme = detectTerminalBackgroundFromEnv().theme;
133
+ initTheme(resolveThemeSetting(settingsManager.getThemeSetting(), terminalTheme) ?? terminalTheme), setKeybindings(KeybindingsManager.create());
134
+ let ui = new TUI(new ProcessTerminal(), settingsManager.getShowHardwareCursor());
135
+ return ui.setClearOnShrink(settingsManager.getClearOnShrink()), ui;
136
+ }
137
+ function startStartupTui(ui, settingsManager) {
138
+ ui.start(), applyDetectedStartupTheme(ui, settingsManager);
139
+ }
140
+ async function applyDetectedStartupTheme(ui, settingsManager) {
141
+ let themeSetting = settingsManager.getThemeSetting();
142
+ if (themeSetting && !parseAutoThemeSetting(themeSetting))
143
+ return;
144
+ let terminalTheme = await detectTerminalThemeForAuto({ ui, timeoutMs: 100 });
145
+ setTheme(resolveThemeSetting(themeSetting, terminalTheme) ?? terminalTheme), ui.invalidate(), ui.requestRender();
146
+ }
147
+ async function clearStartupTui(ui) {
148
+ ui.clear(), ui.requestRender(), await new Promise((resolve) => setTimeout(resolve, 25));
149
+ }
150
+ function shouldRunFirstTimeSetup(settingsPath = getSettingsPath()) {
151
+ return !isOfficialDistribution({
152
+ packageName: PACKAGE_NAME,
153
+ appName: APP_NAME,
154
+ configDirName: CONFIG_DIR_NAME
155
+ }) || !areExperimentalFeaturesEnabled() || process.env[ENV_AGENT_DIR] ? !1 : !existsSync(settingsPath);
156
+ }
157
+ async function showStartupSelector(settingsManager, title, options) {
158
+ let ui = await createStartupTui(settingsManager);
159
+ return new Promise((resolve) => {
160
+ let settled = !1, finish = async (result) => {
161
+ settled || (settled = !0, await clearStartupTui(ui), ui.stop(), resolve(result));
162
+ }, selector = new ExtensionSelectorComponent(title, options.map((option) => option.label), (option) => {
163
+ finish(options.find((entry) => entry.label === option)?.value);
164
+ }, () => {
165
+ finish(void 0);
166
+ }, { tui: ui });
167
+ ui.addChild(selector), ui.setFocus(selector), startStartupTui(ui, settingsManager);
168
+ });
169
+ }
170
+ async function showFirstTimeSetup(settingsManager) {
171
+ let ui = await createStartupTui(settingsManager);
172
+ return new Promise((resolve) => {
173
+ let settled = !1, finish = async (result) => {
174
+ settled || (settled = !0, result && (settingsManager.setTheme(result.theme), settingsManager.setEnableAnalytics(result.shareAnalytics), await settingsManager.flush()), await clearStartupTui(ui), ui.stop(), resolve());
175
+ };
176
+ (async () => {
177
+ ui.start();
178
+ let detectedTheme = await detectTerminalThemeForAuto({ ui, timeoutMs: 100 });
179
+ setTheme(detectedTheme);
180
+ let component = new FirstTimeSetupComponent({
181
+ detectedTheme,
182
+ onThemePreview: (themeName) => {
183
+ setTheme(themeName), ui.requestRender();
184
+ },
185
+ onSubmit: (result) => {
186
+ finish(result);
187
+ },
188
+ onCancel: () => {
189
+ finish(void 0);
190
+ }
191
+ });
192
+ ui.addChild(component), ui.setFocus(component), ui.requestRender();
193
+ })();
194
+ });
195
+ }
196
+ async function showStartupInput(settingsManager, title, placeholder) {
197
+ let ui = await createStartupTui(settingsManager);
198
+ return new Promise((resolve) => {
199
+ let settled = !1, finish = async (result) => {
200
+ settled || (settled = !0, input.dispose(), await clearStartupTui(ui), ui.stop(), resolve(result));
201
+ }, input = new ExtensionInputComponent(title, placeholder, (value) => {
202
+ finish(value);
203
+ }, () => {
204
+ finish(void 0);
205
+ }, {
206
+ tui: ui
207
+ });
208
+ ui.addChild(input), ui.setFocus(input), startStartupTui(ui, settingsManager);
209
+ });
210
+ }
211
+
212
+ // packages/coding-agent/dist/cli/project-trust.js
213
+ import chalk from "chalk";
214
+ function createProjectTrustContext(options) {
215
+ return {
216
+ cwd: options.cwd,
217
+ mode: options.mode === "interactive" ? "tui" : options.mode,
218
+ hasUI: options.hasUI,
219
+ ui: {
220
+ select: async (title, selectOptions) => {
221
+ if (options.hasUI && options.mode === "interactive")
222
+ return showStartupSelector(options.settingsManager, title, selectOptions.map((option) => ({ label: option, value: option })));
223
+ },
224
+ confirm: async (title, message) => !options.hasUI || options.mode !== "interactive" ? !1 : await showStartupSelector(options.settingsManager, `${title}
225
+ ${message}`, [
226
+ { label: "Yes", value: !0 },
227
+ { label: "No", value: !1 }
228
+ ]) ?? !1,
229
+ input: async (title, placeholder) => {
230
+ if (options.hasUI && options.mode === "interactive")
231
+ return showStartupInput(options.settingsManager, title, placeholder);
232
+ },
233
+ notify: (message, type = "info") => {
234
+ if (options.mode !== "interactive") {
235
+ let color = type === "error" ? chalk.red : type === "warning" ? chalk.yellow : chalk.cyan;
236
+ console.error(color(message));
237
+ }
238
+ }
239
+ }
240
+ };
241
+ }
242
+
243
+ // packages/coding-agent/dist/core/project-trust.js
244
+ function formatProjectTrustPrompt(cwd) {
245
+ return `Trust project folder?
246
+ ${cwd}
247
+
248
+ This allows ${APP_NAME} to load ${CONFIG_DIR_NAME} settings and resources, install missing project packages, and execute project extensions.`;
249
+ }
250
+ async function selectProjectTrustOption(cwd, ctx) {
251
+ let options = getProjectTrustOptions(cwd, { includeSessionOnly: !0 }), selected = await ctx.ui.select(formatProjectTrustPrompt(cwd), options.map((option) => option.label));
252
+ return options.find((option) => option.label === selected);
253
+ }
254
+ function saveProjectTrustPromptResult(trustStore, result) {
255
+ result.updates.length > 0 && trustStore.setMany(result.updates);
256
+ }
257
+ async function resolveProjectTrusted(options) {
258
+ if (options.trustOverride !== void 0)
259
+ return options.trustOverride;
260
+ if (!hasTrustRequiringProjectResources(options.cwd))
261
+ return !0;
262
+ if (options.extensionsResult) {
263
+ let { result, errors } = await emitProjectTrustEvent(options.extensionsResult, { type: "project_trust", cwd: options.cwd }, options.projectTrustContext);
264
+ for (let error of errors)
265
+ options.onExtensionError?.(`Extension "${error.extensionPath}" project_trust error: ${error.error}`);
266
+ if (result) {
267
+ let trusted = result.trusted === "yes";
268
+ return result.remember === !0 && options.trustStore.set(options.cwd, trusted), trusted;
269
+ }
270
+ }
271
+ let decision = options.trustStore.get(options.cwd);
272
+ if (decision !== null)
273
+ return decision;
274
+ switch (options.defaultProjectTrust ?? "ask") {
275
+ case "always":
276
+ return !0;
277
+ case "never":
278
+ return !1;
279
+ case "ask":
280
+ break;
281
+ }
282
+ if (!options.projectTrustContext.hasUI)
283
+ return !1;
284
+ let selected = await selectProjectTrustOption(options.cwd, options.projectTrustContext);
285
+ return selected !== void 0 ? (saveProjectTrustPromptResult(options.trustStore, selected), selected.trusted) : !1;
286
+ }
287
+
288
+ export {
289
+ createStartupTui,
290
+ startStartupTui,
291
+ shouldRunFirstTimeSetup,
292
+ showStartupSelector,
293
+ showFirstTimeSetup,
294
+ createProjectTrustContext,
295
+ resolveProjectTrusted
296
+ };