@kaitranntt/ccs 7.68.1-dev.9 → 7.68.2

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.
Files changed (254) hide show
  1. package/dist/auth/commands/create-command-env.d.ts +0 -1
  2. package/dist/auth/commands/create-command-env.d.ts.map +1 -1
  3. package/dist/ccs.js +2 -55
  4. package/dist/ccs.js.map +1 -1
  5. package/dist/channels/official-channels-runtime.d.ts +0 -1
  6. package/dist/channels/official-channels-runtime.d.ts.map +1 -1
  7. package/dist/channels/official-channels-store.d.ts +0 -1
  8. package/dist/channels/official-channels-store.d.ts.map +1 -1
  9. package/dist/cliproxy/base-config-loader.d.ts +0 -1
  10. package/dist/cliproxy/base-config-loader.d.ts.map +1 -1
  11. package/dist/cliproxy/config/env-builder.d.ts +0 -1
  12. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  13. package/dist/cliproxy/config/extended-context-config.d.ts +0 -1
  14. package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
  15. package/dist/cliproxy/config/thinking-config.d.ts +0 -1
  16. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  17. package/dist/cliproxy/executor/env-resolver.d.ts +0 -2
  18. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  19. package/dist/cliproxy/executor/env-resolver.js +1 -2
  20. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  21. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  22. package/dist/cliproxy/executor/index.js +1 -28
  23. package/dist/cliproxy/executor/index.js.map +1 -1
  24. package/dist/cliproxy/model-id-normalizer.d.ts +0 -1
  25. package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -1
  26. package/dist/cliproxy/routing-strategy-http.d.ts +0 -1
  27. package/dist/cliproxy/routing-strategy-http.d.ts.map +1 -1
  28. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
  29. package/dist/cliproxy/tool-sanitization-proxy.js +3 -0
  30. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  31. package/dist/cliproxy/types.d.ts +0 -2
  32. package/dist/cliproxy/types.d.ts.map +1 -1
  33. package/dist/commands/cliproxy/catalog-subcommand.d.ts +0 -6
  34. package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
  35. package/dist/commands/cliproxy/catalog-subcommand.js +1 -39
  36. package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -1
  37. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  38. package/dist/commands/cliproxy/help-subcommand.js +0 -1
  39. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  40. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  41. package/dist/commands/cliproxy/index.js +0 -6
  42. package/dist/commands/cliproxy/index.js.map +1 -1
  43. package/dist/commands/command-catalog.d.ts +1 -1
  44. package/dist/commands/command-catalog.d.ts.map +1 -1
  45. package/dist/commands/cursor-command-display.d.ts +0 -2
  46. package/dist/commands/cursor-command-display.d.ts.map +1 -1
  47. package/dist/commands/cursor-command-display.js +3 -24
  48. package/dist/commands/cursor-command-display.js.map +1 -1
  49. package/dist/commands/cursor-command.d.ts.map +1 -1
  50. package/dist/commands/cursor-command.js +1 -31
  51. package/dist/commands/cursor-command.js.map +1 -1
  52. package/dist/config/migration-manager.d.ts.map +1 -1
  53. package/dist/config/migration-manager.js +1 -2
  54. package/dist/config/migration-manager.js.map +1 -1
  55. package/dist/config/unified-config-loader.d.ts +3 -8
  56. package/dist/config/unified-config-loader.d.ts.map +1 -1
  57. package/dist/config/unified-config-loader.js +7 -20
  58. package/dist/config/unified-config-loader.js.map +1 -1
  59. package/dist/config/unified-config-types.d.ts +2 -15
  60. package/dist/config/unified-config-types.d.ts.map +1 -1
  61. package/dist/config/unified-config-types.js +3 -8
  62. package/dist/config/unified-config-types.js.map +1 -1
  63. package/dist/cursor/constants.d.ts +1 -1
  64. package/dist/cursor/constants.d.ts.map +1 -1
  65. package/dist/cursor/constants.js +0 -1
  66. package/dist/cursor/constants.js.map +1 -1
  67. package/dist/cursor/cursor-anthropic-response.d.ts +0 -1
  68. package/dist/cursor/cursor-anthropic-response.d.ts.map +1 -1
  69. package/dist/cursor/cursor-auth.d.ts +0 -1
  70. package/dist/cursor/cursor-auth.d.ts.map +1 -1
  71. package/dist/cursor/cursor-auth.js +32 -154
  72. package/dist/cursor/cursor-auth.js.map +1 -1
  73. package/dist/cursor/cursor-executor.d.ts +1 -2
  74. package/dist/cursor/cursor-executor.d.ts.map +1 -1
  75. package/dist/cursor/cursor-executor.js +160 -295
  76. package/dist/cursor/cursor-executor.js.map +1 -1
  77. package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -1
  78. package/dist/cursor/cursor-protobuf-decoder.js +3 -1
  79. package/dist/cursor/cursor-protobuf-decoder.js.map +1 -1
  80. package/dist/cursor/cursor-protobuf-schema.d.ts +3 -12
  81. package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -1
  82. package/dist/cursor/cursor-protobuf-schema.js +5 -23
  83. package/dist/cursor/cursor-protobuf-schema.js.map +1 -1
  84. package/dist/cursor/cursor-protobuf.d.ts +1 -1
  85. package/dist/cursor/cursor-protobuf.d.ts.map +1 -1
  86. package/dist/cursor/cursor-protobuf.js +4 -2
  87. package/dist/cursor/cursor-protobuf.js.map +1 -1
  88. package/dist/cursor/cursor-stream-parser.d.ts +0 -10
  89. package/dist/cursor/cursor-stream-parser.d.ts.map +1 -1
  90. package/dist/cursor/cursor-stream-parser.js +10 -106
  91. package/dist/cursor/cursor-stream-parser.js.map +1 -1
  92. package/dist/cursor/index.d.ts +0 -1
  93. package/dist/cursor/index.d.ts.map +1 -1
  94. package/dist/cursor/index.js +1 -3
  95. package/dist/cursor/index.js.map +1 -1
  96. package/dist/cursor/types.d.ts +0 -6
  97. package/dist/cursor/types.d.ts.map +1 -1
  98. package/dist/docker/docker-executor.d.ts +0 -1
  99. package/dist/docker/docker-executor.d.ts.map +1 -1
  100. package/dist/management/instance-manager.d.ts.map +1 -1
  101. package/dist/management/instance-manager.js +2 -5
  102. package/dist/management/instance-manager.js.map +1 -1
  103. package/dist/targets/claude-adapter.d.ts +1 -6
  104. package/dist/targets/claude-adapter.d.ts.map +1 -1
  105. package/dist/targets/claude-adapter.js +2 -6
  106. package/dist/targets/claude-adapter.js.map +1 -1
  107. package/dist/targets/codex-adapter.d.ts +0 -1
  108. package/dist/targets/codex-adapter.d.ts.map +1 -1
  109. package/dist/targets/codex-adapter.js +8 -12
  110. package/dist/targets/codex-adapter.js.map +1 -1
  111. package/dist/targets/droid-adapter.d.ts +1 -3
  112. package/dist/targets/droid-adapter.d.ts.map +1 -1
  113. package/dist/targets/droid-adapter.js +2 -3
  114. package/dist/targets/droid-adapter.js.map +1 -1
  115. package/dist/targets/target-adapter.d.ts +0 -5
  116. package/dist/targets/target-adapter.d.ts.map +1 -1
  117. package/dist/types/cli.d.ts +0 -1
  118. package/dist/types/cli.d.ts.map +1 -1
  119. package/dist/ui/assets/{accounts-D9eEaNx9.js → accounts-DjL3iVZW.js} +1 -1
  120. package/dist/ui/assets/{alert-dialog-QyEXocpn.js → alert-dialog-Tc_D1a_B.js} +1 -1
  121. package/dist/ui/assets/{api-7vQe0xOg.js → api-CUtkvXmX.js} +1 -1
  122. package/dist/ui/assets/{auth-section-BszF77uT.js → auth-section-CuKWQHC7.js} +1 -1
  123. package/dist/ui/assets/{backups-section-D6RgaOx1.js → backups-section-BKW2pbb9.js} +1 -1
  124. package/dist/ui/assets/{channels-B1vgnNJX.js → channels-DvWJMdaq.js} +1 -1
  125. package/dist/ui/assets/{checkbox-Dzwkj_Pg.js → checkbox-B0hZxMK5.js} +1 -1
  126. package/dist/ui/assets/{claude-extension-CKO4bJ22.js → claude-extension-Dfqu-rev.js} +1 -1
  127. package/dist/ui/assets/{cliproxy-kHd-oC5W.js → cliproxy-C9RxW-I8.js} +1 -1
  128. package/dist/ui/assets/{cliproxy-ai-providers-CmbFYVoR.js → cliproxy-ai-providers-BXLuuxNf.js} +1 -1
  129. package/dist/ui/assets/{cliproxy-control-panel-M8ZfUq3C.js → cliproxy-control-panel-aQ7cCc2U.js} +1 -1
  130. package/dist/ui/assets/{codex-BJ0RdMuh.js → codex-aq4RI6_n.js} +1 -1
  131. package/dist/ui/assets/{confirm-dialog-BlSaX2gK.js → confirm-dialog-CpDk6eu4.js} +1 -1
  132. package/dist/ui/assets/{copilot-NJKZQXQ_.js → copilot-CQRpGXvY.js} +1 -1
  133. package/dist/ui/assets/cursor-BpXPf6qi.js +1 -0
  134. package/dist/ui/assets/{droid-B9u9ZB-a.js → droid-Cgx-yLjy.js} +1 -1
  135. package/dist/ui/assets/{globalenv-section-DoX37DqB.js → globalenv-section-DsNqG1yB.js} +1 -1
  136. package/dist/ui/assets/{health-D_gdcxnc.js → health-BY-O-JcA.js} +1 -1
  137. package/dist/ui/assets/index-BmSzf0T9.js +72 -0
  138. package/dist/ui/assets/{index-DFEMq3KP.js → index-CLGiPB3A.js} +1 -1
  139. package/dist/ui/assets/{index-CTGpqIx6.js → index-Cet36v1V.js} +1 -1
  140. package/dist/ui/assets/index-DH6L6ybH.js +1 -0
  141. package/dist/ui/assets/{index-BNU4Hhe_.js → index-DsCjnpco.js} +1 -1
  142. package/dist/ui/assets/{index-DoVPk3vW.js → index-TQFuDZdB.js} +1 -1
  143. package/dist/ui/assets/index-teLjoh2T.css +1 -0
  144. package/dist/ui/assets/{logs-DtH4YMt4.js → logs-D5ro-pc7.js} +1 -1
  145. package/dist/ui/assets/{masked-input-C2H-Ax0Z.js → masked-input-h0XkMSwB.js} +1 -1
  146. package/dist/ui/assets/{proxy-status-widget-BOrsn86w.js → proxy-status-widget-yBdrFeb7.js} +1 -1
  147. package/dist/ui/assets/{raw-json-settings-editor-panel-WxTn7-hS.js → raw-json-settings-editor-panel-Cb7ZInQV.js} +1 -1
  148. package/dist/ui/assets/{searchable-select-1zOULoec.js → searchable-select-D4xr5xKS.js} +1 -1
  149. package/dist/ui/assets/{separator-BCfZ54mZ.js → separator-gw5BjIpP.js} +1 -1
  150. package/dist/ui/assets/{shared-DlTbnc9n.js → shared-C-VeA1Z9.js} +1 -1
  151. package/dist/ui/assets/{table-Bx2cnkWN.js → table-Bd4isC18.js} +1 -1
  152. package/dist/ui/assets/{updates-SiZKOnUD.js → updates-DiK8I67C.js} +1 -1
  153. package/dist/ui/index.html +2 -2
  154. package/dist/utils/claude-detector.d.ts +0 -1
  155. package/dist/utils/claude-detector.d.ts.map +1 -1
  156. package/dist/utils/claude-spawner.d.ts +0 -1
  157. package/dist/utils/claude-spawner.d.ts.map +1 -1
  158. package/dist/utils/hooks/image-analysis-runtime-status.js +5 -5
  159. package/dist/utils/hooks/image-analysis-runtime-status.js.map +1 -1
  160. package/dist/utils/image-analysis/claude-tool-args.d.ts +0 -3
  161. package/dist/utils/image-analysis/claude-tool-args.d.ts.map +1 -1
  162. package/dist/utils/image-analysis/claude-tool-args.js +47 -21
  163. package/dist/utils/image-analysis/claude-tool-args.js.map +1 -1
  164. package/dist/utils/package-manager-detector.d.ts +0 -1
  165. package/dist/utils/package-manager-detector.d.ts.map +1 -1
  166. package/dist/utils/shell-executor.d.ts +0 -1
  167. package/dist/utils/shell-executor.d.ts.map +1 -1
  168. package/dist/utils/websearch/claude-tool-args.d.ts +0 -7
  169. package/dist/utils/websearch/claude-tool-args.d.ts.map +1 -1
  170. package/dist/utils/websearch/claude-tool-args.js +50 -27
  171. package/dist/utils/websearch/claude-tool-args.js.map +1 -1
  172. package/dist/utils/websearch/hook-env.d.ts.map +1 -1
  173. package/dist/utils/websearch/hook-env.js +1 -19
  174. package/dist/utils/websearch/hook-env.js.map +1 -1
  175. package/dist/utils/websearch/status.d.ts +1 -1
  176. package/dist/utils/websearch/status.d.ts.map +1 -1
  177. package/dist/utils/websearch/status.js +12 -33
  178. package/dist/utils/websearch/status.js.map +1 -1
  179. package/dist/utils/websearch/trace.d.ts +0 -1
  180. package/dist/utils/websearch/trace.d.ts.map +1 -1
  181. package/dist/utils/websearch/trace.js +5 -20
  182. package/dist/utils/websearch/trace.js.map +1 -1
  183. package/dist/utils/websearch/types.d.ts +2 -12
  184. package/dist/utils/websearch/types.d.ts.map +1 -1
  185. package/dist/utils/websearch/types.js +0 -38
  186. package/dist/utils/websearch/types.js.map +1 -1
  187. package/dist/web-server/health/websearch-checks.js +1 -1
  188. package/dist/web-server/health/websearch-checks.js.map +1 -1
  189. package/dist/web-server/middleware/auth-middleware.d.ts +1 -0
  190. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
  191. package/dist/web-server/routes/cliproxy-local-proxy.d.ts.map +1 -1
  192. package/dist/web-server/routes/cliproxy-local-proxy.js +6 -26
  193. package/dist/web-server/routes/cliproxy-local-proxy.js.map +1 -1
  194. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  195. package/dist/web-server/routes/cliproxy-stats-routes.js +1 -8
  196. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  197. package/dist/web-server/routes/cursor-routes.d.ts +0 -2
  198. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
  199. package/dist/web-server/routes/cursor-routes.js +2 -44
  200. package/dist/web-server/routes/cursor-routes.js.map +1 -1
  201. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
  202. package/dist/web-server/routes/websearch-routes.js +0 -37
  203. package/dist/web-server/routes/websearch-routes.js.map +1 -1
  204. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
  205. package/dist/web-server/services/cliproxy-dashboard-install-service.js +0 -14
  206. package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
  207. package/dist/web-server/services/codex-dashboard-service.d.ts +0 -1
  208. package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
  209. package/dist/web-server/services/droid-dashboard-service.d.ts +0 -1
  210. package/dist/web-server/services/droid-dashboard-service.d.ts.map +1 -1
  211. package/lib/hooks/websearch-transformer.cjs +0 -136
  212. package/lib/mcp/ccs-websearch-server.cjs +1 -1
  213. package/package.json +1 -2
  214. package/dist/cursor/cursor-runtime-probe.d.ts +0 -12
  215. package/dist/cursor/cursor-runtime-probe.d.ts.map +0 -1
  216. package/dist/cursor/cursor-runtime-probe.js +0 -220
  217. package/dist/cursor/cursor-runtime-probe.js.map +0 -1
  218. package/dist/docker/supervisord-lifecycle.d.ts +0 -17
  219. package/dist/docker/supervisord-lifecycle.d.ts.map +0 -1
  220. package/dist/docker/supervisord-lifecycle.js +0 -58
  221. package/dist/docker/supervisord-lifecycle.js.map +0 -1
  222. package/dist/ui/assets/cursor-BrcDgu6X.js +0 -1
  223. package/dist/ui/assets/index-Cu6e0-ev.css +0 -1
  224. package/dist/ui/assets/index-DOn6k1jF.js +0 -72
  225. package/dist/ui/assets/index-h08p9xL5.js +0 -1
  226. package/dist/utils/browser/chrome-reuse.d.ts +0 -17
  227. package/dist/utils/browser/chrome-reuse.d.ts.map +0 -1
  228. package/dist/utils/browser/chrome-reuse.js +0 -205
  229. package/dist/utils/browser/chrome-reuse.js.map +0 -1
  230. package/dist/utils/browser/claude-tool-args.d.ts +0 -2
  231. package/dist/utils/browser/claude-tool-args.d.ts.map +0 -1
  232. package/dist/utils/browser/claude-tool-args.js +0 -18
  233. package/dist/utils/browser/claude-tool-args.js.map +0 -1
  234. package/dist/utils/browser/index.d.ts +0 -8
  235. package/dist/utils/browser/index.d.ts.map +0 -1
  236. package/dist/utils/browser/index.js +0 -24
  237. package/dist/utils/browser/index.js.map +0 -1
  238. package/dist/utils/browser/mcp-installer.d.ts +0 -14
  239. package/dist/utils/browser/mcp-installer.d.ts.map +0 -1
  240. package/dist/utils/browser/mcp-installer.js +0 -356
  241. package/dist/utils/browser/mcp-installer.js.map +0 -1
  242. package/dist/utils/browser-codex-overrides.d.ts +0 -3
  243. package/dist/utils/browser-codex-overrides.d.ts.map +0 -1
  244. package/dist/utils/browser-codex-overrides.js +0 -29
  245. package/dist/utils/browser-codex-overrides.js.map +0 -1
  246. package/dist/utils/claude-tool-args.d.ts +0 -7
  247. package/dist/utils/claude-tool-args.d.ts.map +0 -1
  248. package/dist/utils/claude-tool-args.js +0 -43
  249. package/dist/utils/claude-tool-args.js.map +0 -1
  250. package/dist/utils/prompt-injection-strategy.d.ts +0 -54
  251. package/dist/utils/prompt-injection-strategy.d.ts.map +0 -1
  252. package/dist/utils/prompt-injection-strategy.js +0 -128
  253. package/dist/utils/prompt-injection-strategy.js.map +0 -1
  254. package/lib/mcp/ccs-browser-server.cjs +0 -877
@@ -1,356 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,3 +0,0 @@
1
- export declare function getCodexBrowserMcpServerName(): string;
2
- export declare function buildCodexBrowserMcpOverrides(): string[];
3
- //# sourceMappingURL=browser-codex-overrides.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,29 +0,0 @@
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
@@ -1 +0,0 @@
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,7 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,43 +0,0 @@
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
@@ -1 +0,0 @@
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,54 +0,0 @@
1
- /**
2
- * Shared prompt injection strategy.
3
- *
4
- * Detects which prompt injection mode the user is using and ensures CCS
5
- * always uses the SAME mode so Claude CLI never receives mixed
6
- * `--append-system-prompt` and `--append-system-prompt-file` flags.
7
- *
8
- * Rules:
9
- * - User passes `--append-system-prompt` → all CCS prompts use inline
10
- * - User passes `--append-system-prompt-file` → all CCS prompts use file
11
- * - Neither present → default to inline (`--append-system-prompt`)
12
- */
13
- export type PromptInjectionMode = 'inline' | 'file';
14
- /** `--append-system-prompt` — inline prompt text */
15
- export declare const PROMPT_FLAG_INLINE = "--append-system-prompt";
16
- /** `--append-system-prompt-file` — prompt read from file */
17
- export declare const PROMPT_FLAG_FILE = "--append-system-prompt-file";
18
- export declare function getManagedPromptFileName(promptName: string): string;
19
- export declare function getManagedPromptFilePath(promptName: string): string;
20
- export declare function hasManagedPromptFileArg(params: {
21
- args: string[];
22
- promptName: string;
23
- }): boolean;
24
- /**
25
- * Detect which prompt injection mode to use based on user-provided args.
26
- *
27
- * - `--append-system-prompt-file` found (space or `=` form) → 'file'
28
- * - `--append-system-prompt` found (space or `=` form) → 'inline'
29
- * - Neither → 'inline' (default)
30
- */
31
- export declare function detectPromptInjectionMode(args: string[]): PromptInjectionMode;
32
- /**
33
- * Build a `--append-system-prompt <text>` arg pair.
34
- */
35
- export declare function buildInlineSteeringArg(params: {
36
- promptContent: string;
37
- }): string[];
38
- /**
39
- * Build a `--append-system-prompt-file <path>` arg pair.
40
- * Writes the prompt to a temp file first.
41
- */
42
- export declare function buildFileSteeringArg(params: {
43
- promptFileName: string;
44
- promptContent: string;
45
- }): string[];
46
- /**
47
- * Build steering prompt args in the given mode.
48
- */
49
- export declare function buildSteeringArg(params: {
50
- args: string[];
51
- promptName: string;
52
- promptContent: string;
53
- }): string[];
54
- //# sourceMappingURL=prompt-injection-strategy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-injection-strategy.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-injection-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAM9D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAuB/F;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAU7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAElF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,EAAE,CAYX;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,EAAE,CAWX"}
@@ -1,128 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shared prompt injection strategy.
4
- *
5
- * Detects which prompt injection mode the user is using and ensures CCS
6
- * always uses the SAME mode so Claude CLI never receives mixed
7
- * `--append-system-prompt` and `--append-system-prompt-file` flags.
8
- *
9
- * Rules:
10
- * - User passes `--append-system-prompt` → all CCS prompts use inline
11
- * - User passes `--append-system-prompt-file` → all CCS prompts use file
12
- * - Neither present → default to inline (`--append-system-prompt`)
13
- */
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
- Object.defineProperty(o, "default", { enumerable: true, value: v });
27
- }) : function(o, v) {
28
- o["default"] = v;
29
- });
30
- var __importStar = (this && this.__importStar) || function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.buildSteeringArg = exports.buildFileSteeringArg = exports.buildInlineSteeringArg = exports.detectPromptInjectionMode = exports.hasManagedPromptFileArg = exports.getManagedPromptFilePath = exports.getManagedPromptFileName = exports.PROMPT_FLAG_FILE = exports.PROMPT_FLAG_INLINE = void 0;
39
- const fs = __importStar(require("fs"));
40
- const path = __importStar(require("path"));
41
- const config_manager_1 = require("./config-manager");
42
- /** `--append-system-prompt` — inline prompt text */
43
- exports.PROMPT_FLAG_INLINE = '--append-system-prompt';
44
- /** `--append-system-prompt-file` — prompt read from file */
45
- exports.PROMPT_FLAG_FILE = '--append-system-prompt-file';
46
- function getManagedPromptsDir() {
47
- return path.join((0, config_manager_1.getCcsDir)(), 'prompts');
48
- }
49
- function getManagedPromptFileName(promptName) {
50
- return `${promptName}.txt`;
51
- }
52
- exports.getManagedPromptFileName = getManagedPromptFileName;
53
- function getManagedPromptFilePath(promptName) {
54
- return path.join(getManagedPromptsDir(), getManagedPromptFileName(promptName));
55
- }
56
- exports.getManagedPromptFilePath = getManagedPromptFilePath;
57
- function hasManagedPromptFileArg(params) {
58
- const expectedPath = path.resolve(getManagedPromptFilePath(params.promptName));
59
- for (let index = 0; index < params.args.length; index += 1) {
60
- const arg = params.args[index];
61
- if (arg === exports.PROMPT_FLAG_FILE) {
62
- const filePath = params.args[index + 1];
63
- if (filePath && path.resolve(filePath) === expectedPath) {
64
- return true;
65
- }
66
- continue;
67
- }
68
- if (arg.startsWith(`${exports.PROMPT_FLAG_FILE}=`) &&
69
- path.resolve(arg.slice(exports.PROMPT_FLAG_FILE.length + 1)) === expectedPath) {
70
- return true;
71
- }
72
- }
73
- return false;
74
- }
75
- exports.hasManagedPromptFileArg = hasManagedPromptFileArg;
76
- /**
77
- * Detect which prompt injection mode to use based on user-provided args.
78
- *
79
- * - `--append-system-prompt-file` found (space or `=` form) → 'file'
80
- * - `--append-system-prompt` found (space or `=` form) → 'inline'
81
- * - Neither → 'inline' (default)
82
- */
83
- function detectPromptInjectionMode(args) {
84
- for (let i = 0; i < args.length; i += 1) {
85
- const arg = args[i];
86
- if (arg === exports.PROMPT_FLAG_FILE || arg.startsWith(`${exports.PROMPT_FLAG_FILE}=`)) {
87
- return 'file';
88
- }
89
- }
90
- return 'inline';
91
- }
92
- exports.detectPromptInjectionMode = detectPromptInjectionMode;
93
- /**
94
- * Build a `--append-system-prompt <text>` arg pair.
95
- */
96
- function buildInlineSteeringArg(params) {
97
- return [exports.PROMPT_FLAG_INLINE, params.promptContent];
98
- }
99
- exports.buildInlineSteeringArg = buildInlineSteeringArg;
100
- /**
101
- * Build a `--append-system-prompt-file <path>` arg pair.
102
- * Writes the prompt to a temp file first.
103
- */
104
- function buildFileSteeringArg(params) {
105
- const promptsFolder = getManagedPromptsDir();
106
- if (!fs.existsSync(promptsFolder)) {
107
- fs.mkdirSync(promptsFolder, { recursive: true });
108
- }
109
- const promptFile = path.join(promptsFolder, params.promptFileName);
110
- fs.writeFileSync(promptFile, params.promptContent);
111
- return [exports.PROMPT_FLAG_FILE, promptFile];
112
- }
113
- exports.buildFileSteeringArg = buildFileSteeringArg;
114
- /**
115
- * Build steering prompt args in the given mode.
116
- */
117
- function buildSteeringArg(params) {
118
- const mode = detectPromptInjectionMode(params.args);
119
- if (mode === 'file') {
120
- return buildFileSteeringArg({
121
- promptFileName: getManagedPromptFileName(params.promptName),
122
- promptContent: params.promptContent,
123
- });
124
- }
125
- return buildInlineSteeringArg({ promptContent: params.promptContent });
126
- }
127
- exports.buildSteeringArg = buildSteeringArg;
128
- //# sourceMappingURL=prompt-injection-strategy.js.map