@kaitranntt/ccs 5.20.0-dev.1 → 5.20.0-dev.3
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 +39 -0
- package/VERSION +1 -1
- package/dist/ccs.js +9 -1
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
- package/dist/cliproxy/cliproxy-executor.js +16 -1
- package/dist/cliproxy/cliproxy-executor.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts +33 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +105 -3
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +75 -1
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +21 -1
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/ui/assets/{accounts-C9u_5hMN.js → accounts-CZmhPg-s.js} +1 -1
- package/dist/ui/assets/{analytics-rhYf7dCl.js → analytics-BeHvdYDb.js} +1 -1
- package/dist/ui/assets/{api-C2mALfaN.js → api-BJE0UHIr.js} +1 -1
- package/dist/ui/assets/{card-tCKSF6us.js → card-CB1ifO1P.js} +1 -1
- package/dist/ui/assets/{cliproxy-DZboorru.js → cliproxy-B7L-XME_.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-BAJUGosT.js → cliproxy-control-panel-D4MuMEOJ.js} +1 -1
- package/dist/ui/assets/code-editor-DxoT483F.js +2 -0
- package/dist/ui/assets/{form-utils-DKkU3nz7.js → form-utils-CKETQmt9.js} +1 -1
- package/dist/ui/assets/{health-Dmetk5AB.js → health-Dl8j1bVN.js} +1 -1
- package/dist/ui/assets/icons-Dzu62U5U.js +1 -0
- package/dist/ui/assets/index-Arbf-zPY.js +46 -0
- package/dist/ui/assets/index-B2VhinkK.css +1 -0
- package/dist/ui/assets/{radix-ui-OFtPgiRV.js → radix-ui-Bhyw9pC9.js} +2 -2
- package/dist/ui/assets/{react-vendor-CjrBBxxX.js → react-vendor-DadlvKzT.js} +1 -1
- package/dist/ui/assets/settings-D3HNz4K7.js +1 -0
- package/dist/ui/assets/{shared-BvPeC0_D.js → shared-DiXNS0L2.js} +1 -1
- package/dist/ui/assets/{tanstack-DMWkeNzM.js → tanstack-DZ3a6J0N.js} +1 -1
- package/dist/ui/index.html +7 -7
- package/dist/utils/shell-executor.d.ts.map +1 -1
- package/dist/utils/shell-executor.js +6 -1
- package/dist/utils/shell-executor.js.map +1 -1
- package/dist/utils/websearch-manager.d.ts +197 -0
- package/dist/utils/websearch-manager.d.ts.map +1 -0
- package/dist/utils/websearch-manager.js +685 -0
- package/dist/utils/websearch-manager.js.map +1 -0
- package/dist/web-server/health-service.d.ts.map +1 -1
- package/dist/web-server/health-service.js +50 -0
- package/dist/web-server/health-service.js.map +1 -1
- package/dist/web-server/routes.d.ts.map +1 -1
- package/dist/web-server/routes.js +139 -0
- package/dist/web-server/routes.js.map +1 -1
- package/dist/web-server/shutdown.d.ts +4 -4
- package/dist/web-server/shutdown.d.ts.map +1 -1
- package/dist/web-server/shutdown.js +9 -17
- package/dist/web-server/shutdown.js.map +1 -1
- package/lib/hooks/block-websearch.cjs +75 -0
- package/lib/hooks/websearch-transformer.cjs +600 -0
- package/package.json +2 -1
- package/scripts/dev-install.sh +57 -5
- package/scripts/preinstall.js +59 -0
- package/dist/ui/assets/code-editor-CrDFOijN.js +0 -36
- package/dist/ui/assets/icons-B10F0Hep.js +0 -1
- package/dist/ui/assets/index-C_-RSvnz.css +0 -1
- package/dist/ui/assets/index-D7a1-paV.js +0 -12
- package/dist/ui/assets/settings-C6R2rtAk.js +0 -1
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.execClaude = exports.escapeShellArg = void 0;
|
|
9
9
|
const child_process_1 = require("child_process");
|
|
10
10
|
const error_manager_1 = require("./error-manager");
|
|
11
|
+
const websearch_manager_1 = require("./websearch-manager");
|
|
11
12
|
/**
|
|
12
13
|
* Escape arguments for shell execution (Windows compatibility)
|
|
13
14
|
*/
|
|
@@ -21,8 +22,12 @@ exports.escapeShellArg = escapeShellArg;
|
|
|
21
22
|
function execClaude(claudeCli, args, envVars = null) {
|
|
22
23
|
const isWindows = process.platform === 'win32';
|
|
23
24
|
const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(claudeCli);
|
|
25
|
+
// Get WebSearch hook config env vars
|
|
26
|
+
const webSearchEnv = (0, websearch_manager_1.getWebSearchHookEnv)();
|
|
24
27
|
// Prepare environment (merge with process.env if envVars provided)
|
|
25
|
-
const env = envVars
|
|
28
|
+
const env = envVars
|
|
29
|
+
? { ...process.env, ...envVars, ...webSearchEnv }
|
|
30
|
+
: { ...process.env, ...webSearchEnv };
|
|
26
31
|
let child;
|
|
27
32
|
if (needsShell) {
|
|
28
33
|
// When shell needed: concatenate into string to avoid DEP0190 warning
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-executor.js","sourceRoot":"","sources":["../../src/utils/shell-executor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAoD;AACpD,mDAA+C;
|
|
1
|
+
{"version":3,"file":"shell-executor.js","sourceRoot":"","sources":["../../src/utils/shell-executor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAoD;AACpD,mDAA+C;AAC/C,2DAA0D;AAE1D;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC;AAFD,wCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,SAAiB,EACjB,IAAc,EACd,UAAoC,IAAI;IAExC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAG,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpE,qCAAqC;IACrC,MAAM,YAAY,GAAG,IAAA,uCAAmB,GAAE,CAAC;IAE3C,mEAAmE;IACnE,MAAM,GAAG,GAAG,OAAO;QACjB,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE;QACjD,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAExC,IAAI,KAAmB,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE;YACvB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAwB,CAAC,CAAC;;YAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,4BAAY,CAAC,kBAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AA5CD,gCA4CC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSearch Manager - Manages WebSearch hook for CCS
|
|
3
|
+
*
|
|
4
|
+
* WebSearch is a server-side tool executed by Anthropic's API.
|
|
5
|
+
* Third-party providers (gemini, agy, codex, qwen) don't have access.
|
|
6
|
+
* This manager installs a hook that uses CLI tools (Gemini CLI) as fallback.
|
|
7
|
+
*
|
|
8
|
+
* Simplified Architecture:
|
|
9
|
+
* - No MCP complexity
|
|
10
|
+
* - Uses CLI tools (currently Gemini CLI)
|
|
11
|
+
* - Easy to extend for future CLI tools (opencode, etc.)
|
|
12
|
+
*
|
|
13
|
+
* @module utils/websearch-manager
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Gemini CLI installation status
|
|
17
|
+
*/
|
|
18
|
+
export interface GeminiCliStatus {
|
|
19
|
+
installed: boolean;
|
|
20
|
+
path: string | null;
|
|
21
|
+
version: string | null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if Gemini CLI is installed globally
|
|
25
|
+
*
|
|
26
|
+
* Requires global install: `npm install -g @google/gemini-cli`
|
|
27
|
+
* No npx fallback - must be in PATH
|
|
28
|
+
*
|
|
29
|
+
* @returns Gemini CLI status with path and version
|
|
30
|
+
*/
|
|
31
|
+
export declare function getGeminiCliStatus(): GeminiCliStatus;
|
|
32
|
+
/**
|
|
33
|
+
* Check if Gemini CLI is available (quick boolean check)
|
|
34
|
+
*/
|
|
35
|
+
export declare function hasGeminiCli(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Clear Gemini CLI cache (for testing or after installation)
|
|
38
|
+
*/
|
|
39
|
+
export declare function clearGeminiCliCache(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Grok CLI installation status
|
|
42
|
+
*/
|
|
43
|
+
export interface GrokCliStatus {
|
|
44
|
+
installed: boolean;
|
|
45
|
+
path: string | null;
|
|
46
|
+
version: string | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if Grok CLI is installed globally
|
|
50
|
+
*
|
|
51
|
+
* Grok CLI (grok-4-cli by lalomorales22) provides web search + X search.
|
|
52
|
+
* Requires: `npm install -g grok-cli` and XAI_API_KEY env var.
|
|
53
|
+
*
|
|
54
|
+
* @returns Grok CLI status with path and version
|
|
55
|
+
*/
|
|
56
|
+
export declare function getGrokCliStatus(): GrokCliStatus;
|
|
57
|
+
/**
|
|
58
|
+
* Check if Grok CLI is available (quick boolean check)
|
|
59
|
+
*/
|
|
60
|
+
export declare function hasGrokCli(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Clear Grok CLI cache (for testing or after installation)
|
|
63
|
+
*/
|
|
64
|
+
export declare function clearGrokCliCache(): void;
|
|
65
|
+
/**
|
|
66
|
+
* OpenCode CLI installation status
|
|
67
|
+
*/
|
|
68
|
+
export interface OpenCodeCliStatus {
|
|
69
|
+
installed: boolean;
|
|
70
|
+
path: string | null;
|
|
71
|
+
version: string | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if OpenCode CLI is installed globally
|
|
75
|
+
*
|
|
76
|
+
* OpenCode provides built-in web search via opencode/grok-code model.
|
|
77
|
+
* Install: curl -fsSL https://opencode.ai/install | bash
|
|
78
|
+
*
|
|
79
|
+
* @returns OpenCode CLI status with path and version
|
|
80
|
+
*/
|
|
81
|
+
export declare function getOpenCodeCliStatus(): OpenCodeCliStatus;
|
|
82
|
+
/**
|
|
83
|
+
* Check if OpenCode CLI is available (quick boolean check)
|
|
84
|
+
*/
|
|
85
|
+
export declare function hasOpenCodeCli(): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Clear OpenCode CLI cache (for testing or after installation)
|
|
88
|
+
*/
|
|
89
|
+
export declare function clearOpenCodeCliCache(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Clear all CLI caches
|
|
92
|
+
*/
|
|
93
|
+
export declare function clearAllCliCaches(): void;
|
|
94
|
+
/**
|
|
95
|
+
* WebSearch CLI provider information for health checks and UI
|
|
96
|
+
*/
|
|
97
|
+
export interface WebSearchCliInfo {
|
|
98
|
+
/** Provider ID */
|
|
99
|
+
id: 'gemini' | 'grok' | 'opencode';
|
|
100
|
+
/** Display name */
|
|
101
|
+
name: string;
|
|
102
|
+
/** CLI command name */
|
|
103
|
+
command: string;
|
|
104
|
+
/** Whether CLI is installed */
|
|
105
|
+
installed: boolean;
|
|
106
|
+
/** CLI version if installed */
|
|
107
|
+
version: string | null;
|
|
108
|
+
/** Install command */
|
|
109
|
+
installCommand: string;
|
|
110
|
+
/** Docs URL */
|
|
111
|
+
docsUrl: string;
|
|
112
|
+
/** Whether this provider requires an API key */
|
|
113
|
+
requiresApiKey: boolean;
|
|
114
|
+
/** API key environment variable name */
|
|
115
|
+
apiKeyEnvVar?: string;
|
|
116
|
+
/** Brief description */
|
|
117
|
+
description: string;
|
|
118
|
+
/** Free tier available? */
|
|
119
|
+
freeTier: boolean;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get all WebSearch CLI providers with their status
|
|
123
|
+
*/
|
|
124
|
+
export declare function getWebSearchCliProviders(): WebSearchCliInfo[];
|
|
125
|
+
/**
|
|
126
|
+
* Check if any WebSearch CLI is available
|
|
127
|
+
*/
|
|
128
|
+
export declare function hasAnyWebSearchCli(): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Get install hints for CLI-only users when no WebSearch CLI is installed
|
|
131
|
+
*/
|
|
132
|
+
export declare function getCliInstallHints(): string[];
|
|
133
|
+
/**
|
|
134
|
+
* Install WebSearch hook to ~/.ccs/hooks/
|
|
135
|
+
*
|
|
136
|
+
* This hook intercepts WebSearch and executes via Gemini CLI.
|
|
137
|
+
*
|
|
138
|
+
* @returns true if hook installed successfully
|
|
139
|
+
*/
|
|
140
|
+
export declare function installWebSearchHook(): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Check if WebSearch hook is installed
|
|
143
|
+
*/
|
|
144
|
+
export declare function hasWebSearchHook(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Get WebSearch hook configuration for settings.json
|
|
147
|
+
* Timeout is computed from max provider timeout in config.yaml + buffer
|
|
148
|
+
*/
|
|
149
|
+
export declare function getWebSearchHookConfig(): Record<string, unknown>;
|
|
150
|
+
/**
|
|
151
|
+
* Get environment variables for WebSearch hook configuration.
|
|
152
|
+
*
|
|
153
|
+
* Simple env vars - hook reads these to control behavior.
|
|
154
|
+
*
|
|
155
|
+
* @returns Record of environment variables to set before spawning Claude
|
|
156
|
+
*/
|
|
157
|
+
export declare function getWebSearchHookEnv(): Record<string, string>;
|
|
158
|
+
/**
|
|
159
|
+
* WebSearch availability status for third-party profiles
|
|
160
|
+
*/
|
|
161
|
+
export type WebSearchReadiness = 'ready' | 'unavailable';
|
|
162
|
+
/**
|
|
163
|
+
* WebSearch status for display
|
|
164
|
+
*/
|
|
165
|
+
export interface WebSearchStatus {
|
|
166
|
+
readiness: WebSearchReadiness;
|
|
167
|
+
geminiCli: boolean;
|
|
168
|
+
grokCli: boolean;
|
|
169
|
+
opencodeCli: boolean;
|
|
170
|
+
message: string;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get WebSearch readiness status for display
|
|
174
|
+
*
|
|
175
|
+
* Called on third-party profile startup to inform user.
|
|
176
|
+
*/
|
|
177
|
+
export declare function getWebSearchReadiness(): WebSearchStatus;
|
|
178
|
+
/**
|
|
179
|
+
* Display WebSearch status (single line, equilibrium UX)
|
|
180
|
+
*
|
|
181
|
+
* Only call for third-party profiles.
|
|
182
|
+
* Shows detailed install hints when no CLI is installed.
|
|
183
|
+
*/
|
|
184
|
+
export declare function displayWebSearchStatus(): void;
|
|
185
|
+
/**
|
|
186
|
+
* @deprecated Use installWebSearchHook instead - MCP is no longer used
|
|
187
|
+
*/
|
|
188
|
+
export declare function ensureMcpWebSearch(): boolean;
|
|
189
|
+
/**
|
|
190
|
+
* @deprecated MCP is no longer used
|
|
191
|
+
*/
|
|
192
|
+
export declare function hasMcpWebSearch(): boolean;
|
|
193
|
+
/**
|
|
194
|
+
* @deprecated MCP is no longer used
|
|
195
|
+
*/
|
|
196
|
+
export declare function getMcpConfigPath(): string;
|
|
197
|
+
//# sourceMappingURL=websearch-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websearch-manager.d.ts","sourceRoot":"","sources":["../../src/utils/websearch-manager.ts"],"names":[],"mappings":"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"}
|