@kaitranntt/ccs 7.68.1-dev.6 → 7.68.1-dev.8
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/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/cursor/cursor-anthropic-response.d.ts +1 -0
- package/dist/cursor/cursor-anthropic-response.d.ts.map +1 -1
- package/dist/cursor/cursor-executor.d.ts +1 -0
- package/dist/cursor/cursor-executor.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/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/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 +205 -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.map +1 -1
- package/dist/utils/image-analysis/claude-tool-args.js +3 -38
- 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/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.map +1 -1
- package/dist/utils/websearch/claude-tool-args.js +6 -41
- package/dist/utils/websearch/claude-tool-args.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/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/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/mcp/ccs-browser-server.cjs +877 -0
- package/package.json +2 -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":"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"}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/image-analysis/claude-tool-args.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/image-analysis/claude-tool-args.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4BH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD"}
|