@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/browser/claude-tool-args.ts"],"names":[],"mappings":"AAmBA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendBrowserToolArgs = void 0;
|
|
4
|
+
const claude_tool_args_1 = require("../claude-tool-args");
|
|
5
|
+
const APPEND_SYSTEM_PROMPT_FLAG = '--append-system-prompt';
|
|
6
|
+
const BROWSER_STEERING_PROMPT = 'For DOM/screenshots/elements/page actions, prefer the CCS MCP Browser tool, reuse the configured running Chrome context whenever possible, and if the tool or context is unavailable, explain that clearly instead of pretending page state is available.';
|
|
7
|
+
function ensureBrowserSteeringPrompt(args) {
|
|
8
|
+
const { optionArgs, trailingArgs } = (0, claude_tool_args_1.splitArgsAtTerminator)(args);
|
|
9
|
+
if ((0, claude_tool_args_1.hasExactFlagValue)(optionArgs, APPEND_SYSTEM_PROMPT_FLAG, BROWSER_STEERING_PROMPT)) {
|
|
10
|
+
return args;
|
|
11
|
+
}
|
|
12
|
+
return [...optionArgs, APPEND_SYSTEM_PROMPT_FLAG, BROWSER_STEERING_PROMPT, ...trailingArgs];
|
|
13
|
+
}
|
|
14
|
+
function appendBrowserToolArgs(args) {
|
|
15
|
+
return ensureBrowserSteeringPrompt(args);
|
|
16
|
+
}
|
|
17
|
+
exports.appendBrowserToolArgs = appendBrowserToolArgs;
|
|
18
|
+
//# sourceMappingURL=claude-tool-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-tool-args.js","sourceRoot":"","sources":["../../../src/utils/browser/claude-tool-args.ts"],"names":[],"mappings":";;;AAAA,0DAG6B;AAE7B,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,uBAAuB,GAC3B,2PAA2P,CAAC;AAE9P,SAAS,2BAA2B,CAAC,IAAc;IACjD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAA,wCAA2B,EAAC,IAAI,CAAC,CAAC;IAEvE,IAAI,IAAA,oCAAuB,EAAC,UAAU,EAAE,yBAAyB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,GAAG,YAAY,CAAC,CAAC;AAC9F,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAc;IAClD,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,sDAEC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Utilities
|
|
3
|
+
*/
|
|
4
|
+
export { getBrowserMcpServerName, getBrowserMcpServerPath, installBrowserMcpServer, ensureBrowserMcpConfig, ensureBrowserMcp, uninstallBrowserMcpServer, removeBrowserMcpConfig, uninstallBrowserMcp, syncBrowserMcpToConfigDir, ensureBrowserMcpOrThrow, } from './mcp-installer';
|
|
5
|
+
export { appendBrowserToolArgs } from './claude-tool-args';
|
|
6
|
+
export { resolveBrowserRuntimeEnv, resolveDefaultChromeUserDataDir, resolveConfiguredBrowserProfileDir, } from './chrome-reuse';
|
|
7
|
+
export type { BrowserReuseOptions, BrowserRuntimeEnv } from './chrome-reuse';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/browser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser Utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveConfiguredBrowserProfileDir = exports.resolveDefaultChromeUserDataDir = exports.resolveBrowserRuntimeEnv = exports.appendBrowserToolArgs = exports.ensureBrowserMcpOrThrow = exports.syncBrowserMcpToConfigDir = exports.uninstallBrowserMcp = exports.removeBrowserMcpConfig = exports.uninstallBrowserMcpServer = exports.ensureBrowserMcp = exports.ensureBrowserMcpConfig = exports.installBrowserMcpServer = exports.getBrowserMcpServerPath = exports.getBrowserMcpServerName = void 0;
|
|
7
|
+
var mcp_installer_1 = require("./mcp-installer");
|
|
8
|
+
Object.defineProperty(exports, "getBrowserMcpServerName", { enumerable: true, get: function () { return mcp_installer_1.getBrowserMcpServerName; } });
|
|
9
|
+
Object.defineProperty(exports, "getBrowserMcpServerPath", { enumerable: true, get: function () { return mcp_installer_1.getBrowserMcpServerPath; } });
|
|
10
|
+
Object.defineProperty(exports, "installBrowserMcpServer", { enumerable: true, get: function () { return mcp_installer_1.installBrowserMcpServer; } });
|
|
11
|
+
Object.defineProperty(exports, "ensureBrowserMcpConfig", { enumerable: true, get: function () { return mcp_installer_1.ensureBrowserMcpConfig; } });
|
|
12
|
+
Object.defineProperty(exports, "ensureBrowserMcp", { enumerable: true, get: function () { return mcp_installer_1.ensureBrowserMcp; } });
|
|
13
|
+
Object.defineProperty(exports, "uninstallBrowserMcpServer", { enumerable: true, get: function () { return mcp_installer_1.uninstallBrowserMcpServer; } });
|
|
14
|
+
Object.defineProperty(exports, "removeBrowserMcpConfig", { enumerable: true, get: function () { return mcp_installer_1.removeBrowserMcpConfig; } });
|
|
15
|
+
Object.defineProperty(exports, "uninstallBrowserMcp", { enumerable: true, get: function () { return mcp_installer_1.uninstallBrowserMcp; } });
|
|
16
|
+
Object.defineProperty(exports, "syncBrowserMcpToConfigDir", { enumerable: true, get: function () { return mcp_installer_1.syncBrowserMcpToConfigDir; } });
|
|
17
|
+
Object.defineProperty(exports, "ensureBrowserMcpOrThrow", { enumerable: true, get: function () { return mcp_installer_1.ensureBrowserMcpOrThrow; } });
|
|
18
|
+
var claude_tool_args_1 = require("./claude-tool-args");
|
|
19
|
+
Object.defineProperty(exports, "appendBrowserToolArgs", { enumerable: true, get: function () { return claude_tool_args_1.appendBrowserToolArgs; } });
|
|
20
|
+
var chrome_reuse_1 = require("./chrome-reuse");
|
|
21
|
+
Object.defineProperty(exports, "resolveBrowserRuntimeEnv", { enumerable: true, get: function () { return chrome_reuse_1.resolveBrowserRuntimeEnv; } });
|
|
22
|
+
Object.defineProperty(exports, "resolveDefaultChromeUserDataDir", { enumerable: true, get: function () { return chrome_reuse_1.resolveDefaultChromeUserDataDir; } });
|
|
23
|
+
Object.defineProperty(exports, "resolveConfiguredBrowserProfileDir", { enumerable: true, get: function () { return chrome_reuse_1.resolveConfiguredBrowserProfileDir; } });
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/browser/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAWyB;AAVvB,wHAAA,uBAAuB,OAAA;AACvB,wHAAA,uBAAuB,OAAA;AACvB,wHAAA,uBAAuB,OAAA;AACvB,uHAAA,sBAAsB,OAAA;AACtB,iHAAA,gBAAgB,OAAA;AAChB,0HAAA,yBAAyB,OAAA;AACzB,uHAAA,sBAAsB,OAAA;AACtB,oHAAA,mBAAmB,OAAA;AACnB,0HAAA,yBAAyB,OAAA;AACzB,wHAAA,uBAAuB,OAAA;AAGzB,uDAA2D;AAAlD,yHAAA,qBAAqB,OAAA;AAE9B,+CAIwB;AAHtB,wHAAA,wBAAwB,OAAA;AACxB,+HAAA,+BAA+B,OAAA;AAC/B,kIAAA,kCAAkC,OAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser MCP installer and ~/.claude.json provisioning.
|
|
3
|
+
*/
|
|
4
|
+
export declare function getBrowserMcpServerName(): string;
|
|
5
|
+
export declare function getBrowserMcpServerPath(): string;
|
|
6
|
+
export declare function installBrowserMcpServer(): boolean;
|
|
7
|
+
export declare function ensureBrowserMcpConfig(): boolean;
|
|
8
|
+
export declare function ensureBrowserMcp(): boolean;
|
|
9
|
+
export declare function syncBrowserMcpToConfigDir(claudeConfigDir: string | undefined): boolean;
|
|
10
|
+
export declare function uninstallBrowserMcpServer(): boolean;
|
|
11
|
+
export declare function removeBrowserMcpConfig(): boolean;
|
|
12
|
+
export declare function uninstallBrowserMcp(): boolean;
|
|
13
|
+
export declare function ensureBrowserMcpOrThrow(): boolean;
|
|
14
|
+
//# sourceMappingURL=mcp-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-installer.d.ts","sourceRoot":"","sources":["../../../src/utils/browser/mcp-installer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyDH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAoJD,wBAAgB,uBAAuB,IAAI,OAAO,CA8CjD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAyDhD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAI1C;AAED,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAMtF;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAYnD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAWhD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAOjD"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser MCP installer and ~/.claude.json provisioning.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
+
if (mod && mod.__esModule) return mod;
|
|
23
|
+
var result = {};
|
|
24
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
+
__setModuleDefault(result, mod);
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ensureBrowserMcpOrThrow = exports.uninstallBrowserMcp = exports.removeBrowserMcpConfig = exports.uninstallBrowserMcpServer = exports.syncBrowserMcpToConfigDir = exports.ensureBrowserMcp = exports.ensureBrowserMcpConfig = exports.installBrowserMcpServer = exports.getBrowserMcpServerPath = exports.getBrowserMcpServerName = void 0;
|
|
30
|
+
const fs = __importStar(require("fs"));
|
|
31
|
+
const path = __importStar(require("path"));
|
|
32
|
+
const lockfile = __importStar(require("proper-lockfile"));
|
|
33
|
+
const instance_manager_1 = require("../../management/instance-manager");
|
|
34
|
+
const claude_config_path_1 = require("../claude-config-path");
|
|
35
|
+
const config_manager_1 = require("../config-manager");
|
|
36
|
+
const BROWSER_MCP_SERVER = 'ccs-browser-server.cjs';
|
|
37
|
+
const BROWSER_MCP_SERVER_NAME = 'ccs-browser';
|
|
38
|
+
function resolvePackageRoot(fromPath) {
|
|
39
|
+
let currentDir = path.dirname(fromPath);
|
|
40
|
+
while (true) {
|
|
41
|
+
if (fs.existsSync(path.join(currentDir, 'package.json'))) {
|
|
42
|
+
return currentDir;
|
|
43
|
+
}
|
|
44
|
+
const parentDir = path.dirname(currentDir);
|
|
45
|
+
if (parentDir === currentDir) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
currentDir = parentDir;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function getBrowserMcpServerEnv() {
|
|
52
|
+
const sourcePath = resolveBundledServerSourcePath();
|
|
53
|
+
if (!sourcePath) {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
const packageRoot = resolvePackageRoot(sourcePath);
|
|
57
|
+
if (!packageRoot) {
|
|
58
|
+
return {};
|
|
59
|
+
}
|
|
60
|
+
const nodeModulesPath = path.join(packageRoot, 'node_modules');
|
|
61
|
+
return fs.existsSync(nodeModulesPath) ? { NODE_PATH: nodeModulesPath } : {};
|
|
62
|
+
}
|
|
63
|
+
function getCcsMcpDir() {
|
|
64
|
+
return path.join((0, config_manager_1.getCcsDir)(), 'mcp');
|
|
65
|
+
}
|
|
66
|
+
function getBrowserMcpServerName() {
|
|
67
|
+
return BROWSER_MCP_SERVER_NAME;
|
|
68
|
+
}
|
|
69
|
+
exports.getBrowserMcpServerName = getBrowserMcpServerName;
|
|
70
|
+
function getBrowserMcpServerPath() {
|
|
71
|
+
return path.join(getCcsMcpDir(), BROWSER_MCP_SERVER);
|
|
72
|
+
}
|
|
73
|
+
exports.getBrowserMcpServerPath = getBrowserMcpServerPath;
|
|
74
|
+
function hasMatchingContents(sourcePath, destinationPath) {
|
|
75
|
+
if (!fs.existsSync(destinationPath)) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const source = fs.readFileSync(sourcePath);
|
|
79
|
+
try {
|
|
80
|
+
const destination = fs.readFileSync(destinationPath);
|
|
81
|
+
return source.equals(destination);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function getTempPath(targetPath) {
|
|
88
|
+
const suffix = `${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
89
|
+
return `${targetPath}.${suffix}.tmp`;
|
|
90
|
+
}
|
|
91
|
+
function resolveBundledServerSourcePath() {
|
|
92
|
+
const possiblePaths = [
|
|
93
|
+
path.join(__dirname, '..', '..', '..', 'lib', 'mcp', BROWSER_MCP_SERVER),
|
|
94
|
+
path.join(__dirname, '..', '..', 'lib', 'mcp', BROWSER_MCP_SERVER),
|
|
95
|
+
path.join(__dirname, '..', 'lib', 'mcp', BROWSER_MCP_SERVER),
|
|
96
|
+
];
|
|
97
|
+
for (const candidate of possiblePaths) {
|
|
98
|
+
if (fs.existsSync(candidate)) {
|
|
99
|
+
return candidate;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
function readClaudeUserConfig(configPath) {
|
|
105
|
+
if (!fs.existsSync(configPath)) {
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const raw = fs.readFileSync(configPath, 'utf8');
|
|
110
|
+
const parsed = JSON.parse(raw);
|
|
111
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return parsed;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function writeClaudeUserConfig(configPath, config) {
|
|
121
|
+
const tempPath = getTempPath(configPath);
|
|
122
|
+
const fileMode = fs.existsSync(configPath) ? fs.statSync(configPath).mode & 0o777 : 0o600;
|
|
123
|
+
try {
|
|
124
|
+
fs.writeFileSync(tempPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
|
|
125
|
+
fs.chmodSync(tempPath, fileMode);
|
|
126
|
+
fs.renameSync(tempPath, configPath);
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
if (fs.existsSync(tempPath)) {
|
|
131
|
+
fs.unlinkSync(tempPath);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function withClaudeUserConfigLock(configPath, callback) {
|
|
136
|
+
const configDir = path.dirname(configPath);
|
|
137
|
+
const lockTarget = path.join(configDir, `${path.basename(configPath)}.ccs-lock`);
|
|
138
|
+
let release;
|
|
139
|
+
if (!fs.existsSync(configDir)) {
|
|
140
|
+
fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });
|
|
141
|
+
}
|
|
142
|
+
if (!fs.existsSync(lockTarget)) {
|
|
143
|
+
fs.writeFileSync(lockTarget, '', { encoding: 'utf8', mode: 0o600 });
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
release = lockfile.lockSync(lockTarget, { stale: 10000 });
|
|
147
|
+
return callback();
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
if (release) {
|
|
151
|
+
try {
|
|
152
|
+
release();
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Best-effort release.
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function isLockUnavailableError(error) {
|
|
161
|
+
const code = error?.code;
|
|
162
|
+
return code === 'ELOCKED' || code === 'ENOTACQUIRED';
|
|
163
|
+
}
|
|
164
|
+
function removeManagedServerConfig(configPath) {
|
|
165
|
+
if (!fs.existsSync(configPath)) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
return withClaudeUserConfigLock(configPath, () => {
|
|
170
|
+
const config = readClaudeUserConfig(configPath);
|
|
171
|
+
if (config === null) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
const existingServers = config.mcpServers &&
|
|
175
|
+
typeof config.mcpServers === 'object' &&
|
|
176
|
+
!Array.isArray(config.mcpServers)
|
|
177
|
+
? { ...config.mcpServers }
|
|
178
|
+
: {};
|
|
179
|
+
if (!(BROWSER_MCP_SERVER_NAME in existingServers)) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
delete existingServers[BROWSER_MCP_SERVER_NAME];
|
|
183
|
+
const nextConfig = { ...config };
|
|
184
|
+
if (Object.keys(existingServers).length === 0) {
|
|
185
|
+
delete nextConfig.mcpServers;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
nextConfig.mcpServers = existingServers;
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
return writeClaudeUserConfig(configPath, nextConfig);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (isLockUnavailableError(error)) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function installBrowserMcpServer() {
|
|
206
|
+
const sourcePath = resolveBundledServerSourcePath();
|
|
207
|
+
if (!sourcePath) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
const mcpDir = getCcsMcpDir();
|
|
211
|
+
if (!fs.existsSync(mcpDir)) {
|
|
212
|
+
fs.mkdirSync(mcpDir, { recursive: true, mode: 0o700 });
|
|
213
|
+
}
|
|
214
|
+
const serverPath = getBrowserMcpServerPath();
|
|
215
|
+
const sourceMode = fs.statSync(sourcePath).mode & 0o777;
|
|
216
|
+
if (hasMatchingContents(sourcePath, serverPath)) {
|
|
217
|
+
if ((fs.statSync(serverPath).mode & 0o777) !== sourceMode) {
|
|
218
|
+
fs.chmodSync(serverPath, sourceMode);
|
|
219
|
+
}
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
const tempPath = getTempPath(serverPath);
|
|
223
|
+
try {
|
|
224
|
+
fs.copyFileSync(sourcePath, tempPath);
|
|
225
|
+
fs.chmodSync(tempPath, sourceMode);
|
|
226
|
+
try {
|
|
227
|
+
fs.renameSync(tempPath, serverPath);
|
|
228
|
+
}
|
|
229
|
+
catch (renameError) {
|
|
230
|
+
const errorCode = renameError.code;
|
|
231
|
+
if (errorCode !== 'EEXIST' && errorCode !== 'EPERM') {
|
|
232
|
+
throw renameError;
|
|
233
|
+
}
|
|
234
|
+
if (!hasMatchingContents(sourcePath, serverPath)) {
|
|
235
|
+
fs.copyFileSync(tempPath, serverPath);
|
|
236
|
+
fs.chmodSync(serverPath, sourceMode);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
finally {
|
|
245
|
+
if (fs.existsSync(tempPath)) {
|
|
246
|
+
fs.unlinkSync(tempPath);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
exports.installBrowserMcpServer = installBrowserMcpServer;
|
|
251
|
+
function ensureBrowserMcpConfig() {
|
|
252
|
+
const claudeUserConfigPath = (0, claude_config_path_1.getClaudeUserConfigPath)();
|
|
253
|
+
const claudeUserConfigDir = path.dirname(claudeUserConfigPath);
|
|
254
|
+
if (!fs.existsSync(claudeUserConfigDir)) {
|
|
255
|
+
fs.mkdirSync(claudeUserConfigDir, { recursive: true, mode: 0o700 });
|
|
256
|
+
}
|
|
257
|
+
const desiredServerConfig = {
|
|
258
|
+
type: 'stdio',
|
|
259
|
+
command: 'node',
|
|
260
|
+
args: [getBrowserMcpServerPath()],
|
|
261
|
+
env: getBrowserMcpServerEnv(),
|
|
262
|
+
};
|
|
263
|
+
try {
|
|
264
|
+
return withClaudeUserConfigLock(claudeUserConfigPath, () => {
|
|
265
|
+
const config = readClaudeUserConfig(claudeUserConfigPath);
|
|
266
|
+
if (config === null) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
const existingServers = config.mcpServers &&
|
|
270
|
+
typeof config.mcpServers === 'object' &&
|
|
271
|
+
!Array.isArray(config.mcpServers)
|
|
272
|
+
? config.mcpServers
|
|
273
|
+
: {};
|
|
274
|
+
const currentConfig = existingServers[BROWSER_MCP_SERVER_NAME];
|
|
275
|
+
if (typeof currentConfig === 'object' &&
|
|
276
|
+
currentConfig !== null &&
|
|
277
|
+
JSON.stringify(currentConfig) === JSON.stringify(desiredServerConfig)) {
|
|
278
|
+
return true;
|
|
279
|
+
}
|
|
280
|
+
const nextConfig = {
|
|
281
|
+
...config,
|
|
282
|
+
mcpServers: {
|
|
283
|
+
...existingServers,
|
|
284
|
+
[BROWSER_MCP_SERVER_NAME]: desiredServerConfig,
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
try {
|
|
288
|
+
writeClaudeUserConfig(claudeUserConfigPath, nextConfig);
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
if (isLockUnavailableError(error)) {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
exports.ensureBrowserMcpConfig = ensureBrowserMcpConfig;
|
|
304
|
+
function ensureBrowserMcp() {
|
|
305
|
+
const installed = installBrowserMcpServer();
|
|
306
|
+
const configured = installed && ensureBrowserMcpConfig();
|
|
307
|
+
return installed && configured;
|
|
308
|
+
}
|
|
309
|
+
exports.ensureBrowserMcp = ensureBrowserMcp;
|
|
310
|
+
function syncBrowserMcpToConfigDir(claudeConfigDir) {
|
|
311
|
+
if (!claudeConfigDir) {
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
return new instance_manager_1.InstanceManager().syncMcpServers(claudeConfigDir);
|
|
315
|
+
}
|
|
316
|
+
exports.syncBrowserMcpToConfigDir = syncBrowserMcpToConfigDir;
|
|
317
|
+
function uninstallBrowserMcpServer() {
|
|
318
|
+
const serverPath = getBrowserMcpServerPath();
|
|
319
|
+
if (!fs.existsSync(serverPath)) {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
try {
|
|
323
|
+
fs.unlinkSync(serverPath);
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.uninstallBrowserMcpServer = uninstallBrowserMcpServer;
|
|
331
|
+
function removeBrowserMcpConfig() {
|
|
332
|
+
let removed = removeManagedServerConfig((0, claude_config_path_1.getClaudeUserConfigPath)());
|
|
333
|
+
const instanceManager = new instance_manager_1.InstanceManager();
|
|
334
|
+
for (const instanceName of instanceManager.listInstances()) {
|
|
335
|
+
const instancePath = instanceManager.getInstancePath(instanceName);
|
|
336
|
+
const instanceClaudeConfigPath = path.join(instancePath, '.claude.json');
|
|
337
|
+
removed = removeManagedServerConfig(instanceClaudeConfigPath) || removed;
|
|
338
|
+
}
|
|
339
|
+
return removed;
|
|
340
|
+
}
|
|
341
|
+
exports.removeBrowserMcpConfig = removeBrowserMcpConfig;
|
|
342
|
+
function uninstallBrowserMcp() {
|
|
343
|
+
const removedConfig = removeBrowserMcpConfig();
|
|
344
|
+
const removedServer = uninstallBrowserMcpServer();
|
|
345
|
+
return removedConfig || removedServer;
|
|
346
|
+
}
|
|
347
|
+
exports.uninstallBrowserMcp = uninstallBrowserMcp;
|
|
348
|
+
function ensureBrowserMcpOrThrow() {
|
|
349
|
+
const ready = ensureBrowserMcp();
|
|
350
|
+
if (!ready) {
|
|
351
|
+
throw new Error('Browser MCP is enabled, but CCS could not prepare the local browser tool.');
|
|
352
|
+
}
|
|
353
|
+
return ready;
|
|
354
|
+
}
|
|
355
|
+
exports.ensureBrowserMcpOrThrow = ensureBrowserMcpOrThrow;
|
|
356
|
+
//# sourceMappingURL=mcp-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-installer.js","sourceRoot":"","sources":["../../../src/utils/browser/mcp-installer.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,0DAA4C;AAC5C,wEAAoE;AACpE,8DAAgE;AAChE,sDAA8C;AAE9C,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAc9C,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,UAAU,GAAG,8BAA8B,EAAE,CAAC;IACpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAS,GAAE,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAFD,0DAEC;AAED,SAAgB,uBAAuB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAFD,0DAEC;AAED,SAAS,mBAAmB,CAAC,UAAkB,EAAE,eAAuB;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB;IACrC,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,OAAO,GAAG,UAAU,IAAI,MAAM,MAAM,CAAC;AACvC,CAAC;AAED,SAAS,8BAA8B;IACrC,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC;KAC7D,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAA0B,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB,EAAE,MAAwB;IACzE,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAE1F,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3E,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAI,UAAkB,EAAE,QAAiB;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACjF,IAAI,OAAiC,CAAC;IAEtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAe,CAAC;QACxE,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;IAChE,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,cAAc,CAAC;AACvD,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAkB;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,wBAAwB,CAAC,UAAU,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,eAAe,GACnB,MAAM,CAAC,UAAU;gBACjB,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;gBACrC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC/B,CAAC,CAAC,EAAE,GAAI,MAAM,CAAC,UAAsC,EAAE;gBACvD,CAAC,CAAC,EAAE,CAAC;YAET,IAAI,CAAC,CAAC,uBAAuB,IAAI,eAAe,CAAC,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,eAAe,CAAC,uBAAuB,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAqB,EAAE,GAAG,MAAM,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,OAAO,UAAU,CAAC,UAAU,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,UAAU,GAAG,eAAe,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,uBAAuB;IACrC,MAAM,UAAU,GAAG,8BAA8B,EAAE,CAAC;IACpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;IACxD,IAAI,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC;YAC1D,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAI,WAAqC,CAAC,IAAI,CAAC;YAC9D,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBACpD,MAAM,WAAW,CAAC;YACpB,CAAC;YAED,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;gBACjD,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACtC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AA9CD,0DA8CC;AAED,SAAgB,sBAAsB;IACpC,MAAM,oBAAoB,GAAG,IAAA,4CAAuB,GAAE,CAAC;IACvD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,EAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,mBAAmB,GAA4B;QACnD,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,uBAAuB,EAAE,CAAC;QACjC,GAAG,EAAE,sBAAsB,EAAE;KAC9B,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,wBAAwB,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,eAAe,GACnB,MAAM,CAAC,UAAU;gBACjB,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;gBACrC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC/B,CAAC,CAAE,MAAM,CAAC,UAAsC;gBAChD,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,aAAa,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;YAC/D,IACE,OAAO,aAAa,KAAK,QAAQ;gBACjC,aAAa,KAAK,IAAI;gBACtB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,EACrE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAqB;gBACnC,GAAG,MAAM;gBACT,UAAU,EAAE;oBACV,GAAG,eAAe;oBAClB,CAAC,uBAAuB,CAAC,EAAE,mBAAmB;iBAC/C;aACF,CAAC;YAEF,IAAI,CAAC;gBACH,qBAAqB,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAzDD,wDAyDC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,SAAS,IAAI,sBAAsB,EAAE,CAAC;IACzD,OAAO,SAAS,IAAI,UAAU,CAAC;AACjC,CAAC;AAJD,4CAIC;AAED,SAAgB,yBAAyB,CAAC,eAAmC;IAC3E,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,kCAAe,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAC/D,CAAC;AAND,8DAMC;AAED,SAAgB,yBAAyB;IACvC,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAZD,8DAYC;AAED,SAAgB,sBAAsB;IACpC,IAAI,OAAO,GAAG,yBAAyB,CAAC,IAAA,4CAAuB,GAAE,CAAC,CAAC;IAEnE,MAAM,eAAe,GAAG,IAAI,kCAAe,EAAE,CAAC;IAC9C,KAAK,MAAM,YAAY,IAAI,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACzE,OAAO,GAAG,yBAAyB,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC;IAC3E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAXD,wDAWC;AAED,SAAgB,mBAAmB;IACjC,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;IAClD,OAAO,aAAa,IAAI,aAAa,CAAC;AACxC,CAAC;AAJD,kDAIC;AAED,SAAgB,uBAAuB;IACrC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,0DAOC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-codex-overrides.d.ts","sourceRoot":"","sources":["../../src/utils/browser-codex-overrides.ts"],"names":[],"mappings":"AAgBA,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CAOxD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildCodexBrowserMcpOverrides = exports.getCodexBrowserMcpServerName = void 0;
|
|
4
|
+
const CODEX_BROWSER_MCP_SERVER_NAME = 'ccs_browser';
|
|
5
|
+
const DEFAULT_BROWSER_TOOL_TIMEOUT_SEC = 30;
|
|
6
|
+
const PLAYWRIGHT_MCP_PACKAGE = '@playwright/mcp@0.0.70';
|
|
7
|
+
function formatTomlString(value) {
|
|
8
|
+
return JSON.stringify(value);
|
|
9
|
+
}
|
|
10
|
+
function formatTomlArray(values) {
|
|
11
|
+
return JSON.stringify(values);
|
|
12
|
+
}
|
|
13
|
+
function getNpxCommand() {
|
|
14
|
+
return process.platform === 'win32' ? 'npx.cmd' : 'npx';
|
|
15
|
+
}
|
|
16
|
+
function getCodexBrowserMcpServerName() {
|
|
17
|
+
return CODEX_BROWSER_MCP_SERVER_NAME;
|
|
18
|
+
}
|
|
19
|
+
exports.getCodexBrowserMcpServerName = getCodexBrowserMcpServerName;
|
|
20
|
+
function buildCodexBrowserMcpOverrides() {
|
|
21
|
+
return [
|
|
22
|
+
`mcp_servers.${CODEX_BROWSER_MCP_SERVER_NAME}.command=${formatTomlString(getNpxCommand())}`,
|
|
23
|
+
`mcp_servers.${CODEX_BROWSER_MCP_SERVER_NAME}.args=${formatTomlArray(['-y', PLAYWRIGHT_MCP_PACKAGE])}`,
|
|
24
|
+
`mcp_servers.${CODEX_BROWSER_MCP_SERVER_NAME}.enabled=true`,
|
|
25
|
+
`mcp_servers.${CODEX_BROWSER_MCP_SERVER_NAME}.tool_timeout_sec=${DEFAULT_BROWSER_TOOL_TIMEOUT_SEC}`,
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
exports.buildCodexBrowserMcpOverrides = buildCodexBrowserMcpOverrides;
|
|
29
|
+
//# sourceMappingURL=browser-codex-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-codex-overrides.js","sourceRoot":"","sources":["../../src/utils/browser-codex-overrides.ts"],"names":[],"mappings":";;;AAAA,MAAM,6BAA6B,GAAG,aAAa,CAAC;AACpD,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAC5C,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAExD,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,MAAgB;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED,SAAgB,4BAA4B;IAC1C,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAFD,oEAEC;AAED,SAAgB,6BAA6B;IAC3C,OAAO;QACL,eAAe,6BAA6B,YAAY,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE;QAC3F,eAAe,6BAA6B,SAAS,eAAe,CAAC,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,EAAE;QACtG,eAAe,6BAA6B,eAAe;QAC3D,eAAe,6BAA6B,qBAAqB,gCAAgC,EAAE;KACpG,CAAC;AACJ,CAAC;AAPD,sEAOC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-detector.d.ts","sourceRoot":"","sources":["../../src/utils/claude-detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-detector.d.ts","sourceRoot":"","sources":["../../src/utils/claude-detector.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAoCD;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAiE/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAevD;AA4DD,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAe5E;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,cAAc,EAAE,MAAM,GACrB,OAAO,CAET;AAED,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAwB7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,KAAK,CAI/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-spawner.d.ts","sourceRoot":"","sources":["../../src/utils/claude-spawner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"claude-spawner.d.ts","sourceRoot":"","sources":["../../src/utils/claude-spawner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;AAEH,OAAO,EAAS,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlE,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAmC/E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBjF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAyBjF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAGnE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function splitArgsAtTerminator(args: string[]): {
|
|
2
|
+
optionArgs: string[];
|
|
3
|
+
trailingArgs: string[];
|
|
4
|
+
};
|
|
5
|
+
export declare function getImmediateFlagValue(args: string[], index: number): string | null;
|
|
6
|
+
export declare function hasExactFlagValue(args: string[], flag: string, expectedValue: string): boolean;
|
|
7
|
+
//# sourceMappingURL=claude-tool-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../src/utils/claude-tool-args.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAUA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMlF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAsB9F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasExactFlagValue = exports.getImmediateFlagValue = exports.splitArgsAtTerminator = void 0;
|
|
4
|
+
function splitArgsAtTerminator(args) {
|
|
5
|
+
const terminatorIndex = args.indexOf('--');
|
|
6
|
+
if (terminatorIndex === -1) {
|
|
7
|
+
return { optionArgs: args, trailingArgs: [] };
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
optionArgs: args.slice(0, terminatorIndex),
|
|
11
|
+
trailingArgs: args.slice(terminatorIndex),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
exports.splitArgsAtTerminator = splitArgsAtTerminator;
|
|
15
|
+
function getImmediateFlagValue(args, index) {
|
|
16
|
+
const value = args[index + 1];
|
|
17
|
+
if (value === undefined || value === '--' || value.startsWith('--')) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
exports.getImmediateFlagValue = getImmediateFlagValue;
|
|
23
|
+
function hasExactFlagValue(args, flag, expectedValue) {
|
|
24
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
25
|
+
const arg = args[index];
|
|
26
|
+
if (arg === flag) {
|
|
27
|
+
const value = getImmediateFlagValue(args, index);
|
|
28
|
+
if (value === expectedValue) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (arg === `${flag}=${expectedValue}`) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (arg.startsWith(`${flag}=`) && arg.slice(flag.length + 1) === expectedValue) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
exports.hasExactFlagValue = hasExactFlagValue;
|
|
43
|
+
//# sourceMappingURL=claude-tool-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-tool-args.js","sourceRoot":"","sources":["../../src/utils/claude-tool-args.ts"],"names":[],"mappings":";;;AAAA,SAAgB,qBAAqB,CAAC,IAAc;IAIlD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;QAC1C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KAC1C,CAAC;AACJ,CAAC;AAbD,sDAaC;AAED,SAAgB,qBAAqB,CAAC,IAAc,EAAE,KAAa;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAND,sDAMC;AAED,SAAgB,iBAAiB,CAAC,IAAc,EAAE,IAAY,EAAE,aAAqB;IACnF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,aAAa,EAAE,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,8CAsBC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Claude launch argument helpers for first-class Image Analysis.
|
|
3
|
+
*
|
|
4
|
+
* Uses the same prompt injection mode as the user to avoid mixing
|
|
5
|
+
* `--append-system-prompt` and `--append-system-prompt-file` in one request.
|
|
3
6
|
*/
|
|
4
7
|
export declare function appendThirdPartyImageAnalysisToolArgs(args: string[]): string[];
|
|
5
8
|
export declare function getImageAnalysisSteeringPrompt(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/image-analysis/claude-tool-args.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/image-analysis/claude-tool-args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD"}
|