@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,424 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ $brand,
4
+ $input,
5
+ $output,
6
+ NEVER,
7
+ TimePrecision,
8
+ ZodAny,
9
+ ZodArray,
10
+ ZodBase64,
11
+ ZodBase64URL,
12
+ ZodBigInt,
13
+ ZodBigIntFormat,
14
+ ZodBoolean,
15
+ ZodCIDRv4,
16
+ ZodCIDRv6,
17
+ ZodCUID,
18
+ ZodCUID2,
19
+ ZodCatch,
20
+ ZodCustom,
21
+ ZodCustomStringFormat,
22
+ ZodDate,
23
+ ZodDefault,
24
+ ZodDiscriminatedUnion,
25
+ ZodE164,
26
+ ZodEmail,
27
+ ZodEmoji,
28
+ ZodEnum,
29
+ ZodError,
30
+ ZodFile,
31
+ ZodGUID,
32
+ ZodIPv4,
33
+ ZodIPv6,
34
+ ZodISODate,
35
+ ZodISODateTime,
36
+ ZodISODuration,
37
+ ZodISOTime,
38
+ ZodIntersection,
39
+ ZodIssueCode,
40
+ ZodJWT,
41
+ ZodKSUID,
42
+ ZodLazy,
43
+ ZodLiteral,
44
+ ZodMap,
45
+ ZodNaN,
46
+ ZodNanoID,
47
+ ZodNever,
48
+ ZodNonOptional,
49
+ ZodNull,
50
+ ZodNullable,
51
+ ZodNumber,
52
+ ZodNumberFormat,
53
+ ZodObject,
54
+ ZodOptional,
55
+ ZodPipe,
56
+ ZodPrefault,
57
+ ZodPromise,
58
+ ZodReadonly,
59
+ ZodRealError,
60
+ ZodRecord,
61
+ ZodSet,
62
+ ZodString,
63
+ ZodStringFormat,
64
+ ZodSuccess,
65
+ ZodSymbol,
66
+ ZodTemplateLiteral,
67
+ ZodTransform,
68
+ ZodTuple,
69
+ ZodType,
70
+ ZodULID,
71
+ ZodURL,
72
+ ZodUUID,
73
+ ZodUndefined,
74
+ ZodUnion,
75
+ ZodUnknown,
76
+ ZodVoid,
77
+ ZodXID,
78
+ _ZodString,
79
+ _catch,
80
+ _default,
81
+ _endsWith,
82
+ _enum,
83
+ _function,
84
+ _gt,
85
+ _gte,
86
+ _includes,
87
+ _instanceof,
88
+ _length,
89
+ _lowercase,
90
+ _lt,
91
+ _lte,
92
+ _maxLength,
93
+ _maxSize,
94
+ _mime,
95
+ _minLength,
96
+ _minSize,
97
+ _multipleOf,
98
+ _negative,
99
+ _nonnegative,
100
+ _nonpositive,
101
+ _normalize,
102
+ _null,
103
+ _overwrite,
104
+ _positive,
105
+ _property,
106
+ _regex,
107
+ _size,
108
+ _startsWith,
109
+ _toLowerCase,
110
+ _toUpperCase,
111
+ _trim,
112
+ _undefined,
113
+ _uppercase,
114
+ _void,
115
+ any,
116
+ array,
117
+ base64,
118
+ base64url,
119
+ bigint,
120
+ boolean,
121
+ check,
122
+ cidrv4,
123
+ cidrv6,
124
+ clone,
125
+ coerce_exports,
126
+ config,
127
+ core_exports,
128
+ cuid,
129
+ cuid2,
130
+ custom,
131
+ date,
132
+ discriminatedUnion,
133
+ e164,
134
+ email,
135
+ emoji,
136
+ external_exports,
137
+ file,
138
+ flattenError,
139
+ float32,
140
+ float64,
141
+ formatError,
142
+ getErrorMap,
143
+ globalRegistry,
144
+ guid,
145
+ int,
146
+ int32,
147
+ int64,
148
+ intersection,
149
+ ipv4,
150
+ ipv6,
151
+ iso_exports,
152
+ json,
153
+ jwt,
154
+ keyof,
155
+ ksuid,
156
+ lazy,
157
+ literal,
158
+ locales_exports,
159
+ looseObject,
160
+ map,
161
+ nan,
162
+ nanoid,
163
+ nativeEnum,
164
+ never,
165
+ nonoptional,
166
+ nullable,
167
+ nullish,
168
+ number,
169
+ object,
170
+ optional,
171
+ parse,
172
+ parseAsync,
173
+ partialRecord,
174
+ pipe,
175
+ prefault,
176
+ preprocess,
177
+ prettifyError,
178
+ promise,
179
+ readonly,
180
+ record,
181
+ refine,
182
+ regexes_exports,
183
+ registry,
184
+ safeParse2 as safeParse,
185
+ safeParseAsync,
186
+ set,
187
+ setErrorMap,
188
+ strictObject,
189
+ string,
190
+ stringFormat,
191
+ stringbool,
192
+ success,
193
+ superRefine,
194
+ symbol,
195
+ templateLiteral,
196
+ toJSONSchema,
197
+ transform,
198
+ treeifyError,
199
+ tuple,
200
+ uint32,
201
+ uint64,
202
+ ulid,
203
+ union,
204
+ unknown,
205
+ url,
206
+ uuid,
207
+ uuidv4,
208
+ uuidv6,
209
+ uuidv7,
210
+ v4_default,
211
+ xid
212
+ } from "./chunk-BI3DHYCN.js";
213
+ import "./chunk-BRJX2PRC.js";
214
+ export {
215
+ $brand,
216
+ $input,
217
+ $output,
218
+ NEVER,
219
+ TimePrecision,
220
+ ZodAny,
221
+ ZodArray,
222
+ ZodBase64,
223
+ ZodBase64URL,
224
+ ZodBigInt,
225
+ ZodBigIntFormat,
226
+ ZodBoolean,
227
+ ZodCIDRv4,
228
+ ZodCIDRv6,
229
+ ZodCUID,
230
+ ZodCUID2,
231
+ ZodCatch,
232
+ ZodCustom,
233
+ ZodCustomStringFormat,
234
+ ZodDate,
235
+ ZodDefault,
236
+ ZodDiscriminatedUnion,
237
+ ZodE164,
238
+ ZodEmail,
239
+ ZodEmoji,
240
+ ZodEnum,
241
+ ZodError,
242
+ ZodFile,
243
+ ZodGUID,
244
+ ZodIPv4,
245
+ ZodIPv6,
246
+ ZodISODate,
247
+ ZodISODateTime,
248
+ ZodISODuration,
249
+ ZodISOTime,
250
+ ZodIntersection,
251
+ ZodIssueCode,
252
+ ZodJWT,
253
+ ZodKSUID,
254
+ ZodLazy,
255
+ ZodLiteral,
256
+ ZodMap,
257
+ ZodNaN,
258
+ ZodNanoID,
259
+ ZodNever,
260
+ ZodNonOptional,
261
+ ZodNull,
262
+ ZodNullable,
263
+ ZodNumber,
264
+ ZodNumberFormat,
265
+ ZodObject,
266
+ ZodOptional,
267
+ ZodPipe,
268
+ ZodPrefault,
269
+ ZodPromise,
270
+ ZodReadonly,
271
+ ZodRealError,
272
+ ZodRecord,
273
+ ZodSet,
274
+ ZodString,
275
+ ZodStringFormat,
276
+ ZodSuccess,
277
+ ZodSymbol,
278
+ ZodTemplateLiteral,
279
+ ZodTransform,
280
+ ZodTuple,
281
+ ZodType,
282
+ ZodULID,
283
+ ZodURL,
284
+ ZodUUID,
285
+ ZodUndefined,
286
+ ZodUnion,
287
+ ZodUnknown,
288
+ ZodVoid,
289
+ ZodXID,
290
+ _ZodString,
291
+ _default,
292
+ any,
293
+ array,
294
+ base64,
295
+ base64url,
296
+ bigint,
297
+ boolean,
298
+ _catch as catch,
299
+ check,
300
+ cidrv4,
301
+ cidrv6,
302
+ clone,
303
+ coerce_exports as coerce,
304
+ config,
305
+ core_exports as core,
306
+ cuid,
307
+ cuid2,
308
+ custom,
309
+ date,
310
+ v4_default as default,
311
+ discriminatedUnion,
312
+ e164,
313
+ email,
314
+ emoji,
315
+ _endsWith as endsWith,
316
+ _enum as enum,
317
+ file,
318
+ flattenError,
319
+ float32,
320
+ float64,
321
+ formatError,
322
+ _function as function,
323
+ getErrorMap,
324
+ globalRegistry,
325
+ _gt as gt,
326
+ _gte as gte,
327
+ guid,
328
+ _includes as includes,
329
+ _instanceof as instanceof,
330
+ int,
331
+ int32,
332
+ int64,
333
+ intersection,
334
+ ipv4,
335
+ ipv6,
336
+ iso_exports as iso,
337
+ json,
338
+ jwt,
339
+ keyof,
340
+ ksuid,
341
+ lazy,
342
+ _length as length,
343
+ literal,
344
+ locales_exports as locales,
345
+ looseObject,
346
+ _lowercase as lowercase,
347
+ _lt as lt,
348
+ _lte as lte,
349
+ map,
350
+ _maxLength as maxLength,
351
+ _maxSize as maxSize,
352
+ _mime as mime,
353
+ _minLength as minLength,
354
+ _minSize as minSize,
355
+ _multipleOf as multipleOf,
356
+ nan,
357
+ nanoid,
358
+ nativeEnum,
359
+ _negative as negative,
360
+ never,
361
+ _nonnegative as nonnegative,
362
+ nonoptional,
363
+ _nonpositive as nonpositive,
364
+ _normalize as normalize,
365
+ _null as null,
366
+ nullable,
367
+ nullish,
368
+ number,
369
+ object,
370
+ optional,
371
+ _overwrite as overwrite,
372
+ parse,
373
+ parseAsync,
374
+ partialRecord,
375
+ pipe,
376
+ _positive as positive,
377
+ prefault,
378
+ preprocess,
379
+ prettifyError,
380
+ promise,
381
+ _property as property,
382
+ readonly,
383
+ record,
384
+ refine,
385
+ _regex as regex,
386
+ regexes_exports as regexes,
387
+ registry,
388
+ safeParse,
389
+ safeParseAsync,
390
+ set,
391
+ setErrorMap,
392
+ _size as size,
393
+ _startsWith as startsWith,
394
+ strictObject,
395
+ string,
396
+ stringFormat,
397
+ stringbool,
398
+ success,
399
+ superRefine,
400
+ symbol,
401
+ templateLiteral,
402
+ toJSONSchema,
403
+ _toLowerCase as toLowerCase,
404
+ _toUpperCase as toUpperCase,
405
+ transform,
406
+ treeifyError,
407
+ _trim as trim,
408
+ tuple,
409
+ uint32,
410
+ uint64,
411
+ ulid,
412
+ _undefined as undefined,
413
+ union,
414
+ unknown,
415
+ _uppercase as uppercase,
416
+ url,
417
+ uuid,
418
+ uuidv4,
419
+ uuidv6,
420
+ uuidv7,
421
+ _void as void,
422
+ xid,
423
+ external_exports as z
424
+ };
@@ -0,0 +1,304 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ isGeminiWebAvailable,
4
+ queryWithCookies
5
+ } from "./chunk-XTHQ7XR7.js";
6
+ import "./chunk-DMMTJQMQ.js";
7
+ import {
8
+ API_BASE,
9
+ getApiKey,
10
+ queryGeminiApiWithVideo
11
+ } from "./chunk-3WFAEVKS.js";
12
+ import {
13
+ extractHeadingTitle
14
+ } from "./chunk-WJVFOIB5.js";
15
+ import "./chunk-7NBZ5P7I.js";
16
+ import {
17
+ activityMonitor
18
+ } from "./chunk-DAPBPCBP.js";
19
+ import {
20
+ getWebSearchConfigPath,
21
+ mapFfmpegError,
22
+ readExecError,
23
+ trimErrorText
24
+ } from "./chunk-VRB2IYGG.js";
25
+ import "./chunk-BRJX2PRC.js";
26
+
27
+ // packages/coding-agent/dist/builtin-extensions/pi-web-access/video-extract.js
28
+ import { execFileSync } from "node:child_process";
29
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
30
+ import { readFile } from "node:fs/promises";
31
+ import { resolve, extname, basename, join, dirname } from "node:path";
32
+ var CONFIG_PATH = getWebSearchConfigPath(), UPLOAD_BASE = "https://generativelanguage.googleapis.com/upload/v1beta", DEFAULT_VIDEO_PROMPT = `Extract the complete content of this video. Include:
33
+ 1. Video title (infer from content if not explicit), duration
34
+ 2. A brief summary (2-3 sentences)
35
+ 3. Full transcript with timestamps
36
+ 4. Descriptions of any code, terminal commands, diagrams, slides, or UI shown on screen
37
+
38
+ Format as markdown.`, VIDEO_EXTENSIONS = {
39
+ ".mp4": "video/mp4",
40
+ ".mov": "video/quicktime",
41
+ ".webm": "video/webm",
42
+ ".avi": "video/x-msvideo",
43
+ ".mpeg": "video/mpeg",
44
+ ".mpg": "video/mpeg",
45
+ ".wmv": "video/x-ms-wmv",
46
+ ".flv": "video/x-flv",
47
+ ".3gp": "video/3gpp",
48
+ ".3gpp": "video/3gpp"
49
+ };
50
+ function shouldRethrow(err) {
51
+ return (err instanceof Error ? err.message : String(err)).startsWith("Failed to parse ");
52
+ }
53
+ function normalizePreferredModel(value, fallback) {
54
+ if (typeof value != "string")
55
+ return fallback;
56
+ let normalized = value.trim();
57
+ return normalized.length > 0 ? normalized : fallback;
58
+ }
59
+ function normalizeEnabled(value, fallback) {
60
+ return typeof value == "boolean" ? value : fallback;
61
+ }
62
+ function normalizeMaxSizeMB(value, fallback) {
63
+ return typeof value != "number" || !Number.isFinite(value) ? fallback : value > 0 ? value : fallback;
64
+ }
65
+ var VIDEO_CONFIG_DEFAULTS = {
66
+ enabled: !0,
67
+ preferredModel: "gemini-3-flash-preview",
68
+ maxSizeMB: 50
69
+ }, cachedVideoConfig = null;
70
+ function loadVideoConfig() {
71
+ if (cachedVideoConfig)
72
+ return cachedVideoConfig;
73
+ if (!existsSync(CONFIG_PATH))
74
+ return cachedVideoConfig = { ...VIDEO_CONFIG_DEFAULTS }, cachedVideoConfig;
75
+ let rawText = readFileSync(CONFIG_PATH, "utf-8"), raw;
76
+ try {
77
+ raw = JSON.parse(rawText);
78
+ } catch (err) {
79
+ let message = err instanceof Error ? err.message : String(err);
80
+ throw new Error(`Failed to parse ${CONFIG_PATH}: ${message}`);
81
+ }
82
+ let v = raw.video ?? {};
83
+ return cachedVideoConfig = {
84
+ enabled: normalizeEnabled(v.enabled, VIDEO_CONFIG_DEFAULTS.enabled),
85
+ preferredModel: normalizePreferredModel(v.preferredModel, VIDEO_CONFIG_DEFAULTS.preferredModel),
86
+ maxSizeMB: normalizeMaxSizeMB(v.maxSizeMB, VIDEO_CONFIG_DEFAULTS.maxSizeMB)
87
+ }, cachedVideoConfig;
88
+ }
89
+ function isVideoFile(input) {
90
+ let config = loadVideoConfig();
91
+ if (!config.enabled || !(input.startsWith("/") || input.startsWith("./") || input.startsWith("../") || input.startsWith("file://")))
92
+ return null;
93
+ let filePath = input;
94
+ if (input.startsWith("file://"))
95
+ try {
96
+ filePath = decodeURIComponent(new URL(input).pathname);
97
+ } catch {
98
+ return null;
99
+ }
100
+ let ext = extname(filePath).toLowerCase(), mimeType = VIDEO_EXTENSIONS[ext];
101
+ if (!mimeType)
102
+ return null;
103
+ let absolutePath = resolveFilePath(filePath);
104
+ if (!absolutePath)
105
+ return null;
106
+ let stat;
107
+ try {
108
+ stat = statSync(absolutePath);
109
+ } catch {
110
+ return null;
111
+ }
112
+ if (!stat.isFile())
113
+ return null;
114
+ let maxBytes = config.maxSizeMB * 1024 * 1024;
115
+ return stat.size > maxBytes ? null : { absolutePath, mimeType, sizeBytes: stat.size };
116
+ }
117
+ function resolveFilePath(filePath) {
118
+ let absolutePath = resolve(filePath);
119
+ if (existsSync(absolutePath))
120
+ return absolutePath;
121
+ let dir = dirname(absolutePath), base = basename(absolutePath);
122
+ if (!existsSync(dir))
123
+ return null;
124
+ try {
125
+ let normalizedBase = normalizeSpaces(base), match = readdirSync(dir).find((f) => normalizeSpaces(f) === normalizedBase);
126
+ return match ? join(dir, match) : null;
127
+ } catch {
128
+ return null;
129
+ }
130
+ }
131
+ function normalizeSpaces(s) {
132
+ return s.replace(/[\u00A0\u2000-\u200B\u202F\u205F\u3000\uFEFF]/g, " ");
133
+ }
134
+ async function extractVideo(info, signal, options) {
135
+ let config = loadVideoConfig(), effectivePrompt = options?.prompt ?? DEFAULT_VIDEO_PROMPT, effectiveModel = options?.model ?? config.preferredModel, displayName = basename(info.absolutePath), activityId = activityMonitor.logStart({ type: "fetch", url: `video:${displayName}` }), result = await tryVideoGeminiApi(info, effectivePrompt, effectiveModel, signal) ?? await tryVideoGeminiWeb(info, effectivePrompt, effectiveModel, signal);
136
+ if (result) {
137
+ let thumbnail = await extractVideoFrame(info.absolutePath);
138
+ return "error" in thumbnail || (result.thumbnail = thumbnail), activityMonitor.logComplete(activityId, 200), result;
139
+ }
140
+ return signal?.aborted ? (activityMonitor.logComplete(activityId, 0), null) : (activityMonitor.logError(activityId, "all video extraction paths failed"), null);
141
+ }
142
+ function mapFfprobeError(err) {
143
+ let { code, stderr, message } = readExecError(err);
144
+ if (code === "ENOENT")
145
+ return "ffprobe is not installed. Install ffmpeg which includes ffprobe";
146
+ let snippet = trimErrorText(stderr || message);
147
+ return snippet ? `ffprobe failed: ${snippet}` : "ffprobe failed";
148
+ }
149
+ async function extractVideoFrame(filePath, seconds = 1) {
150
+ try {
151
+ let buffer = execFileSync("ffmpeg", [
152
+ "-ss",
153
+ String(seconds),
154
+ "-i",
155
+ filePath,
156
+ "-frames:v",
157
+ "1",
158
+ "-f",
159
+ "image2pipe",
160
+ "-vcodec",
161
+ "mjpeg",
162
+ "pipe:1"
163
+ ], { maxBuffer: 5242880, timeout: 1e4, stdio: ["pipe", "pipe", "pipe"] });
164
+ return buffer.length === 0 ? { error: "ffmpeg failed: empty output" } : { data: buffer.toString("base64"), mimeType: "image/jpeg" };
165
+ } catch (err) {
166
+ return { error: mapFfmpegError(err) };
167
+ }
168
+ }
169
+ async function getLocalVideoDuration(filePath) {
170
+ try {
171
+ let output = execFileSync("ffprobe", [
172
+ "-v",
173
+ "quiet",
174
+ "-show_entries",
175
+ "format=duration",
176
+ "-of",
177
+ "csv=p=0",
178
+ filePath
179
+ ], { timeout: 1e4, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim(), duration = Number.parseFloat(output);
180
+ return Number.isFinite(duration) ? duration : { error: "ffprobe failed: invalid duration output" };
181
+ } catch (err) {
182
+ return { error: mapFfprobeError(err) };
183
+ }
184
+ }
185
+ async function tryVideoGeminiWeb(info, prompt, model, signal) {
186
+ try {
187
+ let cookies = await isGeminiWebAvailable();
188
+ if (!cookies || signal?.aborted)
189
+ return null;
190
+ let text = await queryWithCookies(prompt, cookies, {
191
+ files: [info.absolutePath],
192
+ model,
193
+ signal,
194
+ timeoutMs: 18e4
195
+ });
196
+ return {
197
+ url: info.absolutePath,
198
+ title: extractVideoTitle(text, info.absolutePath),
199
+ content: text,
200
+ error: null
201
+ };
202
+ } catch (err) {
203
+ if (shouldRethrow(err))
204
+ throw err;
205
+ return null;
206
+ }
207
+ }
208
+ async function tryVideoGeminiApi(info, prompt, model, signal) {
209
+ let apiKey = getApiKey();
210
+ if (!apiKey || signal?.aborted)
211
+ return null;
212
+ let fileName = null;
213
+ try {
214
+ let uploaded = await uploadToFilesApi(info, apiKey, signal);
215
+ fileName = uploaded.name, await pollFileState(fileName, apiKey, signal, 12e4);
216
+ let text = await queryGeminiApiWithVideo(prompt, uploaded.uri, {
217
+ model,
218
+ mimeType: info.mimeType,
219
+ signal,
220
+ timeoutMs: 12e4
221
+ });
222
+ return {
223
+ url: info.absolutePath,
224
+ title: extractVideoTitle(text, info.absolutePath),
225
+ content: text,
226
+ error: null
227
+ };
228
+ } catch (err) {
229
+ if (shouldRethrow(err))
230
+ throw err;
231
+ return null;
232
+ } finally {
233
+ fileName && deleteGeminiFile(fileName, apiKey);
234
+ }
235
+ }
236
+ async function uploadToFilesApi(info, apiKey, signal) {
237
+ let displayName = basename(info.absolutePath), initRes = await fetch(`${UPLOAD_BASE}/files`, {
238
+ method: "POST",
239
+ headers: {
240
+ "x-goog-api-key": apiKey,
241
+ "X-Goog-Upload-Protocol": "resumable",
242
+ "X-Goog-Upload-Command": "start",
243
+ "X-Goog-Upload-Header-Content-Length": String(info.sizeBytes),
244
+ "X-Goog-Upload-Header-Content-Type": info.mimeType,
245
+ "Content-Type": "application/json"
246
+ },
247
+ body: JSON.stringify({ file: { display_name: displayName } }),
248
+ signal
249
+ });
250
+ if (!initRes.ok) {
251
+ let text = await initRes.text();
252
+ throw new Error(`File upload init failed: ${initRes.status} (${text.slice(0, 200)})`);
253
+ }
254
+ let uploadUrl = initRes.headers.get("x-goog-upload-url");
255
+ if (!uploadUrl)
256
+ throw new Error("No upload URL in response headers");
257
+ let fileData = await readFile(info.absolutePath), uploadRes = await fetch(uploadUrl, {
258
+ method: "PUT",
259
+ headers: {
260
+ "Content-Length": String(info.sizeBytes),
261
+ "X-Goog-Upload-Offset": "0",
262
+ "X-Goog-Upload-Command": "upload, finalize"
263
+ },
264
+ body: fileData,
265
+ signal
266
+ });
267
+ if (!uploadRes.ok) {
268
+ let text = await uploadRes.text();
269
+ throw new Error(`File upload failed: ${uploadRes.status} (${text.slice(0, 200)})`);
270
+ }
271
+ return (await uploadRes.json()).file;
272
+ }
273
+ async function pollFileState(fileName, apiKey, signal, timeoutMs = 12e4) {
274
+ let deadline = Date.now() + timeoutMs;
275
+ for (; Date.now() < deadline; ) {
276
+ if (signal?.aborted)
277
+ throw new Error("Aborted");
278
+ let res = await fetch(`${API_BASE}/${fileName}?key=${apiKey}`, { signal });
279
+ if (!res.ok)
280
+ throw new Error(`File state check failed: ${res.status}`);
281
+ let data = await res.json();
282
+ if (data.state === "ACTIVE")
283
+ return;
284
+ if (data.state === "FAILED")
285
+ throw new Error("File processing failed");
286
+ await new Promise((r) => setTimeout(r, 5e3));
287
+ }
288
+ throw new Error("File processing timed out");
289
+ }
290
+ function deleteGeminiFile(fileName, apiKey) {
291
+ fetch(`${API_BASE}/${fileName}?key=${apiKey}`, { method: "DELETE" }).catch((err) => {
292
+ let message = err instanceof Error ? err.message : String(err);
293
+ console.error(`Failed to delete Gemini file ${fileName}: ${message}`);
294
+ });
295
+ }
296
+ function extractVideoTitle(text, filePath) {
297
+ return extractHeadingTitle(text) ?? basename(filePath, extname(filePath));
298
+ }
299
+ export {
300
+ extractVideo,
301
+ extractVideoFrame,
302
+ getLocalVideoDuration,
303
+ isVideoFile
304
+ };