@kaitranntt/ccs 7.56.0-dev.4 → 7.56.0-dev.5
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 +23 -17
- package/dist/config/unified-config-loader.d.ts +16 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +56 -12
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +56 -10
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +20 -2
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/ui/assets/{accounts-BSknYWh4.js → accounts-CcKtNJpZ.js} +1 -1
- package/dist/ui/assets/{alert-dialog-BsXoK0Gt.js → alert-dialog-D9ixkKjG.js} +1 -1
- package/dist/ui/assets/{api-C-ZXD7TW.js → api-ClWqAKR1.js} +1 -1
- package/dist/ui/assets/{auth-section-CjGg1fit.js → auth-section-BQ4Kogh5.js} +1 -1
- package/dist/ui/assets/{backups-section-fHW6gGBE.js → backups-section-fPK5pSgx.js} +1 -1
- package/dist/ui/assets/{checkbox-K93r237H.js → checkbox-Cr_w2dBr.js} +1 -1
- package/dist/ui/assets/{claude-extension-feiyhDgC.js → claude-extension-Blq0eREl.js} +1 -1
- package/dist/ui/assets/{cliproxy-CVv_-PsP.js → cliproxy-CPWxG68T.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-0JQCQ6YS.js → cliproxy-ai-providers-CWIwmTNM.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-CrHA_sjo.js → cliproxy-control-panel-CgEMwXOj.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-_wN3tR_n.js → confirm-dialog-BLoDbdRn.js} +1 -1
- package/dist/ui/assets/{copilot-Cao_05p3.js → copilot-tFEndl-V.js} +1 -1
- package/dist/ui/assets/{cursor-Cbe1L5vq.js → cursor-d_8EDsFB.js} +1 -1
- package/dist/ui/assets/{droid-Cu3rERcX.js → droid-BIbPZCVp.js} +1 -1
- package/dist/ui/assets/{globalenv-section-CtzXlKoL.js → globalenv-section-C1OjUAhr.js} +1 -1
- package/dist/ui/assets/{health-CjuQlQLu.js → health-BAy1igW2.js} +1 -1
- package/dist/ui/assets/{icons-DR-ORtNe.js → icons-BwsSbo2z.js} +1 -1
- package/dist/ui/assets/index-Bp4s-Led.css +1 -0
- package/dist/ui/assets/{index-17YWpyV1.js → index-D-xh-rUY.js} +1 -1
- package/dist/ui/assets/index-DVgRJ--R.js +1 -0
- package/dist/ui/assets/{index-CtS8lmbp.js → index-DjsOxm87.js} +1 -1
- package/dist/ui/assets/{index-gjtWXRc2.js → index-KQ7UM0Zx.js} +3 -3
- package/dist/ui/assets/{index-B4MTOnn6.js → index-L-WMPeHP.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-9CJglirI.js → proxy-status-widget-CibAyvji.js} +1 -1
- package/dist/ui/assets/{searchable-select-CGOND84a.js → searchable-select-BCt9hVab.js} +1 -1
- package/dist/ui/assets/{separator-2e8ySql0.js → separator-B-7tcT70.js} +1 -1
- package/dist/ui/assets/{shared-598yR3xg.js → shared-B5lECoNe.js} +1 -1
- package/dist/ui/assets/{switch-BUqDuRxm.js → switch-ofCljueo.js} +1 -1
- package/dist/ui/assets/{updates-CQW2-eYw.js → updates-CDdcIRgb.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/websearch/hook-env.d.ts.map +1 -1
- package/dist/utils/websearch/hook-env.js +17 -1
- package/dist/utils/websearch/hook-env.js.map +1 -1
- package/dist/utils/websearch/status.d.ts +5 -12
- package/dist/utils/websearch/status.d.ts.map +1 -1
- package/dist/utils/websearch/status.js +128 -87
- package/dist/utils/websearch/status.js.map +1 -1
- package/dist/utils/websearch/types.d.ts +37 -23
- package/dist/utils/websearch/types.d.ts.map +1 -1
- package/dist/utils/websearch/types.js +1 -1
- package/dist/utils/websearch-manager.d.ts +5 -4
- package/dist/utils/websearch-manager.d.ts.map +1 -1
- package/dist/utils/websearch-manager.js +5 -4
- package/dist/utils/websearch-manager.js.map +1 -1
- package/dist/web-server/health/websearch-checks.d.ts +2 -2
- package/dist/web-server/health/websearch-checks.d.ts.map +1 -1
- package/dist/web-server/health/websearch-checks.js +9 -11
- package/dist/web-server/health/websearch-checks.js.map +1 -1
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
- package/dist/web-server/routes/websearch-routes.js +33 -22
- package/dist/web-server/routes/websearch-routes.js.map +1 -1
- package/lib/hooks/websearch-transformer.cjs +488 -462
- package/package.json +1 -1
- package/dist/ui/assets/index-CKpdevWy.css +0 -1
- package/dist/ui/assets/index-DRuiCZZ-.js +0 -1
|
@@ -13,154 +13,204 @@ const unified_config_loader_1 = require("../../config/unified-config-loader");
|
|
|
13
13
|
const gemini_cli_1 = require("./gemini-cli");
|
|
14
14
|
const grok_cli_1 = require("./grok-cli");
|
|
15
15
|
const opencode_cli_1 = require("./opencode-cli");
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
function
|
|
16
|
+
function hasEnvValue(name) {
|
|
17
|
+
return (process.env[name] || '').trim().length > 0;
|
|
18
|
+
}
|
|
19
|
+
function hasAnyEnvValue(names) {
|
|
20
|
+
return names.some((name) => hasEnvValue(name));
|
|
21
|
+
}
|
|
22
|
+
function getLegacyProviderStatuses() {
|
|
23
|
+
const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
|
|
20
24
|
const geminiStatus = (0, gemini_cli_1.getGeminiCliStatus)();
|
|
21
25
|
const grokStatus = (0, grok_cli_1.getGrokCliStatus)();
|
|
22
26
|
const opencodeStatus = (0, opencode_cli_1.getOpenCodeCliStatus)();
|
|
27
|
+
const geminiAuthed = geminiStatus.installed && (0, gemini_cli_1.isGeminiAuthenticated)();
|
|
23
28
|
return [
|
|
24
29
|
{
|
|
25
30
|
id: 'gemini',
|
|
31
|
+
kind: 'legacy-cli',
|
|
26
32
|
name: 'Gemini CLI',
|
|
27
33
|
command: 'gemini',
|
|
28
|
-
|
|
34
|
+
enabled: wsConfig.providers?.gemini?.enabled ?? false,
|
|
35
|
+
available: geminiAuthed,
|
|
29
36
|
version: geminiStatus.version ?? null,
|
|
30
37
|
installCommand: 'npm install -g @google/gemini-cli',
|
|
31
38
|
docsUrl: 'https://github.com/google-gemini/gemini-cli',
|
|
32
39
|
requiresApiKey: false,
|
|
33
|
-
description: '
|
|
34
|
-
|
|
40
|
+
description: 'Optional legacy LLM fallback with Google web search.',
|
|
41
|
+
detail: geminiStatus.installed
|
|
42
|
+
? geminiAuthed
|
|
43
|
+
? 'Authenticated'
|
|
44
|
+
: "Run 'gemini' to login"
|
|
45
|
+
: 'Not installed',
|
|
35
46
|
},
|
|
36
47
|
{
|
|
37
48
|
id: 'opencode',
|
|
49
|
+
kind: 'legacy-cli',
|
|
38
50
|
name: 'OpenCode',
|
|
39
51
|
command: 'opencode',
|
|
40
|
-
|
|
52
|
+
enabled: wsConfig.providers?.opencode?.enabled ?? false,
|
|
53
|
+
available: opencodeStatus.installed,
|
|
41
54
|
version: opencodeStatus.version ?? null,
|
|
42
55
|
installCommand: 'curl -fsSL https://opencode.ai/install | bash',
|
|
43
56
|
docsUrl: 'https://github.com/sst/opencode',
|
|
44
57
|
requiresApiKey: false,
|
|
45
|
-
description: '
|
|
46
|
-
|
|
58
|
+
description: 'Optional legacy LLM fallback via OpenCode.',
|
|
59
|
+
detail: opencodeStatus.installed ? 'Installed' : 'Not installed',
|
|
47
60
|
},
|
|
48
61
|
{
|
|
49
62
|
id: 'grok',
|
|
63
|
+
kind: 'legacy-cli',
|
|
50
64
|
name: 'Grok CLI',
|
|
51
65
|
command: 'grok',
|
|
52
|
-
|
|
66
|
+
enabled: wsConfig.providers?.grok?.enabled ?? false,
|
|
67
|
+
available: grokStatus.installed && hasEnvValue('GROK_API_KEY'),
|
|
53
68
|
version: grokStatus.version ?? null,
|
|
54
69
|
installCommand: 'npm install -g @vibe-kit/grok-cli',
|
|
55
70
|
docsUrl: 'https://github.com/superagent-ai/grok-cli',
|
|
56
71
|
requiresApiKey: true,
|
|
57
72
|
apiKeyEnvVar: 'GROK_API_KEY',
|
|
58
|
-
description: '
|
|
59
|
-
|
|
73
|
+
description: 'Optional legacy LLM fallback with xAI Grok.',
|
|
74
|
+
detail: grokStatus.installed
|
|
75
|
+
? hasEnvValue('GROK_API_KEY')
|
|
76
|
+
? 'Ready'
|
|
77
|
+
: 'Set GROK_API_KEY'
|
|
78
|
+
: 'Not installed',
|
|
60
79
|
},
|
|
61
80
|
];
|
|
62
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get all WebSearch providers with their current status.
|
|
84
|
+
*/
|
|
85
|
+
function getWebSearchCliProviders() {
|
|
86
|
+
const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
|
|
87
|
+
const providers = [
|
|
88
|
+
{
|
|
89
|
+
id: 'exa',
|
|
90
|
+
kind: 'backend',
|
|
91
|
+
name: 'Exa',
|
|
92
|
+
enabled: wsConfig.providers?.exa?.enabled ?? false,
|
|
93
|
+
available: (wsConfig.providers?.exa?.enabled ?? false) &&
|
|
94
|
+
hasAnyEnvValue(['EXA_API_KEY', 'CCS_WEBSEARCH_EXA_API_KEY']),
|
|
95
|
+
version: null,
|
|
96
|
+
docsUrl: 'https://docs.exa.ai/reference/search',
|
|
97
|
+
requiresApiKey: true,
|
|
98
|
+
apiKeyEnvVar: 'EXA_API_KEY',
|
|
99
|
+
description: 'API-backed search with strong relevance and content extraction.',
|
|
100
|
+
detail: hasAnyEnvValue(['EXA_API_KEY', 'CCS_WEBSEARCH_EXA_API_KEY'])
|
|
101
|
+
? `API key detected (${wsConfig.providers?.exa?.max_results ?? 5} results)`
|
|
102
|
+
: 'Set EXA_API_KEY',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'tavily',
|
|
106
|
+
kind: 'backend',
|
|
107
|
+
name: 'Tavily',
|
|
108
|
+
enabled: wsConfig.providers?.tavily?.enabled ?? false,
|
|
109
|
+
available: (wsConfig.providers?.tavily?.enabled ?? false) &&
|
|
110
|
+
hasAnyEnvValue(['TAVILY_API_KEY', 'CCS_WEBSEARCH_TAVILY_API_KEY']),
|
|
111
|
+
version: null,
|
|
112
|
+
docsUrl: 'https://docs.tavily.com/documentation/api-reference/endpoint/search',
|
|
113
|
+
requiresApiKey: true,
|
|
114
|
+
apiKeyEnvVar: 'TAVILY_API_KEY',
|
|
115
|
+
description: 'Search API optimized for agent workflows and concise web result synthesis.',
|
|
116
|
+
detail: hasAnyEnvValue(['TAVILY_API_KEY', 'CCS_WEBSEARCH_TAVILY_API_KEY'])
|
|
117
|
+
? `API key detected (${wsConfig.providers?.tavily?.max_results ?? 5} results)`
|
|
118
|
+
: 'Set TAVILY_API_KEY',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: 'duckduckgo',
|
|
122
|
+
kind: 'backend',
|
|
123
|
+
name: 'DuckDuckGo',
|
|
124
|
+
enabled: wsConfig.providers?.duckduckgo?.enabled ?? true,
|
|
125
|
+
available: wsConfig.providers?.duckduckgo?.enabled ?? true,
|
|
126
|
+
version: null,
|
|
127
|
+
docsUrl: 'https://duckduckgo.com',
|
|
128
|
+
requiresApiKey: false,
|
|
129
|
+
description: 'Default built-in HTML search backend. Zero setup.',
|
|
130
|
+
detail: `Built-in (${wsConfig.providers?.duckduckgo?.max_results ?? 5} results)`,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: 'brave',
|
|
134
|
+
kind: 'backend',
|
|
135
|
+
name: 'Brave Search',
|
|
136
|
+
enabled: wsConfig.providers?.brave?.enabled ?? false,
|
|
137
|
+
available: (wsConfig.providers?.brave?.enabled ?? false) &&
|
|
138
|
+
hasAnyEnvValue(['BRAVE_API_KEY', 'CCS_WEBSEARCH_BRAVE_API_KEY']),
|
|
139
|
+
version: null,
|
|
140
|
+
docsUrl: 'https://brave.com/search/api/',
|
|
141
|
+
requiresApiKey: true,
|
|
142
|
+
apiKeyEnvVar: 'BRAVE_API_KEY',
|
|
143
|
+
description: 'API-backed web search with cleaner result metadata.',
|
|
144
|
+
detail: hasAnyEnvValue(['BRAVE_API_KEY', 'CCS_WEBSEARCH_BRAVE_API_KEY'])
|
|
145
|
+
? `API key detected (${wsConfig.providers?.brave?.max_results ?? 5} results)`
|
|
146
|
+
: 'Set BRAVE_API_KEY',
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
return [...providers, ...getLegacyProviderStatuses()];
|
|
150
|
+
}
|
|
63
151
|
exports.getWebSearchCliProviders = getWebSearchCliProviders;
|
|
64
152
|
/**
|
|
65
|
-
* Check if any WebSearch
|
|
153
|
+
* Check if any WebSearch provider is currently ready.
|
|
66
154
|
*/
|
|
67
155
|
function hasAnyWebSearchCli() {
|
|
68
|
-
return (
|
|
156
|
+
return getWebSearchCliProviders().some((provider) => provider.enabled && provider.available);
|
|
69
157
|
}
|
|
70
158
|
exports.hasAnyWebSearchCli = hasAnyWebSearchCli;
|
|
71
159
|
/**
|
|
72
|
-
* Get
|
|
73
|
-
* Returns raw message strings (without indicator prefix) for display
|
|
160
|
+
* Get setup hints when no providers are ready.
|
|
74
161
|
*/
|
|
75
162
|
function getCliInstallHints() {
|
|
76
163
|
if (hasAnyWebSearchCli()) {
|
|
77
164
|
return [];
|
|
78
165
|
}
|
|
79
166
|
return [
|
|
80
|
-
'WebSearch:
|
|
81
|
-
'
|
|
82
|
-
'
|
|
83
|
-
'
|
|
167
|
+
'WebSearch: no ready providers',
|
|
168
|
+
' Enable DuckDuckGo in Settings > WebSearch for zero-setup search',
|
|
169
|
+
' Or export EXA_API_KEY, TAVILY_API_KEY, or BRAVE_API_KEY for API-backed search',
|
|
170
|
+
' Optional legacy fallback: npm i -g @google/gemini-cli',
|
|
84
171
|
];
|
|
85
172
|
}
|
|
86
173
|
exports.getCliInstallHints = getCliInstallHints;
|
|
87
174
|
/**
|
|
88
|
-
* Get WebSearch readiness status for display
|
|
89
|
-
*
|
|
90
|
-
* Called on third-party profile startup to inform user.
|
|
91
|
-
* Checks both installation AND authentication status for Gemini CLI.
|
|
175
|
+
* Get WebSearch readiness status for display.
|
|
92
176
|
*/
|
|
93
177
|
function getWebSearchReadiness() {
|
|
94
178
|
const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
|
|
95
|
-
|
|
179
|
+
const providers = getWebSearchCliProviders();
|
|
96
180
|
if (!wsConfig.enabled) {
|
|
97
181
|
return {
|
|
98
182
|
readiness: 'unavailable',
|
|
99
|
-
geminiCli: false,
|
|
100
|
-
geminiAuthenticated: false,
|
|
101
|
-
grokCli: false,
|
|
102
|
-
opencodeCli: false,
|
|
103
183
|
message: 'Disabled in config',
|
|
184
|
+
providers,
|
|
104
185
|
};
|
|
105
186
|
}
|
|
106
|
-
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
const grokInstalled = (0, grok_cli_1.hasGrokCli)();
|
|
110
|
-
const opencodeInstalled = (0, opencode_cli_1.hasOpenCodeCli)();
|
|
111
|
-
// Build message based on installed + authenticated CLIs
|
|
112
|
-
const readyClis = [];
|
|
113
|
-
const needsAuthClis = [];
|
|
114
|
-
// Gemini requires auth check
|
|
115
|
-
if (geminiInstalled) {
|
|
116
|
-
if (geminiAuthed) {
|
|
117
|
-
readyClis.push('Gemini');
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
needsAuthClis.push('Gemini');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Other CLIs don't require auth check (for now)
|
|
124
|
-
if (grokInstalled)
|
|
125
|
-
readyClis.push('Grok');
|
|
126
|
-
if (opencodeInstalled)
|
|
127
|
-
readyClis.push('OpenCode');
|
|
128
|
-
// Determine overall status
|
|
129
|
-
if (readyClis.length > 0) {
|
|
187
|
+
const enabledProviders = providers.filter((provider) => provider.enabled);
|
|
188
|
+
const readyProviders = enabledProviders.filter((provider) => provider.available);
|
|
189
|
+
if (readyProviders.length > 0) {
|
|
130
190
|
return {
|
|
131
191
|
readiness: 'ready',
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
grokCli: grokInstalled,
|
|
135
|
-
opencodeCli: opencodeInstalled,
|
|
136
|
-
message: `Ready (${readyClis.join(' + ')})`,
|
|
192
|
+
message: `Ready (${readyProviders.map((provider) => provider.name).join(' + ')})`,
|
|
193
|
+
providers,
|
|
137
194
|
};
|
|
138
195
|
}
|
|
139
|
-
if (
|
|
196
|
+
if (enabledProviders.length > 0) {
|
|
140
197
|
return {
|
|
141
|
-
readiness: '
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
message: `Gemini: run 'gemini' to login`,
|
|
198
|
+
readiness: 'needs_setup',
|
|
199
|
+
message: enabledProviders
|
|
200
|
+
.map((provider) => `${provider.name}: ${provider.detail}`)
|
|
201
|
+
.join(' | '),
|
|
202
|
+
providers,
|
|
147
203
|
};
|
|
148
204
|
}
|
|
149
205
|
return {
|
|
150
206
|
readiness: 'unavailable',
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
grokCli: false,
|
|
154
|
-
opencodeCli: false,
|
|
155
|
-
message: 'Install: npm i -g @google/gemini-cli',
|
|
207
|
+
message: 'Enable at least one provider in Settings > WebSearch',
|
|
208
|
+
providers,
|
|
156
209
|
};
|
|
157
210
|
}
|
|
158
211
|
exports.getWebSearchReadiness = getWebSearchReadiness;
|
|
159
212
|
/**
|
|
160
|
-
* Display WebSearch status (single line, equilibrium UX)
|
|
161
|
-
*
|
|
162
|
-
* Only call for third-party profiles.
|
|
163
|
-
* Shows detailed install hints when no CLI is installed.
|
|
213
|
+
* Display WebSearch status (single line, equilibrium UX).
|
|
164
214
|
*/
|
|
165
215
|
function displayWebSearchStatus() {
|
|
166
216
|
const status = getWebSearchReadiness();
|
|
@@ -168,22 +218,13 @@ function displayWebSearchStatus() {
|
|
|
168
218
|
case 'ready':
|
|
169
219
|
console.error((0, ui_1.ok)(`WebSearch: ${status.message}`));
|
|
170
220
|
break;
|
|
171
|
-
case '
|
|
221
|
+
case 'needs_setup':
|
|
172
222
|
console.error((0, ui_1.warn)(`WebSearch: ${status.message}`));
|
|
173
223
|
break;
|
|
174
224
|
case 'unavailable':
|
|
175
225
|
console.error((0, ui_1.fail)(`WebSearch: ${status.message}`));
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
// First line gets [i] prefix, rest are continuation (indented, no prefix)
|
|
179
|
-
for (let i = 0; i < hints.length; i++) {
|
|
180
|
-
if (i === 0) {
|
|
181
|
-
console.error((0, ui_1.info)(hints[i]));
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
console.error(hints[i]);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
226
|
+
for (const [index, hint] of getCliInstallHints().entries()) {
|
|
227
|
+
console.error(index === 0 ? (0, ui_1.info)(hint) : hint);
|
|
187
228
|
}
|
|
188
229
|
break;
|
|
189
230
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/utils/websearch/status.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,8BAA6C;AAC7C,8EAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/utils/websearch/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WebSearch Type Definitions
|
|
3
3
|
*
|
|
4
|
-
* Contains all type definitions for WebSearch
|
|
4
|
+
* Contains all type definitions for WebSearch providers and status.
|
|
5
5
|
*
|
|
6
6
|
* @module utils/websearch/types
|
|
7
7
|
*/
|
|
@@ -24,44 +24,53 @@ export type OpenCodeCliStatus = ComponentStatus;
|
|
|
24
24
|
/**
|
|
25
25
|
* WebSearch availability status for third-party profiles
|
|
26
26
|
*/
|
|
27
|
-
export type WebSearchReadiness = 'ready' | '
|
|
27
|
+
export type WebSearchReadiness = 'ready' | 'needs_setup' | 'unavailable';
|
|
28
28
|
/**
|
|
29
|
-
* WebSearch
|
|
29
|
+
* WebSearch provider identifier
|
|
30
30
|
*/
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
opencodeCli: boolean;
|
|
37
|
-
message: string;
|
|
38
|
-
}
|
|
31
|
+
export type WebSearchProviderId = 'exa' | 'tavily' | 'duckduckgo' | 'brave' | 'gemini' | 'grok' | 'opencode';
|
|
32
|
+
/**
|
|
33
|
+
* Provider execution class.
|
|
34
|
+
*/
|
|
35
|
+
export type WebSearchProviderKind = 'backend' | 'legacy-cli';
|
|
39
36
|
/**
|
|
40
|
-
* WebSearch
|
|
37
|
+
* WebSearch provider information for health checks and UI
|
|
41
38
|
*/
|
|
42
39
|
export interface WebSearchCliInfo {
|
|
43
40
|
/** Provider ID */
|
|
44
|
-
id:
|
|
41
|
+
id: WebSearchProviderId;
|
|
42
|
+
/** Backend vs legacy CLI */
|
|
43
|
+
kind: WebSearchProviderKind;
|
|
45
44
|
/** Display name */
|
|
46
45
|
name: string;
|
|
47
|
-
/**
|
|
48
|
-
command
|
|
49
|
-
/** Whether
|
|
50
|
-
|
|
51
|
-
/**
|
|
46
|
+
/** Command name for legacy providers */
|
|
47
|
+
command?: string;
|
|
48
|
+
/** Whether the provider is enabled in config */
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
/** Whether the provider is ready right now */
|
|
51
|
+
available: boolean;
|
|
52
|
+
/** CLI version if applicable */
|
|
52
53
|
version: string | null;
|
|
53
|
-
/** Install command */
|
|
54
|
-
installCommand
|
|
54
|
+
/** Install or setup command when applicable */
|
|
55
|
+
installCommand?: string;
|
|
55
56
|
/** Docs URL */
|
|
56
|
-
docsUrl
|
|
57
|
+
docsUrl?: string;
|
|
57
58
|
/** Whether this provider requires an API key */
|
|
58
59
|
requiresApiKey: boolean;
|
|
59
60
|
/** API key environment variable name */
|
|
60
61
|
apiKeyEnvVar?: string;
|
|
61
62
|
/** Brief description */
|
|
62
63
|
description: string;
|
|
63
|
-
/**
|
|
64
|
-
|
|
64
|
+
/** Summary detail shown in status UIs */
|
|
65
|
+
detail: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* WebSearch status for display
|
|
69
|
+
*/
|
|
70
|
+
export interface WebSearchStatus {
|
|
71
|
+
readiness: WebSearchReadiness;
|
|
72
|
+
message: string;
|
|
73
|
+
providers: WebSearchCliInfo[];
|
|
65
74
|
}
|
|
66
75
|
/**
|
|
67
76
|
* WebSearch provider configuration from config.yaml
|
|
@@ -70,6 +79,7 @@ export interface WebSearchProviderConfig {
|
|
|
70
79
|
enabled?: boolean;
|
|
71
80
|
model?: string;
|
|
72
81
|
timeout?: number;
|
|
82
|
+
max_results?: number;
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* WebSearch configuration from config.yaml
|
|
@@ -77,6 +87,10 @@ export interface WebSearchProviderConfig {
|
|
|
77
87
|
export interface WebSearchConfig {
|
|
78
88
|
enabled: boolean;
|
|
79
89
|
providers?: {
|
|
90
|
+
exa?: WebSearchProviderConfig;
|
|
91
|
+
tavily?: WebSearchProviderConfig;
|
|
92
|
+
duckduckgo?: WebSearchProviderConfig;
|
|
93
|
+
brave?: WebSearchProviderConfig;
|
|
80
94
|
gemini?: WebSearchProviderConfig;
|
|
81
95
|
opencode?: WebSearchProviderConfig;
|
|
82
96
|
grok?: WebSearchProviderConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,EAAE,EAAE,mBAAmB,CAAC;IACxB,4BAA4B;IAC5B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE;QACV,GAAG,CAAC,EAAE,uBAAuB,CAAC;QAC9B,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,KAAK,CAAC,EAAE,uBAAuB,CAAC;QAChC,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACnC,IAAI,CAAC,EAAE,uBAAuB,CAAC;KAChC,CAAC;CACH"}
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* WebSearch is a server-side tool executed by Anthropic's API.
|
|
5
5
|
* Third-party providers (gemini, agy, codex, qwen) don't have access.
|
|
6
|
-
* This manager installs a hook that uses
|
|
6
|
+
* This manager installs a hook that uses deterministic local search backends,
|
|
7
|
+
* with legacy AI CLI tools kept only as optional fallback.
|
|
7
8
|
*
|
|
8
9
|
* Simplified Architecture:
|
|
9
|
-
* - No MCP
|
|
10
|
-
* - Uses
|
|
11
|
-
* -
|
|
10
|
+
* - No MCP dependency for the default path
|
|
11
|
+
* - Uses real search providers first (DuckDuckGo, Brave)
|
|
12
|
+
* - Keeps Gemini/OpenCode/Grok as compatibility fallback only
|
|
12
13
|
*
|
|
13
14
|
* @module utils/websearch-manager
|
|
14
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch-manager.d.ts","sourceRoot":"","sources":["../../src/utils/websearch-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"websearch-manager.d.ts","sourceRoot":"","sources":["../../src/utils/websearch-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,YAAY,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAK9F;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAID;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
|
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
*
|
|
5
5
|
* WebSearch is a server-side tool executed by Anthropic's API.
|
|
6
6
|
* Third-party providers (gemini, agy, codex, qwen) don't have access.
|
|
7
|
-
* This manager installs a hook that uses
|
|
7
|
+
* This manager installs a hook that uses deterministic local search backends,
|
|
8
|
+
* with legacy AI CLI tools kept only as optional fallback.
|
|
8
9
|
*
|
|
9
10
|
* Simplified Architecture:
|
|
10
|
-
* - No MCP
|
|
11
|
-
* - Uses
|
|
12
|
-
* -
|
|
11
|
+
* - No MCP dependency for the default path
|
|
12
|
+
* - Uses real search providers first (DuckDuckGo, Brave)
|
|
13
|
+
* - Keeps Gemini/OpenCode/Grok as compatibility fallback only
|
|
13
14
|
*
|
|
14
15
|
* @module utils/websearch-manager
|
|
15
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch-manager.js","sourceRoot":"","sources":["../../src/utils/websearch-manager.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"websearch-manager.js","sourceRoot":"","sources":["../../src/utils/websearch-manager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAYH,oCAAoC;AACpC,qDAKgC;AAJ9B,gHAAA,kBAAkB,OAAA;AAClB,0GAAA,YAAY,OAAA;AACZ,mHAAA,qBAAqB,OAAA;AACrB,iHAAA,mBAAmB,OAAA;AAGrB,iDAAuF;AAA9E,4GAAA,gBAAgB,OAAA;AAAE,sGAAA,UAAU,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAExD,yDAIkC;AAHhC,oHAAA,oBAAoB,OAAA;AACpB,8GAAA,cAAc,OAAA;AACd,qHAAA,qBAAqB,OAAA;AAGvB,sCAAsC;AACtC,6DAMoC;AALlC,6GAAA,WAAW,OAAA;AACX,kHAAA,gBAAgB,OAAA;AAChB,wHAAA,sBAAsB,OAAA;AACtB,sHAAA,oBAAoB,OAAA;AACpB,wHAAA,sBAAsB,OAAA;AAGxB,6BAA6B;AAC7B,iDAA2D;AAAlD,+GAAA,mBAAmB,OAAA;AAE5B,2CAA2C;AAC3C,6CAM4B;AAL1B,kHAAA,wBAAwB,OAAA;AACxB,4GAAA,kBAAkB,OAAA;AAClB,4GAAA,kBAAkB,OAAA;AAClB,+GAAA,qBAAqB,OAAA;AACrB,gHAAA,sBAAsB,OAAA;AAGxB,mCAAmC;AACnC,2EAA8F;AAArF,2HAAA,kBAAkB,OAAA;AAAE,8HAAA,qBAAqB,OAAA;AAElD,uBAAuB;AACvB,2CAA4F;AAE5F;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,IAAA,+BAAmB,GAAE,CAAC;IACtB,IAAA,6BAAiB,GAAE,CAAC;IACpB,IAAA,iCAAqB,GAAE,CAAC;AAC1B,CAAC;AAJD,8CAIC;AAED,uDAAuD;AAEvD;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO,KAAK,CAAC;AACf,CAAC;AAFD,gDAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch-checks.d.ts","sourceRoot":"","sources":["../../../src/web-server/health/websearch-checks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"websearch-checks.d.ts","sourceRoot":"","sources":["../../../src/web-server/health/websearch-checks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAsClD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* WebSearch
|
|
3
|
+
* WebSearch Health Checks
|
|
4
4
|
*
|
|
5
|
-
* Check WebSearch
|
|
5
|
+
* Check WebSearch providers (real backends + legacy fallback).
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.checkWebSearchClis = void 0;
|
|
@@ -14,37 +14,35 @@ function checkWebSearchClis() {
|
|
|
14
14
|
const providers = (0, websearch_manager_1.getWebSearchCliProviders)();
|
|
15
15
|
const checks = [];
|
|
16
16
|
for (const provider of providers) {
|
|
17
|
-
if (provider.
|
|
18
|
-
const freeTag = provider.freeTier ? ' (FREE)' : '';
|
|
17
|
+
if (provider.enabled && provider.available) {
|
|
19
18
|
checks.push({
|
|
20
19
|
id: `websearch-${provider.id}`,
|
|
21
20
|
name: provider.name,
|
|
22
21
|
status: 'ok',
|
|
23
|
-
message:
|
|
22
|
+
message: provider.detail,
|
|
24
23
|
details: provider.description,
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
else {
|
|
28
|
-
const keyNote = provider.requiresApiKey ? ` (needs ${provider.apiKeyEnvVar})` : ' (FREE)';
|
|
29
27
|
checks.push({
|
|
30
28
|
id: `websearch-${provider.id}`,
|
|
31
29
|
name: provider.name,
|
|
32
30
|
status: 'info',
|
|
33
|
-
message:
|
|
31
|
+
message: provider.enabled ? provider.detail : 'Disabled',
|
|
34
32
|
fix: provider.installCommand,
|
|
35
33
|
details: provider.description,
|
|
36
34
|
});
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
|
-
// Add summary check if no providers
|
|
37
|
+
// Add summary check if no providers are ready
|
|
40
38
|
if (!(0, websearch_manager_1.hasAnyWebSearchCli)()) {
|
|
41
39
|
checks.push({
|
|
42
40
|
id: 'websearch-summary',
|
|
43
41
|
name: 'WebSearch Status',
|
|
44
42
|
status: 'warning',
|
|
45
|
-
message: 'No
|
|
46
|
-
fix: '
|
|
47
|
-
details: '
|
|
43
|
+
message: 'No ready provider',
|
|
44
|
+
fix: 'Enable DuckDuckGo or set EXA_API_KEY, TAVILY_API_KEY, or BRAVE_API_KEY',
|
|
45
|
+
details: 'Third-party profiles need a local WebSearch backend.',
|
|
48
46
|
});
|
|
49
47
|
}
|
|
50
48
|
return checks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch-checks.js","sourceRoot":"","sources":["../../../src/web-server/health/websearch-checks.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qEAA6F;AAG7F;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,SAAS,GAAG,IAAA,4CAAwB,GAAE,CAAC;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"websearch-checks.js","sourceRoot":"","sources":["../../../src/web-server/health/websearch-checks.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qEAA6F;AAG7F;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,SAAS,GAAG,IAAA,4CAAwB,GAAE,CAAC;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,aAAa,QAAQ,CAAC,EAAE,EAAE;gBAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,QAAQ,CAAC,MAAM;gBACxB,OAAO,EAAE,QAAQ,CAAC,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,aAAa,QAAQ,CAAC,EAAE,EAAE;gBAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;gBACxD,GAAG,EAAE,QAAQ,CAAC,cAAc;gBAC5B,OAAO,EAAE,QAAQ,CAAC,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC,IAAA,sCAAkB,GAAE,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,mBAAmB;YACvB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,mBAAmB;YAC5B,GAAG,EAAE,wEAAwE;YAC7E,OAAO,EAAE,sDAAsD;SAChE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAtCD,gDAsCC"}
|
|
@@ -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;AAOH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6IxB,eAAe,MAAM,CAAC"}
|