@kaitranntt/ccs 6.7.0 → 6.7.1-dev.2

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 (628) hide show
  1. package/README.md +45 -23
  2. package/dist/api/index.d.ts +7 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +24 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/api/services/index.d.ts +10 -0
  7. package/dist/api/services/index.d.ts.map +1 -0
  8. package/dist/api/services/index.js +26 -0
  9. package/dist/api/services/index.js.map +1 -0
  10. package/dist/api/services/profile-reader.d.ts +28 -0
  11. package/dist/api/services/profile-reader.d.ts.map +1 -0
  12. package/dist/api/services/profile-reader.js +148 -0
  13. package/dist/api/services/profile-reader.js.map +1 -0
  14. package/dist/api/services/profile-types.d.ts +42 -0
  15. package/dist/api/services/profile-types.d.ts.map +1 -0
  16. package/dist/api/services/profile-types.js +8 -0
  17. package/dist/api/services/profile-types.js.map +1 -0
  18. package/dist/api/services/profile-writer.d.ts +6 -0
  19. package/dist/api/services/profile-writer.d.ts.map +1 -0
  20. package/dist/api/services/profile-writer.js +176 -0
  21. package/dist/api/services/profile-writer.js.map +1 -0
  22. package/dist/api/services/validation-service.d.ts +26 -0
  23. package/dist/api/services/validation-service.d.ts.map +1 -0
  24. package/dist/api/services/validation-service.js +77 -0
  25. package/dist/api/services/validation-service.js.map +1 -0
  26. package/dist/auth/auth-commands.d.ts +16 -22
  27. package/dist/auth/auth-commands.d.ts.map +1 -1
  28. package/dist/auth/auth-commands.js +29 -467
  29. package/dist/auth/auth-commands.js.map +1 -1
  30. package/dist/auth/commands/create-command.d.ts +11 -0
  31. package/dist/auth/commands/create-command.d.ts.map +1 -0
  32. package/dist/auth/commands/create-command.js +137 -0
  33. package/dist/auth/commands/create-command.js.map +1 -0
  34. package/dist/auth/commands/default-command.d.ts +15 -0
  35. package/dist/auth/commands/default-command.d.ts.map +1 -0
  36. package/dist/auth/commands/default-command.js +71 -0
  37. package/dist/auth/commands/default-command.js.map +1 -0
  38. package/dist/auth/commands/index.d.ts +12 -0
  39. package/dist/auth/commands/index.d.ts.map +1 -0
  40. package/dist/auth/commands/index.js +25 -0
  41. package/dist/auth/commands/index.js.map +1 -0
  42. package/dist/auth/commands/list-command.d.ts +11 -0
  43. package/dist/auth/commands/list-command.d.ts.map +1 -0
  44. package/dist/auth/commands/list-command.js +124 -0
  45. package/dist/auth/commands/list-command.js.map +1 -0
  46. package/dist/auth/commands/remove-command.d.ts +11 -0
  47. package/dist/auth/commands/remove-command.d.ts.map +1 -0
  48. package/dist/auth/commands/remove-command.js +102 -0
  49. package/dist/auth/commands/remove-command.js.map +1 -0
  50. package/dist/auth/commands/show-command.d.ts +11 -0
  51. package/dist/auth/commands/show-command.d.ts.map +1 -0
  52. package/dist/auth/commands/show-command.js +103 -0
  53. package/dist/auth/commands/show-command.js.map +1 -0
  54. package/dist/auth/commands/types.d.ts +50 -0
  55. package/dist/auth/commands/types.d.ts.map +1 -0
  56. package/dist/auth/commands/types.js +26 -0
  57. package/dist/auth/commands/types.js.map +1 -0
  58. package/dist/auth/index.d.ts +8 -0
  59. package/dist/auth/index.d.ts.map +1 -0
  60. package/dist/auth/index.js +16 -0
  61. package/dist/auth/index.js.map +1 -0
  62. package/dist/auth/profile-detector.d.ts +0 -5
  63. package/dist/auth/profile-detector.d.ts.map +1 -1
  64. package/dist/auth/profile-detector.js +1 -9
  65. package/dist/auth/profile-detector.js.map +1 -1
  66. package/dist/auth/profile-registry.d.ts +0 -4
  67. package/dist/auth/profile-registry.d.ts.map +1 -1
  68. package/dist/auth/profile-registry.js +3 -10
  69. package/dist/auth/profile-registry.js.map +1 -1
  70. package/dist/ccs.js +21 -4
  71. package/dist/ccs.js.map +1 -1
  72. package/dist/cliproxy/auth/auth-types.d.ts +85 -0
  73. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
  74. package/dist/cliproxy/auth/auth-types.js +100 -0
  75. package/dist/cliproxy/auth/auth-types.js.map +1 -0
  76. package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
  77. package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
  78. package/dist/cliproxy/auth/environment-detector.js +124 -0
  79. package/dist/cliproxy/auth/environment-detector.js.map +1 -0
  80. package/dist/cliproxy/auth/index.d.ts +11 -0
  81. package/dist/cliproxy/auth/index.d.ts.map +1 -0
  82. package/dist/cliproxy/auth/index.js +35 -0
  83. package/dist/cliproxy/auth/index.js.map +1 -0
  84. package/dist/cliproxy/auth/oauth-handler.d.ts +29 -0
  85. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
  86. package/dist/cliproxy/auth/oauth-handler.js +205 -0
  87. package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
  88. package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
  89. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
  90. package/dist/cliproxy/auth/oauth-process.js +209 -0
  91. package/dist/cliproxy/auth/oauth-process.js.map +1 -0
  92. package/dist/cliproxy/auth/token-manager.d.ts +53 -0
  93. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
  94. package/dist/cliproxy/auth/token-manager.js +250 -0
  95. package/dist/cliproxy/auth/token-manager.js.map +1 -0
  96. package/dist/cliproxy/auth-handler.d.ts +13 -103
  97. package/dist/cliproxy/auth-handler.d.ts.map +1 -1
  98. package/dist/cliproxy/auth-handler.js +35 -766
  99. package/dist/cliproxy/auth-handler.js.map +1 -1
  100. package/dist/cliproxy/binary/downloader.d.ts +29 -0
  101. package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
  102. package/dist/cliproxy/binary/downloader.js +218 -0
  103. package/dist/cliproxy/binary/downloader.js.map +1 -0
  104. package/dist/cliproxy/binary/extractor.d.ts +12 -0
  105. package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
  106. package/dist/cliproxy/binary/extractor.js +27 -0
  107. package/dist/cliproxy/binary/extractor.js.map +1 -0
  108. package/dist/cliproxy/binary/index.d.ts +13 -0
  109. package/dist/cliproxy/binary/index.d.ts.map +1 -0
  110. package/dist/cliproxy/binary/index.js +53 -0
  111. package/dist/cliproxy/binary/index.js.map +1 -0
  112. package/dist/cliproxy/binary/installer.d.ts +24 -0
  113. package/dist/cliproxy/binary/installer.d.ts.map +1 -0
  114. package/dist/cliproxy/binary/installer.js +117 -0
  115. package/dist/cliproxy/binary/installer.js.map +1 -0
  116. package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
  117. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
  118. package/dist/cliproxy/binary/lifecycle.js +106 -0
  119. package/dist/cliproxy/binary/lifecycle.js.map +1 -0
  120. package/dist/cliproxy/binary/tar-extractor.d.ts +9 -0
  121. package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
  122. package/dist/cliproxy/binary/tar-extractor.js +118 -0
  123. package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
  124. package/dist/cliproxy/binary/types.d.ts +24 -0
  125. package/dist/cliproxy/binary/types.d.ts.map +1 -0
  126. package/dist/cliproxy/binary/types.js +14 -0
  127. package/dist/cliproxy/binary/types.js.map +1 -0
  128. package/dist/cliproxy/binary/updater.d.ts +7 -0
  129. package/dist/cliproxy/binary/updater.d.ts.map +1 -0
  130. package/dist/cliproxy/binary/updater.js +18 -0
  131. package/dist/cliproxy/binary/updater.js.map +1 -0
  132. package/dist/cliproxy/binary/verifier.d.ts +18 -0
  133. package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
  134. package/dist/cliproxy/binary/verifier.js +82 -0
  135. package/dist/cliproxy/binary/verifier.js.map +1 -0
  136. package/dist/cliproxy/binary/version-cache.d.ts +46 -0
  137. package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
  138. package/dist/cliproxy/binary/version-cache.js +171 -0
  139. package/dist/cliproxy/binary/version-cache.js.map +1 -0
  140. package/dist/cliproxy/binary/version-checker.d.ts +19 -0
  141. package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
  142. package/dist/cliproxy/binary/version-checker.js +77 -0
  143. package/dist/cliproxy/binary/version-checker.js.map +1 -0
  144. package/dist/cliproxy/binary/zip-extractor.d.ts +9 -0
  145. package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
  146. package/dist/cliproxy/binary/zip-extractor.js +110 -0
  147. package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
  148. package/dist/cliproxy/binary-manager.d.ts +16 -170
  149. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  150. package/dist/cliproxy/binary-manager.js +38 -865
  151. package/dist/cliproxy/binary-manager.js.map +1 -1
  152. package/dist/cliproxy/remote-proxy-client.d.ts +3 -0
  153. package/dist/cliproxy/remote-proxy-client.d.ts.map +1 -1
  154. package/dist/cliproxy/remote-proxy-client.js +7 -3
  155. package/dist/cliproxy/remote-proxy-client.js.map +1 -1
  156. package/dist/cliproxy/services/binary-service.d.ts +65 -0
  157. package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
  158. package/dist/cliproxy/services/binary-service.js +140 -0
  159. package/dist/cliproxy/services/binary-service.js.map +1 -0
  160. package/dist/cliproxy/services/index.d.ts +8 -0
  161. package/dist/cliproxy/services/index.d.ts.map +1 -0
  162. package/dist/cliproxy/services/index.js +31 -0
  163. package/dist/cliproxy/services/index.js.map +1 -0
  164. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
  165. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
  166. package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
  167. package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
  168. package/dist/cliproxy/services/variant-config-adapter.d.ts +38 -0
  169. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
  170. package/dist/cliproxy/services/variant-config-adapter.js +172 -0
  171. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
  172. package/dist/cliproxy/services/variant-service.d.ts +37 -0
  173. package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
  174. package/dist/cliproxy/services/variant-service.js +128 -0
  175. package/dist/cliproxy/services/variant-service.js.map +1 -0
  176. package/dist/cliproxy/services/variant-settings.d.ts +32 -0
  177. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
  178. package/dist/cliproxy/services/variant-settings.js +128 -0
  179. package/dist/cliproxy/services/variant-settings.js.map +1 -0
  180. package/dist/commands/api-command.d.ts +3 -6
  181. package/dist/commands/api-command.d.ts.map +1 -1
  182. package/dist/commands/api-command.js +84 -445
  183. package/dist/commands/api-command.js.map +1 -1
  184. package/dist/commands/cliproxy-command.d.ts +0 -3
  185. package/dist/commands/cliproxy-command.d.ts.map +1 -1
  186. package/dist/commands/cliproxy-command.js +182 -621
  187. package/dist/commands/cliproxy-command.js.map +1 -1
  188. package/dist/commands/index.d.ts +17 -0
  189. package/dist/commands/index.d.ts.map +1 -0
  190. package/dist/commands/index.js +33 -0
  191. package/dist/commands/index.js.map +1 -0
  192. package/dist/config/unified-config-loader.d.ts +7 -0
  193. package/dist/config/unified-config-loader.d.ts.map +1 -1
  194. package/dist/config/unified-config-loader.js +11 -1
  195. package/dist/config/unified-config-loader.js.map +1 -1
  196. package/dist/delegation/executor/index.d.ts +7 -0
  197. package/dist/delegation/executor/index.d.ts.map +1 -0
  198. package/dist/delegation/executor/index.js +28 -0
  199. package/dist/delegation/executor/index.js.map +1 -0
  200. package/dist/delegation/executor/result-aggregator.d.ts +30 -0
  201. package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
  202. package/dist/delegation/executor/result-aggregator.js +66 -0
  203. package/dist/delegation/executor/result-aggregator.js.map +1 -0
  204. package/dist/delegation/executor/stream-parser.d.ts +28 -0
  205. package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
  206. package/dist/delegation/executor/stream-parser.js +140 -0
  207. package/dist/delegation/executor/stream-parser.js.map +1 -0
  208. package/dist/delegation/executor/types.d.ts +121 -0
  209. package/dist/delegation/executor/types.d.ts.map +1 -0
  210. package/dist/delegation/executor/types.js +6 -0
  211. package/dist/delegation/executor/types.js.map +1 -0
  212. package/dist/delegation/headless-executor.d.ts +13 -91
  213. package/dist/delegation/headless-executor.d.ts.map +1 -1
  214. package/dist/delegation/headless-executor.js +84 -291
  215. package/dist/delegation/headless-executor.js.map +1 -1
  216. package/dist/delegation/index.d.ts +11 -0
  217. package/dist/delegation/index.d.ts.map +1 -0
  218. package/dist/delegation/index.js +33 -0
  219. package/dist/delegation/index.js.map +1 -0
  220. package/dist/delegation/result-formatter.d.ts +1 -30
  221. package/dist/delegation/result-formatter.d.ts.map +1 -1
  222. package/dist/delegation/result-formatter.js.map +1 -1
  223. package/dist/errors/cleanup-registry.d.ts +64 -0
  224. package/dist/errors/cleanup-registry.d.ts.map +1 -0
  225. package/dist/errors/cleanup-registry.js +141 -0
  226. package/dist/errors/cleanup-registry.js.map +1 -0
  227. package/dist/errors/error-handler.d.ts +45 -0
  228. package/dist/errors/error-handler.d.ts.map +1 -0
  229. package/dist/errors/error-handler.js +150 -0
  230. package/dist/errors/error-handler.js.map +1 -0
  231. package/dist/errors/error-types.d.ts +102 -0
  232. package/dist/errors/error-types.d.ts.map +1 -0
  233. package/dist/errors/error-types.js +158 -0
  234. package/dist/errors/error-types.js.map +1 -0
  235. package/dist/errors/exit-codes.d.ts +49 -0
  236. package/dist/errors/exit-codes.d.ts.map +1 -0
  237. package/dist/errors/exit-codes.js +72 -0
  238. package/dist/errors/exit-codes.js.map +1 -0
  239. package/dist/errors/index.d.ts +29 -0
  240. package/dist/errors/index.d.ts.map +1 -0
  241. package/dist/errors/index.js +62 -0
  242. package/dist/errors/index.js.map +1 -0
  243. package/dist/glmt/glmt-transformer.d.ts +29 -248
  244. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  245. package/dist/glmt/glmt-transformer.js +63 -718
  246. package/dist/glmt/glmt-transformer.js.map +1 -1
  247. package/dist/glmt/index.d.ts +14 -0
  248. package/dist/glmt/index.d.ts.map +1 -0
  249. package/dist/glmt/index.js +41 -0
  250. package/dist/glmt/index.js.map +1 -0
  251. package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
  252. package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
  253. package/dist/glmt/pipeline/content-transformer.js +162 -0
  254. package/dist/glmt/pipeline/content-transformer.js.map +1 -0
  255. package/dist/glmt/pipeline/index.d.ts +12 -0
  256. package/dist/glmt/pipeline/index.d.ts.map +1 -0
  257. package/dist/glmt/pipeline/index.js +20 -0
  258. package/dist/glmt/pipeline/index.js.map +1 -0
  259. package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
  260. package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
  261. package/dist/glmt/pipeline/request-transformer.js +116 -0
  262. package/dist/glmt/pipeline/request-transformer.js.map +1 -0
  263. package/dist/glmt/pipeline/response-builder.d.ts +52 -0
  264. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
  265. package/dist/glmt/pipeline/response-builder.js +205 -0
  266. package/dist/glmt/pipeline/response-builder.js.map +1 -0
  267. package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
  268. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
  269. package/dist/glmt/pipeline/stream-parser.js +241 -0
  270. package/dist/glmt/pipeline/stream-parser.js.map +1 -0
  271. package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
  272. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
  273. package/dist/glmt/pipeline/tool-call-handler.js +87 -0
  274. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
  275. package/dist/glmt/pipeline/types.d.ts +159 -0
  276. package/dist/glmt/pipeline/types.d.ts.map +1 -0
  277. package/dist/glmt/pipeline/types.js +6 -0
  278. package/dist/glmt/pipeline/types.js.map +1 -0
  279. package/dist/management/checks/cliproxy-check.d.ts +37 -0
  280. package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
  281. package/dist/management/checks/cliproxy-check.js +187 -0
  282. package/dist/management/checks/cliproxy-check.js.map +1 -0
  283. package/dist/management/checks/config-check.d.ts +27 -0
  284. package/dist/management/checks/config-check.d.ts.map +1 -0
  285. package/dist/management/checks/config-check.js +158 -0
  286. package/dist/management/checks/config-check.js.map +1 -0
  287. package/dist/management/checks/env-check.d.ts +17 -0
  288. package/dist/management/checks/env-check.d.ts.map +1 -0
  289. package/dist/management/checks/env-check.js +71 -0
  290. package/dist/management/checks/env-check.js.map +1 -0
  291. package/dist/management/checks/index.d.ts +12 -0
  292. package/dist/management/checks/index.d.ts.map +1 -0
  293. package/dist/management/checks/index.js +48 -0
  294. package/dist/management/checks/index.js.map +1 -0
  295. package/dist/management/checks/oauth-check.d.ts +16 -0
  296. package/dist/management/checks/oauth-check.d.ts.map +1 -0
  297. package/dist/management/checks/oauth-check.js +68 -0
  298. package/dist/management/checks/oauth-check.js.map +1 -0
  299. package/dist/management/checks/profile-check.d.ts +36 -0
  300. package/dist/management/checks/profile-check.d.ts.map +1 -0
  301. package/dist/management/checks/profile-check.js +165 -0
  302. package/dist/management/checks/profile-check.js.map +1 -0
  303. package/dist/management/checks/symlink-check.d.ts +30 -0
  304. package/dist/management/checks/symlink-check.d.ts.map +1 -0
  305. package/dist/management/checks/symlink-check.js +204 -0
  306. package/dist/management/checks/symlink-check.js.map +1 -0
  307. package/dist/management/checks/system-check.d.ts +25 -0
  308. package/dist/management/checks/system-check.d.ts.map +1 -0
  309. package/dist/management/checks/system-check.js +136 -0
  310. package/dist/management/checks/system-check.js.map +1 -0
  311. package/dist/management/checks/types.d.ts +64 -0
  312. package/dist/management/checks/types.d.ts.map +1 -0
  313. package/dist/management/checks/types.js +63 -0
  314. package/dist/management/checks/types.js.map +1 -0
  315. package/dist/management/doctor.d.ts +3 -92
  316. package/dist/management/doctor.d.ts.map +1 -1
  317. package/dist/management/doctor.js +15 -831
  318. package/dist/management/doctor.js.map +1 -1
  319. package/dist/management/index.d.ts +15 -0
  320. package/dist/management/index.d.ts.map +1 -0
  321. package/dist/management/index.js +56 -0
  322. package/dist/management/index.js.map +1 -0
  323. package/dist/management/repair/auto-repair.d.ts +13 -0
  324. package/dist/management/repair/auto-repair.d.ts.map +1 -0
  325. package/dist/management/repair/auto-repair.js +170 -0
  326. package/dist/management/repair/auto-repair.js.map +1 -0
  327. package/dist/management/repair/index.d.ts +5 -0
  328. package/dist/management/repair/index.d.ts.map +1 -0
  329. package/dist/management/repair/index.js +9 -0
  330. package/dist/management/repair/index.js.map +1 -0
  331. package/dist/types/delegation.d.ts +1 -13
  332. package/dist/types/delegation.d.ts.map +1 -1
  333. package/dist/types/utils.d.ts +27 -0
  334. package/dist/types/utils.d.ts.map +1 -1
  335. package/dist/ui/assets/{accounts-p1_nf0Jy.js → accounts--0JKEYYO.js} +1 -1
  336. package/dist/ui/assets/analytics-CX5PurM9.js +1 -0
  337. package/dist/ui/assets/api-D80tfZOx.js +1 -0
  338. package/dist/ui/assets/{card-CCDc-Mx9.js → card-B-DPlvgo.js} +1 -1
  339. package/dist/ui/assets/cliproxy-D4AoDTZB.js +3 -0
  340. package/dist/ui/assets/cliproxy-control-panel-CJ2CfYod.js +1 -0
  341. package/dist/ui/assets/{code-editor-Br9x-r-E.js → code-editor-DIj6qdUG.js} +1 -1
  342. package/dist/ui/assets/confirm-dialog-DZkzZLrs.js +1 -0
  343. package/dist/ui/assets/copilot-Q9tyCgYD.js +4 -0
  344. package/dist/ui/assets/form-utils-DP6ILe7Z.js +20 -0
  345. package/dist/ui/assets/health-Cw76uZRy.js +1 -0
  346. package/dist/ui/assets/{icons-BOsxPbiD.js → icons-ZmwVoUeR.js} +1 -1
  347. package/dist/ui/assets/index-C1W0iP_Z.js +46 -0
  348. package/dist/ui/assets/index-It66SkKf.css +1 -0
  349. package/dist/ui/assets/{radix-ui-DFHQr9A5.js → radix-ui-CV3R9pD6.js} +3 -3
  350. package/dist/ui/assets/settings-CDdHW_gU.js +1 -0
  351. package/dist/ui/assets/{shared-BfYhSN4-.js → shared--pI8rTbP.js} +1 -1
  352. package/dist/ui/assets/{switch-CMk95lwf.js → switch-BP6SzLyZ.js} +1 -1
  353. package/dist/ui/assets/{tanstack-C4gT2P7V.js → tanstack-Df9bCj5R.js} +1 -1
  354. package/dist/ui/index.html +6 -6
  355. package/dist/utils/claude-spawner.d.ts +54 -0
  356. package/dist/utils/claude-spawner.d.ts.map +1 -0
  357. package/dist/utils/claude-spawner.js +118 -0
  358. package/dist/utils/claude-spawner.js.map +1 -0
  359. package/dist/utils/delegation-validator.d.ts +8 -4
  360. package/dist/utils/delegation-validator.d.ts.map +1 -1
  361. package/dist/utils/delegation-validator.js.map +1 -1
  362. package/dist/utils/helpers.d.ts +0 -11
  363. package/dist/utils/helpers.d.ts.map +1 -1
  364. package/dist/utils/helpers.js +1 -57
  365. package/dist/utils/helpers.js.map +1 -1
  366. package/dist/utils/index.d.ts +15 -0
  367. package/dist/utils/index.d.ts.map +1 -0
  368. package/dist/utils/index.js +50 -0
  369. package/dist/utils/index.js.map +1 -0
  370. package/dist/utils/time.d.ts +10 -0
  371. package/dist/utils/time.d.ts.map +1 -0
  372. package/dist/utils/time.js +27 -0
  373. package/dist/utils/time.js.map +1 -0
  374. package/dist/utils/ui/boxes.d.ts +24 -0
  375. package/dist/utils/ui/boxes.d.ts.map +1 -0
  376. package/dist/utils/ui/boxes.js +108 -0
  377. package/dist/utils/ui/boxes.js.map +1 -0
  378. package/dist/utils/ui/colors.d.ts +25 -0
  379. package/dist/utils/ui/colors.d.ts.map +1 -0
  380. package/dist/utils/ui/colors.js +70 -0
  381. package/dist/utils/ui/colors.js.map +1 -0
  382. package/dist/utils/ui/index.d.ts +51 -0
  383. package/dist/utils/ui/index.d.ts.map +1 -0
  384. package/dist/utils/ui/index.js +96 -0
  385. package/dist/utils/ui/index.js.map +1 -0
  386. package/dist/utils/ui/indicators.d.ts +23 -0
  387. package/dist/utils/ui/indicators.d.ts.map +1 -0
  388. package/dist/utils/ui/indicators.js +39 -0
  389. package/dist/utils/ui/indicators.js.map +1 -0
  390. package/dist/utils/ui/init.d.ts +30 -0
  391. package/dist/utils/ui/init.d.ts.map +1 -0
  392. package/dist/utils/ui/init.js +102 -0
  393. package/dist/utils/ui/init.js.map +1 -0
  394. package/dist/utils/ui/spinner.d.ts +13 -0
  395. package/dist/utils/ui/spinner.d.ts.map +1 -0
  396. package/dist/utils/ui/spinner.js +89 -0
  397. package/dist/utils/ui/spinner.js.map +1 -0
  398. package/dist/utils/ui/tables.d.ts +12 -0
  399. package/dist/utils/ui/tables.d.ts.map +1 -0
  400. package/dist/utils/ui/tables.js +69 -0
  401. package/dist/utils/ui/tables.js.map +1 -0
  402. package/dist/utils/ui/tasks.d.ts +26 -0
  403. package/dist/utils/ui/tasks.d.ts.map +1 -0
  404. package/dist/utils/ui/tasks.js +102 -0
  405. package/dist/utils/ui/tasks.js.map +1 -0
  406. package/dist/utils/ui/text.d.ts +24 -0
  407. package/dist/utils/ui/text.d.ts.map +1 -0
  408. package/dist/utils/ui/text.js +60 -0
  409. package/dist/utils/ui/text.js.map +1 -0
  410. package/dist/utils/ui/types.d.ts +36 -0
  411. package/dist/utils/ui/types.d.ts.map +1 -0
  412. package/dist/utils/ui/types.js +33 -0
  413. package/dist/utils/ui/types.js.map +1 -0
  414. package/dist/utils/ui.d.ts +3 -138
  415. package/dist/utils/ui.d.ts.map +1 -1
  416. package/dist/utils/ui.js +40 -567
  417. package/dist/utils/ui.js.map +1 -1
  418. package/dist/utils/websearch/gemini-cli.d.ts +36 -0
  419. package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
  420. package/dist/utils/websearch/gemini-cli.js +132 -0
  421. package/dist/utils/websearch/gemini-cli.js.map +1 -0
  422. package/dist/utils/websearch/grok-cli.d.ts +26 -0
  423. package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
  424. package/dist/utils/websearch/grok-cli.js +81 -0
  425. package/dist/utils/websearch/grok-cli.js.map +1 -0
  426. package/dist/utils/websearch/hook-config.d.ts +21 -0
  427. package/dist/utils/websearch/hook-config.d.ts.map +1 -0
  428. package/dist/utils/websearch/hook-config.js +183 -0
  429. package/dist/utils/websearch/hook-config.js.map +1 -0
  430. package/dist/utils/websearch/hook-env.d.ts +16 -0
  431. package/dist/utils/websearch/hook-env.d.ts.map +1 -0
  432. package/dist/utils/websearch/hook-env.js +62 -0
  433. package/dist/utils/websearch/hook-env.js.map +1 -0
  434. package/dist/utils/websearch/hook-installer.d.ts +27 -0
  435. package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
  436. package/dist/utils/websearch/hook-installer.js +141 -0
  437. package/dist/utils/websearch/hook-installer.js.map +1 -0
  438. package/dist/utils/websearch/index.d.ts +15 -0
  439. package/dist/utils/websearch/index.d.ts.map +1 -0
  440. package/dist/utils/websearch/index.js +44 -0
  441. package/dist/utils/websearch/index.js.map +1 -0
  442. package/dist/utils/websearch/opencode-cli.d.ts +26 -0
  443. package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
  444. package/dist/utils/websearch/opencode-cli.js +81 -0
  445. package/dist/utils/websearch/opencode-cli.js.map +1 -0
  446. package/dist/utils/websearch/status.d.ts +35 -0
  447. package/dist/utils/websearch/status.d.ts.map +1 -0
  448. package/dist/utils/websearch/status.js +185 -0
  449. package/dist/utils/websearch/status.js.map +1 -0
  450. package/dist/utils/websearch/types.d.ts +85 -0
  451. package/dist/utils/websearch/types.d.ts.map +1 -0
  452. package/dist/utils/websearch/types.js +10 -0
  453. package/dist/utils/websearch/types.js.map +1 -0
  454. package/dist/utils/websearch-manager.d.ts +7 -186
  455. package/dist/utils/websearch-manager.d.ts.map +1 -1
  456. package/dist/utils/websearch-manager.js +37 -710
  457. package/dist/utils/websearch-manager.js.map +1 -1
  458. package/dist/web-server/data-aggregator.d.ts +3 -51
  459. package/dist/web-server/data-aggregator.d.ts.map +1 -1
  460. package/dist/web-server/data-aggregator.js +18 -386
  461. package/dist/web-server/data-aggregator.js.map +1 -1
  462. package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
  463. package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
  464. package/dist/web-server/health/cliproxy-checks.js +145 -0
  465. package/dist/web-server/health/cliproxy-checks.js.map +1 -0
  466. package/dist/web-server/health/config-checks.d.ts +19 -0
  467. package/dist/web-server/health/config-checks.d.ts.map +1 -0
  468. package/dist/web-server/health/config-checks.js +174 -0
  469. package/dist/web-server/health/config-checks.js.map +1 -0
  470. package/dist/web-server/health/environment-checks.d.ts +11 -0
  471. package/dist/web-server/health/environment-checks.d.ts.map +1 -0
  472. package/dist/web-server/health/environment-checks.js +40 -0
  473. package/dist/web-server/health/environment-checks.js.map +1 -0
  474. package/dist/web-server/health/index.d.ts +13 -0
  475. package/dist/web-server/health/index.d.ts.map +1 -0
  476. package/dist/web-server/health/index.js +41 -0
  477. package/dist/web-server/health/index.js.map +1 -0
  478. package/dist/web-server/health/oauth-checks.d.ts +11 -0
  479. package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
  480. package/dist/web-server/health/oauth-checks.js +34 -0
  481. package/dist/web-server/health/oauth-checks.js.map +1 -0
  482. package/dist/web-server/health/profile-checks.d.ts +19 -0
  483. package/dist/web-server/health/profile-checks.d.ts.map +1 -0
  484. package/dist/web-server/health/profile-checks.js +152 -0
  485. package/dist/web-server/health/profile-checks.js.map +1 -0
  486. package/dist/web-server/health/symlink-checks.d.ts +15 -0
  487. package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
  488. package/dist/web-server/health/symlink-checks.js +173 -0
  489. package/dist/web-server/health/symlink-checks.js.map +1 -0
  490. package/dist/web-server/health/system-checks.d.ts +19 -0
  491. package/dist/web-server/health/system-checks.d.ts.map +1 -0
  492. package/dist/web-server/health/system-checks.js +127 -0
  493. package/dist/web-server/health/system-checks.js.map +1 -0
  494. package/dist/web-server/health/types.d.ts +34 -0
  495. package/dist/web-server/health/types.d.ts.map +1 -0
  496. package/dist/web-server/health/types.js +8 -0
  497. package/dist/web-server/health/types.js.map +1 -0
  498. package/dist/web-server/health/websearch-checks.d.ts +11 -0
  499. package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
  500. package/dist/web-server/health/websearch-checks.js +53 -0
  501. package/dist/web-server/health/websearch-checks.js.map +1 -0
  502. package/dist/web-server/health-service.d.ts +4 -30
  503. package/dist/web-server/health-service.d.ts.map +1 -1
  504. package/dist/web-server/health-service.js +28 -695
  505. package/dist/web-server/health-service.js.map +1 -1
  506. package/dist/web-server/index.d.ts.map +1 -1
  507. package/dist/web-server/index.js +2 -5
  508. package/dist/web-server/index.js.map +1 -1
  509. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +6 -0
  510. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
  511. package/dist/web-server/routes/cliproxy-auth-routes.js +202 -0
  512. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
  513. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
  514. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
  515. package/dist/web-server/routes/cliproxy-stats-routes.js +253 -0
  516. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
  517. package/dist/web-server/routes/config-routes.d.ts +6 -0
  518. package/dist/web-server/routes/config-routes.d.ts.map +1 -0
  519. package/dist/web-server/routes/config-routes.js +145 -0
  520. package/dist/web-server/routes/config-routes.js.map +1 -0
  521. package/dist/web-server/routes/copilot-routes.d.ts +6 -0
  522. package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
  523. package/dist/web-server/routes/copilot-routes.js +195 -0
  524. package/dist/web-server/routes/copilot-routes.js.map +1 -0
  525. package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
  526. package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
  527. package/dist/web-server/routes/copilot-settings-routes.js +122 -0
  528. package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
  529. package/dist/web-server/routes/health-routes.d.ts +6 -0
  530. package/dist/web-server/routes/health-routes.d.ts.map +1 -0
  531. package/dist/web-server/routes/health-routes.js +30 -0
  532. package/dist/web-server/routes/health-routes.js.map +1 -0
  533. package/dist/web-server/routes/index.d.ts +8 -0
  534. package/dist/web-server/routes/index.d.ts.map +1 -0
  535. package/dist/web-server/routes/index.js +54 -0
  536. package/dist/web-server/routes/index.js.map +1 -0
  537. package/dist/web-server/routes/misc-routes.d.ts +6 -0
  538. package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
  539. package/dist/web-server/routes/misc-routes.js +219 -0
  540. package/dist/web-server/routes/misc-routes.js.map +1 -0
  541. package/dist/web-server/routes/profile-routes.d.ts +6 -0
  542. package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
  543. package/dist/web-server/routes/profile-routes.js +164 -0
  544. package/dist/web-server/routes/profile-routes.js.map +1 -0
  545. package/dist/web-server/routes/provider-routes.d.ts +6 -0
  546. package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
  547. package/dist/web-server/routes/provider-routes.js +146 -0
  548. package/dist/web-server/routes/provider-routes.js.map +1 -0
  549. package/dist/web-server/routes/route-helpers.d.ts +55 -0
  550. package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
  551. package/dist/web-server/routes/route-helpers.js +201 -0
  552. package/dist/web-server/routes/route-helpers.js.map +1 -0
  553. package/dist/web-server/routes/settings-routes.d.ts +6 -0
  554. package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
  555. package/dist/web-server/routes/settings-routes.js +207 -0
  556. package/dist/web-server/routes/settings-routes.js.map +1 -0
  557. package/dist/web-server/routes/variant-routes.d.ts +6 -0
  558. package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
  559. package/dist/web-server/routes/variant-routes.js +158 -0
  560. package/dist/web-server/routes/variant-routes.js.map +1 -0
  561. package/dist/web-server/routes/websearch-routes.d.ts +6 -0
  562. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
  563. package/dist/web-server/routes/websearch-routes.js +130 -0
  564. package/dist/web-server/routes/websearch-routes.js.map +1 -0
  565. package/dist/web-server/services/index.d.ts +7 -0
  566. package/dist/web-server/services/index.d.ts.map +1 -0
  567. package/dist/web-server/services/index.js +21 -0
  568. package/dist/web-server/services/index.js.map +1 -0
  569. package/dist/web-server/services/usage-aggregator.d.ts +7 -0
  570. package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
  571. package/dist/web-server/services/usage-aggregator.js +23 -0
  572. package/dist/web-server/services/usage-aggregator.js.map +1 -0
  573. package/dist/web-server/usage/aggregator.d.ts +54 -0
  574. package/dist/web-server/usage/aggregator.d.ts.map +1 -0
  575. package/dist/web-server/usage/aggregator.js +470 -0
  576. package/dist/web-server/usage/aggregator.js.map +1 -0
  577. package/dist/web-server/usage/data-aggregator.d.ts +55 -0
  578. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
  579. package/dist/web-server/usage/data-aggregator.js +391 -0
  580. package/dist/web-server/usage/data-aggregator.js.map +1 -0
  581. package/dist/web-server/usage/disk-cache.d.ts +46 -0
  582. package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
  583. package/dist/web-server/usage/disk-cache.js +162 -0
  584. package/dist/web-server/usage/disk-cache.js.map +1 -0
  585. package/dist/web-server/usage/handlers.d.ts +50 -0
  586. package/dist/web-server/usage/handlers.d.ts.map +1 -0
  587. package/dist/web-server/usage/handlers.js +524 -0
  588. package/dist/web-server/usage/handlers.js.map +1 -0
  589. package/dist/web-server/usage/index.d.ts +12 -0
  590. package/dist/web-server/usage/index.d.ts.map +1 -0
  591. package/dist/web-server/usage/index.js +54 -0
  592. package/dist/web-server/usage/index.js.map +1 -0
  593. package/dist/web-server/usage/routes.d.ts +11 -0
  594. package/dist/web-server/usage/routes.d.ts.map +1 -0
  595. package/dist/web-server/usage/routes.js +37 -0
  596. package/dist/web-server/usage/routes.js.map +1 -0
  597. package/dist/web-server/usage/types.d.ts +119 -0
  598. package/dist/web-server/usage/types.d.ts.map +1 -0
  599. package/dist/web-server/usage/types.js +9 -0
  600. package/dist/web-server/usage/types.js.map +1 -0
  601. package/dist/web-server/usage-disk-cache.d.ts +3 -42
  602. package/dist/web-server/usage-disk-cache.d.ts.map +1 -1
  603. package/dist/web-server/usage-disk-cache.js +5 -144
  604. package/dist/web-server/usage-disk-cache.js.map +1 -1
  605. package/dist/web-server/usage-routes.d.ts +3 -31
  606. package/dist/web-server/usage-routes.d.ts.map +1 -1
  607. package/dist/web-server/usage-routes.js +8 -1139
  608. package/dist/web-server/usage-routes.js.map +1 -1
  609. package/dist/web-server/usage-types.d.ts +3 -115
  610. package/dist/web-server/usage-types.d.ts.map +1 -1
  611. package/dist/web-server/usage-types.js +17 -3
  612. package/dist/web-server/usage-types.js.map +1 -1
  613. package/package.json +1 -1
  614. package/scripts/dev-release.sh +113 -0
  615. package/dist/ui/assets/analytics-D1k2nYcF.js +0 -1
  616. package/dist/ui/assets/api-D9VVmZ1j.js +0 -1
  617. package/dist/ui/assets/cliproxy-CTt_Nsft.js +0 -1
  618. package/dist/ui/assets/cliproxy-control-panel-DKMAi4_4.js +0 -1
  619. package/dist/ui/assets/copilot-C6F8PT_L.js +0 -4
  620. package/dist/ui/assets/form-utils-BuXDJb0w.js +0 -20
  621. package/dist/ui/assets/health-DiAvJaSn.js +0 -1
  622. package/dist/ui/assets/index-Brq6EBKZ.css +0 -1
  623. package/dist/ui/assets/index-ByU8ZhED.js +0 -48
  624. package/dist/ui/assets/settings-CEomZLGl.js +0 -1
  625. package/dist/web-server/routes.d.ts +0 -7
  626. package/dist/web-server/routes.d.ts.map +0 -1
  627. package/dist/web-server/routes.js +0 -1891
  628. package/dist/web-server/routes.js.map +0 -1
@@ -13,729 +13,56 @@
13
13
  *
14
14
  * @module utils/websearch-manager
15
15
  */
16
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- var desc = Object.getOwnPropertyDescriptor(m, k);
19
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
- desc = { enumerable: true, get: function() { return m[k]; } };
21
- }
22
- Object.defineProperty(o, k2, desc);
23
- }) : (function(o, m, k, k2) {
24
- if (k2 === undefined) k2 = k;
25
- o[k2] = m[k];
26
- }));
27
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
- Object.defineProperty(o, "default", { enumerable: true, value: v });
29
- }) : function(o, v) {
30
- o["default"] = v;
31
- });
32
- var __importStar = (this && this.__importStar) || function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
16
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.getMcpConfigPath = exports.hasMcpWebSearch = exports.ensureMcpWebSearch = exports.displayWebSearchStatus = exports.getWebSearchReadiness = exports.getWebSearchHookEnv = exports.getWebSearchHookConfig = exports.hasWebSearchHook = exports.installWebSearchHook = exports.getCliInstallHints = exports.hasAnyWebSearchCli = exports.getWebSearchCliProviders = exports.clearAllCliCaches = exports.clearOpenCodeCliCache = exports.hasOpenCodeCli = exports.getOpenCodeCliStatus = exports.clearGrokCliCache = exports.hasGrokCli = exports.getGrokCliStatus = exports.clearGeminiCliCache = exports.isGeminiAuthenticated = exports.hasGeminiCli = exports.getGeminiCliStatus = void 0;
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const os = __importStar(require("os"));
44
- const child_process_1 = require("child_process");
45
- const ui_1 = require("./ui");
46
- const unified_config_loader_1 = require("../config/unified-config-loader");
47
- // CCS hooks directory
48
- const CCS_HOOKS_DIR = path.join(os.homedir(), '.ccs', 'hooks');
49
- // Hook file name
50
- const WEBSEARCH_HOOK = 'websearch-transformer.cjs';
51
- // Buffer time added to max provider timeout for hook timeout (seconds)
52
- const HOOK_TIMEOUT_BUFFER = 30;
53
- // Minimum hook timeout in seconds (fallback if no providers configured)
54
- const MIN_HOOK_TIMEOUT = 60;
55
- // Path to Claude settings.json
56
- const CLAUDE_SETTINGS_PATH = path.join(os.homedir(), '.claude', 'settings.json');
57
- // Cache for Gemini CLI status (per process)
58
- let geminiCliCache = null;
59
- /**
60
- * Check if Gemini CLI is installed globally
61
- *
62
- * Requires global install: `npm install -g @google/gemini-cli`
63
- * No npx fallback - must be in PATH
64
- *
65
- * @returns Gemini CLI status with path and version
66
- */
67
- function getGeminiCliStatus() {
68
- // Return cached result if available
69
- if (geminiCliCache) {
70
- return geminiCliCache;
71
- }
72
- const result = {
73
- installed: false,
74
- path: null,
75
- version: null,
76
- };
77
- try {
78
- const isWindows = process.platform === 'win32';
79
- const whichCmd = isWindows ? 'where gemini' : 'which gemini';
80
- const pathResult = (0, child_process_1.execSync)(whichCmd, {
81
- encoding: 'utf8',
82
- timeout: 5000,
83
- stdio: ['pipe', 'pipe', 'pipe'],
84
- });
85
- const geminiPath = pathResult.trim().split('\n')[0]; // First result on Windows
86
- if (geminiPath) {
87
- result.installed = true;
88
- result.path = geminiPath;
89
- // Try to get version
90
- try {
91
- const versionResult = (0, child_process_1.execSync)('gemini --version', {
92
- encoding: 'utf8',
93
- timeout: 5000,
94
- stdio: ['pipe', 'pipe', 'pipe'],
95
- });
96
- result.version = versionResult.trim();
97
- }
98
- catch {
99
- // Version check failed, but CLI is installed
100
- result.version = 'unknown';
101
- }
102
- }
103
- }
104
- catch {
105
- // Command not found - Gemini CLI not installed
106
- }
107
- // Cache result
108
- geminiCliCache = result;
109
- return result;
110
- }
111
- exports.getGeminiCliStatus = getGeminiCliStatus;
112
- /**
113
- * Check if Gemini CLI is available (quick boolean check)
114
- */
115
- function hasGeminiCli() {
116
- return getGeminiCliStatus().installed;
117
- }
118
- exports.hasGeminiCli = hasGeminiCli;
119
- /**
120
- * Check if Gemini CLI is authenticated
121
- *
122
- * Gemini CLI stores OAuth credentials in ~/.gemini/oauth_creds.json
123
- * Authentication is done by running `gemini` which opens browser for OAuth.
124
- * Note: There is NO `gemini auth login` command - just run `gemini` to authenticate.
125
- *
126
- * @returns true if oauth_creds.json exists with access_token
127
- */
128
- function isGeminiAuthenticated() {
129
- const oauthPath = path.join(os.homedir(), '.gemini', 'oauth_creds.json');
130
- if (!fs.existsSync(oauthPath)) {
131
- return false;
132
- }
133
- try {
134
- const content = fs.readFileSync(oauthPath, 'utf8');
135
- const creds = JSON.parse(content);
136
- // Check if access_token exists (doesn't validate expiry - Gemini CLI handles refresh)
137
- return !!creds.access_token;
138
- }
139
- catch {
140
- return false;
141
- }
142
- }
143
- exports.isGeminiAuthenticated = isGeminiAuthenticated;
144
- /**
145
- * Clear Gemini CLI cache (for testing or after installation)
146
- */
147
- function clearGeminiCliCache() {
148
- geminiCliCache = null;
149
- }
150
- exports.clearGeminiCliCache = clearGeminiCliCache;
151
- // Cache for Grok CLI status (per process)
152
- let grokCliCache = null;
153
- /**
154
- * Check if Grok CLI is installed globally
155
- *
156
- * Grok CLI (grok-4-cli by lalomorales22) provides web search + X search.
157
- * Requires: `npm install -g grok-cli` and XAI_API_KEY env var.
158
- *
159
- * @returns Grok CLI status with path and version
160
- */
161
- function getGrokCliStatus() {
162
- // Return cached result if available
163
- if (grokCliCache) {
164
- return grokCliCache;
165
- }
166
- const result = {
167
- installed: false,
168
- path: null,
169
- version: null,
170
- };
171
- try {
172
- const isWindows = process.platform === 'win32';
173
- const whichCmd = isWindows ? 'where grok' : 'which grok';
174
- const pathResult = (0, child_process_1.execSync)(whichCmd, {
175
- encoding: 'utf8',
176
- timeout: 5000,
177
- stdio: ['pipe', 'pipe', 'pipe'],
178
- });
179
- const grokPath = pathResult.trim().split('\n')[0]; // First result on Windows
180
- if (grokPath) {
181
- result.installed = true;
182
- result.path = grokPath;
183
- // Try to get version
184
- try {
185
- const versionResult = (0, child_process_1.execSync)('grok --version', {
186
- encoding: 'utf8',
187
- timeout: 5000,
188
- stdio: ['pipe', 'pipe', 'pipe'],
189
- });
190
- result.version = versionResult.trim();
191
- }
192
- catch {
193
- // Version check failed, but CLI is installed
194
- result.version = 'unknown';
195
- }
196
- }
197
- }
198
- catch {
199
- // Command not found - Grok CLI not installed
200
- }
201
- // Cache result
202
- grokCliCache = result;
203
- return result;
204
- }
205
- exports.getGrokCliStatus = getGrokCliStatus;
206
- /**
207
- * Check if Grok CLI is available (quick boolean check)
208
- */
209
- function hasGrokCli() {
210
- return getGrokCliStatus().installed;
211
- }
212
- exports.hasGrokCli = hasGrokCli;
213
- /**
214
- * Clear Grok CLI cache (for testing or after installation)
215
- */
216
- function clearGrokCliCache() {
217
- grokCliCache = null;
218
- }
219
- exports.clearGrokCliCache = clearGrokCliCache;
220
- // Cache for OpenCode CLI status (per process)
221
- let opencodeCliCache = null;
222
- /**
223
- * Check if OpenCode CLI is installed globally
224
- *
225
- * OpenCode provides built-in web search via opencode/grok-code model.
226
- * Install: curl -fsSL https://opencode.ai/install | bash
227
- *
228
- * @returns OpenCode CLI status with path and version
229
- */
230
- function getOpenCodeCliStatus() {
231
- // Return cached result if available
232
- if (opencodeCliCache) {
233
- return opencodeCliCache;
234
- }
235
- const result = {
236
- installed: false,
237
- path: null,
238
- version: null,
239
- };
240
- try {
241
- const isWindows = process.platform === 'win32';
242
- const whichCmd = isWindows ? 'where opencode' : 'which opencode';
243
- const pathResult = (0, child_process_1.execSync)(whichCmd, {
244
- encoding: 'utf8',
245
- timeout: 5000,
246
- stdio: ['pipe', 'pipe', 'pipe'],
247
- });
248
- const opencodePath = pathResult.trim().split('\n')[0]; // First result on Windows
249
- if (opencodePath) {
250
- result.installed = true;
251
- result.path = opencodePath;
252
- // Try to get version
253
- try {
254
- const versionResult = (0, child_process_1.execSync)('opencode --version', {
255
- encoding: 'utf8',
256
- timeout: 5000,
257
- stdio: ['pipe', 'pipe', 'pipe'],
258
- });
259
- result.version = versionResult.trim();
260
- }
261
- catch {
262
- // Version check failed, but CLI is installed
263
- result.version = 'unknown';
264
- }
265
- }
266
- }
267
- catch {
268
- // Command not found - OpenCode CLI not installed
269
- }
270
- // Cache result
271
- opencodeCliCache = result;
272
- return result;
273
- }
274
- exports.getOpenCodeCliStatus = getOpenCodeCliStatus;
275
- /**
276
- * Check if OpenCode CLI is available (quick boolean check)
277
- */
278
- function hasOpenCodeCli() {
279
- return getOpenCodeCliStatus().installed;
280
- }
281
- exports.hasOpenCodeCli = hasOpenCodeCli;
282
- /**
283
- * Clear OpenCode CLI cache (for testing or after installation)
284
- */
285
- function clearOpenCodeCliCache() {
286
- opencodeCliCache = null;
287
- }
288
- exports.clearOpenCodeCliCache = clearOpenCodeCliCache;
17
+ exports.ensureMcpWebSearch = exports.clearAllCliCaches = exports.displayWebSearchStatus = exports.getWebSearchReadiness = exports.getCliInstallHints = exports.hasAnyWebSearchCli = exports.getWebSearchCliProviders = exports.getWebSearchHookEnv = exports.uninstallWebSearchHook = exports.installWebSearchHook = exports.getWebSearchHookConfig = exports.hasWebSearchHook = exports.getHookPath = exports.clearOpenCodeCliCache = exports.hasOpenCodeCli = exports.getOpenCodeCliStatus = exports.clearGrokCliCache = exports.hasGrokCli = exports.getGrokCliStatus = exports.clearGeminiCliCache = exports.isGeminiAuthenticated = exports.hasGeminiCli = exports.getGeminiCliStatus = void 0;
18
+ // Re-export CLI detection functions
19
+ var gemini_cli_1 = require("./websearch/gemini-cli");
20
+ Object.defineProperty(exports, "getGeminiCliStatus", { enumerable: true, get: function () { return gemini_cli_1.getGeminiCliStatus; } });
21
+ Object.defineProperty(exports, "hasGeminiCli", { enumerable: true, get: function () { return gemini_cli_1.hasGeminiCli; } });
22
+ Object.defineProperty(exports, "isGeminiAuthenticated", { enumerable: true, get: function () { return gemini_cli_1.isGeminiAuthenticated; } });
23
+ Object.defineProperty(exports, "clearGeminiCliCache", { enumerable: true, get: function () { return gemini_cli_1.clearGeminiCliCache; } });
24
+ var grok_cli_1 = require("./websearch/grok-cli");
25
+ Object.defineProperty(exports, "getGrokCliStatus", { enumerable: true, get: function () { return grok_cli_1.getGrokCliStatus; } });
26
+ Object.defineProperty(exports, "hasGrokCli", { enumerable: true, get: function () { return grok_cli_1.hasGrokCli; } });
27
+ Object.defineProperty(exports, "clearGrokCliCache", { enumerable: true, get: function () { return grok_cli_1.clearGrokCliCache; } });
28
+ var opencode_cli_1 = require("./websearch/opencode-cli");
29
+ Object.defineProperty(exports, "getOpenCodeCliStatus", { enumerable: true, get: function () { return opencode_cli_1.getOpenCodeCliStatus; } });
30
+ Object.defineProperty(exports, "hasOpenCodeCli", { enumerable: true, get: function () { return opencode_cli_1.hasOpenCodeCli; } });
31
+ Object.defineProperty(exports, "clearOpenCodeCliCache", { enumerable: true, get: function () { return opencode_cli_1.clearOpenCodeCliCache; } });
32
+ // Re-export hook management functions
33
+ var hook_installer_1 = require("./websearch/hook-installer");
34
+ Object.defineProperty(exports, "getHookPath", { enumerable: true, get: function () { return hook_installer_1.getHookPath; } });
35
+ Object.defineProperty(exports, "hasWebSearchHook", { enumerable: true, get: function () { return hook_installer_1.hasWebSearchHook; } });
36
+ Object.defineProperty(exports, "getWebSearchHookConfig", { enumerable: true, get: function () { return hook_installer_1.getWebSearchHookConfig; } });
37
+ Object.defineProperty(exports, "installWebSearchHook", { enumerable: true, get: function () { return hook_installer_1.installWebSearchHook; } });
38
+ Object.defineProperty(exports, "uninstallWebSearchHook", { enumerable: true, get: function () { return hook_installer_1.uninstallWebSearchHook; } });
39
+ // Re-export hook environment
40
+ var hook_env_1 = require("./websearch/hook-env");
41
+ Object.defineProperty(exports, "getWebSearchHookEnv", { enumerable: true, get: function () { return hook_env_1.getWebSearchHookEnv; } });
42
+ // Re-export status and readiness functions
43
+ var status_1 = require("./websearch/status");
44
+ Object.defineProperty(exports, "getWebSearchCliProviders", { enumerable: true, get: function () { return status_1.getWebSearchCliProviders; } });
45
+ Object.defineProperty(exports, "hasAnyWebSearchCli", { enumerable: true, get: function () { return status_1.hasAnyWebSearchCli; } });
46
+ Object.defineProperty(exports, "getCliInstallHints", { enumerable: true, get: function () { return status_1.getCliInstallHints; } });
47
+ Object.defineProperty(exports, "getWebSearchReadiness", { enumerable: true, get: function () { return status_1.getWebSearchReadiness; } });
48
+ Object.defineProperty(exports, "displayWebSearchStatus", { enumerable: true, get: function () { return status_1.displayWebSearchStatus; } });
49
+ // Import for local use
50
+ const websearch_1 = require("./websearch");
289
51
  /**
290
52
  * Clear all CLI caches
291
53
  */
292
54
  function clearAllCliCaches() {
293
- geminiCliCache = null;
294
- grokCliCache = null;
295
- opencodeCliCache = null;
55
+ (0, websearch_1.clearGeminiCliCache)();
56
+ (0, websearch_1.clearGrokCliCache)();
57
+ (0, websearch_1.clearOpenCodeCliCache)();
296
58
  }
297
59
  exports.clearAllCliCaches = clearAllCliCaches;
298
- /**
299
- * Get all WebSearch CLI providers with their status
300
- */
301
- function getWebSearchCliProviders() {
302
- const geminiStatus = getGeminiCliStatus();
303
- const grokStatus = getGrokCliStatus();
304
- const opencodeStatus = getOpenCodeCliStatus();
305
- return [
306
- {
307
- id: 'gemini',
308
- name: 'Gemini CLI',
309
- command: 'gemini',
310
- installed: geminiStatus.installed,
311
- version: geminiStatus.version,
312
- installCommand: 'npm install -g @google/gemini-cli',
313
- docsUrl: 'https://github.com/google-gemini/gemini-cli',
314
- requiresApiKey: false,
315
- description: 'Google Gemini with web search (FREE tier: 1000 req/day)',
316
- freeTier: true,
317
- },
318
- {
319
- id: 'opencode',
320
- name: 'OpenCode',
321
- command: 'opencode',
322
- installed: opencodeStatus.installed,
323
- version: opencodeStatus.version,
324
- installCommand: 'curl -fsSL https://opencode.ai/install | bash',
325
- docsUrl: 'https://github.com/sst/opencode',
326
- requiresApiKey: false,
327
- description: 'OpenCode with built-in web search (FREE via Zen)',
328
- freeTier: true,
329
- },
330
- {
331
- id: 'grok',
332
- name: 'Grok CLI',
333
- command: 'grok',
334
- installed: grokStatus.installed,
335
- version: grokStatus.version,
336
- installCommand: 'npm install -g @vibe-kit/grok-cli',
337
- docsUrl: 'https://github.com/superagent-ai/grok-cli',
338
- requiresApiKey: true,
339
- apiKeyEnvVar: 'GROK_API_KEY',
340
- description: 'xAI Grok CLI with AI coding agent capabilities',
341
- freeTier: false,
342
- },
343
- ];
344
- }
345
- exports.getWebSearchCliProviders = getWebSearchCliProviders;
346
- /**
347
- * Check if any WebSearch CLI is available
348
- */
349
- function hasAnyWebSearchCli() {
350
- return hasGeminiCli() || hasGrokCli() || hasOpenCodeCli();
351
- }
352
- exports.hasAnyWebSearchCli = hasAnyWebSearchCli;
353
- /**
354
- * Get install hints for CLI-only users when no WebSearch CLI is installed
355
- */
356
- function getCliInstallHints() {
357
- if (hasAnyWebSearchCli()) {
358
- return [];
359
- }
360
- return [
361
- '[i] WebSearch: No CLI tools installed',
362
- ' Gemini CLI (FREE): npm i -g @google/gemini-cli',
363
- ' OpenCode (FREE): curl -fsSL https://opencode.ai/install | bash',
364
- ' Grok CLI (paid): npm i -g @vibe-kit/grok-cli',
365
- ];
366
- }
367
- exports.getCliInstallHints = getCliInstallHints;
368
- // ========== Hook Management ==========
369
- /**
370
- * Install WebSearch hook to ~/.ccs/hooks/
371
- *
372
- * This hook intercepts WebSearch and executes via Gemini CLI.
373
- *
374
- * @returns true if hook installed successfully
375
- */
376
- function installWebSearchHook() {
377
- try {
378
- const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
379
- // Skip if disabled
380
- if (!wsConfig.enabled) {
381
- if (process.env.CCS_DEBUG) {
382
- console.error((0, ui_1.info)('WebSearch disabled - skipping hook install'));
383
- }
384
- return false;
385
- }
386
- // Ensure hooks directory exists
387
- if (!fs.existsSync(CCS_HOOKS_DIR)) {
388
- fs.mkdirSync(CCS_HOOKS_DIR, { recursive: true, mode: 0o700 });
389
- }
390
- const hookPath = path.join(CCS_HOOKS_DIR, WEBSEARCH_HOOK);
391
- // Find the bundled hook script
392
- // In npm package: node_modules/ccs/lib/hooks/
393
- // In development: lib/hooks/
394
- const possiblePaths = [
395
- path.join(__dirname, '..', '..', 'lib', 'hooks', WEBSEARCH_HOOK),
396
- path.join(__dirname, '..', 'lib', 'hooks', WEBSEARCH_HOOK),
397
- ];
398
- let sourcePath = null;
399
- for (const p of possiblePaths) {
400
- if (fs.existsSync(p)) {
401
- sourcePath = p;
402
- break;
403
- }
404
- }
405
- if (!sourcePath) {
406
- if (process.env.CCS_DEBUG) {
407
- console.error((0, ui_1.warn)(`WebSearch hook source not found: ${WEBSEARCH_HOOK}`));
408
- }
409
- return false;
410
- }
411
- // Copy hook to ~/.ccs/hooks/
412
- fs.copyFileSync(sourcePath, hookPath);
413
- fs.chmodSync(hookPath, 0o755);
414
- if (process.env.CCS_DEBUG) {
415
- console.error((0, ui_1.info)(`Installed WebSearch hook: ${hookPath}`));
416
- }
417
- // Ensure hook is configured in settings.json
418
- ensureHookConfig();
419
- return true;
420
- }
421
- catch (error) {
422
- if (process.env.CCS_DEBUG) {
423
- console.error((0, ui_1.warn)(`Failed to install WebSearch hook: ${error.message}`));
424
- }
425
- return false;
426
- }
427
- }
428
- exports.installWebSearchHook = installWebSearchHook;
429
- /**
430
- * Check if WebSearch hook is installed
431
- */
432
- function hasWebSearchHook() {
433
- const hookPath = path.join(CCS_HOOKS_DIR, WEBSEARCH_HOOK);
434
- return fs.existsSync(hookPath);
435
- }
436
- exports.hasWebSearchHook = hasWebSearchHook;
437
- /**
438
- * Get WebSearch hook configuration for settings.json
439
- * Timeout is computed from max provider timeout in config.yaml + buffer
440
- */
441
- function getWebSearchHookConfig() {
442
- const hookPath = path.join(CCS_HOOKS_DIR, WEBSEARCH_HOOK);
443
- const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
444
- // Compute max timeout from enabled providers
445
- const timeouts = [];
446
- if (wsConfig.providers?.gemini?.enabled && wsConfig.providers.gemini.timeout) {
447
- timeouts.push(wsConfig.providers.gemini.timeout);
448
- }
449
- if (wsConfig.providers?.opencode?.enabled && wsConfig.providers.opencode.timeout) {
450
- timeouts.push(wsConfig.providers.opencode.timeout);
451
- }
452
- if (wsConfig.providers?.grok?.enabled && wsConfig.providers.grok.timeout) {
453
- timeouts.push(wsConfig.providers.grok.timeout);
454
- }
455
- // Hook timeout = max provider timeout + buffer (or minimum if none configured)
456
- const maxProviderTimeout = timeouts.length > 0 ? Math.max(...timeouts) : MIN_HOOK_TIMEOUT;
457
- const hookTimeout = maxProviderTimeout + HOOK_TIMEOUT_BUFFER;
458
- return {
459
- PreToolUse: [
460
- {
461
- matcher: 'WebSearch',
462
- hooks: [
463
- {
464
- type: 'command',
465
- command: `node "${hookPath}"`,
466
- timeout: hookTimeout,
467
- },
468
- ],
469
- },
470
- ],
471
- };
472
- }
473
- exports.getWebSearchHookConfig = getWebSearchHookConfig;
474
- /**
475
- * Ensure WebSearch hook is configured in ~/.claude/settings.json
476
- */
477
- function ensureHookConfig() {
478
- try {
479
- const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
480
- if (!wsConfig.enabled) {
481
- return false;
482
- }
483
- // Read existing settings or start fresh
484
- let settings = {};
485
- if (fs.existsSync(CLAUDE_SETTINGS_PATH)) {
486
- try {
487
- const content = fs.readFileSync(CLAUDE_SETTINGS_PATH, 'utf8');
488
- settings = JSON.parse(content);
489
- }
490
- catch {
491
- if (process.env.CCS_DEBUG) {
492
- console.error((0, ui_1.warn)('Malformed settings.json - will merge carefully'));
493
- }
494
- }
495
- }
496
- // Check if WebSearch hook already configured
497
- const hooks = settings.hooks;
498
- const expectedHookPath = path.join(CCS_HOOKS_DIR, WEBSEARCH_HOOK);
499
- const expectedCommand = `node "${expectedHookPath}"`;
500
- if (hooks?.PreToolUse) {
501
- const webSearchHookIndex = hooks.PreToolUse.findIndex((h) => {
502
- const hook = h;
503
- return hook.matcher === 'WebSearch';
504
- });
505
- if (webSearchHookIndex !== -1) {
506
- // Hook exists - check if it needs updating (different command path or timeout)
507
- const existingHook = hooks.PreToolUse[webSearchHookIndex];
508
- const existingHooks = existingHook.hooks;
509
- const currentHookConfig = getWebSearchHookConfig();
510
- const expectedHooks = currentHookConfig.PreToolUse[0]
511
- .hooks;
512
- const expectedTimeout = expectedHooks[0].timeout;
513
- let needsUpdate = false;
514
- if (existingHooks?.[0]?.command !== expectedCommand) {
515
- existingHooks[0].command = expectedCommand;
516
- needsUpdate = true;
517
- }
518
- if (existingHooks?.[0]?.timeout !== expectedTimeout) {
519
- existingHooks[0].timeout = expectedTimeout;
520
- needsUpdate = true;
521
- }
522
- if (needsUpdate) {
523
- fs.writeFileSync(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2), 'utf8');
524
- if (process.env.CCS_DEBUG) {
525
- console.error((0, ui_1.info)('Updated WebSearch hook config in settings.json'));
526
- }
527
- }
528
- return true;
529
- }
530
- }
531
- // Get hook config
532
- const hookConfig = getWebSearchHookConfig();
533
- // Merge hook config into settings
534
- if (!settings.hooks) {
535
- settings.hooks = {};
536
- }
537
- const settingsHooks = settings.hooks;
538
- if (!settingsHooks.PreToolUse) {
539
- settingsHooks.PreToolUse = [];
540
- }
541
- // Add our hook config
542
- const preToolUseHooks = hookConfig.PreToolUse;
543
- settingsHooks.PreToolUse.push(...preToolUseHooks);
544
- // Ensure ~/.claude directory exists
545
- const claudeDir = path.dirname(CLAUDE_SETTINGS_PATH);
546
- if (!fs.existsSync(claudeDir)) {
547
- fs.mkdirSync(claudeDir, { recursive: true, mode: 0o700 });
548
- }
549
- // Write updated settings
550
- fs.writeFileSync(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2), 'utf8');
551
- if (process.env.CCS_DEBUG) {
552
- console.error((0, ui_1.info)('Added WebSearch hook to settings.json'));
553
- }
554
- return true;
555
- }
556
- catch (error) {
557
- if (process.env.CCS_DEBUG) {
558
- console.error((0, ui_1.warn)(`Failed to configure WebSearch hook: ${error.message}`));
559
- }
560
- return false;
561
- }
562
- }
563
- // ========== Environment Variables for Hook ==========
564
- /**
565
- * Get environment variables for WebSearch hook configuration.
566
- *
567
- * Simple env vars - hook reads these to control behavior.
568
- *
569
- * @returns Record of environment variables to set before spawning Claude
570
- */
571
- function getWebSearchHookEnv() {
572
- const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
573
- const env = {};
574
- // Skip hook entirely if disabled
575
- if (!wsConfig.enabled) {
576
- env.CCS_WEBSEARCH_SKIP = '1';
577
- return env;
578
- }
579
- // Pass master switch
580
- env.CCS_WEBSEARCH_ENABLED = '1';
581
- // Pass individual provider enabled states
582
- // Hook will only use providers that are BOTH enabled AND installed
583
- if (wsConfig.providers?.gemini?.enabled) {
584
- env.CCS_WEBSEARCH_GEMINI = '1';
585
- if (wsConfig.providers.gemini.model) {
586
- env.CCS_WEBSEARCH_GEMINI_MODEL = wsConfig.providers.gemini.model;
587
- }
588
- env.CCS_WEBSEARCH_TIMEOUT = String(wsConfig.providers.gemini.timeout || 55);
589
- }
590
- if (wsConfig.providers?.opencode?.enabled) {
591
- env.CCS_WEBSEARCH_OPENCODE = '1';
592
- if (wsConfig.providers.opencode.model) {
593
- env.CCS_WEBSEARCH_OPENCODE_MODEL = wsConfig.providers.opencode.model;
594
- }
595
- // Use opencode timeout if no gemini timeout set
596
- if (!env.CCS_WEBSEARCH_TIMEOUT) {
597
- env.CCS_WEBSEARCH_TIMEOUT = String(wsConfig.providers.opencode.timeout || 90);
598
- }
599
- }
600
- if (wsConfig.providers?.grok?.enabled) {
601
- env.CCS_WEBSEARCH_GROK = '1';
602
- // Use grok timeout if no other timeout set
603
- if (!env.CCS_WEBSEARCH_TIMEOUT) {
604
- env.CCS_WEBSEARCH_TIMEOUT = String(wsConfig.providers.grok.timeout || 55);
605
- }
606
- }
607
- // Default timeout if none set
608
- if (!env.CCS_WEBSEARCH_TIMEOUT) {
609
- env.CCS_WEBSEARCH_TIMEOUT = '55';
610
- }
611
- return env;
612
- }
613
- exports.getWebSearchHookEnv = getWebSearchHookEnv;
614
- /**
615
- * Get WebSearch readiness status for display
616
- *
617
- * Called on third-party profile startup to inform user.
618
- * Checks both installation AND authentication status for Gemini CLI.
619
- */
620
- function getWebSearchReadiness() {
621
- const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
622
- // Check if WebSearch is disabled entirely
623
- if (!wsConfig.enabled) {
624
- return {
625
- readiness: 'unavailable',
626
- geminiCli: false,
627
- geminiAuthenticated: false,
628
- grokCli: false,
629
- opencodeCli: false,
630
- message: 'Disabled in config',
631
- };
632
- }
633
- // Check all CLIs
634
- const geminiInstalled = hasGeminiCli();
635
- const geminiAuthed = geminiInstalled && isGeminiAuthenticated();
636
- const grokInstalled = hasGrokCli();
637
- const opencodeInstalled = hasOpenCodeCli();
638
- // Build message based on installed + authenticated CLIs
639
- const readyClis = [];
640
- const needsAuthClis = [];
641
- // Gemini requires auth check
642
- if (geminiInstalled) {
643
- if (geminiAuthed) {
644
- readyClis.push('Gemini');
645
- }
646
- else {
647
- needsAuthClis.push('Gemini');
648
- }
649
- }
650
- // Other CLIs don't require auth check (for now)
651
- if (grokInstalled)
652
- readyClis.push('Grok');
653
- if (opencodeInstalled)
654
- readyClis.push('OpenCode');
655
- // Determine overall status
656
- if (readyClis.length > 0) {
657
- // At least one CLI is ready
658
- return {
659
- readiness: 'ready',
660
- geminiCli: geminiInstalled,
661
- geminiAuthenticated: geminiAuthed,
662
- grokCli: grokInstalled,
663
- opencodeCli: opencodeInstalled,
664
- message: `Ready (${readyClis.join(' + ')})`,
665
- };
666
- }
667
- if (needsAuthClis.length > 0) {
668
- // CLIs installed but need auth
669
- return {
670
- readiness: 'needs_auth',
671
- geminiCli: geminiInstalled,
672
- geminiAuthenticated: false,
673
- grokCli: grokInstalled,
674
- opencodeCli: opencodeInstalled,
675
- message: `Gemini: run 'gemini' to login`,
676
- };
677
- }
678
- return {
679
- readiness: 'unavailable',
680
- geminiCli: false,
681
- geminiAuthenticated: false,
682
- grokCli: false,
683
- opencodeCli: false,
684
- message: 'Install: npm i -g @google/gemini-cli',
685
- };
686
- }
687
- exports.getWebSearchReadiness = getWebSearchReadiness;
688
- /**
689
- * Display WebSearch status (single line, equilibrium UX)
690
- *
691
- * Only call for third-party profiles.
692
- * Shows detailed install hints when no CLI is installed.
693
- */
694
- function displayWebSearchStatus() {
695
- const status = getWebSearchReadiness();
696
- switch (status.readiness) {
697
- case 'ready':
698
- console.error((0, ui_1.ok)(`WebSearch: ${status.message}`));
699
- break;
700
- case 'needs_auth':
701
- // CLI installed but not authenticated - show warning
702
- console.error((0, ui_1.warn)(`WebSearch: ${status.message}`));
703
- break;
704
- case 'unavailable':
705
- console.error((0, ui_1.fail)(`WebSearch: ${status.message}`));
706
- // Show install hints for CLI-only users
707
- const hints = getCliInstallHints();
708
- if (hints.length > 0) {
709
- for (const hint of hints) {
710
- console.error((0, ui_1.info)(hint));
711
- }
712
- }
713
- break;
714
- }
715
- }
716
- exports.displayWebSearchStatus = displayWebSearchStatus;
717
60
  // ========== Backward Compatibility Exports ==========
718
- // These are kept for imports that haven't been updated yet
719
61
  /**
720
62
  * @deprecated Use installWebSearchHook instead - MCP is no longer used
721
63
  */
722
64
  function ensureMcpWebSearch() {
723
- // No-op - MCP is no longer used
724
65
  return false;
725
66
  }
726
67
  exports.ensureMcpWebSearch = ensureMcpWebSearch;
727
- /**
728
- * @deprecated MCP is no longer used
729
- */
730
- function hasMcpWebSearch() {
731
- return false;
732
- }
733
- exports.hasMcpWebSearch = hasMcpWebSearch;
734
- /**
735
- * @deprecated MCP is no longer used
736
- */
737
- function getMcpConfigPath() {
738
- return path.join(os.homedir(), '.claude', '.mcp.json');
739
- }
740
- exports.getMcpConfigPath = getMcpConfigPath;
741
68
  //# sourceMappingURL=websearch-manager.js.map