@ashx-j/lunr-dev 0.2.13-dev.8.1 → 0.2.19-dev.10.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 (484) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/README.md +7 -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 +14 -0
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +37 -3
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/index.d.ts +1 -15
  12. package/dist/builtin-extensions/index.d.ts.map +1 -1
  13. package/dist/builtin-extensions/index.js +8 -21
  14. package/dist/builtin-extensions/index.js.map +1 -1
  15. package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
  16. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
  17. package/dist/builtin-extensions/lunr-computer-use.js +157 -0
  18. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
  19. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  20. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
  21. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  22. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
  23. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  24. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +172 -171
  25. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  26. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +50 -0
  27. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
  28. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +131 -0
  29. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
  30. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
  31. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
  32. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
  33. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
  34. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
  35. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  36. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
  37. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  38. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-mcp-adapter/index.js +276 -109
  40. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  41. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
  42. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
  44. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  45. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
  47. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
  48. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
  49. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
  51. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  52. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
  54. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  55. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  56. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  57. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  58. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +68 -15
  62. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +6 -2
  65. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +5 -2
  69. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
  72. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
  73. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +3 -16
  76. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  89. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +72 -31
  91. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
  95. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  96. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
  98. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  99. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  100. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
  102. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  103. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  104. package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
  105. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  106. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-web-access/index.js +259 -168
  108. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  109. package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
  110. package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
  111. package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
  112. package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
  113. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
  114. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
  115. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
  116. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
  117. package/dist/catalog/publication.json +12 -12
  118. package/dist/cli-runtime.d.ts +3 -0
  119. package/dist/cli-runtime.d.ts.map +1 -0
  120. package/dist/cli-runtime.js +73 -0
  121. package/dist/cli-runtime.js.map +1 -0
  122. package/dist/cli.d.ts.map +1 -1
  123. package/dist/cli.js +14 -53
  124. package/dist/cli.js.map +1 -1
  125. package/dist/config.d.ts +1 -0
  126. package/dist/config.d.ts.map +1 -1
  127. package/dist/config.js +1 -0
  128. package/dist/config.js.map +1 -1
  129. package/dist/core/agent-session-services.d.ts.map +1 -1
  130. package/dist/core/agent-session-services.js +1 -1
  131. package/dist/core/agent-session-services.js.map +1 -1
  132. package/dist/core/agent-session.d.ts +3 -0
  133. package/dist/core/agent-session.d.ts.map +1 -1
  134. package/dist/core/agent-session.js +56 -12
  135. package/dist/core/agent-session.js.map +1 -1
  136. package/dist/core/compaction/compaction.d.ts.map +1 -1
  137. package/dist/core/compaction/compaction.js +10 -5
  138. package/dist/core/compaction/compaction.js.map +1 -1
  139. package/dist/core/computer-use/adapter.d.ts +23 -0
  140. package/dist/core/computer-use/adapter.d.ts.map +1 -0
  141. package/dist/core/computer-use/adapter.js +116 -0
  142. package/dist/core/computer-use/adapter.js.map +1 -0
  143. package/dist/core/computer-use/lease.d.ts +18 -0
  144. package/dist/core/computer-use/lease.d.ts.map +1 -0
  145. package/dist/core/computer-use/lease.js +129 -0
  146. package/dist/core/computer-use/lease.js.map +1 -0
  147. package/dist/core/computer-use/macos-runtime.d.ts +14 -0
  148. package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
  149. package/dist/core/computer-use/macos-runtime.js +148 -0
  150. package/dist/core/computer-use/macos-runtime.js.map +1 -0
  151. package/dist/core/computer-use/policy.d.ts +19 -0
  152. package/dist/core/computer-use/policy.d.ts.map +1 -0
  153. package/dist/core/computer-use/policy.js +66 -0
  154. package/dist/core/computer-use/policy.js.map +1 -0
  155. package/dist/core/computer-use/release.generated.d.ts +31 -0
  156. package/dist/core/computer-use/release.generated.d.ts.map +1 -0
  157. package/dist/core/computer-use/release.generated.js +36 -0
  158. package/dist/core/computer-use/release.generated.js.map +1 -0
  159. package/dist/core/computer-use/runtime.d.ts +13 -0
  160. package/dist/core/computer-use/runtime.d.ts.map +1 -0
  161. package/dist/core/computer-use/runtime.js +158 -0
  162. package/dist/core/computer-use/runtime.js.map +1 -0
  163. package/dist/core/computer-use/schemas.d.ts +88 -0
  164. package/dist/core/computer-use/schemas.d.ts.map +1 -0
  165. package/dist/core/computer-use/schemas.js +80 -0
  166. package/dist/core/computer-use/schemas.js.map +1 -0
  167. package/dist/core/computer-use/windows-desktop.d.ts +3 -0
  168. package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
  169. package/dist/core/computer-use/windows-desktop.js +48 -0
  170. package/dist/core/computer-use/windows-desktop.js.map +1 -0
  171. package/dist/core/computer-use/workflow.d.ts +24 -0
  172. package/dist/core/computer-use/workflow.d.ts.map +1 -0
  173. package/dist/core/computer-use/workflow.js +330 -0
  174. package/dist/core/computer-use/workflow.js.map +1 -0
  175. package/dist/core/extensions/host-static.d.ts.map +1 -1
  176. package/dist/core/extensions/host-static.js +34 -12
  177. package/dist/core/extensions/host-static.js.map +1 -1
  178. package/dist/core/extensions/loader.d.ts +1 -2
  179. package/dist/core/extensions/loader.d.ts.map +1 -1
  180. package/dist/core/extensions/loader.js +10 -64
  181. package/dist/core/extensions/loader.js.map +1 -1
  182. package/dist/core/extensions/types.d.ts +2 -2
  183. package/dist/core/extensions/types.d.ts.map +1 -1
  184. package/dist/core/extensions/types.js.map +1 -1
  185. package/dist/core/footer-data-provider.d.ts.map +1 -1
  186. package/dist/core/footer-data-provider.js +2 -0
  187. package/dist/core/footer-data-provider.js.map +1 -1
  188. package/dist/core/keybindings.d.ts +2 -2
  189. package/dist/core/keybindings.d.ts.map +1 -1
  190. package/dist/core/keybindings.js +2 -2
  191. package/dist/core/keybindings.js.map +1 -1
  192. package/dist/core/model-runtime.d.ts +0 -3
  193. package/dist/core/model-runtime.d.ts.map +1 -1
  194. package/dist/core/model-runtime.js +1 -10
  195. package/dist/core/model-runtime.js.map +1 -1
  196. package/dist/core/package-manager.d.ts.map +1 -1
  197. package/dist/core/package-manager.js +1 -1
  198. package/dist/core/package-manager.js.map +1 -1
  199. package/dist/core/permissions.d.ts +1 -3
  200. package/dist/core/permissions.d.ts.map +1 -1
  201. package/dist/core/permissions.js +33 -25
  202. package/dist/core/permissions.js.map +1 -1
  203. package/dist/core/plan-mode.d.ts.map +1 -1
  204. package/dist/core/plan-mode.js +9 -0
  205. package/dist/core/plan-mode.js.map +1 -1
  206. package/dist/core/rollback.d.ts.map +1 -1
  207. package/dist/core/rollback.js +13 -90
  208. package/dist/core/rollback.js.map +1 -1
  209. package/dist/core/sdk.d.ts +1 -1
  210. package/dist/core/sdk.d.ts.map +1 -1
  211. package/dist/core/sdk.js +1 -1
  212. package/dist/core/sdk.js.map +1 -1
  213. package/dist/core/session-manager.d.ts +0 -1
  214. package/dist/core/session-manager.d.ts.map +1 -1
  215. package/dist/core/session-manager.js +21 -79
  216. package/dist/core/session-manager.js.map +1 -1
  217. package/dist/core/settings-manager.d.ts +6 -0
  218. package/dist/core/settings-manager.d.ts.map +1 -1
  219. package/dist/core/settings-manager.js +19 -0
  220. package/dist/core/settings-manager.js.map +1 -1
  221. package/dist/core/slash-commands.d.ts.map +1 -1
  222. package/dist/core/slash-commands.js +0 -1
  223. package/dist/core/slash-commands.js.map +1 -1
  224. package/dist/core/timings.d.ts +2 -1
  225. package/dist/core/timings.d.ts.map +1 -1
  226. package/dist/core/timings.js +17 -2
  227. package/dist/core/timings.js.map +1 -1
  228. package/dist/dev-cli.js +0 -0
  229. package/dist/gateway/agent-bridge.d.ts +6 -1
  230. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  231. package/dist/gateway/agent-bridge.js +23 -6
  232. package/dist/gateway/agent-bridge.js.map +1 -1
  233. package/dist/gateway/commands.d.ts +1 -1
  234. package/dist/gateway/commands.d.ts.map +1 -1
  235. package/dist/gateway/commands.js +1 -18
  236. package/dist/gateway/commands.js.map +1 -1
  237. package/dist/gateway/cron.d.ts +1 -1
  238. package/dist/gateway/cron.d.ts.map +1 -1
  239. package/dist/gateway/cron.js +23 -7
  240. package/dist/gateway/cron.js.map +1 -1
  241. package/dist/main.d.ts +2 -2
  242. package/dist/main.d.ts.map +1 -1
  243. package/dist/main.js +57 -48
  244. package/dist/main.js.map +1 -1
  245. package/dist/modes/interactive/components/footer.d.ts +4 -2
  246. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  247. package/dist/modes/interactive/components/footer.js +23 -32
  248. package/dist/modes/interactive/components/footer.js.map +1 -1
  249. package/dist/modes/interactive/components/processes-selector.d.ts +2 -3
  250. package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
  251. package/dist/modes/interactive/components/processes-selector.js +5 -10
  252. package/dist/modes/interactive/components/processes-selector.js.map +1 -1
  253. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  254. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  255. package/dist/modes/interactive/components/settings-selector.js +20 -0
  256. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  257. package/dist/modes/interactive/interactive-mode.d.ts +12 -21
  258. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  259. package/dist/modes/interactive/interactive-mode.js +138 -152
  260. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  261. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  262. package/dist/modes/interactive/theme/theme.js +95 -84
  263. package/dist/modes/interactive/theme/theme.js.map +1 -1
  264. package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
  265. package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
  266. package/dist/modes/interactive/thinking-level-slash.js +23 -0
  267. package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
  268. package/dist/node-runtime/adapter-AZMY335J.js +279 -0
  269. package/dist/node-runtime/agent-session-services-RSGP5GDN.js +39 -0
  270. package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
  271. package/dist/node-runtime/brave-UWDA3I22.js +143 -0
  272. package/dist/node-runtime/builtin-extensions-7STLFW3A.js +29 -0
  273. package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
  274. package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
  275. package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
  276. package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
  277. package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
  278. package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
  279. package/dist/node-runtime/chunk-4SJWFTUP.js +24 -0
  280. package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
  281. package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
  282. package/dist/node-runtime/chunk-5NWQCSKR.js +19218 -0
  283. package/dist/node-runtime/chunk-5OLJGVCB.js +68 -0
  284. package/dist/node-runtime/chunk-5Q45AVQG.js +108 -0
  285. package/dist/node-runtime/chunk-5SQDLSZJ.js +949 -0
  286. package/dist/node-runtime/chunk-6SPPH4FY.js +1269 -0
  287. package/dist/node-runtime/chunk-6UB6NKA3.js +860 -0
  288. package/dist/node-runtime/chunk-7AFOFSDY.js +105 -0
  289. package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
  290. package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
  291. package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
  292. package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
  293. package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
  294. package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
  295. package/dist/node-runtime/chunk-BKAZ6BKX.js +2185 -0
  296. package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
  297. package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
  298. package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
  299. package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
  300. package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
  301. package/dist/node-runtime/chunk-CH6OL6P2.js +295 -0
  302. package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
  303. package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
  304. package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
  305. package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
  306. package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
  307. package/dist/node-runtime/chunk-EH2LJQPM.js +64 -0
  308. package/dist/node-runtime/chunk-EHMBW7FA.js +772 -0
  309. package/dist/node-runtime/chunk-FLYMHKCS.js +966 -0
  310. package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
  311. package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
  312. package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
  313. package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
  314. package/dist/node-runtime/chunk-HRS4HMDX.js +610 -0
  315. package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
  316. package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
  317. package/dist/node-runtime/chunk-ISQDQIZN.js +296 -0
  318. package/dist/node-runtime/chunk-J7QGQD45.js +24921 -0
  319. package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
  320. package/dist/node-runtime/chunk-JT6YCS5B.js +5648 -0
  321. package/dist/node-runtime/chunk-JZHEUQRL.js +180 -0
  322. package/dist/node-runtime/chunk-K72NVGUB.js +2834 -0
  323. package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
  324. package/dist/node-runtime/chunk-LCACDWHJ.js +1743 -0
  325. package/dist/node-runtime/chunk-LTXUQJI4.js +173 -0
  326. package/dist/node-runtime/chunk-LWJXTA6Z.js +6814 -0
  327. package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
  328. package/dist/node-runtime/chunk-MGSB2C3M.js +46 -0
  329. package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
  330. package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
  331. package/dist/node-runtime/chunk-MUMMMTW4.js +8392 -0
  332. package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
  333. package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
  334. package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
  335. package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
  336. package/dist/node-runtime/chunk-OTT6JMPU.js +807 -0
  337. package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
  338. package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
  339. package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
  340. package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
  341. package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
  342. package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
  343. package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
  344. package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
  345. package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
  346. package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
  347. package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
  348. package/dist/node-runtime/chunk-T5GM5BFH.js +7558 -0
  349. package/dist/node-runtime/chunk-TAP7QTUT.js +1346 -0
  350. package/dist/node-runtime/chunk-U6C7VTR5.js +2033 -0
  351. package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
  352. package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
  353. package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
  354. package/dist/node-runtime/chunk-W7S2REEG.js +9478 -0
  355. package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
  356. package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
  357. package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
  358. package/dist/node-runtime/chunk-ZRDIMBEQ.js +651 -0
  359. package/dist/node-runtime/chunk-ZSEZY3II.js +247 -0
  360. package/dist/node-runtime/cli-runtime.js +81 -0
  361. package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
  362. package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
  363. package/dist/node-runtime/command-6UXQ6XZN.js +13 -0
  364. package/dist/node-runtime/commands-LGR5VT5X.js +293 -0
  365. package/dist/node-runtime/config-FMEOZSWE.js +77 -0
  366. package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
  367. package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
  368. package/dist/node-runtime/direct-tool-executor-TDJS7TBD.js +191 -0
  369. package/dist/node-runtime/exa-LL64QZR2.js +329 -0
  370. package/dist/node-runtime/export-html-E4DT6ZJQ.js +150 -0
  371. package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
  372. package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
  373. package/dist/node-runtime/extract-IUCVZCWC.js +17 -0
  374. package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
  375. package/dist/node-runtime/gateway-3OLC4GQN.js +2139 -0
  376. package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
  377. package/dist/node-runtime/gemini-search-NCIDF7NE.js +330 -0
  378. package/dist/node-runtime/gemini-url-context-OKIN7AIP.js +103 -0
  379. package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
  380. package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
  381. package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
  382. package/dist/node-runtime/image-resize-6ZPBFMWW.js +11 -0
  383. package/dist/node-runtime/index.js +863 -0
  384. package/dist/node-runtime/init-EKE277AG.js +30 -0
  385. package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
  386. package/dist/node-runtime/interactive-mode-S5M26CQ7.js +59 -0
  387. package/dist/node-runtime/interactive-view-N6F4KUIT.js +247 -0
  388. package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
  389. package/dist/node-runtime/lunr-computer-use-4X3KUNF4.js +206 -0
  390. package/dist/node-runtime/lunr-cron-KKBOGAEF.js +274 -0
  391. package/dist/node-runtime/main.js +57 -0
  392. package/dist/node-runtime/mcp-auth-flow-YL6RWPYG.js +33 -0
  393. package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
  394. package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
  395. package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
  396. package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
  397. package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
  398. package/dist/node-runtime/package-manager-cli-C4EJOO5Q.js +751 -0
  399. package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
  400. package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
  401. package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
  402. package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
  403. package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
  404. package/dist/node-runtime/pi-mcp-adapter-DPTJGAAL.js +428 -0
  405. package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
  406. package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
  407. package/dist/node-runtime/pi-subagents-VKCLYIBY.js +6050 -0
  408. package/dist/node-runtime/pi-web-access-BV6DSZOP.js +1867 -0
  409. package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
  410. package/dist/node-runtime/proxy-modes-R64LU6WZ.js +688 -0
  411. package/dist/node-runtime/rpc-entry.js +65 -0
  412. package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
  413. package/dist/node-runtime/runtime-3SB5ATHQ.js +21 -0
  414. package/dist/node-runtime/runtime-bridges-UJ5WJJLN.js +14 -0
  415. package/dist/node-runtime/session-manager-QEMZBMTM.js +33 -0
  416. package/dist/node-runtime/session-selector-URVJLOTK.js +14 -0
  417. package/dist/node-runtime/settings-manager-K6IPIQTI.js +23 -0
  418. package/dist/node-runtime/src-GPFAU3N6.js +2427 -0
  419. package/dist/node-runtime/subagent-executor-EFLTO32A.js +8501 -0
  420. package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
  421. package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
  422. package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
  423. package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
  424. package/dist/node-runtime/update-cli-I6OVDRPL.js +75 -0
  425. package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
  426. package/dist/node-runtime/video-extract-ETA5RA7U.js +304 -0
  427. package/dist/node-runtime/workflow-SA34S4VX.js +325 -0
  428. package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
  429. package/dist/node-runtime/youtube-extract-SRVGNN26.js +264 -0
  430. package/dist/rpc.d.ts +3 -0
  431. package/dist/rpc.d.ts.map +1 -0
  432. package/dist/rpc.js +18 -0
  433. package/dist/rpc.js.map +1 -0
  434. package/dist/startup/benchmark-request.d.ts +3 -0
  435. package/dist/startup/benchmark-request.d.ts.map +1 -0
  436. package/dist/startup/benchmark-request.js +65 -0
  437. package/dist/startup/benchmark-request.js.map +1 -0
  438. package/dist/startup/{interactive-shell.d.ts → interactive-view.d.ts} +18 -18
  439. package/dist/startup/interactive-view.d.ts.map +1 -0
  440. package/dist/startup/{interactive-shell.js → interactive-view.js} +119 -52
  441. package/dist/startup/interactive-view.js.map +1 -0
  442. package/dist/startup/launch-routing.d.ts.map +1 -1
  443. package/dist/startup/launch-routing.js +9 -10
  444. package/dist/startup/launch-routing.js.map +1 -1
  445. package/dist/startup/startup-milestones.d.ts +1 -1
  446. package/dist/startup/startup-milestones.d.ts.map +1 -1
  447. package/dist/startup/startup-milestones.js +3 -2
  448. package/dist/startup/startup-milestones.js.map +1 -1
  449. package/dist/utils/await-with-abort.d.ts +2 -0
  450. package/dist/utils/await-with-abort.d.ts.map +1 -0
  451. package/dist/utils/await-with-abort.js +19 -0
  452. package/dist/utils/await-with-abort.js.map +1 -0
  453. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  454. package/dist/utils/syntax-highlight.js +10 -4
  455. package/dist/utils/syntax-highlight.js.map +1 -1
  456. package/docs/compaction.md +5 -3
  457. package/docs/computer-use.md +277 -0
  458. package/docs/development.md +5 -33
  459. package/docs/features.md +2 -3
  460. package/docs/interactive-startup.md +105 -0
  461. package/docs/keybindings.md +2 -2
  462. package/docs/terminal-setup.md +1 -1
  463. package/docs/usage.md +1 -2
  464. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  465. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  466. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  467. package/examples/extensions/gondolin/package-lock.json +2 -2
  468. package/examples/extensions/gondolin/package.json +1 -1
  469. package/examples/extensions/hidden-thinking-label.ts +1 -1
  470. package/examples/extensions/sandbox/package-lock.json +2 -2
  471. package/examples/extensions/sandbox/package.json +1 -1
  472. package/examples/extensions/with-deps/package-lock.json +2 -2
  473. package/examples/extensions/with-deps/package.json +1 -1
  474. package/install-lock/package-lock.json +3827 -0
  475. package/install-lock/package.json +18 -0
  476. package/native/computer-use/LICENSE.md +21 -0
  477. package/npm-shrinkwrap.json +3808 -0
  478. package/package.json +30 -24
  479. package/dist/core/swarm.d.ts +0 -23
  480. package/dist/core/swarm.d.ts.map +0 -1
  481. package/dist/core/swarm.js +0 -45
  482. package/dist/core/swarm.js.map +0 -1
  483. package/dist/startup/interactive-shell.d.ts.map +0 -1
  484. package/dist/startup/interactive-shell.js.map +0 -1
@@ -0,0 +1,125 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ activityMonitor
4
+ } from "./chunk-DAPBPCBP.js";
5
+ import {
6
+ getWebSearchConfigPath
7
+ } from "./chunk-VRB2IYGG.js";
8
+
9
+ // packages/coding-agent/dist/builtin-extensions/pi-web-access/perplexity.js
10
+ import { existsSync, readFileSync } from "node:fs";
11
+ var PERPLEXITY_API_URL = "https://api.perplexity.ai/chat/completions", CONFIG_PATH = getWebSearchConfigPath(), RATE_LIMIT = {
12
+ maxRequests: 10,
13
+ windowMs: 60 * 1e3
14
+ }, requestTimestamps = [], cachedConfig = null;
15
+ function loadConfig() {
16
+ if (cachedConfig)
17
+ return cachedConfig;
18
+ if (!existsSync(CONFIG_PATH))
19
+ return cachedConfig = {}, cachedConfig;
20
+ let content = readFileSync(CONFIG_PATH, "utf-8");
21
+ try {
22
+ return cachedConfig = JSON.parse(content), cachedConfig;
23
+ } catch (err) {
24
+ let message = err instanceof Error ? err.message : String(err);
25
+ throw new Error(`Failed to parse ${CONFIG_PATH}: ${message}`);
26
+ }
27
+ }
28
+ function normalizeApiKey(value) {
29
+ if (typeof value != "string")
30
+ return null;
31
+ let normalized = value.trim();
32
+ return normalized.length > 0 ? normalized : null;
33
+ }
34
+ function getApiKey() {
35
+ let config = loadConfig(), key = normalizeApiKey(process.env.PERPLEXITY_API_KEY) ?? normalizeApiKey(config.perplexityApiKey);
36
+ if (!key)
37
+ throw new Error(`Perplexity API key not found. Either:
38
+ 1. Create ${CONFIG_PATH} with { "perplexityApiKey": "your-key" }
39
+ 2. Set PERPLEXITY_API_KEY environment variable
40
+ Get a key at https://perplexity.ai/settings/api`);
41
+ return key;
42
+ }
43
+ function checkRateLimit() {
44
+ let now = Date.now(), windowStart = now - RATE_LIMIT.windowMs;
45
+ for (; requestTimestamps.length > 0 && requestTimestamps[0] < windowStart; )
46
+ requestTimestamps.shift();
47
+ if (requestTimestamps.length >= RATE_LIMIT.maxRequests) {
48
+ let waitMs = requestTimestamps[0] + RATE_LIMIT.windowMs - now;
49
+ throw new Error(`Rate limited. Try again in ${Math.ceil(waitMs / 1e3)}s`);
50
+ }
51
+ requestTimestamps.push(now);
52
+ }
53
+ function validateDomainFilter(domains) {
54
+ return domains.filter((d) => {
55
+ let domain = d.startsWith("-") ? d.slice(1) : d;
56
+ return /^[a-zA-Z0-9][a-zA-Z0-9-_.]*\.[a-zA-Z]{2,}$/.test(domain);
57
+ });
58
+ }
59
+ function isPerplexityAvailable() {
60
+ let config = loadConfig();
61
+ return !!(normalizeApiKey(process.env.PERPLEXITY_API_KEY) ?? normalizeApiKey(config.perplexityApiKey));
62
+ }
63
+ async function searchWithPerplexity(query, options = {}) {
64
+ checkRateLimit();
65
+ let activityId = activityMonitor.logStart({ type: "api", query });
66
+ activityMonitor.updateRateLimit({
67
+ used: requestTimestamps.length,
68
+ max: RATE_LIMIT.maxRequests,
69
+ oldestTimestamp: requestTimestamps[0] ?? null,
70
+ windowMs: RATE_LIMIT.windowMs
71
+ });
72
+ let apiKey = getApiKey(), numResults = Math.min(options.numResults ?? 5, 20), requestBody = {
73
+ model: "sonar",
74
+ messages: [{ role: "user", content: query }],
75
+ max_tokens: 1024,
76
+ return_related_questions: !1
77
+ };
78
+ if (options.recencyFilter && (requestBody.search_recency_filter = options.recencyFilter), options.domainFilter && options.domainFilter.length > 0) {
79
+ let validated = validateDomainFilter(options.domainFilter);
80
+ validated.length > 0 && (requestBody.search_domain_filter = validated);
81
+ }
82
+ let response;
83
+ try {
84
+ response = await fetch(PERPLEXITY_API_URL, {
85
+ method: "POST",
86
+ headers: {
87
+ Authorization: `Bearer ${apiKey}`,
88
+ "Content-Type": "application/json"
89
+ },
90
+ body: JSON.stringify(requestBody),
91
+ signal: options.signal
92
+ });
93
+ } catch (err) {
94
+ let message = err instanceof Error ? err.message : String(err);
95
+ throw message.toLowerCase().includes("abort") ? activityMonitor.logComplete(activityId, 0) : activityMonitor.logError(activityId, message), err;
96
+ }
97
+ if (!response.ok) {
98
+ activityMonitor.logComplete(activityId, response.status);
99
+ let errorText = await response.text();
100
+ throw new Error(`Perplexity API error ${response.status}: ${errorText}`);
101
+ }
102
+ let data;
103
+ try {
104
+ data = await response.json();
105
+ } catch (err) {
106
+ activityMonitor.logComplete(activityId, response.status);
107
+ let message = err instanceof Error ? err.message : String(err);
108
+ throw new Error(`Perplexity API returned invalid JSON: ${message}`);
109
+ }
110
+ let answer = data.choices?.[0]?.message?.content || "", citations = Array.isArray(data.citations) ? data.citations : [], results = [];
111
+ for (let i = 0; i < Math.min(citations.length, numResults); i++) {
112
+ let citation = citations[i];
113
+ typeof citation == "string" ? results.push({ title: `Source ${i + 1}`, url: citation, snippet: "" }) : citation && typeof citation == "object" && typeof citation.url == "string" && results.push({
114
+ title: citation.title || `Source ${i + 1}`,
115
+ url: citation.url,
116
+ snippet: ""
117
+ });
118
+ }
119
+ return activityMonitor.logComplete(activityId, response.status), { answer, results };
120
+ }
121
+
122
+ export {
123
+ isPerplexityAvailable,
124
+ searchWithPerplexity
125
+ };
@@ -0,0 +1,509 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ getChromeProfileFromConfig,
4
+ isBrowserCookieAccessAllowed,
5
+ normalizeChromeProfile
6
+ } from "./chunk-DMMTJQMQ.js";
7
+
8
+ // packages/coding-agent/dist/builtin-extensions/pi-web-access/gemini-web.js
9
+ import { basename } from "node:path";
10
+
11
+ // packages/coding-agent/dist/builtin-extensions/pi-web-access/chrome-cookies.js
12
+ import { execFile } from "node:child_process";
13
+ import { pbkdf2Sync, createDecipheriv } from "node:crypto";
14
+ import { copyFileSync, existsSync, mkdtempSync, rmSync } from "node:fs";
15
+ import { tmpdir, homedir, platform } from "node:os";
16
+ import { join } from "node:path";
17
+ var GOOGLE_ORIGINS = [
18
+ "https://gemini.google.com",
19
+ "https://accounts.google.com",
20
+ "https://www.google.com"
21
+ ], ALL_COOKIE_NAMES = /* @__PURE__ */ new Set([
22
+ "__Secure-1PSID",
23
+ "__Secure-1PSIDTS",
24
+ "__Secure-1PSIDCC",
25
+ "__Secure-1PAPISID",
26
+ "NID",
27
+ "AEC",
28
+ "SOCS",
29
+ "__Secure-BUCKET",
30
+ "__Secure-ENID",
31
+ "SID",
32
+ "HSID",
33
+ "SSID",
34
+ "APISID",
35
+ "SAPISID",
36
+ "__Secure-3PSID",
37
+ "__Secure-3PSIDTS",
38
+ "__Secure-3PAPISID",
39
+ "SIDCC"
40
+ ]), MACOS_BROWSER_CONFIGS = [
41
+ {
42
+ name: "Helium",
43
+ baseDir: "Library/Application Support/net.imput.helium",
44
+ keychainService: "Helium Storage Key",
45
+ keychainAccount: "Helium"
46
+ },
47
+ {
48
+ name: "Chrome",
49
+ baseDir: "Library/Application Support/Google/Chrome",
50
+ keychainService: "Chrome Safe Storage",
51
+ keychainAccount: "Chrome"
52
+ },
53
+ {
54
+ name: "Arc",
55
+ baseDir: "Library/Application Support/Arc/User Data",
56
+ keychainService: "Arc Safe Storage",
57
+ keychainAccount: "Arc"
58
+ }
59
+ ], LINUX_BROWSER_CONFIGS = [
60
+ { name: "Chromium", baseDir: ".config/chromium", secretToolApp: "chromium" },
61
+ { name: "Chrome", baseDir: ".config/google-chrome", secretToolApp: "chrome" }
62
+ ];
63
+ async function getGoogleCookies(options) {
64
+ let currentPlatform = platform(), configs = currentPlatform === "darwin" ? MACOS_BROWSER_CONFIGS : currentPlatform === "linux" ? LINUX_BROWSER_CONFIGS : [];
65
+ if (configs.length === 0)
66
+ return null;
67
+ let warnings = [], profile = options?.profile ?? "Default", hosts = GOOGLE_ORIGINS.map((origin) => new URL(origin).hostname);
68
+ for (let config of configs) {
69
+ let cookiesPath = join(homedir(), config.baseDir, profile, "Cookies");
70
+ if (!existsSync(cookiesPath))
71
+ continue;
72
+ let password = await readBrowserPassword(config, currentPlatform);
73
+ if (!password) {
74
+ warnings.push(`Could not read ${config.name} cookie encryption password`);
75
+ continue;
76
+ }
77
+ let key = pbkdf2Sync(password, "saltysalt", currentPlatform === "darwin" ? 1003 : 1, 16, "sha1"), tempDir = mkdtempSync(join(tmpdir(), "pi-chrome-cookies-"));
78
+ try {
79
+ let tempDb = join(tempDir, "Cookies");
80
+ copyFileSync(cookiesPath, tempDb), copySidecar(cookiesPath, tempDb, "-wal"), copySidecar(cookiesPath, tempDb, "-shm");
81
+ let stripHash = await readMetaVersion(tempDb) >= 24, rows = await queryCookieRows(tempDb, hosts);
82
+ if (!rows) {
83
+ warnings.push(`Failed to query ${config.name} cookie database`);
84
+ continue;
85
+ }
86
+ let cookies = {};
87
+ for (let row of rows) {
88
+ let name = row.name;
89
+ if (!ALL_COOKIE_NAMES.has(name) || cookies[name])
90
+ continue;
91
+ let value = typeof row.value == "string" && row.value.length > 0 ? row.value : null;
92
+ if (!value) {
93
+ let encrypted = row.encrypted_value;
94
+ encrypted instanceof Uint8Array && (value = decryptCookieValue(encrypted, key, stripHash));
95
+ }
96
+ value && (cookies[name] = value);
97
+ }
98
+ if (options?.requiredCookies?.length && !options.requiredCookies.every((name) => !!cookies[name]))
99
+ continue;
100
+ return { cookies, warnings };
101
+ } finally {
102
+ rmSync(tempDir, { recursive: !0, force: !0 });
103
+ }
104
+ }
105
+ return null;
106
+ }
107
+ function decryptCookieValue(encrypted, key, stripHash) {
108
+ let buf = Buffer.from(encrypted);
109
+ if (buf.length < 3)
110
+ return null;
111
+ let prefix = buf.subarray(0, 3).toString("utf8");
112
+ if (!/^v\d\d$/.test(prefix))
113
+ return null;
114
+ let ciphertext = buf.subarray(3);
115
+ if (!ciphertext.length)
116
+ return "";
117
+ try {
118
+ let iv = Buffer.alloc(16, 32), decipher = createDecipheriv("aes-128-cbc", key, iv);
119
+ decipher.setAutoPadding(!1);
120
+ let plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]), unpadded = removePkcs7Padding(plaintext), bytes = stripHash && unpadded.length >= 32 ? unpadded.subarray(32) : unpadded, decoded = new TextDecoder("utf-8", { fatal: !0 }).decode(bytes), i = 0;
121
+ for (; i < decoded.length && decoded.charCodeAt(i) < 32; )
122
+ i++;
123
+ return decoded.slice(i);
124
+ } catch {
125
+ return null;
126
+ }
127
+ }
128
+ function removePkcs7Padding(buf) {
129
+ if (!buf.length)
130
+ return buf;
131
+ let padding = buf[buf.length - 1];
132
+ return !padding || padding > 16 ? buf : buf.subarray(0, buf.length - padding);
133
+ }
134
+ function readBrowserPassword(config, currentPlatform) {
135
+ return currentPlatform === "darwin" ? !config.keychainAccount || !config.keychainService ? Promise.resolve(null) : readKeychainPassword(config.keychainAccount, config.keychainService) : currentPlatform === "linux" ? readLinuxPassword(config.secretToolApp) : Promise.resolve(null);
136
+ }
137
+ function readKeychainPassword(account, service) {
138
+ return new Promise((resolve) => {
139
+ execFile("security", ["find-generic-password", "-w", "-a", account, "-s", service], { timeout: 5e3 }, (err, stdout) => {
140
+ if (err) {
141
+ resolve(null);
142
+ return;
143
+ }
144
+ resolve(stdout.trim() || null);
145
+ });
146
+ });
147
+ }
148
+ function readLinuxPassword(secretToolApp) {
149
+ return secretToolApp ? new Promise((resolve) => {
150
+ execFile("secret-tool", ["lookup", "application", secretToolApp], { timeout: 5e3 }, (err, stdout) => {
151
+ if (err) {
152
+ resolve("peanuts");
153
+ return;
154
+ }
155
+ resolve(stdout.trim() || "peanuts");
156
+ });
157
+ }) : Promise.resolve("peanuts");
158
+ }
159
+ var sqliteModule = null;
160
+ async function importSqlite() {
161
+ if (sqliteModule)
162
+ return sqliteModule;
163
+ let orig = process.emitWarning.bind(process);
164
+ process.emitWarning = ((warning, ...args) => {
165
+ if (!(typeof warning == "string" ? warning : warning?.message ?? "").includes("SQLite is an experimental feature"))
166
+ return orig(warning, ...args);
167
+ });
168
+ try {
169
+ return sqliteModule = await import("node:sqlite"), sqliteModule;
170
+ } catch {
171
+ return null;
172
+ } finally {
173
+ process.emitWarning = orig;
174
+ }
175
+ }
176
+ function supportsReadBigInts() {
177
+ let [major, minor] = process.versions.node.split(".").map(Number);
178
+ return major > 24 ? !0 : major < 24 ? !1 : minor >= 4;
179
+ }
180
+ async function readMetaVersion(dbPath) {
181
+ let sqlite = await importSqlite();
182
+ if (!sqlite)
183
+ return 0;
184
+ let opts = { readOnly: !0 };
185
+ supportsReadBigInts() && (opts.readBigInts = !0);
186
+ let db = new sqlite.DatabaseSync(dbPath, opts);
187
+ try {
188
+ let val = db.prepare("SELECT value FROM meta WHERE key = 'version'").all()[0]?.value;
189
+ return typeof val == "number" ? Math.floor(val) : typeof val == "bigint" ? Number(val) : typeof val == "string" && parseInt(val, 10) || 0;
190
+ } catch {
191
+ return 0;
192
+ } finally {
193
+ db.close();
194
+ }
195
+ }
196
+ async function queryCookieRows(dbPath, hosts) {
197
+ let sqlite = await importSqlite();
198
+ if (!sqlite)
199
+ return null;
200
+ let clauses = [];
201
+ for (let host of hosts)
202
+ for (let candidate of expandHosts(host)) {
203
+ let esc = candidate.replaceAll("'", "''");
204
+ clauses.push(`host_key = '${esc}'`), clauses.push(`host_key = '.${esc}'`), clauses.push(`host_key LIKE '%.${esc}'`);
205
+ }
206
+ let where = clauses.join(" OR "), opts = { readOnly: !0 };
207
+ supportsReadBigInts() && (opts.readBigInts = !0);
208
+ let db = new sqlite.DatabaseSync(dbPath, opts);
209
+ try {
210
+ return db.prepare(`SELECT name, value, host_key, encrypted_value FROM cookies WHERE (${where}) ORDER BY expires_utc DESC`).all();
211
+ } catch {
212
+ return null;
213
+ } finally {
214
+ db.close();
215
+ }
216
+ }
217
+ function expandHosts(host) {
218
+ let parts = host.split(".").filter(Boolean);
219
+ if (parts.length <= 1)
220
+ return [host];
221
+ let candidates = /* @__PURE__ */ new Set();
222
+ candidates.add(host);
223
+ for (let i = 1; i <= parts.length - 2; i++) {
224
+ let c = parts.slice(i).join(".");
225
+ c && candidates.add(c);
226
+ }
227
+ return Array.from(candidates);
228
+ }
229
+ function copySidecar(srcDb, targetDb, suffix) {
230
+ let sidecar = `${srcDb}${suffix}`;
231
+ if (existsSync(sidecar))
232
+ try {
233
+ copyFileSync(sidecar, `${targetDb}${suffix}`);
234
+ } catch {
235
+ }
236
+ }
237
+
238
+ // packages/coding-agent/dist/builtin-extensions/pi-web-access/gemini-web.js
239
+ var GEMINI_APP_URL = "https://gemini.google.com/app", GEMINI_STREAM_GENERATE_URL = "https://gemini.google.com/_/BardChatUi/data/assistant.lamda.BardFrontendService/StreamGenerate", GEMINI_UPLOAD_URL = "https://content-push.googleapis.com/upload", GEMINI_UPLOAD_PUSH_ID = "feeds/mcudyrk2a4khkz", GOOGLE_LIST_ACCOUNTS_URL = "https://accounts.google.com/ListAccounts?gpsia=1&source=ChromiumBrowser&laf=b64bin&json=standard", USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", MODEL_HEADER_NAME = "x-goog-ext-525001261-jspb", MODEL_HEADERS = {
240
+ "gemini-3-pro": '[1,null,null,null,"9d8ca3786ebdfbea",null,null,0,[4]]',
241
+ "gemini-2.5-pro": '[1,null,null,null,"4af6c7f5da75d65d",null,null,0,[4]]',
242
+ "gemini-2.5-flash": '[1,null,null,null,"9ec249fc9ad08861",null,null,0,[4]]'
243
+ }, REQUIRED_COOKIES = ["__Secure-1PSID", "__Secure-1PSIDTS"];
244
+ async function isGeminiWebAvailable(chromeProfile) {
245
+ if (!isBrowserCookieAccessAllowed())
246
+ return null;
247
+ let result = await getGoogleCookies({
248
+ profile: normalizeChromeProfile(chromeProfile) ?? getChromeProfileFromConfig(),
249
+ requiredCookies: REQUIRED_COOKIES
250
+ });
251
+ return result ? result.cookies : null;
252
+ }
253
+ async function getActiveGoogleEmail(cookies) {
254
+ let cookieHeader = buildCookieHeader(cookies);
255
+ if (!cookieHeader)
256
+ return null;
257
+ try {
258
+ let html = await fetchWithCookieRedirects(GEMINI_APP_URL, cookieHeader, 10, AbortSignal.timeout(1e4)), email = extractEmailFromGeminiHtml(html);
259
+ if (email)
260
+ return email;
261
+ } catch {
262
+ }
263
+ try {
264
+ let response = await fetchWithCookieRedirects(GOOGLE_LIST_ACCOUNTS_URL, cookieHeader, 10, AbortSignal.timeout(1e4));
265
+ return extractEmailFromListAccounts(response);
266
+ } catch {
267
+ return null;
268
+ }
269
+ }
270
+ async function queryWithCookies(prompt, cookieMap, options = {}) {
271
+ let model = options.model && MODEL_HEADERS[options.model] ? options.model : "gemini-2.5-flash", timeoutMs = options.timeoutMs ?? 12e4, fullPrompt = prompt;
272
+ options.youtubeUrl && (fullPrompt = `${fullPrompt}
273
+
274
+ YouTube video: ${options.youtubeUrl}`);
275
+ let result = await runGeminiWebOnce(fullPrompt, cookieMap, model, options.files, timeoutMs, options.signal);
276
+ if (isModelUnavailable(result.errorCode) && model !== "gemini-2.5-flash") {
277
+ let fallback = await runGeminiWebOnce(fullPrompt, cookieMap, "gemini-2.5-flash", options.files, timeoutMs, options.signal);
278
+ if (fallback.errorMessage)
279
+ throw new Error(fallback.errorMessage);
280
+ if (!fallback.text)
281
+ throw new Error("Gemini Web returned empty response (fallback model)");
282
+ return fallback.text;
283
+ }
284
+ if (result.errorMessage)
285
+ throw new Error(result.errorMessage);
286
+ if (!result.text)
287
+ throw new Error("Gemini Web returned empty response");
288
+ return result.text;
289
+ }
290
+ async function runGeminiWebOnce(prompt, cookieMap, model, files, timeoutMs, signal) {
291
+ let effectiveSignal = withTimeout(signal, timeoutMs), cookieHeader = buildCookieHeader(cookieMap), accessToken = await fetchAccessToken(cookieHeader, effectiveSignal), uploaded = [];
292
+ if (files)
293
+ for (let filePath of files)
294
+ uploaded.push(await uploadFile(filePath, cookieHeader, effectiveSignal));
295
+ let fReq = buildFReqPayload(prompt, uploaded), params = new URLSearchParams();
296
+ params.set("at", accessToken), params.set("f.req", fReq);
297
+ let res = await fetch(GEMINI_STREAM_GENERATE_URL, {
298
+ method: "POST",
299
+ headers: {
300
+ "content-type": "application/x-www-form-urlencoded;charset=utf-8",
301
+ host: "gemini.google.com",
302
+ origin: "https://gemini.google.com",
303
+ referer: "https://gemini.google.com/",
304
+ "x-same-domain": "1",
305
+ "user-agent": USER_AGENT,
306
+ cookie: cookieHeader,
307
+ [MODEL_HEADER_NAME]: MODEL_HEADERS[model]
308
+ },
309
+ body: params.toString(),
310
+ signal: effectiveSignal
311
+ }), rawText = await res.text();
312
+ if (!res.ok)
313
+ return { text: "", errorMessage: `Gemini request failed: ${res.status}` };
314
+ try {
315
+ return parseStreamGenerateResponse(rawText);
316
+ } catch (err) {
317
+ let errorCode;
318
+ try {
319
+ let json = JSON.parse(trimJsonEnvelope(rawText));
320
+ errorCode = extractErrorCode(json);
321
+ } catch {
322
+ }
323
+ return {
324
+ text: "",
325
+ errorCode,
326
+ errorMessage: err instanceof Error ? err.message : String(err)
327
+ };
328
+ }
329
+ }
330
+ async function fetchAccessToken(cookieHeader, signal) {
331
+ let html = await fetchWithCookieRedirects(GEMINI_APP_URL, cookieHeader, 10, signal);
332
+ for (let key of ["SNlM0e", "thykhd"]) {
333
+ let match = html.match(new RegExp(`"${key}":"(.*?)"`));
334
+ if (match?.[1])
335
+ return match[1];
336
+ }
337
+ throw new Error("Unable to authenticate with Gemini. Make sure you're signed into gemini.google.com in a supported Chromium-based browser.");
338
+ }
339
+ async function fetchWithCookieRedirects(url, cookieHeader, maxRedirects, signal) {
340
+ let current = url;
341
+ for (let i = 0; i <= maxRedirects; i++) {
342
+ let res = await fetch(current, {
343
+ headers: { "user-agent": USER_AGENT, cookie: cookieHeader },
344
+ redirect: "manual",
345
+ signal
346
+ });
347
+ if (res.status >= 300 && res.status < 400) {
348
+ let location = res.headers.get("location");
349
+ if (location) {
350
+ current = new URL(location, current).toString();
351
+ continue;
352
+ }
353
+ }
354
+ return await res.text();
355
+ }
356
+ throw new Error(`Too many redirects (>${maxRedirects})`);
357
+ }
358
+ function extractEmailFromGeminiHtml(html) {
359
+ let patterns = [
360
+ // Gemini bootstraps the active account in oPEP7c. Prefer it over generic
361
+ // feature/config entries that may contain other signed-in Google accounts.
362
+ /"oPEP7c"\s*:\s*"([^"]+)"/,
363
+ // The Google account menu aria-label is rendered for the active account.
364
+ /aria-label="Google Account:[^"]*?\(([^)]+)\)"/,
365
+ /"displayEmail"\s*:\s*"([^"]+)"/,
366
+ /"defaultEmail"\s*:\s*"([^"]+)"/,
367
+ /"email"\s*:\s*"([^"]+)"/,
368
+ /"identifier"\s*:\s*"([^"]+)"/,
369
+ /"gaiaIdentifier"\s*:\s*"([^"]+)"/
370
+ ];
371
+ for (let pattern of patterns) {
372
+ let match = html.match(pattern), email = normalizeEmail(match?.[1]);
373
+ if (email)
374
+ return email;
375
+ }
376
+ return findFirstEmail(html);
377
+ }
378
+ function extractEmailFromListAccounts(text) {
379
+ let trimmed = text.replace(/^\)\]\}'\s*/, "");
380
+ try {
381
+ return findEmailInValue(JSON.parse(trimmed)) ?? findFirstEmail(trimmed);
382
+ } catch {
383
+ return findFirstEmail(trimmed);
384
+ }
385
+ }
386
+ function findEmailInValue(value) {
387
+ if (typeof value == "string")
388
+ return normalizeEmail(value);
389
+ if (Array.isArray(value)) {
390
+ for (let item of value) {
391
+ let email = findEmailInValue(item);
392
+ if (email)
393
+ return email;
394
+ }
395
+ return null;
396
+ }
397
+ if (value && typeof value == "object")
398
+ for (let item of Object.values(value)) {
399
+ let email = findEmailInValue(item);
400
+ if (email)
401
+ return email;
402
+ }
403
+ return null;
404
+ }
405
+ function findFirstEmail(text) {
406
+ return decodeEmailEscapes(text).match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i)?.[0] ?? null;
407
+ }
408
+ function normalizeEmail(value) {
409
+ if (!value)
410
+ return null;
411
+ let normalized = decodeEmailEscapes(value.trim());
412
+ return /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(normalized) ? normalized : null;
413
+ }
414
+ function decodeEmailEscapes(value) {
415
+ return value.replace(/\\u0040/gi, "@").replace(/\\x40/gi, "@").replace(/&#64;/gi, "@").replace(/&commat;/gi, "@").replace(/\\"/g, '"').replace(/\\\\/g, "\\");
416
+ }
417
+ async function uploadFile(filePath, cookieHeader, signal) {
418
+ let data = readFileSync(filePath), fileName = basename(filePath), boundary = "----FormBoundary" + Math.random().toString(36).slice(2), header = `--${boundary}\r
419
+ Content-Disposition: form-data; name="file"; filename="${fileName}"\r
420
+ Content-Type: application/octet-stream\r
421
+ \r
422
+ `, footer = `\r
423
+ --${boundary}--\r
424
+ `, body = Buffer.concat([
425
+ Buffer.from(header, "utf-8"),
426
+ data,
427
+ Buffer.from(footer, "utf-8")
428
+ ]), res = await fetch(GEMINI_UPLOAD_URL, {
429
+ method: "POST",
430
+ headers: {
431
+ "content-type": `multipart/form-data; boundary=${boundary}`,
432
+ "push-id": GEMINI_UPLOAD_PUSH_ID,
433
+ "user-agent": USER_AGENT,
434
+ cookie: cookieHeader
435
+ },
436
+ body,
437
+ signal
438
+ });
439
+ if (!res.ok) {
440
+ let text = await res.text();
441
+ throw new Error(`File upload failed: ${res.status} (${text.slice(0, 200)})`);
442
+ }
443
+ return { id: await res.text(), name: fileName };
444
+ }
445
+ function buildFReqPayload(prompt, uploaded) {
446
+ let innerList = [uploaded.length > 0 ? [prompt, 0, null, uploaded.map((file) => [[file.id, 1]])] : [prompt], null, null];
447
+ return JSON.stringify([null, JSON.stringify(innerList)]);
448
+ }
449
+ function withTimeout(signal, timeoutMs) {
450
+ let timeout = AbortSignal.timeout(timeoutMs);
451
+ return signal ? AbortSignal.any([signal, timeout]) : timeout;
452
+ }
453
+ function buildCookieHeader(cookieMap) {
454
+ return Object.entries(cookieMap).filter(([, value]) => typeof value == "string" && value.length > 0).map(([name, value]) => `${name}=${value}`).join("; ");
455
+ }
456
+ function getNestedValue(value, pathParts) {
457
+ let current = value;
458
+ for (let part of pathParts) {
459
+ if (current == null || !Array.isArray(current))
460
+ return;
461
+ current = current[part];
462
+ }
463
+ return current;
464
+ }
465
+ function trimJsonEnvelope(text) {
466
+ let start = text.indexOf("["), end = text.lastIndexOf("]");
467
+ if (start === -1 || end === -1 || end <= start)
468
+ throw new Error("Gemini response did not contain a JSON payload.");
469
+ return text.slice(start, end + 1);
470
+ }
471
+ function extractErrorCode(responseJson) {
472
+ let code = getNestedValue(responseJson, [0, 5, 2, 0, 1, 0]);
473
+ return typeof code == "number" && code >= 0 ? code : void 0;
474
+ }
475
+ function isModelUnavailable(errorCode) {
476
+ return errorCode === 1052;
477
+ }
478
+ function extractCandidateText(candidate) {
479
+ let textRaw = getNestedValue(candidate, [1, 0]), text = typeof textRaw == "string" ? textRaw : "";
480
+ if (/^http:\/\/googleusercontent\.com\/card_content\/\d+/.test(text)) {
481
+ let alt = getNestedValue(candidate, [22, 0]);
482
+ typeof alt == "string" && alt.length > 0 && (text = alt);
483
+ }
484
+ return text;
485
+ }
486
+ function parseStreamGenerateResponse(rawText) {
487
+ let responseJson = JSON.parse(trimJsonEnvelope(rawText)), errorCode = extractErrorCode(responseJson), parts = Array.isArray(responseJson) ? responseJson : [], firstCandidateSeen, latestNonEmptyText = "";
488
+ for (let i = 0; i < parts.length; i++) {
489
+ let partBody = getNestedValue(parts[i], [2]);
490
+ if (!(!partBody || typeof partBody != "string"))
491
+ try {
492
+ let parsed = JSON.parse(partBody), candidateList = getNestedValue(parsed, [4]);
493
+ if (!Array.isArray(candidateList) || candidateList.length === 0)
494
+ continue;
495
+ let firstCandidate = candidateList[0];
496
+ firstCandidateSeen === void 0 && (firstCandidateSeen = firstCandidate);
497
+ let text2 = extractCandidateText(firstCandidate);
498
+ text2.length > 0 && (latestNonEmptyText = text2);
499
+ } catch {
500
+ }
501
+ }
502
+ return { text: latestNonEmptyText.length > 0 ? latestNonEmptyText : extractCandidateText(firstCandidateSeen), errorCode };
503
+ }
504
+
505
+ export {
506
+ isGeminiWebAvailable,
507
+ getActiveGoogleEmail,
508
+ queryWithCookies
509
+ };