@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.
- package/README.md +45 -23
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +24 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/services/index.d.ts +10 -0
- package/dist/api/services/index.d.ts.map +1 -0
- package/dist/api/services/index.js +26 -0
- package/dist/api/services/index.js.map +1 -0
- package/dist/api/services/profile-reader.d.ts +28 -0
- package/dist/api/services/profile-reader.d.ts.map +1 -0
- package/dist/api/services/profile-reader.js +148 -0
- package/dist/api/services/profile-reader.js.map +1 -0
- package/dist/api/services/profile-types.d.ts +42 -0
- package/dist/api/services/profile-types.d.ts.map +1 -0
- package/dist/api/services/profile-types.js +8 -0
- package/dist/api/services/profile-types.js.map +1 -0
- package/dist/api/services/profile-writer.d.ts +6 -0
- package/dist/api/services/profile-writer.d.ts.map +1 -0
- package/dist/api/services/profile-writer.js +176 -0
- package/dist/api/services/profile-writer.js.map +1 -0
- package/dist/api/services/validation-service.d.ts +26 -0
- package/dist/api/services/validation-service.d.ts.map +1 -0
- package/dist/api/services/validation-service.js +77 -0
- package/dist/api/services/validation-service.js.map +1 -0
- package/dist/auth/auth-commands.d.ts +16 -22
- package/dist/auth/auth-commands.d.ts.map +1 -1
- package/dist/auth/auth-commands.js +29 -467
- package/dist/auth/auth-commands.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts +11 -0
- package/dist/auth/commands/create-command.d.ts.map +1 -0
- package/dist/auth/commands/create-command.js +137 -0
- package/dist/auth/commands/create-command.js.map +1 -0
- package/dist/auth/commands/default-command.d.ts +15 -0
- package/dist/auth/commands/default-command.d.ts.map +1 -0
- package/dist/auth/commands/default-command.js +71 -0
- package/dist/auth/commands/default-command.js.map +1 -0
- package/dist/auth/commands/index.d.ts +12 -0
- package/dist/auth/commands/index.d.ts.map +1 -0
- package/dist/auth/commands/index.js +25 -0
- package/dist/auth/commands/index.js.map +1 -0
- package/dist/auth/commands/list-command.d.ts +11 -0
- package/dist/auth/commands/list-command.d.ts.map +1 -0
- package/dist/auth/commands/list-command.js +124 -0
- package/dist/auth/commands/list-command.js.map +1 -0
- package/dist/auth/commands/remove-command.d.ts +11 -0
- package/dist/auth/commands/remove-command.d.ts.map +1 -0
- package/dist/auth/commands/remove-command.js +102 -0
- package/dist/auth/commands/remove-command.js.map +1 -0
- package/dist/auth/commands/show-command.d.ts +11 -0
- package/dist/auth/commands/show-command.d.ts.map +1 -0
- package/dist/auth/commands/show-command.js +103 -0
- package/dist/auth/commands/show-command.js.map +1 -0
- package/dist/auth/commands/types.d.ts +50 -0
- package/dist/auth/commands/types.d.ts.map +1 -0
- package/dist/auth/commands/types.js +26 -0
- package/dist/auth/commands/types.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +16 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/profile-detector.d.ts +0 -5
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +1 -9
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/auth/profile-registry.d.ts +0 -4
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +3 -10
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/ccs.js +21 -4
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +85 -0
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
- package/dist/cliproxy/auth/auth-types.js +100 -0
- package/dist/cliproxy/auth/auth-types.js.map +1 -0
- package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
- package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
- package/dist/cliproxy/auth/environment-detector.js +124 -0
- package/dist/cliproxy/auth/environment-detector.js.map +1 -0
- package/dist/cliproxy/auth/index.d.ts +11 -0
- package/dist/cliproxy/auth/index.d.ts.map +1 -0
- package/dist/cliproxy/auth/index.js +35 -0
- package/dist/cliproxy/auth/index.js.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts +29 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.js +205 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
- package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
- package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
- package/dist/cliproxy/auth/oauth-process.js +209 -0
- package/dist/cliproxy/auth/oauth-process.js.map +1 -0
- package/dist/cliproxy/auth/token-manager.d.ts +53 -0
- package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
- package/dist/cliproxy/auth/token-manager.js +250 -0
- package/dist/cliproxy/auth/token-manager.js.map +1 -0
- package/dist/cliproxy/auth-handler.d.ts +13 -103
- package/dist/cliproxy/auth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth-handler.js +35 -766
- package/dist/cliproxy/auth-handler.js.map +1 -1
- package/dist/cliproxy/binary/downloader.d.ts +29 -0
- package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
- package/dist/cliproxy/binary/downloader.js +218 -0
- package/dist/cliproxy/binary/downloader.js.map +1 -0
- package/dist/cliproxy/binary/extractor.d.ts +12 -0
- package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/extractor.js +27 -0
- package/dist/cliproxy/binary/extractor.js.map +1 -0
- package/dist/cliproxy/binary/index.d.ts +13 -0
- package/dist/cliproxy/binary/index.d.ts.map +1 -0
- package/dist/cliproxy/binary/index.js +53 -0
- package/dist/cliproxy/binary/index.js.map +1 -0
- package/dist/cliproxy/binary/installer.d.ts +24 -0
- package/dist/cliproxy/binary/installer.d.ts.map +1 -0
- package/dist/cliproxy/binary/installer.js +117 -0
- package/dist/cliproxy/binary/installer.js.map +1 -0
- package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
- package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
- package/dist/cliproxy/binary/lifecycle.js +106 -0
- package/dist/cliproxy/binary/lifecycle.js.map +1 -0
- package/dist/cliproxy/binary/tar-extractor.d.ts +9 -0
- package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/tar-extractor.js +118 -0
- package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
- package/dist/cliproxy/binary/types.d.ts +24 -0
- package/dist/cliproxy/binary/types.d.ts.map +1 -0
- package/dist/cliproxy/binary/types.js +14 -0
- package/dist/cliproxy/binary/types.js.map +1 -0
- package/dist/cliproxy/binary/updater.d.ts +7 -0
- package/dist/cliproxy/binary/updater.d.ts.map +1 -0
- package/dist/cliproxy/binary/updater.js +18 -0
- package/dist/cliproxy/binary/updater.js.map +1 -0
- package/dist/cliproxy/binary/verifier.d.ts +18 -0
- package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
- package/dist/cliproxy/binary/verifier.js +82 -0
- package/dist/cliproxy/binary/verifier.js.map +1 -0
- package/dist/cliproxy/binary/version-cache.d.ts +46 -0
- package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
- package/dist/cliproxy/binary/version-cache.js +171 -0
- package/dist/cliproxy/binary/version-cache.js.map +1 -0
- package/dist/cliproxy/binary/version-checker.d.ts +19 -0
- package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
- package/dist/cliproxy/binary/version-checker.js +77 -0
- package/dist/cliproxy/binary/version-checker.js.map +1 -0
- package/dist/cliproxy/binary/zip-extractor.d.ts +9 -0
- package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/zip-extractor.js +110 -0
- package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts +16 -170
- package/dist/cliproxy/binary-manager.d.ts.map +1 -1
- package/dist/cliproxy/binary-manager.js +38 -865
- package/dist/cliproxy/binary-manager.js.map +1 -1
- package/dist/cliproxy/remote-proxy-client.d.ts +3 -0
- package/dist/cliproxy/remote-proxy-client.d.ts.map +1 -1
- package/dist/cliproxy/remote-proxy-client.js +7 -3
- package/dist/cliproxy/remote-proxy-client.js.map +1 -1
- package/dist/cliproxy/services/binary-service.d.ts +65 -0
- package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
- package/dist/cliproxy/services/binary-service.js +140 -0
- package/dist/cliproxy/services/binary-service.js.map +1 -0
- package/dist/cliproxy/services/index.d.ts +8 -0
- package/dist/cliproxy/services/index.d.ts.map +1 -0
- package/dist/cliproxy/services/index.js +31 -0
- package/dist/cliproxy/services/index.js.map +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts +38 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-config-adapter.js +172 -0
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
- package/dist/cliproxy/services/variant-service.d.ts +37 -0
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-service.js +128 -0
- package/dist/cliproxy/services/variant-service.js.map +1 -0
- package/dist/cliproxy/services/variant-settings.d.ts +32 -0
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-settings.js +128 -0
- package/dist/cliproxy/services/variant-settings.js.map +1 -0
- package/dist/commands/api-command.d.ts +3 -6
- package/dist/commands/api-command.d.ts.map +1 -1
- package/dist/commands/api-command.js +84 -445
- package/dist/commands/api-command.js.map +1 -1
- package/dist/commands/cliproxy-command.d.ts +0 -3
- package/dist/commands/cliproxy-command.d.ts.map +1 -1
- package/dist/commands/cliproxy-command.js +182 -621
- package/dist/commands/cliproxy-command.js.map +1 -1
- package/dist/commands/index.d.ts +17 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +33 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/config/unified-config-loader.d.ts +7 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +11 -1
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/delegation/executor/index.d.ts +7 -0
- package/dist/delegation/executor/index.d.ts.map +1 -0
- package/dist/delegation/executor/index.js +28 -0
- package/dist/delegation/executor/index.js.map +1 -0
- package/dist/delegation/executor/result-aggregator.d.ts +30 -0
- package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
- package/dist/delegation/executor/result-aggregator.js +66 -0
- package/dist/delegation/executor/result-aggregator.js.map +1 -0
- package/dist/delegation/executor/stream-parser.d.ts +28 -0
- package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
- package/dist/delegation/executor/stream-parser.js +140 -0
- package/dist/delegation/executor/stream-parser.js.map +1 -0
- package/dist/delegation/executor/types.d.ts +121 -0
- package/dist/delegation/executor/types.d.ts.map +1 -0
- package/dist/delegation/executor/types.js +6 -0
- package/dist/delegation/executor/types.js.map +1 -0
- package/dist/delegation/headless-executor.d.ts +13 -91
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +84 -291
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/delegation/index.d.ts +11 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +33 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/result-formatter.d.ts +1 -30
- package/dist/delegation/result-formatter.d.ts.map +1 -1
- package/dist/delegation/result-formatter.js.map +1 -1
- package/dist/errors/cleanup-registry.d.ts +64 -0
- package/dist/errors/cleanup-registry.d.ts.map +1 -0
- package/dist/errors/cleanup-registry.js +141 -0
- package/dist/errors/cleanup-registry.js.map +1 -0
- package/dist/errors/error-handler.d.ts +45 -0
- package/dist/errors/error-handler.d.ts.map +1 -0
- package/dist/errors/error-handler.js +150 -0
- package/dist/errors/error-handler.js.map +1 -0
- package/dist/errors/error-types.d.ts +102 -0
- package/dist/errors/error-types.d.ts.map +1 -0
- package/dist/errors/error-types.js +158 -0
- package/dist/errors/error-types.js.map +1 -0
- package/dist/errors/exit-codes.d.ts +49 -0
- package/dist/errors/exit-codes.d.ts.map +1 -0
- package/dist/errors/exit-codes.js +72 -0
- package/dist/errors/exit-codes.js.map +1 -0
- package/dist/errors/index.d.ts +29 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +62 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/glmt/glmt-transformer.d.ts +29 -248
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +63 -718
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/glmt/index.d.ts +14 -0
- package/dist/glmt/index.d.ts.map +1 -0
- package/dist/glmt/index.js +41 -0
- package/dist/glmt/index.js.map +1 -0
- package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
- package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
- package/dist/glmt/pipeline/content-transformer.js +162 -0
- package/dist/glmt/pipeline/content-transformer.js.map +1 -0
- package/dist/glmt/pipeline/index.d.ts +12 -0
- package/dist/glmt/pipeline/index.d.ts.map +1 -0
- package/dist/glmt/pipeline/index.js +20 -0
- package/dist/glmt/pipeline/index.js.map +1 -0
- package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
- package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
- package/dist/glmt/pipeline/request-transformer.js +116 -0
- package/dist/glmt/pipeline/request-transformer.js.map +1 -0
- package/dist/glmt/pipeline/response-builder.d.ts +52 -0
- package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
- package/dist/glmt/pipeline/response-builder.js +205 -0
- package/dist/glmt/pipeline/response-builder.js.map +1 -0
- package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
- package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
- package/dist/glmt/pipeline/stream-parser.js +241 -0
- package/dist/glmt/pipeline/stream-parser.js.map +1 -0
- package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
- package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
- package/dist/glmt/pipeline/tool-call-handler.js +87 -0
- package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
- package/dist/glmt/pipeline/types.d.ts +159 -0
- package/dist/glmt/pipeline/types.d.ts.map +1 -0
- package/dist/glmt/pipeline/types.js +6 -0
- package/dist/glmt/pipeline/types.js.map +1 -0
- package/dist/management/checks/cliproxy-check.d.ts +37 -0
- package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
- package/dist/management/checks/cliproxy-check.js +187 -0
- package/dist/management/checks/cliproxy-check.js.map +1 -0
- package/dist/management/checks/config-check.d.ts +27 -0
- package/dist/management/checks/config-check.d.ts.map +1 -0
- package/dist/management/checks/config-check.js +158 -0
- package/dist/management/checks/config-check.js.map +1 -0
- package/dist/management/checks/env-check.d.ts +17 -0
- package/dist/management/checks/env-check.d.ts.map +1 -0
- package/dist/management/checks/env-check.js +71 -0
- package/dist/management/checks/env-check.js.map +1 -0
- package/dist/management/checks/index.d.ts +12 -0
- package/dist/management/checks/index.d.ts.map +1 -0
- package/dist/management/checks/index.js +48 -0
- package/dist/management/checks/index.js.map +1 -0
- package/dist/management/checks/oauth-check.d.ts +16 -0
- package/dist/management/checks/oauth-check.d.ts.map +1 -0
- package/dist/management/checks/oauth-check.js +68 -0
- package/dist/management/checks/oauth-check.js.map +1 -0
- package/dist/management/checks/profile-check.d.ts +36 -0
- package/dist/management/checks/profile-check.d.ts.map +1 -0
- package/dist/management/checks/profile-check.js +165 -0
- package/dist/management/checks/profile-check.js.map +1 -0
- package/dist/management/checks/symlink-check.d.ts +30 -0
- package/dist/management/checks/symlink-check.d.ts.map +1 -0
- package/dist/management/checks/symlink-check.js +204 -0
- package/dist/management/checks/symlink-check.js.map +1 -0
- package/dist/management/checks/system-check.d.ts +25 -0
- package/dist/management/checks/system-check.d.ts.map +1 -0
- package/dist/management/checks/system-check.js +136 -0
- package/dist/management/checks/system-check.js.map +1 -0
- package/dist/management/checks/types.d.ts +64 -0
- package/dist/management/checks/types.d.ts.map +1 -0
- package/dist/management/checks/types.js +63 -0
- package/dist/management/checks/types.js.map +1 -0
- package/dist/management/doctor.d.ts +3 -92
- package/dist/management/doctor.d.ts.map +1 -1
- package/dist/management/doctor.js +15 -831
- package/dist/management/doctor.js.map +1 -1
- package/dist/management/index.d.ts +15 -0
- package/dist/management/index.d.ts.map +1 -0
- package/dist/management/index.js +56 -0
- package/dist/management/index.js.map +1 -0
- package/dist/management/repair/auto-repair.d.ts +13 -0
- package/dist/management/repair/auto-repair.d.ts.map +1 -0
- package/dist/management/repair/auto-repair.js +170 -0
- package/dist/management/repair/auto-repair.js.map +1 -0
- package/dist/management/repair/index.d.ts +5 -0
- package/dist/management/repair/index.d.ts.map +1 -0
- package/dist/management/repair/index.js +9 -0
- package/dist/management/repair/index.js.map +1 -0
- package/dist/types/delegation.d.ts +1 -13
- package/dist/types/delegation.d.ts.map +1 -1
- package/dist/types/utils.d.ts +27 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/ui/assets/{accounts-p1_nf0Jy.js → accounts--0JKEYYO.js} +1 -1
- package/dist/ui/assets/analytics-CX5PurM9.js +1 -0
- package/dist/ui/assets/api-D80tfZOx.js +1 -0
- package/dist/ui/assets/{card-CCDc-Mx9.js → card-B-DPlvgo.js} +1 -1
- package/dist/ui/assets/cliproxy-D4AoDTZB.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-CJ2CfYod.js +1 -0
- package/dist/ui/assets/{code-editor-Br9x-r-E.js → code-editor-DIj6qdUG.js} +1 -1
- package/dist/ui/assets/confirm-dialog-DZkzZLrs.js +1 -0
- package/dist/ui/assets/copilot-Q9tyCgYD.js +4 -0
- package/dist/ui/assets/form-utils-DP6ILe7Z.js +20 -0
- package/dist/ui/assets/health-Cw76uZRy.js +1 -0
- package/dist/ui/assets/{icons-BOsxPbiD.js → icons-ZmwVoUeR.js} +1 -1
- package/dist/ui/assets/index-C1W0iP_Z.js +46 -0
- package/dist/ui/assets/index-It66SkKf.css +1 -0
- package/dist/ui/assets/{radix-ui-DFHQr9A5.js → radix-ui-CV3R9pD6.js} +3 -3
- package/dist/ui/assets/settings-CDdHW_gU.js +1 -0
- package/dist/ui/assets/{shared-BfYhSN4-.js → shared--pI8rTbP.js} +1 -1
- package/dist/ui/assets/{switch-CMk95lwf.js → switch-BP6SzLyZ.js} +1 -1
- package/dist/ui/assets/{tanstack-C4gT2P7V.js → tanstack-Df9bCj5R.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/utils/claude-spawner.d.ts +54 -0
- package/dist/utils/claude-spawner.d.ts.map +1 -0
- package/dist/utils/claude-spawner.js +118 -0
- package/dist/utils/claude-spawner.js.map +1 -0
- package/dist/utils/delegation-validator.d.ts +8 -4
- package/dist/utils/delegation-validator.d.ts.map +1 -1
- package/dist/utils/delegation-validator.js.map +1 -1
- package/dist/utils/helpers.d.ts +0 -11
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +1 -57
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +50 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/time.d.ts +10 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +27 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/ui/boxes.d.ts +24 -0
- package/dist/utils/ui/boxes.d.ts.map +1 -0
- package/dist/utils/ui/boxes.js +108 -0
- package/dist/utils/ui/boxes.js.map +1 -0
- package/dist/utils/ui/colors.d.ts +25 -0
- package/dist/utils/ui/colors.d.ts.map +1 -0
- package/dist/utils/ui/colors.js +70 -0
- package/dist/utils/ui/colors.js.map +1 -0
- package/dist/utils/ui/index.d.ts +51 -0
- package/dist/utils/ui/index.d.ts.map +1 -0
- package/dist/utils/ui/index.js +96 -0
- package/dist/utils/ui/index.js.map +1 -0
- package/dist/utils/ui/indicators.d.ts +23 -0
- package/dist/utils/ui/indicators.d.ts.map +1 -0
- package/dist/utils/ui/indicators.js +39 -0
- package/dist/utils/ui/indicators.js.map +1 -0
- package/dist/utils/ui/init.d.ts +30 -0
- package/dist/utils/ui/init.d.ts.map +1 -0
- package/dist/utils/ui/init.js +102 -0
- package/dist/utils/ui/init.js.map +1 -0
- package/dist/utils/ui/spinner.d.ts +13 -0
- package/dist/utils/ui/spinner.d.ts.map +1 -0
- package/dist/utils/ui/spinner.js +89 -0
- package/dist/utils/ui/spinner.js.map +1 -0
- package/dist/utils/ui/tables.d.ts +12 -0
- package/dist/utils/ui/tables.d.ts.map +1 -0
- package/dist/utils/ui/tables.js +69 -0
- package/dist/utils/ui/tables.js.map +1 -0
- package/dist/utils/ui/tasks.d.ts +26 -0
- package/dist/utils/ui/tasks.d.ts.map +1 -0
- package/dist/utils/ui/tasks.js +102 -0
- package/dist/utils/ui/tasks.js.map +1 -0
- package/dist/utils/ui/text.d.ts +24 -0
- package/dist/utils/ui/text.d.ts.map +1 -0
- package/dist/utils/ui/text.js +60 -0
- package/dist/utils/ui/text.js.map +1 -0
- package/dist/utils/ui/types.d.ts +36 -0
- package/dist/utils/ui/types.d.ts.map +1 -0
- package/dist/utils/ui/types.js +33 -0
- package/dist/utils/ui/types.js.map +1 -0
- package/dist/utils/ui.d.ts +3 -138
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +40 -567
- package/dist/utils/ui.js.map +1 -1
- package/dist/utils/websearch/gemini-cli.d.ts +36 -0
- package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
- package/dist/utils/websearch/gemini-cli.js +132 -0
- package/dist/utils/websearch/gemini-cli.js.map +1 -0
- package/dist/utils/websearch/grok-cli.d.ts +26 -0
- package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
- package/dist/utils/websearch/grok-cli.js +81 -0
- package/dist/utils/websearch/grok-cli.js.map +1 -0
- package/dist/utils/websearch/hook-config.d.ts +21 -0
- package/dist/utils/websearch/hook-config.d.ts.map +1 -0
- package/dist/utils/websearch/hook-config.js +183 -0
- package/dist/utils/websearch/hook-config.js.map +1 -0
- package/dist/utils/websearch/hook-env.d.ts +16 -0
- package/dist/utils/websearch/hook-env.d.ts.map +1 -0
- package/dist/utils/websearch/hook-env.js +62 -0
- package/dist/utils/websearch/hook-env.js.map +1 -0
- package/dist/utils/websearch/hook-installer.d.ts +27 -0
- package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
- package/dist/utils/websearch/hook-installer.js +141 -0
- package/dist/utils/websearch/hook-installer.js.map +1 -0
- package/dist/utils/websearch/index.d.ts +15 -0
- package/dist/utils/websearch/index.d.ts.map +1 -0
- package/dist/utils/websearch/index.js +44 -0
- package/dist/utils/websearch/index.js.map +1 -0
- package/dist/utils/websearch/opencode-cli.d.ts +26 -0
- package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
- package/dist/utils/websearch/opencode-cli.js +81 -0
- package/dist/utils/websearch/opencode-cli.js.map +1 -0
- package/dist/utils/websearch/status.d.ts +35 -0
- package/dist/utils/websearch/status.d.ts.map +1 -0
- package/dist/utils/websearch/status.js +185 -0
- package/dist/utils/websearch/status.js.map +1 -0
- package/dist/utils/websearch/types.d.ts +85 -0
- package/dist/utils/websearch/types.d.ts.map +1 -0
- package/dist/utils/websearch/types.js +10 -0
- package/dist/utils/websearch/types.js.map +1 -0
- package/dist/utils/websearch-manager.d.ts +7 -186
- package/dist/utils/websearch-manager.d.ts.map +1 -1
- package/dist/utils/websearch-manager.js +37 -710
- package/dist/utils/websearch-manager.js.map +1 -1
- package/dist/web-server/data-aggregator.d.ts +3 -51
- package/dist/web-server/data-aggregator.d.ts.map +1 -1
- package/dist/web-server/data-aggregator.js +18 -386
- package/dist/web-server/data-aggregator.js.map +1 -1
- package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
- package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
- package/dist/web-server/health/cliproxy-checks.js +145 -0
- package/dist/web-server/health/cliproxy-checks.js.map +1 -0
- package/dist/web-server/health/config-checks.d.ts +19 -0
- package/dist/web-server/health/config-checks.d.ts.map +1 -0
- package/dist/web-server/health/config-checks.js +174 -0
- package/dist/web-server/health/config-checks.js.map +1 -0
- package/dist/web-server/health/environment-checks.d.ts +11 -0
- package/dist/web-server/health/environment-checks.d.ts.map +1 -0
- package/dist/web-server/health/environment-checks.js +40 -0
- package/dist/web-server/health/environment-checks.js.map +1 -0
- package/dist/web-server/health/index.d.ts +13 -0
- package/dist/web-server/health/index.d.ts.map +1 -0
- package/dist/web-server/health/index.js +41 -0
- package/dist/web-server/health/index.js.map +1 -0
- package/dist/web-server/health/oauth-checks.d.ts +11 -0
- package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
- package/dist/web-server/health/oauth-checks.js +34 -0
- package/dist/web-server/health/oauth-checks.js.map +1 -0
- package/dist/web-server/health/profile-checks.d.ts +19 -0
- package/dist/web-server/health/profile-checks.d.ts.map +1 -0
- package/dist/web-server/health/profile-checks.js +152 -0
- package/dist/web-server/health/profile-checks.js.map +1 -0
- package/dist/web-server/health/symlink-checks.d.ts +15 -0
- package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
- package/dist/web-server/health/symlink-checks.js +173 -0
- package/dist/web-server/health/symlink-checks.js.map +1 -0
- package/dist/web-server/health/system-checks.d.ts +19 -0
- package/dist/web-server/health/system-checks.d.ts.map +1 -0
- package/dist/web-server/health/system-checks.js +127 -0
- package/dist/web-server/health/system-checks.js.map +1 -0
- package/dist/web-server/health/types.d.ts +34 -0
- package/dist/web-server/health/types.d.ts.map +1 -0
- package/dist/web-server/health/types.js +8 -0
- package/dist/web-server/health/types.js.map +1 -0
- package/dist/web-server/health/websearch-checks.d.ts +11 -0
- package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
- package/dist/web-server/health/websearch-checks.js +53 -0
- package/dist/web-server/health/websearch-checks.js.map +1 -0
- package/dist/web-server/health-service.d.ts +4 -30
- package/dist/web-server/health-service.d.ts.map +1 -1
- package/dist/web-server/health-service.js +28 -695
- package/dist/web-server/health-service.js.map +1 -1
- package/dist/web-server/index.d.ts.map +1 -1
- package/dist/web-server/index.js +2 -5
- package/dist/web-server/index.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts +6 -0
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js +202 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js +253 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
- package/dist/web-server/routes/config-routes.d.ts +6 -0
- package/dist/web-server/routes/config-routes.d.ts.map +1 -0
- package/dist/web-server/routes/config-routes.js +145 -0
- package/dist/web-server/routes/config-routes.js.map +1 -0
- package/dist/web-server/routes/copilot-routes.d.ts +6 -0
- package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
- package/dist/web-server/routes/copilot-routes.js +195 -0
- package/dist/web-server/routes/copilot-routes.js.map +1 -0
- package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
- package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/copilot-settings-routes.js +122 -0
- package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
- package/dist/web-server/routes/health-routes.d.ts +6 -0
- package/dist/web-server/routes/health-routes.d.ts.map +1 -0
- package/dist/web-server/routes/health-routes.js +30 -0
- package/dist/web-server/routes/health-routes.js.map +1 -0
- package/dist/web-server/routes/index.d.ts +8 -0
- package/dist/web-server/routes/index.d.ts.map +1 -0
- package/dist/web-server/routes/index.js +54 -0
- package/dist/web-server/routes/index.js.map +1 -0
- package/dist/web-server/routes/misc-routes.d.ts +6 -0
- package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
- package/dist/web-server/routes/misc-routes.js +219 -0
- package/dist/web-server/routes/misc-routes.js.map +1 -0
- package/dist/web-server/routes/profile-routes.d.ts +6 -0
- package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
- package/dist/web-server/routes/profile-routes.js +164 -0
- package/dist/web-server/routes/profile-routes.js.map +1 -0
- package/dist/web-server/routes/provider-routes.d.ts +6 -0
- package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
- package/dist/web-server/routes/provider-routes.js +146 -0
- package/dist/web-server/routes/provider-routes.js.map +1 -0
- package/dist/web-server/routes/route-helpers.d.ts +55 -0
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
- package/dist/web-server/routes/route-helpers.js +201 -0
- package/dist/web-server/routes/route-helpers.js.map +1 -0
- package/dist/web-server/routes/settings-routes.d.ts +6 -0
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/settings-routes.js +207 -0
- package/dist/web-server/routes/settings-routes.js.map +1 -0
- package/dist/web-server/routes/variant-routes.d.ts +6 -0
- package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
- package/dist/web-server/routes/variant-routes.js +158 -0
- package/dist/web-server/routes/variant-routes.js.map +1 -0
- package/dist/web-server/routes/websearch-routes.d.ts +6 -0
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
- package/dist/web-server/routes/websearch-routes.js +130 -0
- package/dist/web-server/routes/websearch-routes.js.map +1 -0
- package/dist/web-server/services/index.d.ts +7 -0
- package/dist/web-server/services/index.d.ts.map +1 -0
- package/dist/web-server/services/index.js +21 -0
- package/dist/web-server/services/index.js.map +1 -0
- package/dist/web-server/services/usage-aggregator.d.ts +7 -0
- package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
- package/dist/web-server/services/usage-aggregator.js +23 -0
- package/dist/web-server/services/usage-aggregator.js.map +1 -0
- package/dist/web-server/usage/aggregator.d.ts +54 -0
- package/dist/web-server/usage/aggregator.d.ts.map +1 -0
- package/dist/web-server/usage/aggregator.js +470 -0
- package/dist/web-server/usage/aggregator.js.map +1 -0
- package/dist/web-server/usage/data-aggregator.d.ts +55 -0
- package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
- package/dist/web-server/usage/data-aggregator.js +391 -0
- package/dist/web-server/usage/data-aggregator.js.map +1 -0
- package/dist/web-server/usage/disk-cache.d.ts +46 -0
- package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
- package/dist/web-server/usage/disk-cache.js +162 -0
- package/dist/web-server/usage/disk-cache.js.map +1 -0
- package/dist/web-server/usage/handlers.d.ts +50 -0
- package/dist/web-server/usage/handlers.d.ts.map +1 -0
- package/dist/web-server/usage/handlers.js +524 -0
- package/dist/web-server/usage/handlers.js.map +1 -0
- package/dist/web-server/usage/index.d.ts +12 -0
- package/dist/web-server/usage/index.d.ts.map +1 -0
- package/dist/web-server/usage/index.js +54 -0
- package/dist/web-server/usage/index.js.map +1 -0
- package/dist/web-server/usage/routes.d.ts +11 -0
- package/dist/web-server/usage/routes.d.ts.map +1 -0
- package/dist/web-server/usage/routes.js +37 -0
- package/dist/web-server/usage/routes.js.map +1 -0
- package/dist/web-server/usage/types.d.ts +119 -0
- package/dist/web-server/usage/types.d.ts.map +1 -0
- package/dist/web-server/usage/types.js +9 -0
- package/dist/web-server/usage/types.js.map +1 -0
- package/dist/web-server/usage-disk-cache.d.ts +3 -42
- package/dist/web-server/usage-disk-cache.d.ts.map +1 -1
- package/dist/web-server/usage-disk-cache.js +5 -144
- package/dist/web-server/usage-disk-cache.js.map +1 -1
- package/dist/web-server/usage-routes.d.ts +3 -31
- package/dist/web-server/usage-routes.d.ts.map +1 -1
- package/dist/web-server/usage-routes.js +8 -1139
- package/dist/web-server/usage-routes.js.map +1 -1
- package/dist/web-server/usage-types.d.ts +3 -115
- package/dist/web-server/usage-types.d.ts.map +1 -1
- package/dist/web-server/usage-types.js +17 -3
- package/dist/web-server/usage-types.js.map +1 -1
- package/package.json +1 -1
- package/scripts/dev-release.sh +113 -0
- package/dist/ui/assets/analytics-D1k2nYcF.js +0 -1
- package/dist/ui/assets/api-D9VVmZ1j.js +0 -1
- package/dist/ui/assets/cliproxy-CTt_Nsft.js +0 -1
- package/dist/ui/assets/cliproxy-control-panel-DKMAi4_4.js +0 -1
- package/dist/ui/assets/copilot-C6F8PT_L.js +0 -4
- package/dist/ui/assets/form-utils-BuXDJb0w.js +0 -20
- package/dist/ui/assets/health-DiAvJaSn.js +0 -1
- package/dist/ui/assets/index-Brq6EBKZ.css +0 -1
- package/dist/ui/assets/index-ByU8ZhED.js +0 -48
- package/dist/ui/assets/settings-CEomZLGl.js +0 -1
- package/dist/web-server/routes.d.ts +0 -7
- package/dist/web-server/routes.d.ts.map +0 -1
- package/dist/web-server/routes.js +0 -1891
- 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.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
function
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|