@kaitranntt/ccs 7.68.2 → 7.69.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/commands/create-command-env.d.ts +1 -0
- package/dist/auth/commands/create-command-env.d.ts.map +1 -1
- package/dist/ccs.js +55 -2
- package/dist/ccs.js.map +1 -1
- package/dist/channels/official-channels-runtime.d.ts +1 -0
- package/dist/channels/official-channels-runtime.d.ts.map +1 -1
- package/dist/channels/official-channels-store.d.ts +1 -0
- package/dist/channels/official-channels-store.d.ts.map +1 -1
- package/dist/cliproxy/base-config-loader.d.ts +1 -0
- package/dist/cliproxy/base-config-loader.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts +1 -0
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/extended-context-config.d.ts +1 -0
- package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts +1 -0
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/executor/env-resolver.d.ts +2 -0
- package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
- package/dist/cliproxy/executor/env-resolver.js +2 -1
- package/dist/cliproxy/executor/env-resolver.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +28 -1
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/model-id-normalizer.d.ts +1 -0
- package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -1
- package/dist/cliproxy/routing-strategy-http.d.ts +1 -0
- package/dist/cliproxy/routing-strategy-http.d.ts.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.js +0 -3
- package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/types.d.ts +2 -0
- package/dist/cliproxy/types.d.ts.map +1 -1
- package/dist/commands/cliproxy/catalog-subcommand.d.ts +6 -0
- package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/catalog-subcommand.js +39 -1
- package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +1 -0
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +6 -0
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/command-catalog.d.ts +1 -1
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/cursor-command-display.d.ts +2 -0
- package/dist/commands/cursor-command-display.d.ts.map +1 -1
- package/dist/commands/cursor-command-display.js +24 -3
- package/dist/commands/cursor-command-display.js.map +1 -1
- package/dist/commands/cursor-command.d.ts.map +1 -1
- package/dist/commands/cursor-command.js +31 -1
- package/dist/commands/cursor-command.js.map +1 -1
- package/dist/commands/update-command.d.ts +2 -0
- package/dist/commands/update-command.d.ts.map +1 -1
- package/dist/commands/update-command.js +76 -74
- package/dist/commands/update-command.js.map +1 -1
- package/dist/config/migration-manager.d.ts.map +1 -1
- package/dist/config/migration-manager.js +2 -1
- package/dist/config/migration-manager.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts +8 -3
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +20 -7
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +15 -2
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +8 -3
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/cursor/constants.d.ts +1 -1
- package/dist/cursor/constants.d.ts.map +1 -1
- package/dist/cursor/constants.js +1 -0
- package/dist/cursor/constants.js.map +1 -1
- package/dist/cursor/cursor-anthropic-response.d.ts +1 -0
- package/dist/cursor/cursor-anthropic-response.d.ts.map +1 -1
- package/dist/cursor/cursor-auth.d.ts +1 -0
- package/dist/cursor/cursor-auth.d.ts.map +1 -1
- package/dist/cursor/cursor-auth.js +154 -32
- package/dist/cursor/cursor-auth.js.map +1 -1
- package/dist/cursor/cursor-executor.d.ts +2 -1
- package/dist/cursor/cursor-executor.d.ts.map +1 -1
- package/dist/cursor/cursor-executor.js +295 -160
- package/dist/cursor/cursor-executor.js.map +1 -1
- package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -1
- package/dist/cursor/cursor-protobuf-decoder.js +1 -3
- package/dist/cursor/cursor-protobuf-decoder.js.map +1 -1
- package/dist/cursor/cursor-protobuf-schema.d.ts +12 -3
- package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -1
- package/dist/cursor/cursor-protobuf-schema.js +23 -5
- package/dist/cursor/cursor-protobuf-schema.js.map +1 -1
- package/dist/cursor/cursor-protobuf.d.ts +1 -1
- package/dist/cursor/cursor-protobuf.d.ts.map +1 -1
- package/dist/cursor/cursor-protobuf.js +2 -4
- package/dist/cursor/cursor-protobuf.js.map +1 -1
- package/dist/cursor/cursor-runtime-probe.d.ts +12 -0
- package/dist/cursor/cursor-runtime-probe.d.ts.map +1 -0
- package/dist/cursor/cursor-runtime-probe.js +220 -0
- package/dist/cursor/cursor-runtime-probe.js.map +1 -0
- package/dist/cursor/cursor-stream-parser.d.ts +10 -0
- package/dist/cursor/cursor-stream-parser.d.ts.map +1 -1
- package/dist/cursor/cursor-stream-parser.js +106 -10
- package/dist/cursor/cursor-stream-parser.js.map +1 -1
- package/dist/cursor/index.d.ts +1 -0
- package/dist/cursor/index.d.ts.map +1 -1
- package/dist/cursor/index.js +3 -1
- package/dist/cursor/index.js.map +1 -1
- package/dist/cursor/types.d.ts +6 -0
- package/dist/cursor/types.d.ts.map +1 -1
- package/dist/docker/docker-executor.d.ts +1 -0
- package/dist/docker/docker-executor.d.ts.map +1 -1
- package/dist/docker/supervisord-lifecycle.d.ts +17 -0
- package/dist/docker/supervisord-lifecycle.d.ts.map +1 -0
- package/dist/docker/supervisord-lifecycle.js +58 -0
- package/dist/docker/supervisord-lifecycle.js.map +1 -0
- package/dist/management/instance-manager.d.ts.map +1 -1
- package/dist/management/instance-manager.js +5 -2
- package/dist/management/instance-manager.js.map +1 -1
- package/dist/targets/claude-adapter.d.ts +6 -1
- package/dist/targets/claude-adapter.d.ts.map +1 -1
- package/dist/targets/claude-adapter.js +6 -2
- package/dist/targets/claude-adapter.js.map +1 -1
- package/dist/targets/codex-adapter.d.ts +1 -0
- package/dist/targets/codex-adapter.d.ts.map +1 -1
- package/dist/targets/codex-adapter.js +12 -8
- package/dist/targets/codex-adapter.js.map +1 -1
- package/dist/targets/droid-adapter.d.ts +3 -1
- package/dist/targets/droid-adapter.d.ts.map +1 -1
- package/dist/targets/droid-adapter.js +3 -2
- package/dist/targets/droid-adapter.js.map +1 -1
- package/dist/targets/target-adapter.d.ts +5 -0
- package/dist/targets/target-adapter.d.ts.map +1 -1
- package/dist/types/cli.d.ts +1 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/ui/assets/{accounts-DjL3iVZW.js → accounts-D9eEaNx9.js} +1 -1
- package/dist/ui/assets/{alert-dialog-Tc_D1a_B.js → alert-dialog-QyEXocpn.js} +1 -1
- package/dist/ui/assets/{api-CUtkvXmX.js → api-7vQe0xOg.js} +1 -1
- package/dist/ui/assets/{auth-section-CuKWQHC7.js → auth-section-BszF77uT.js} +1 -1
- package/dist/ui/assets/{backups-section-BKW2pbb9.js → backups-section-D6RgaOx1.js} +1 -1
- package/dist/ui/assets/{channels-DvWJMdaq.js → channels-B1vgnNJX.js} +1 -1
- package/dist/ui/assets/{checkbox-B0hZxMK5.js → checkbox-Dzwkj_Pg.js} +1 -1
- package/dist/ui/assets/{claude-extension-Dfqu-rev.js → claude-extension-CKO4bJ22.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-BXLuuxNf.js → cliproxy-ai-providers-CmbFYVoR.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-aQ7cCc2U.js → cliproxy-control-panel-M8ZfUq3C.js} +1 -1
- package/dist/ui/assets/{cliproxy-C9RxW-I8.js → cliproxy-kHd-oC5W.js} +1 -1
- package/dist/ui/assets/{codex-aq4RI6_n.js → codex-BJ0RdMuh.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-CpDk6eu4.js → confirm-dialog-BlSaX2gK.js} +1 -1
- package/dist/ui/assets/{copilot-CQRpGXvY.js → copilot-NJKZQXQ_.js} +1 -1
- package/dist/ui/assets/cursor-BrcDgu6X.js +1 -0
- package/dist/ui/assets/{droid-Cgx-yLjy.js → droid-B9u9ZB-a.js} +1 -1
- package/dist/ui/assets/{globalenv-section-DsNqG1yB.js → globalenv-section-DoX37DqB.js} +1 -1
- package/dist/ui/assets/{health-BY-O-JcA.js → health-D_gdcxnc.js} +1 -1
- package/dist/ui/assets/{index-DsCjnpco.js → index-BNU4Hhe_.js} +1 -1
- package/dist/ui/assets/{index-Cet36v1V.js → index-CTGpqIx6.js} +1 -1
- package/dist/ui/assets/index-Cu6e0-ev.css +1 -0
- package/dist/ui/assets/{index-CLGiPB3A.js → index-DFEMq3KP.js} +1 -1
- package/dist/ui/assets/index-DOn6k1jF.js +72 -0
- package/dist/ui/assets/{index-TQFuDZdB.js → index-DoVPk3vW.js} +1 -1
- package/dist/ui/assets/index-h08p9xL5.js +1 -0
- package/dist/ui/assets/{logs-D5ro-pc7.js → logs-DtH4YMt4.js} +1 -1
- package/dist/ui/assets/{masked-input-h0XkMSwB.js → masked-input-C2H-Ax0Z.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-yBdrFeb7.js → proxy-status-widget-BOrsn86w.js} +1 -1
- package/dist/ui/assets/{raw-json-settings-editor-panel-Cb7ZInQV.js → raw-json-settings-editor-panel-WxTn7-hS.js} +1 -1
- package/dist/ui/assets/{searchable-select-D4xr5xKS.js → searchable-select-1zOULoec.js} +1 -1
- package/dist/ui/assets/{separator-gw5BjIpP.js → separator-BCfZ54mZ.js} +1 -1
- package/dist/ui/assets/{shared-C-VeA1Z9.js → shared-DlTbnc9n.js} +1 -1
- package/dist/ui/assets/{table-Bd4isC18.js → table-Bx2cnkWN.js} +1 -1
- package/dist/ui/assets/{updates-DiK8I67C.js → updates-SiZKOnUD.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/utils/browser/chrome-reuse.d.ts +17 -0
- package/dist/utils/browser/chrome-reuse.d.ts.map +1 -0
- package/dist/utils/browser/chrome-reuse.js +194 -0
- package/dist/utils/browser/chrome-reuse.js.map +1 -0
- package/dist/utils/browser/claude-tool-args.d.ts +2 -0
- package/dist/utils/browser/claude-tool-args.d.ts.map +1 -0
- package/dist/utils/browser/claude-tool-args.js +18 -0
- package/dist/utils/browser/claude-tool-args.js.map +1 -0
- package/dist/utils/browser/index.d.ts +8 -0
- package/dist/utils/browser/index.d.ts.map +1 -0
- package/dist/utils/browser/index.js +24 -0
- package/dist/utils/browser/index.js.map +1 -0
- package/dist/utils/browser/mcp-installer.d.ts +14 -0
- package/dist/utils/browser/mcp-installer.d.ts.map +1 -0
- package/dist/utils/browser/mcp-installer.js +356 -0
- package/dist/utils/browser/mcp-installer.js.map +1 -0
- package/dist/utils/browser-codex-overrides.d.ts +3 -0
- package/dist/utils/browser-codex-overrides.d.ts.map +1 -0
- package/dist/utils/browser-codex-overrides.js +29 -0
- package/dist/utils/browser-codex-overrides.js.map +1 -0
- package/dist/utils/claude-detector.d.ts +1 -0
- package/dist/utils/claude-detector.d.ts.map +1 -1
- package/dist/utils/claude-spawner.d.ts +1 -0
- package/dist/utils/claude-spawner.d.ts.map +1 -1
- package/dist/utils/claude-tool-args.d.ts +7 -0
- package/dist/utils/claude-tool-args.d.ts.map +1 -0
- package/dist/utils/claude-tool-args.js +43 -0
- package/dist/utils/claude-tool-args.js.map +1 -0
- package/dist/utils/image-analysis/claude-tool-args.d.ts +3 -0
- package/dist/utils/image-analysis/claude-tool-args.d.ts.map +1 -1
- package/dist/utils/image-analysis/claude-tool-args.js +21 -47
- package/dist/utils/image-analysis/claude-tool-args.js.map +1 -1
- package/dist/utils/package-manager-detector.d.ts +1 -0
- package/dist/utils/package-manager-detector.d.ts.map +1 -1
- package/dist/utils/prompt-injection-strategy.d.ts +54 -0
- package/dist/utils/prompt-injection-strategy.d.ts.map +1 -0
- package/dist/utils/prompt-injection-strategy.js +128 -0
- package/dist/utils/prompt-injection-strategy.js.map +1 -0
- package/dist/utils/shell-executor.d.ts +1 -0
- package/dist/utils/shell-executor.d.ts.map +1 -1
- package/dist/utils/websearch/claude-tool-args.d.ts +7 -0
- package/dist/utils/websearch/claude-tool-args.d.ts.map +1 -1
- package/dist/utils/websearch/claude-tool-args.js +27 -50
- package/dist/utils/websearch/claude-tool-args.js.map +1 -1
- package/dist/utils/websearch/hook-env.d.ts.map +1 -1
- package/dist/utils/websearch/hook-env.js +19 -1
- package/dist/utils/websearch/hook-env.js.map +1 -1
- package/dist/utils/websearch/status.d.ts +1 -1
- package/dist/utils/websearch/status.d.ts.map +1 -1
- package/dist/utils/websearch/status.js +33 -12
- package/dist/utils/websearch/status.js.map +1 -1
- package/dist/utils/websearch/trace.d.ts +1 -0
- package/dist/utils/websearch/trace.d.ts.map +1 -1
- package/dist/utils/websearch/trace.js +20 -5
- package/dist/utils/websearch/trace.js.map +1 -1
- package/dist/utils/websearch/types.d.ts +12 -2
- package/dist/utils/websearch/types.d.ts.map +1 -1
- package/dist/utils/websearch/types.js +38 -0
- package/dist/utils/websearch/types.js.map +1 -1
- package/dist/web-server/health/websearch-checks.js +1 -1
- package/dist/web-server/health/websearch-checks.js.map +1 -1
- package/dist/web-server/middleware/auth-middleware.d.ts +0 -1
- package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.js +26 -6
- package/dist/web-server/routes/cliproxy-local-proxy.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +8 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts +2 -0
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-routes.js +44 -2
- package/dist/web-server/routes/cursor-routes.js.map +1 -1
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
- package/dist/web-server/routes/websearch-routes.js +37 -0
- package/dist/web-server/routes/websearch-routes.js.map +1 -1
- package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
- package/dist/web-server/services/cliproxy-dashboard-install-service.js +14 -0
- package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
- package/dist/web-server/services/codex-dashboard-service.d.ts +1 -0
- package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
- package/dist/web-server/services/droid-dashboard-service.d.ts +1 -0
- package/dist/web-server/services/droid-dashboard-service.d.ts.map +1 -1
- package/lib/hooks/websearch-transformer.cjs +136 -0
- package/lib/mcp/ccs-browser-server.cjs +877 -0
- package/lib/mcp/ccs-websearch-server.cjs +1 -1
- package/package.json +2 -1
- package/dist/ui/assets/cursor-BpXPf6qi.js +0 -1
- package/dist/ui/assets/index-BmSzf0T9.js +0 -72
- package/dist/ui/assets/index-DH6L6ybH.js +0 -1
- package/dist/ui/assets/index-teLjoh2T.css +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cursor Routes - Cursor IDE integration via cursor proxy daemon
|
|
3
3
|
*/
|
|
4
|
+
import { autoDetectTokens } from '../../cursor';
|
|
4
5
|
declare const router: import("express-serve-static-core").Router;
|
|
5
6
|
interface DaemonStartPreconditionInput {
|
|
6
7
|
enabled: boolean;
|
|
@@ -11,6 +12,7 @@ interface DaemonStartPreconditionError {
|
|
|
11
12
|
status: number;
|
|
12
13
|
error: string;
|
|
13
14
|
}
|
|
15
|
+
export declare function getAutoDetectFailureStatus(reason?: ReturnType<typeof autoDetectTokens>['reason']): number;
|
|
14
16
|
export declare function getDaemonStartPreconditionError(input: DaemonStartPreconditionInput): DaemonStartPreconditionError | null;
|
|
15
17
|
export default router;
|
|
16
18
|
//# sourceMappingURL=cursor-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"cursor-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAML,gBAAgB,EAIjB,MAAM,cAAc,CAAC;AAItB,QAAA,MAAM,MAAM,4CAAW,CAAC;AAExB,UAAU,4BAA4B;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,4BAA4B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CACxC,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GACrD,MAAM,CAWR;AAeD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,4BAA4B,GAClC,4BAA4B,GAAG,IAAI,CAuBrC;AAkKD,eAAe,MAAM,CAAC"}
|
|
@@ -6,12 +6,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.getDaemonStartPreconditionError = void 0;
|
|
9
|
+
exports.getDaemonStartPreconditionError = exports.getAutoDetectFailureStatus = void 0;
|
|
10
10
|
const express_1 = require("express");
|
|
11
11
|
const cursor_1 = require("../../cursor");
|
|
12
12
|
const unified_config_loader_1 = require("../../config/unified-config-loader");
|
|
13
13
|
const cursor_settings_routes_1 = __importDefault(require("./cursor-settings-routes"));
|
|
14
14
|
const router = (0, express_1.Router)();
|
|
15
|
+
function getAutoDetectFailureStatus(reason) {
|
|
16
|
+
switch (reason) {
|
|
17
|
+
case 'sqlite_unavailable':
|
|
18
|
+
return 503;
|
|
19
|
+
case 'db_query_failed':
|
|
20
|
+
return 500;
|
|
21
|
+
case 'invalid_token_format':
|
|
22
|
+
return 400;
|
|
23
|
+
default:
|
|
24
|
+
return 404;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.getAutoDetectFailureStatus = getAutoDetectFailureStatus;
|
|
28
|
+
function getPublicAutoDetectError(result) {
|
|
29
|
+
switch (result.reason) {
|
|
30
|
+
case 'db_not_found':
|
|
31
|
+
return 'Cursor state database not found on this host.';
|
|
32
|
+
case 'sqlite_unavailable':
|
|
33
|
+
return 'Cursor state database was found, but sqlite3 is not available in PATH.';
|
|
34
|
+
case 'db_query_failed':
|
|
35
|
+
return 'Cursor state database was found, but CCS could not query it.';
|
|
36
|
+
default:
|
|
37
|
+
return result.error ?? 'Token not found';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
15
40
|
function getDaemonStartPreconditionError(input) {
|
|
16
41
|
if (!input.enabled) {
|
|
17
42
|
return {
|
|
@@ -95,7 +120,11 @@ router.post('/auth/auto-detect', async (_req, res) => {
|
|
|
95
120
|
try {
|
|
96
121
|
const result = (0, cursor_1.autoDetectTokens)();
|
|
97
122
|
if (!result.found || !result.accessToken || !result.machineId) {
|
|
98
|
-
|
|
123
|
+
const status = getAutoDetectFailureStatus(result.reason);
|
|
124
|
+
res.status(status).json({
|
|
125
|
+
error: getPublicAutoDetectError(result),
|
|
126
|
+
reason: result.reason ?? null,
|
|
127
|
+
});
|
|
99
128
|
return;
|
|
100
129
|
}
|
|
101
130
|
// Save credentials
|
|
@@ -124,6 +153,19 @@ router.get('/models', async (_req, res) => {
|
|
|
124
153
|
res.status(500).json({ error: error.message });
|
|
125
154
|
}
|
|
126
155
|
});
|
|
156
|
+
/**
|
|
157
|
+
* POST /api/cursor/probe - Run a live authenticated runtime probe
|
|
158
|
+
*/
|
|
159
|
+
router.post('/probe', async (_req, res) => {
|
|
160
|
+
try {
|
|
161
|
+
const cursorConfig = (0, unified_config_loader_1.getCursorConfig)();
|
|
162
|
+
const result = await (0, cursor_1.probeCursorRuntime)(cursorConfig);
|
|
163
|
+
res.status(result.status).json(result);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
res.status(500).json({ error: error.message });
|
|
167
|
+
}
|
|
168
|
+
});
|
|
127
169
|
/**
|
|
128
170
|
* POST /api/cursor/daemon/start - Start cursor proxy daemon
|
|
129
171
|
* Path matches copilot convention: /api/{provider}/daemon/{action}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAGH,qCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"cursor-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/websearch-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"websearch-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/websearch-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAkQxB,eAAe,MAAM,CAAC"}
|
|
@@ -7,12 +7,20 @@ const express_1 = require("express");
|
|
|
7
7
|
const unified_config_loader_1 = require("../../config/unified-config-loader");
|
|
8
8
|
const websearch_manager_1 = require("../../utils/websearch-manager");
|
|
9
9
|
const provider_secrets_1 = require("../../utils/websearch/provider-secrets");
|
|
10
|
+
const types_1 = require("../../utils/websearch/types");
|
|
10
11
|
const auth_middleware_1 = require("../middleware/auth-middleware");
|
|
11
12
|
const router = (0, express_1.Router)();
|
|
12
13
|
const WEBSEARCH_LOCAL_ACCESS_ERROR = 'WebSearch endpoints require localhost access when dashboard auth is disabled.';
|
|
14
|
+
const DEFAULT_WEBSEARCH_MAX_RESULTS = 5;
|
|
15
|
+
const MAX_WEBSEARCH_MAX_RESULTS = 10;
|
|
13
16
|
function isWebSearchApiKeyProviderId(value) {
|
|
14
17
|
return Object.prototype.hasOwnProperty.call(provider_secrets_1.WEBSEARCH_API_KEY_PROVIDERS, value);
|
|
15
18
|
}
|
|
19
|
+
function clampWebSearchMaxResults(value, fallback) {
|
|
20
|
+
const candidate = Number.isFinite(value) ? value : fallback;
|
|
21
|
+
const normalized = Number.isFinite(candidate) ? candidate : DEFAULT_WEBSEARCH_MAX_RESULTS;
|
|
22
|
+
return Math.max(1, Math.min(MAX_WEBSEARCH_MAX_RESULTS, Math.floor(normalized)));
|
|
23
|
+
}
|
|
16
24
|
router.use((req, res, next) => {
|
|
17
25
|
if ((0, auth_middleware_1.requireLocalAccessWhenAuthDisabled)(req, res, WEBSEARCH_LOCAL_ACCESS_ERROR)) {
|
|
18
26
|
next();
|
|
@@ -58,6 +66,27 @@ router.put('/', (req, res) => {
|
|
|
58
66
|
res.status(400).json({ error: 'Invalid value for providers. Must be an object.' });
|
|
59
67
|
return;
|
|
60
68
|
}
|
|
69
|
+
if (providers?.searxng?.url !== undefined && typeof providers.searxng.url !== 'string') {
|
|
70
|
+
res.status(400).json({ error: 'Invalid value for providers.searxng.url. Must be a string.' });
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const normalizedSearxngUrl = providers?.searxng?.url !== undefined
|
|
74
|
+
? (0, types_1.normalizeSearxngBaseUrl)(providers.searxng.url)
|
|
75
|
+
: undefined;
|
|
76
|
+
if (providers?.searxng?.url !== undefined && normalizedSearxngUrl === null) {
|
|
77
|
+
res.status(400).json({
|
|
78
|
+
error: 'Invalid value for providers.searxng.url. Must be an http(s) base URL without credentials, query, or hash.',
|
|
79
|
+
});
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (providers?.searxng?.max_results !== undefined &&
|
|
83
|
+
(typeof providers.searxng.max_results !== 'number' ||
|
|
84
|
+
!Number.isFinite(providers.searxng.max_results))) {
|
|
85
|
+
res.status(400).json({
|
|
86
|
+
error: 'Invalid value for providers.searxng.max_results. Must be a number.',
|
|
87
|
+
});
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
61
90
|
if (apiKeys !== undefined &&
|
|
62
91
|
(apiKeys === null || Array.isArray(apiKeys) || typeof apiKeys !== 'object')) {
|
|
63
92
|
res.status(400).json({ error: 'Invalid value for apiKeys. Must be an object.' });
|
|
@@ -77,6 +106,7 @@ router.put('/', (req, res) => {
|
|
|
77
106
|
}
|
|
78
107
|
try {
|
|
79
108
|
(0, unified_config_loader_1.mutateUnifiedConfig)((config) => {
|
|
109
|
+
const existingSearxngUrl = (0, types_1.normalizeSearxngBaseUrl)(config.websearch?.providers?.searxng?.url) ?? '';
|
|
80
110
|
config.websearch = {
|
|
81
111
|
enabled: enabled ?? config.websearch?.enabled ?? true,
|
|
82
112
|
providers: providers
|
|
@@ -107,6 +137,13 @@ router.put('/', (req, res) => {
|
|
|
107
137
|
config.websearch?.providers?.brave?.max_results ??
|
|
108
138
|
5,
|
|
109
139
|
},
|
|
140
|
+
searxng: {
|
|
141
|
+
enabled: providers.searxng?.enabled ??
|
|
142
|
+
config.websearch?.providers?.searxng?.enabled ??
|
|
143
|
+
false,
|
|
144
|
+
url: normalizedSearxngUrl ?? existingSearxngUrl,
|
|
145
|
+
max_results: clampWebSearchMaxResults(providers.searxng?.max_results, config.websearch?.providers?.searxng?.max_results ?? DEFAULT_WEBSEARCH_MAX_RESULTS),
|
|
146
|
+
},
|
|
110
147
|
gemini: {
|
|
111
148
|
enabled: providers.gemini?.enabled ??
|
|
112
149
|
config.websearch?.providers?.gemini?.enabled ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/websearch-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,qCAAoD;AACpD,8EAA6F;AAE7F,qEAAgG;AAChG,6EAKgD;AAChD,mEAAmF;AAEnF,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AACxB,MAAM,4BAA4B,GAChC,+EAA+E,CAAC;
|
|
1
|
+
{"version":3,"file":"websearch-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/websearch-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,qCAAoD;AACpD,8EAA6F;AAE7F,qEAAgG;AAChG,6EAKgD;AAChD,uDAAsE;AACtE,mEAAmF;AAEnF,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AACxB,MAAM,4BAA4B,GAChC,+EAA+E,CAAC;AAClF,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAQrC,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,8CAA2B,EAAE,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAyB,EAAE,QAAgB;IAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,IAAI,EAAE,EAAE;IAC/C,IAAI,IAAA,oDAAkC,EAAC,GAAG,EAAE,GAAG,EAAE,4BAA4B,CAAC,EAAE,CAAC;QAC/E,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,0CAAkB,GAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,MAAM;YACT,OAAO,EAAE,IAAA,2CAAwB,GAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IACpD,IACE,GAAG,CAAC,IAAI,KAAK,IAAI;QACjB,GAAG,CAAC,IAAI,KAAK,SAAS;QACtB,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACvB,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAiC,CAAC;IAE9E,mBAAmB;IACnB,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,kCAAkC;IAClC,IACE,SAAS,KAAK,SAAS;QACvB,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,EACjF,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,IAAI,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACvF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IAED,MAAM,oBAAoB,GACxB,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,SAAS;QACnC,CAAC,CAAC,IAAA,+BAAuB,EAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,SAAS,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC3E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EACH,2GAA2G;SAC9G,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IACE,SAAS,EAAE,OAAO,EAAE,WAAW,KAAK,SAAS;QAC7C,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ;YAChD,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAClD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,oEAAoE;SAC5E,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,EAC3E,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO;YACT,CAAC;YAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,UAAU,UAAU,EAAE,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,IAAA,2CAAmB,EAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,kBAAkB,GACtB,IAAA,+BAAuB,EAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;YAE3E,MAAM,CAAC,SAAS,GAAG;gBACjB,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI;gBACrD,SAAS,EAAE,SAAS;oBAClB,CAAC,CAAC;wBACE,GAAG,EAAE;4BACH,OAAO,EACL,SAAS,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,IAAI,KAAK;4BAC9E,WAAW,EACT,SAAS,CAAC,GAAG,EAAE,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,IAAI,CAAC;yBACnF;wBACD,MAAM,EAAE;4BACN,OAAO,EACL,SAAS,CAAC,MAAM,EAAE,OAAO;gCACzB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;gCAC5C,KAAK;4BACP,WAAW,EACT,SAAS,CAAC,MAAM,EAAE,WAAW;gCAC7B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;gCAChD,CAAC;yBACJ;wBACD,UAAU,EAAE;4BACV,OAAO,EACL,SAAS,CAAC,UAAU,EAAE,OAAO;gCAC7B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO;gCAChD,IAAI;4BACN,WAAW,EACT,SAAS,CAAC,UAAU,EAAE,WAAW;gCACjC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW;gCACpD,CAAC;yBACJ;wBACD,KAAK,EAAE;4BACL,OAAO,EACL,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK;4BAClF,WAAW,EACT,SAAS,CAAC,KAAK,EAAE,WAAW;gCAC5B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW;gCAC/C,CAAC;yBACJ;wBACD,OAAO,EAAE;4BACP,OAAO,EACL,SAAS,CAAC,OAAO,EAAE,OAAO;gCAC1B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;gCAC7C,KAAK;4BACP,GAAG,EAAE,oBAAoB,IAAI,kBAAkB;4BAC/C,WAAW,EAAE,wBAAwB,CACnC,SAAS,CAAC,OAAO,EAAE,WAAW,EAC9B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,IAAI,6BAA6B,CACnF;yBACF;wBACD,MAAM,EAAE;4BACN,OAAO,EACL,SAAS,CAAC,MAAM,EAAE,OAAO;gCACzB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;gCAC5C,KAAK;4BACP,KAAK,EACH,SAAS,CAAC,MAAM,EAAE,KAAK;gCACvB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK;gCAC1C,kBAAkB;4BACpB,OAAO,EACL,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;yBAClF;wBACD,IAAI,EAAE;4BACJ,OAAO,EACL,SAAS,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK;4BAChF,OAAO,EACL,SAAS,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;yBAC9E;wBACD,QAAQ,EAAE;4BACR,OAAO,EACL,SAAS,CAAC,QAAQ,EAAE,OAAO;gCAC3B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;gCAC9C,KAAK;4BACP,KAAK,EACH,SAAS,CAAC,QAAQ,EAAE,KAAK;gCACzB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK;gCAC5C,oBAAoB;4BACtB,OAAO,EACL,SAAS,CAAC,QAAQ,EAAE,OAAO;gCAC3B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;gCAC9C,EAAE;yBACL;qBACF;oBACH,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS;aAChC,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,UAAU,GAAG;oBAClB,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI;oBAC3C,GAAG,EAAE,IAAA,8CAA2B,EAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC;iBACxE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,SAAS,EAAE;gBACT,GAAG,IAAA,0CAAkB,GAAE;gBACvB,OAAO,EAAE,IAAA,2CAAwB,GAAE;aACpC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,yCAAqB,GAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAA,4CAAwB,GAAE,CAAC;QAE7C,GAAG,CAAC,IAAI,CAAC;YACP,SAAS;YACT,SAAS,EAAE;gBACT,MAAM,EAAE,SAAS,CAAC,SAAS;gBAC3B,OAAO,EAAE,SAAS,CAAC,OAAO;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-dashboard-install-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGhG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cliproxy-dashboard-install-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGhG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,mCAAmC;IAC3C,cAAc,EAAE,MAAM,eAAe,CAAC;IACtC,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,sBAAsB,EAAE,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qBAAqB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC1D;AASD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,IAAI,GAAE,mCAAiD,GACtD,OAAO,CAAC,8BAA8B,CAAC,CA8CzC"}
|
|
@@ -5,6 +5,7 @@ const binary_manager_1 = require("../../cliproxy/binary-manager");
|
|
|
5
5
|
const service_manager_1 = require("../../cliproxy/service-manager");
|
|
6
6
|
const session_tracker_1 = require("../../cliproxy/session-tracker");
|
|
7
7
|
const stats_fetcher_1 = require("../../cliproxy/stats-fetcher");
|
|
8
|
+
const supervisord_lifecycle_1 = require("../../docker/supervisord-lifecycle");
|
|
8
9
|
const defaultDeps = {
|
|
9
10
|
getProxyStatus: session_tracker_1.getProxyStatus,
|
|
10
11
|
isCliproxyRunning: stats_fetcher_1.isCliproxyRunning,
|
|
@@ -31,6 +32,19 @@ async function installDashboardCliproxyVersion(version, backend, deps = defaultD
|
|
|
31
32
|
message: `Successfully installed ${backendLabel} v${version}`,
|
|
32
33
|
};
|
|
33
34
|
}
|
|
35
|
+
// In Docker, supervisord owns process lifecycle — delegate restart to it
|
|
36
|
+
if ((0, supervisord_lifecycle_1.isRunningUnderSupervisord)()) {
|
|
37
|
+
const result = (0, supervisord_lifecycle_1.restartCliproxyViaSupervisord)();
|
|
38
|
+
return {
|
|
39
|
+
success: result.success,
|
|
40
|
+
restarted: result.success,
|
|
41
|
+
port: result.port,
|
|
42
|
+
error: result.error,
|
|
43
|
+
message: result.success
|
|
44
|
+
? `Successfully installed ${backendLabel} v${version} and restarted it on port ${result.port}`
|
|
45
|
+
: `Installed ${backendLabel} v${version}, but restart failed`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
34
48
|
const startResult = await deps.ensureCliproxyService();
|
|
35
49
|
if (!startResult.started && !startResult.alreadyRunning) {
|
|
36
50
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-dashboard-install-service.js","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":";;;AAAA,kEAAuE;AACvE,oEAAgG;AAChG,oEAAyF;AACzF,gEAAiE;
|
|
1
|
+
{"version":3,"file":"cliproxy-dashboard-install-service.js","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":";;;AAAA,kEAAuE;AACvE,oEAAgG;AAChG,oEAAyF;AACzF,gEAAiE;AAEjE,8EAG4C;AAiB5C,MAAM,WAAW,GAAwC;IACvD,cAAc,EAAE,gCAAqB;IACrC,iBAAiB,EAAjB,iCAAiB;IACjB,sBAAsB,EAAtB,uCAAsB;IACtB,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAA,uCAAqB,GAAE;CACrD,CAAC;AAUF,KAAK,UAAU,eAAe,CAAC,IAAyC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,+BAA+B,CACnD,OAAe,EACf,OAAwB,EACxB,OAA4C,WAAW;IAEvD,MAAM,YAAY,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;IACvE,MAAM,oBAAoB,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzD,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,0BAA0B,YAAY,KAAK,OAAO,EAAE;SAC9D,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,IAAI,IAAA,iDAAyB,GAAE,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,qDAA6B,GAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,OAAO;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACrB,CAAC,CAAC,0BAA0B,YAAY,KAAK,OAAO,6BAA6B,MAAM,CAAC,IAAI,EAAE;gBAC9F,CAAC,CAAC,aAAa,YAAY,KAAK,OAAO,sBAAsB;SAChE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QACxD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,aAAa,YAAY,KAAK,OAAO,sBAAsB;YACvF,OAAO,EAAE,aAAa,YAAY,KAAK,OAAO,4BAA4B;SAC3E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,0BAA0B,YAAY,KAAK,OAAO,6BAA6B,WAAW,CAAC,IAAI,EAAE;KAC3G,CAAC;AACJ,CAAC;AAlDD,0EAkDC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="bun-types" />
|
|
2
3
|
import type { CodexConfigPatchInput, CodexConfigPatchResult, CodexDashboardDiagnostics, CodexFeatureFlagDiagnostics, CodexMcpServerDiagnostics, CodexModelProviderDiagnostics, CodexProjectTrustDiagnostics, CodexRawConfigResponse } from './compatible-cli-types';
|
|
3
4
|
import { TomlFileConflictError, TomlFileValidationError } from './compatible-cli-toml-file-service';
|
|
4
5
|
interface CodexConfigPaths {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-dashboard-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/codex-dashboard-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-dashboard-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/codex-dashboard-service.ts"],"names":[],"mappings":";;AAOA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EAIxB,MAAM,oCAAoC,CAAC;AAG5C,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,wBAAwB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAO,EACL,qBAAqB,IAAI,2BAA2B,EACpD,uBAAuB,IAAI,6BAA6B,GACzD,CAAC;AAyeF,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,gBAAgB,CAclB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,EAAE,CA2B5F;AAMD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG;IAC1D,GAAG,EAAE,2BAA2B,EAAE,CAAC;IACnC,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvC,QAAQ,EAAE,2BAA2B,EAAE,CAAC;CACzC,CAkBA;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,EAAE,CAazF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,EAAE,CA4BpF;AAqDD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,yBAAyB,CAAC,CA4GvF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAkBzE;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAcnC;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAmDjC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="bun-types" />
|
|
2
3
|
import type { DroidByokDiagnostics, DroidDashboardDiagnostics, DroidRawSettingsResponse } from './compatible-cli-types';
|
|
3
4
|
import { JsonFileConflictError, JsonFileValidationError } from './compatible-cli-json-file-service';
|
|
4
5
|
interface DroidConfigPaths {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"droid-dashboard-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/droid-dashboard-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"droid-dashboard-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/droid-dashboard-service.ts"],"names":[],"mappings":";;AAIA,OAAO,KAAK,EACV,oBAAoB,EAEpB,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EAGxB,MAAM,oCAAoC,CAAC;AAG5C,UAAU,gBAAgB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,UAAU,yBAAyB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAO,EACL,qBAAqB,IAAI,6BAA6B,EACtD,uBAAuB,IAAI,+BAA+B,GAC3D,CAAC;AA0BF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD;AAMD,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,gBAAgB,CAclB;AAiBD,wBAAgB,0BAA0B,CAAC,iBAAiB,EAAE,OAAO,GAAG,oBAAoB,CAuD3F;AAqBD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,yBAAyB,CAAC,CA2DvF;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAiB7E;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,0BAA0B,CAAC,CAarC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* - Exa Search API
|
|
7
7
|
* - Tavily Search API
|
|
8
8
|
* - Brave Search API
|
|
9
|
+
* - SearXNG JSON API
|
|
9
10
|
* - DuckDuckGo HTML search
|
|
10
11
|
*
|
|
11
12
|
* Legacy compatibility fallback:
|
|
@@ -369,6 +370,36 @@ function getResultCount(provider) {
|
|
|
369
370
|
return Number.isFinite(parsed) && parsed > 0 ? Math.min(parsed, 10) : DEFAULT_RESULT_COUNT;
|
|
370
371
|
}
|
|
371
372
|
|
|
373
|
+
function getSearxngBaseUrl() {
|
|
374
|
+
const raw = (process.env.CCS_WEBSEARCH_SEARXNG_URL || '').trim();
|
|
375
|
+
if (!raw) {
|
|
376
|
+
return '';
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
try {
|
|
380
|
+
const parsed = new URL(raw);
|
|
381
|
+
if (!['http:', 'https:'].includes(parsed.protocol) || parsed.search || parsed.hash) {
|
|
382
|
+
return '';
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (parsed.username || parsed.password) {
|
|
386
|
+
return '';
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
let pathname = parsed.pathname.replace(/\/+$/, '');
|
|
390
|
+
if (pathname.toLowerCase().endsWith('/search')) {
|
|
391
|
+
pathname = pathname.slice(0, -'/search'.length);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
parsed.pathname = pathname || '/';
|
|
395
|
+
parsed.search = '';
|
|
396
|
+
parsed.hash = '';
|
|
397
|
+
return parsed.toString().replace(/\/+$/, '');
|
|
398
|
+
} catch {
|
|
399
|
+
return '';
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
372
403
|
function buildPrompt(providerId, query) {
|
|
373
404
|
const config = PROVIDER_CONFIG[providerId];
|
|
374
405
|
const parts = [
|
|
@@ -569,6 +600,104 @@ async function tryBraveSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
|
|
|
569
600
|
}
|
|
570
601
|
}
|
|
571
602
|
|
|
603
|
+
async function trySearxngSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
|
|
604
|
+
const baseUrl = getSearxngBaseUrl();
|
|
605
|
+
if (!baseUrl) {
|
|
606
|
+
return { success: false, error: 'SearXNG URL is invalid or not configured' };
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
const params = new URLSearchParams({
|
|
610
|
+
q: query,
|
|
611
|
+
format: 'json',
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
try {
|
|
615
|
+
const response = await fetchWithTimeout(
|
|
616
|
+
`${baseUrl}/search?${params.toString()}`,
|
|
617
|
+
{
|
|
618
|
+
headers: {
|
|
619
|
+
Accept: 'application/json',
|
|
620
|
+
'User-Agent': USER_AGENT,
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
timeoutSec * 1000
|
|
624
|
+
);
|
|
625
|
+
|
|
626
|
+
if (!response.ok) {
|
|
627
|
+
const body = await response.text();
|
|
628
|
+
if (
|
|
629
|
+
response.status === 403 &&
|
|
630
|
+
/format(?:=|\s*)json|json[^\n]{0,40}disabled|disabled[^\n]{0,40}json/i.test(body)
|
|
631
|
+
) {
|
|
632
|
+
return {
|
|
633
|
+
success: false,
|
|
634
|
+
error: 'SearXNG returned 403: format=json is disabled on this instance',
|
|
635
|
+
statusCode: response.status,
|
|
636
|
+
retryAfterSec: parseRetryAfterSeconds(readHeaderValue(response.headers, 'retry-after')),
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
return {
|
|
641
|
+
success: false,
|
|
642
|
+
error: `SearXNG returned ${response.status}: ${body.slice(0, 160)}`,
|
|
643
|
+
statusCode: response.status,
|
|
644
|
+
retryAfterSec: parseRetryAfterSeconds(readHeaderValue(response.headers, 'retry-after')),
|
|
645
|
+
};
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
let body;
|
|
649
|
+
try {
|
|
650
|
+
body = await response.json();
|
|
651
|
+
} catch {
|
|
652
|
+
return {
|
|
653
|
+
success: false,
|
|
654
|
+
error: 'SearXNG returned malformed JSON payload',
|
|
655
|
+
};
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
if (!body || typeof body !== 'object' || !Array.isArray(body.results)) {
|
|
659
|
+
return {
|
|
660
|
+
success: false,
|
|
661
|
+
error: 'SearXNG JSON response is missing results[]',
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
const count = getResultCount('searxng');
|
|
666
|
+
const results = body.results.slice(0, count).map((entry) => {
|
|
667
|
+
const result = entry && typeof entry === 'object' ? entry : {};
|
|
668
|
+
const url = typeof result.url === 'string' ? result.url : '';
|
|
669
|
+
const titleSource =
|
|
670
|
+
typeof result.title === 'string' && result.title.trim().length > 0
|
|
671
|
+
? result.title
|
|
672
|
+
: url || 'Untitled';
|
|
673
|
+
const descriptionSource =
|
|
674
|
+
typeof result.content === 'string'
|
|
675
|
+
? result.content
|
|
676
|
+
: typeof result.description === 'string'
|
|
677
|
+
? result.description
|
|
678
|
+
: typeof result.snippet === 'string'
|
|
679
|
+
? result.snippet
|
|
680
|
+
: '';
|
|
681
|
+
|
|
682
|
+
return {
|
|
683
|
+
title: compactText(titleSource, 120),
|
|
684
|
+
url,
|
|
685
|
+
description: compactText(descriptionSource, 240),
|
|
686
|
+
};
|
|
687
|
+
});
|
|
688
|
+
|
|
689
|
+
return {
|
|
690
|
+
success: true,
|
|
691
|
+
content: formatStructuredSearchResults(query, 'SearXNG', results),
|
|
692
|
+
};
|
|
693
|
+
} catch (error) {
|
|
694
|
+
return {
|
|
695
|
+
success: false,
|
|
696
|
+
error: error.name === 'AbortError' ? 'SearXNG timed out' : error.message,
|
|
697
|
+
};
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
|
|
572
701
|
async function tryExaSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
|
|
573
702
|
const apiKey = getProviderApiKey('exa');
|
|
574
703
|
if (!apiKey) {
|
|
@@ -892,6 +1021,12 @@ function getConfiguredProviders() {
|
|
|
892
1021
|
available: () => isProviderEnabled('brave') && Boolean(getProviderApiKey('brave')),
|
|
893
1022
|
fn: tryBraveSearch,
|
|
894
1023
|
},
|
|
1024
|
+
{
|
|
1025
|
+
name: 'SearXNG',
|
|
1026
|
+
id: 'searxng',
|
|
1027
|
+
available: () => isProviderEnabled('searxng') && Boolean(getSearxngBaseUrl()),
|
|
1028
|
+
fn: trySearxngSearch,
|
|
1029
|
+
},
|
|
895
1030
|
{
|
|
896
1031
|
name: 'DuckDuckGo',
|
|
897
1032
|
id: 'duckduckgo',
|
|
@@ -1280,4 +1415,5 @@ module.exports = {
|
|
|
1280
1415
|
tryTavilySearch,
|
|
1281
1416
|
tryDuckDuckGoSearch,
|
|
1282
1417
|
tryBraveSearch,
|
|
1418
|
+
trySearxngSearch,
|
|
1283
1419
|
};
|