@kaitranntt/ccs 7.68.2 → 7.69.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/dist/auth/commands/create-command-env.d.ts +1 -0
  2. package/dist/auth/commands/create-command-env.d.ts.map +1 -1
  3. package/dist/ccs.js +55 -2
  4. package/dist/ccs.js.map +1 -1
  5. package/dist/channels/official-channels-runtime.d.ts +1 -0
  6. package/dist/channels/official-channels-runtime.d.ts.map +1 -1
  7. package/dist/channels/official-channels-store.d.ts +1 -0
  8. package/dist/channels/official-channels-store.d.ts.map +1 -1
  9. package/dist/cliproxy/base-config-loader.d.ts +1 -0
  10. package/dist/cliproxy/base-config-loader.d.ts.map +1 -1
  11. package/dist/cliproxy/config/env-builder.d.ts +1 -0
  12. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  13. package/dist/cliproxy/config/extended-context-config.d.ts +1 -0
  14. package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
  15. package/dist/cliproxy/config/thinking-config.d.ts +1 -0
  16. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  17. package/dist/cliproxy/executor/env-resolver.d.ts +2 -0
  18. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  19. package/dist/cliproxy/executor/env-resolver.js +2 -1
  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 +28 -1
  23. package/dist/cliproxy/executor/index.js.map +1 -1
  24. package/dist/cliproxy/model-id-normalizer.d.ts +1 -0
  25. package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -1
  26. package/dist/cliproxy/routing-strategy-http.d.ts +1 -0
  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 +0 -3
  30. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  31. package/dist/cliproxy/types.d.ts +2 -0
  32. package/dist/cliproxy/types.d.ts.map +1 -1
  33. package/dist/commands/cliproxy/catalog-subcommand.d.ts +6 -0
  34. package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
  35. package/dist/commands/cliproxy/catalog-subcommand.js +39 -1
  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 +1 -0
  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 +6 -0
  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 +2 -0
  46. package/dist/commands/cursor-command-display.d.ts.map +1 -1
  47. package/dist/commands/cursor-command-display.js +24 -3
  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 +31 -1
  51. package/dist/commands/cursor-command.js.map +1 -1
  52. package/dist/commands/update-command.d.ts +2 -0
  53. package/dist/commands/update-command.d.ts.map +1 -1
  54. package/dist/commands/update-command.js +76 -74
  55. package/dist/commands/update-command.js.map +1 -1
  56. package/dist/config/migration-manager.d.ts.map +1 -1
  57. package/dist/config/migration-manager.js +2 -1
  58. package/dist/config/migration-manager.js.map +1 -1
  59. package/dist/config/unified-config-loader.d.ts +8 -3
  60. package/dist/config/unified-config-loader.d.ts.map +1 -1
  61. package/dist/config/unified-config-loader.js +20 -7
  62. package/dist/config/unified-config-loader.js.map +1 -1
  63. package/dist/config/unified-config-types.d.ts +15 -2
  64. package/dist/config/unified-config-types.d.ts.map +1 -1
  65. package/dist/config/unified-config-types.js +8 -3
  66. package/dist/config/unified-config-types.js.map +1 -1
  67. package/dist/cursor/constants.d.ts +1 -1
  68. package/dist/cursor/constants.d.ts.map +1 -1
  69. package/dist/cursor/constants.js +1 -0
  70. package/dist/cursor/constants.js.map +1 -1
  71. package/dist/cursor/cursor-anthropic-response.d.ts +1 -0
  72. package/dist/cursor/cursor-anthropic-response.d.ts.map +1 -1
  73. package/dist/cursor/cursor-auth.d.ts +1 -0
  74. package/dist/cursor/cursor-auth.d.ts.map +1 -1
  75. package/dist/cursor/cursor-auth.js +154 -32
  76. package/dist/cursor/cursor-auth.js.map +1 -1
  77. package/dist/cursor/cursor-executor.d.ts +2 -1
  78. package/dist/cursor/cursor-executor.d.ts.map +1 -1
  79. package/dist/cursor/cursor-executor.js +295 -160
  80. package/dist/cursor/cursor-executor.js.map +1 -1
  81. package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -1
  82. package/dist/cursor/cursor-protobuf-decoder.js +1 -3
  83. package/dist/cursor/cursor-protobuf-decoder.js.map +1 -1
  84. package/dist/cursor/cursor-protobuf-schema.d.ts +12 -3
  85. package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -1
  86. package/dist/cursor/cursor-protobuf-schema.js +23 -5
  87. package/dist/cursor/cursor-protobuf-schema.js.map +1 -1
  88. package/dist/cursor/cursor-protobuf.d.ts +1 -1
  89. package/dist/cursor/cursor-protobuf.d.ts.map +1 -1
  90. package/dist/cursor/cursor-protobuf.js +2 -4
  91. package/dist/cursor/cursor-protobuf.js.map +1 -1
  92. package/dist/cursor/cursor-runtime-probe.d.ts +12 -0
  93. package/dist/cursor/cursor-runtime-probe.d.ts.map +1 -0
  94. package/dist/cursor/cursor-runtime-probe.js +220 -0
  95. package/dist/cursor/cursor-runtime-probe.js.map +1 -0
  96. package/dist/cursor/cursor-stream-parser.d.ts +10 -0
  97. package/dist/cursor/cursor-stream-parser.d.ts.map +1 -1
  98. package/dist/cursor/cursor-stream-parser.js +106 -10
  99. package/dist/cursor/cursor-stream-parser.js.map +1 -1
  100. package/dist/cursor/index.d.ts +1 -0
  101. package/dist/cursor/index.d.ts.map +1 -1
  102. package/dist/cursor/index.js +3 -1
  103. package/dist/cursor/index.js.map +1 -1
  104. package/dist/cursor/types.d.ts +6 -0
  105. package/dist/cursor/types.d.ts.map +1 -1
  106. package/dist/docker/docker-executor.d.ts +1 -0
  107. package/dist/docker/docker-executor.d.ts.map +1 -1
  108. package/dist/docker/supervisord-lifecycle.d.ts +17 -0
  109. package/dist/docker/supervisord-lifecycle.d.ts.map +1 -0
  110. package/dist/docker/supervisord-lifecycle.js +58 -0
  111. package/dist/docker/supervisord-lifecycle.js.map +1 -0
  112. package/dist/management/instance-manager.d.ts.map +1 -1
  113. package/dist/management/instance-manager.js +5 -2
  114. package/dist/management/instance-manager.js.map +1 -1
  115. package/dist/targets/claude-adapter.d.ts +6 -1
  116. package/dist/targets/claude-adapter.d.ts.map +1 -1
  117. package/dist/targets/claude-adapter.js +6 -2
  118. package/dist/targets/claude-adapter.js.map +1 -1
  119. package/dist/targets/codex-adapter.d.ts +1 -0
  120. package/dist/targets/codex-adapter.d.ts.map +1 -1
  121. package/dist/targets/codex-adapter.js +12 -8
  122. package/dist/targets/codex-adapter.js.map +1 -1
  123. package/dist/targets/droid-adapter.d.ts +3 -1
  124. package/dist/targets/droid-adapter.d.ts.map +1 -1
  125. package/dist/targets/droid-adapter.js +3 -2
  126. package/dist/targets/droid-adapter.js.map +1 -1
  127. package/dist/targets/target-adapter.d.ts +5 -0
  128. package/dist/targets/target-adapter.d.ts.map +1 -1
  129. package/dist/types/cli.d.ts +1 -0
  130. package/dist/types/cli.d.ts.map +1 -1
  131. package/dist/ui/assets/{accounts-DjL3iVZW.js → accounts-D9eEaNx9.js} +1 -1
  132. package/dist/ui/assets/{alert-dialog-Tc_D1a_B.js → alert-dialog-QyEXocpn.js} +1 -1
  133. package/dist/ui/assets/{api-CUtkvXmX.js → api-7vQe0xOg.js} +1 -1
  134. package/dist/ui/assets/{auth-section-CuKWQHC7.js → auth-section-BszF77uT.js} +1 -1
  135. package/dist/ui/assets/{backups-section-BKW2pbb9.js → backups-section-D6RgaOx1.js} +1 -1
  136. package/dist/ui/assets/{channels-DvWJMdaq.js → channels-B1vgnNJX.js} +1 -1
  137. package/dist/ui/assets/{checkbox-B0hZxMK5.js → checkbox-Dzwkj_Pg.js} +1 -1
  138. package/dist/ui/assets/{claude-extension-Dfqu-rev.js → claude-extension-CKO4bJ22.js} +1 -1
  139. package/dist/ui/assets/{cliproxy-ai-providers-BXLuuxNf.js → cliproxy-ai-providers-CmbFYVoR.js} +1 -1
  140. package/dist/ui/assets/{cliproxy-control-panel-aQ7cCc2U.js → cliproxy-control-panel-M8ZfUq3C.js} +1 -1
  141. package/dist/ui/assets/{cliproxy-C9RxW-I8.js → cliproxy-kHd-oC5W.js} +1 -1
  142. package/dist/ui/assets/{codex-aq4RI6_n.js → codex-BJ0RdMuh.js} +1 -1
  143. package/dist/ui/assets/{confirm-dialog-CpDk6eu4.js → confirm-dialog-BlSaX2gK.js} +1 -1
  144. package/dist/ui/assets/{copilot-CQRpGXvY.js → copilot-NJKZQXQ_.js} +1 -1
  145. package/dist/ui/assets/cursor-BrcDgu6X.js +1 -0
  146. package/dist/ui/assets/{droid-Cgx-yLjy.js → droid-B9u9ZB-a.js} +1 -1
  147. package/dist/ui/assets/{globalenv-section-DsNqG1yB.js → globalenv-section-DoX37DqB.js} +1 -1
  148. package/dist/ui/assets/{health-BY-O-JcA.js → health-D_gdcxnc.js} +1 -1
  149. package/dist/ui/assets/{index-DsCjnpco.js → index-BNU4Hhe_.js} +1 -1
  150. package/dist/ui/assets/{index-Cet36v1V.js → index-CTGpqIx6.js} +1 -1
  151. package/dist/ui/assets/index-Cu6e0-ev.css +1 -0
  152. package/dist/ui/assets/{index-CLGiPB3A.js → index-DFEMq3KP.js} +1 -1
  153. package/dist/ui/assets/index-DOn6k1jF.js +72 -0
  154. package/dist/ui/assets/{index-TQFuDZdB.js → index-DoVPk3vW.js} +1 -1
  155. package/dist/ui/assets/index-h08p9xL5.js +1 -0
  156. package/dist/ui/assets/{logs-D5ro-pc7.js → logs-DtH4YMt4.js} +1 -1
  157. package/dist/ui/assets/{masked-input-h0XkMSwB.js → masked-input-C2H-Ax0Z.js} +1 -1
  158. package/dist/ui/assets/{proxy-status-widget-yBdrFeb7.js → proxy-status-widget-BOrsn86w.js} +1 -1
  159. package/dist/ui/assets/{raw-json-settings-editor-panel-Cb7ZInQV.js → raw-json-settings-editor-panel-WxTn7-hS.js} +1 -1
  160. package/dist/ui/assets/{searchable-select-D4xr5xKS.js → searchable-select-1zOULoec.js} +1 -1
  161. package/dist/ui/assets/{separator-gw5BjIpP.js → separator-BCfZ54mZ.js} +1 -1
  162. package/dist/ui/assets/{shared-C-VeA1Z9.js → shared-DlTbnc9n.js} +1 -1
  163. package/dist/ui/assets/{table-Bd4isC18.js → table-Bx2cnkWN.js} +1 -1
  164. package/dist/ui/assets/{updates-DiK8I67C.js → updates-SiZKOnUD.js} +1 -1
  165. package/dist/ui/index.html +2 -2
  166. package/dist/utils/browser/chrome-reuse.d.ts +17 -0
  167. package/dist/utils/browser/chrome-reuse.d.ts.map +1 -0
  168. package/dist/utils/browser/chrome-reuse.js +194 -0
  169. package/dist/utils/browser/chrome-reuse.js.map +1 -0
  170. package/dist/utils/browser/claude-tool-args.d.ts +2 -0
  171. package/dist/utils/browser/claude-tool-args.d.ts.map +1 -0
  172. package/dist/utils/browser/claude-tool-args.js +18 -0
  173. package/dist/utils/browser/claude-tool-args.js.map +1 -0
  174. package/dist/utils/browser/index.d.ts +8 -0
  175. package/dist/utils/browser/index.d.ts.map +1 -0
  176. package/dist/utils/browser/index.js +24 -0
  177. package/dist/utils/browser/index.js.map +1 -0
  178. package/dist/utils/browser/mcp-installer.d.ts +14 -0
  179. package/dist/utils/browser/mcp-installer.d.ts.map +1 -0
  180. package/dist/utils/browser/mcp-installer.js +356 -0
  181. package/dist/utils/browser/mcp-installer.js.map +1 -0
  182. package/dist/utils/browser-codex-overrides.d.ts +3 -0
  183. package/dist/utils/browser-codex-overrides.d.ts.map +1 -0
  184. package/dist/utils/browser-codex-overrides.js +29 -0
  185. package/dist/utils/browser-codex-overrides.js.map +1 -0
  186. package/dist/utils/claude-detector.d.ts +1 -0
  187. package/dist/utils/claude-detector.d.ts.map +1 -1
  188. package/dist/utils/claude-spawner.d.ts +1 -0
  189. package/dist/utils/claude-spawner.d.ts.map +1 -1
  190. package/dist/utils/claude-tool-args.d.ts +7 -0
  191. package/dist/utils/claude-tool-args.d.ts.map +1 -0
  192. package/dist/utils/claude-tool-args.js +43 -0
  193. package/dist/utils/claude-tool-args.js.map +1 -0
  194. package/dist/utils/image-analysis/claude-tool-args.d.ts +3 -0
  195. package/dist/utils/image-analysis/claude-tool-args.d.ts.map +1 -1
  196. package/dist/utils/image-analysis/claude-tool-args.js +21 -47
  197. package/dist/utils/image-analysis/claude-tool-args.js.map +1 -1
  198. package/dist/utils/package-manager-detector.d.ts +1 -0
  199. package/dist/utils/package-manager-detector.d.ts.map +1 -1
  200. package/dist/utils/prompt-injection-strategy.d.ts +54 -0
  201. package/dist/utils/prompt-injection-strategy.d.ts.map +1 -0
  202. package/dist/utils/prompt-injection-strategy.js +128 -0
  203. package/dist/utils/prompt-injection-strategy.js.map +1 -0
  204. package/dist/utils/shell-executor.d.ts +1 -0
  205. package/dist/utils/shell-executor.d.ts.map +1 -1
  206. package/dist/utils/websearch/claude-tool-args.d.ts +7 -0
  207. package/dist/utils/websearch/claude-tool-args.d.ts.map +1 -1
  208. package/dist/utils/websearch/claude-tool-args.js +27 -50
  209. package/dist/utils/websearch/claude-tool-args.js.map +1 -1
  210. package/dist/utils/websearch/hook-env.d.ts.map +1 -1
  211. package/dist/utils/websearch/hook-env.js +19 -1
  212. package/dist/utils/websearch/hook-env.js.map +1 -1
  213. package/dist/utils/websearch/status.d.ts +1 -1
  214. package/dist/utils/websearch/status.d.ts.map +1 -1
  215. package/dist/utils/websearch/status.js +33 -12
  216. package/dist/utils/websearch/status.js.map +1 -1
  217. package/dist/utils/websearch/trace.d.ts +1 -0
  218. package/dist/utils/websearch/trace.d.ts.map +1 -1
  219. package/dist/utils/websearch/trace.js +20 -5
  220. package/dist/utils/websearch/trace.js.map +1 -1
  221. package/dist/utils/websearch/types.d.ts +12 -2
  222. package/dist/utils/websearch/types.d.ts.map +1 -1
  223. package/dist/utils/websearch/types.js +38 -0
  224. package/dist/utils/websearch/types.js.map +1 -1
  225. package/dist/web-server/health/websearch-checks.js +1 -1
  226. package/dist/web-server/health/websearch-checks.js.map +1 -1
  227. package/dist/web-server/middleware/auth-middleware.d.ts +0 -1
  228. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
  229. package/dist/web-server/routes/cliproxy-local-proxy.d.ts.map +1 -1
  230. package/dist/web-server/routes/cliproxy-local-proxy.js +26 -6
  231. package/dist/web-server/routes/cliproxy-local-proxy.js.map +1 -1
  232. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  233. package/dist/web-server/routes/cliproxy-stats-routes.js +8 -1
  234. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  235. package/dist/web-server/routes/cursor-routes.d.ts +2 -0
  236. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
  237. package/dist/web-server/routes/cursor-routes.js +44 -2
  238. package/dist/web-server/routes/cursor-routes.js.map +1 -1
  239. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
  240. package/dist/web-server/routes/websearch-routes.js +37 -0
  241. package/dist/web-server/routes/websearch-routes.js.map +1 -1
  242. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
  243. package/dist/web-server/services/cliproxy-dashboard-install-service.js +14 -0
  244. package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
  245. package/dist/web-server/services/codex-dashboard-service.d.ts +1 -0
  246. package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
  247. package/dist/web-server/services/droid-dashboard-service.d.ts +1 -0
  248. package/dist/web-server/services/droid-dashboard-service.d.ts.map +1 -1
  249. package/lib/hooks/websearch-transformer.cjs +136 -0
  250. package/lib/mcp/ccs-browser-server.cjs +877 -0
  251. package/lib/mcp/ccs-websearch-server.cjs +1 -1
  252. package/package.json +2 -1
  253. package/dist/ui/assets/cursor-BpXPf6qi.js +0 -1
  254. package/dist/ui/assets/index-BmSzf0T9.js +0 -72
  255. package/dist/ui/assets/index-DH6L6ybH.js +0 -1
  256. package/dist/ui/assets/index-teLjoh2T.css +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/browser/claude-tool-args.ts"],"names":[],"mappings":"AAmBA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendBrowserToolArgs = void 0;
4
+ const claude_tool_args_1 = require("../claude-tool-args");
5
+ const APPEND_SYSTEM_PROMPT_FLAG = '--append-system-prompt';
6
+ const BROWSER_STEERING_PROMPT = 'For DOM/screenshots/elements/page actions, prefer the CCS MCP Browser tool, reuse the configured running Chrome context whenever possible, and if the tool or context is unavailable, explain that clearly instead of pretending page state is available.';
7
+ function ensureBrowserSteeringPrompt(args) {
8
+ const { optionArgs, trailingArgs } = (0, claude_tool_args_1.splitArgsAtTerminator)(args);
9
+ if ((0, claude_tool_args_1.hasExactFlagValue)(optionArgs, APPEND_SYSTEM_PROMPT_FLAG, BROWSER_STEERING_PROMPT)) {
10
+ return args;
11
+ }
12
+ return [...optionArgs, APPEND_SYSTEM_PROMPT_FLAG, BROWSER_STEERING_PROMPT, ...trailingArgs];
13
+ }
14
+ function appendBrowserToolArgs(args) {
15
+ return ensureBrowserSteeringPrompt(args);
16
+ }
17
+ exports.appendBrowserToolArgs = appendBrowserToolArgs;
18
+ //# sourceMappingURL=claude-tool-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-tool-args.js","sourceRoot":"","sources":["../../../src/utils/browser/claude-tool-args.ts"],"names":[],"mappings":";;;AAAA,0DAG6B;AAE7B,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,uBAAuB,GAC3B,2PAA2P,CAAC;AAE9P,SAAS,2BAA2B,CAAC,IAAc;IACjD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAA,wCAA2B,EAAC,IAAI,CAAC,CAAC;IAEvE,IAAI,IAAA,oCAAuB,EAAC,UAAU,EAAE,yBAAyB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,GAAG,YAAY,CAAC,CAAC;AAC9F,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAc;IAClD,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,sDAEC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Browser Utilities
3
+ */
4
+ export { getBrowserMcpServerName, getBrowserMcpServerPath, installBrowserMcpServer, ensureBrowserMcpConfig, ensureBrowserMcp, uninstallBrowserMcpServer, removeBrowserMcpConfig, uninstallBrowserMcp, syncBrowserMcpToConfigDir, ensureBrowserMcpOrThrow, } from './mcp-installer';
5
+ export { appendBrowserToolArgs } from './claude-tool-args';
6
+ export { resolveBrowserRuntimeEnv, resolveDefaultChromeUserDataDir, resolveConfiguredBrowserProfileDir, } from './chrome-reuse';
7
+ export type { BrowserReuseOptions, BrowserRuntimeEnv } from './chrome-reuse';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/browser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Browser Utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveConfiguredBrowserProfileDir = exports.resolveDefaultChromeUserDataDir = exports.resolveBrowserRuntimeEnv = exports.appendBrowserToolArgs = exports.ensureBrowserMcpOrThrow = exports.syncBrowserMcpToConfigDir = exports.uninstallBrowserMcp = exports.removeBrowserMcpConfig = exports.uninstallBrowserMcpServer = exports.ensureBrowserMcp = exports.ensureBrowserMcpConfig = exports.installBrowserMcpServer = exports.getBrowserMcpServerPath = exports.getBrowserMcpServerName = void 0;
7
+ var mcp_installer_1 = require("./mcp-installer");
8
+ Object.defineProperty(exports, "getBrowserMcpServerName", { enumerable: true, get: function () { return mcp_installer_1.getBrowserMcpServerName; } });
9
+ Object.defineProperty(exports, "getBrowserMcpServerPath", { enumerable: true, get: function () { return mcp_installer_1.getBrowserMcpServerPath; } });
10
+ Object.defineProperty(exports, "installBrowserMcpServer", { enumerable: true, get: function () { return mcp_installer_1.installBrowserMcpServer; } });
11
+ Object.defineProperty(exports, "ensureBrowserMcpConfig", { enumerable: true, get: function () { return mcp_installer_1.ensureBrowserMcpConfig; } });
12
+ Object.defineProperty(exports, "ensureBrowserMcp", { enumerable: true, get: function () { return mcp_installer_1.ensureBrowserMcp; } });
13
+ Object.defineProperty(exports, "uninstallBrowserMcpServer", { enumerable: true, get: function () { return mcp_installer_1.uninstallBrowserMcpServer; } });
14
+ Object.defineProperty(exports, "removeBrowserMcpConfig", { enumerable: true, get: function () { return mcp_installer_1.removeBrowserMcpConfig; } });
15
+ Object.defineProperty(exports, "uninstallBrowserMcp", { enumerable: true, get: function () { return mcp_installer_1.uninstallBrowserMcp; } });
16
+ Object.defineProperty(exports, "syncBrowserMcpToConfigDir", { enumerable: true, get: function () { return mcp_installer_1.syncBrowserMcpToConfigDir; } });
17
+ Object.defineProperty(exports, "ensureBrowserMcpOrThrow", { enumerable: true, get: function () { return mcp_installer_1.ensureBrowserMcpOrThrow; } });
18
+ var claude_tool_args_1 = require("./claude-tool-args");
19
+ Object.defineProperty(exports, "appendBrowserToolArgs", { enumerable: true, get: function () { return claude_tool_args_1.appendBrowserToolArgs; } });
20
+ var chrome_reuse_1 = require("./chrome-reuse");
21
+ Object.defineProperty(exports, "resolveBrowserRuntimeEnv", { enumerable: true, get: function () { return chrome_reuse_1.resolveBrowserRuntimeEnv; } });
22
+ Object.defineProperty(exports, "resolveDefaultChromeUserDataDir", { enumerable: true, get: function () { return chrome_reuse_1.resolveDefaultChromeUserDataDir; } });
23
+ Object.defineProperty(exports, "resolveConfiguredBrowserProfileDir", { enumerable: true, get: function () { return chrome_reuse_1.resolveConfiguredBrowserProfileDir; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/browser/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAWyB;AAVvB,wHAAA,uBAAuB,OAAA;AACvB,wHAAA,uBAAuB,OAAA;AACvB,wHAAA,uBAAuB,OAAA;AACvB,uHAAA,sBAAsB,OAAA;AACtB,iHAAA,gBAAgB,OAAA;AAChB,0HAAA,yBAAyB,OAAA;AACzB,uHAAA,sBAAsB,OAAA;AACtB,oHAAA,mBAAmB,OAAA;AACnB,0HAAA,yBAAyB,OAAA;AACzB,wHAAA,uBAAuB,OAAA;AAGzB,uDAA2D;AAAlD,yHAAA,qBAAqB,OAAA;AAE9B,+CAIwB;AAHtB,wHAAA,wBAAwB,OAAA;AACxB,+HAAA,+BAA+B,OAAA;AAC/B,kIAAA,kCAAkC,OAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Browser MCP installer and ~/.claude.json provisioning.
3
+ */
4
+ export declare function getBrowserMcpServerName(): string;
5
+ export declare function getBrowserMcpServerPath(): string;
6
+ export declare function installBrowserMcpServer(): boolean;
7
+ export declare function ensureBrowserMcpConfig(): boolean;
8
+ export declare function ensureBrowserMcp(): boolean;
9
+ export declare function syncBrowserMcpToConfigDir(claudeConfigDir: string | undefined): boolean;
10
+ export declare function uninstallBrowserMcpServer(): boolean;
11
+ export declare function removeBrowserMcpConfig(): boolean;
12
+ export declare function uninstallBrowserMcp(): boolean;
13
+ export declare function ensureBrowserMcpOrThrow(): boolean;
14
+ //# sourceMappingURL=mcp-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-installer.d.ts","sourceRoot":"","sources":["../../../src/utils/browser/mcp-installer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyDH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAoJD,wBAAgB,uBAAuB,IAAI,OAAO,CA8CjD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAyDhD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAI1C;AAED,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAMtF;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAYnD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAWhD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAOjD"}
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ /**
3
+ * Browser MCP installer and ~/.claude.json provisioning.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ensureBrowserMcpOrThrow = exports.uninstallBrowserMcp = exports.removeBrowserMcpConfig = exports.uninstallBrowserMcpServer = exports.syncBrowserMcpToConfigDir = exports.ensureBrowserMcp = exports.ensureBrowserMcpConfig = exports.installBrowserMcpServer = exports.getBrowserMcpServerPath = exports.getBrowserMcpServerName = void 0;
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const lockfile = __importStar(require("proper-lockfile"));
33
+ const instance_manager_1 = require("../../management/instance-manager");
34
+ const claude_config_path_1 = require("../claude-config-path");
35
+ const config_manager_1 = require("../config-manager");
36
+ const BROWSER_MCP_SERVER = 'ccs-browser-server.cjs';
37
+ const BROWSER_MCP_SERVER_NAME = 'ccs-browser';
38
+ function resolvePackageRoot(fromPath) {
39
+ let currentDir = path.dirname(fromPath);
40
+ while (true) {
41
+ if (fs.existsSync(path.join(currentDir, 'package.json'))) {
42
+ return currentDir;
43
+ }
44
+ const parentDir = path.dirname(currentDir);
45
+ if (parentDir === currentDir) {
46
+ return null;
47
+ }
48
+ currentDir = parentDir;
49
+ }
50
+ }
51
+ function getBrowserMcpServerEnv() {
52
+ const sourcePath = resolveBundledServerSourcePath();
53
+ if (!sourcePath) {
54
+ return {};
55
+ }
56
+ const packageRoot = resolvePackageRoot(sourcePath);
57
+ if (!packageRoot) {
58
+ return {};
59
+ }
60
+ const nodeModulesPath = path.join(packageRoot, 'node_modules');
61
+ return fs.existsSync(nodeModulesPath) ? { NODE_PATH: nodeModulesPath } : {};
62
+ }
63
+ function getCcsMcpDir() {
64
+ return path.join((0, config_manager_1.getCcsDir)(), 'mcp');
65
+ }
66
+ function getBrowserMcpServerName() {
67
+ return BROWSER_MCP_SERVER_NAME;
68
+ }
69
+ exports.getBrowserMcpServerName = getBrowserMcpServerName;
70
+ function getBrowserMcpServerPath() {
71
+ return path.join(getCcsMcpDir(), BROWSER_MCP_SERVER);
72
+ }
73
+ exports.getBrowserMcpServerPath = getBrowserMcpServerPath;
74
+ function hasMatchingContents(sourcePath, destinationPath) {
75
+ if (!fs.existsSync(destinationPath)) {
76
+ return false;
77
+ }
78
+ const source = fs.readFileSync(sourcePath);
79
+ try {
80
+ const destination = fs.readFileSync(destinationPath);
81
+ return source.equals(destination);
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ function getTempPath(targetPath) {
88
+ const suffix = `${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;
89
+ return `${targetPath}.${suffix}.tmp`;
90
+ }
91
+ function resolveBundledServerSourcePath() {
92
+ const possiblePaths = [
93
+ path.join(__dirname, '..', '..', '..', 'lib', 'mcp', BROWSER_MCP_SERVER),
94
+ path.join(__dirname, '..', '..', 'lib', 'mcp', BROWSER_MCP_SERVER),
95
+ path.join(__dirname, '..', 'lib', 'mcp', BROWSER_MCP_SERVER),
96
+ ];
97
+ for (const candidate of possiblePaths) {
98
+ if (fs.existsSync(candidate)) {
99
+ return candidate;
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ function readClaudeUserConfig(configPath) {
105
+ if (!fs.existsSync(configPath)) {
106
+ return {};
107
+ }
108
+ try {
109
+ const raw = fs.readFileSync(configPath, 'utf8');
110
+ const parsed = JSON.parse(raw);
111
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
112
+ return null;
113
+ }
114
+ return parsed;
115
+ }
116
+ catch {
117
+ return null;
118
+ }
119
+ }
120
+ function writeClaudeUserConfig(configPath, config) {
121
+ const tempPath = getTempPath(configPath);
122
+ const fileMode = fs.existsSync(configPath) ? fs.statSync(configPath).mode & 0o777 : 0o600;
123
+ try {
124
+ fs.writeFileSync(tempPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
125
+ fs.chmodSync(tempPath, fileMode);
126
+ fs.renameSync(tempPath, configPath);
127
+ return true;
128
+ }
129
+ finally {
130
+ if (fs.existsSync(tempPath)) {
131
+ fs.unlinkSync(tempPath);
132
+ }
133
+ }
134
+ }
135
+ function withClaudeUserConfigLock(configPath, callback) {
136
+ const configDir = path.dirname(configPath);
137
+ const lockTarget = path.join(configDir, `${path.basename(configPath)}.ccs-lock`);
138
+ let release;
139
+ if (!fs.existsSync(configDir)) {
140
+ fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });
141
+ }
142
+ if (!fs.existsSync(lockTarget)) {
143
+ fs.writeFileSync(lockTarget, '', { encoding: 'utf8', mode: 0o600 });
144
+ }
145
+ try {
146
+ release = lockfile.lockSync(lockTarget, { stale: 10000 });
147
+ return callback();
148
+ }
149
+ finally {
150
+ if (release) {
151
+ try {
152
+ release();
153
+ }
154
+ catch {
155
+ // Best-effort release.
156
+ }
157
+ }
158
+ }
159
+ }
160
+ function isLockUnavailableError(error) {
161
+ const code = error?.code;
162
+ return code === 'ELOCKED' || code === 'ENOTACQUIRED';
163
+ }
164
+ function removeManagedServerConfig(configPath) {
165
+ if (!fs.existsSync(configPath)) {
166
+ return false;
167
+ }
168
+ try {
169
+ return withClaudeUserConfigLock(configPath, () => {
170
+ const config = readClaudeUserConfig(configPath);
171
+ if (config === null) {
172
+ return false;
173
+ }
174
+ const existingServers = config.mcpServers &&
175
+ typeof config.mcpServers === 'object' &&
176
+ !Array.isArray(config.mcpServers)
177
+ ? { ...config.mcpServers }
178
+ : {};
179
+ if (!(BROWSER_MCP_SERVER_NAME in existingServers)) {
180
+ return false;
181
+ }
182
+ delete existingServers[BROWSER_MCP_SERVER_NAME];
183
+ const nextConfig = { ...config };
184
+ if (Object.keys(existingServers).length === 0) {
185
+ delete nextConfig.mcpServers;
186
+ }
187
+ else {
188
+ nextConfig.mcpServers = existingServers;
189
+ }
190
+ try {
191
+ return writeClaudeUserConfig(configPath, nextConfig);
192
+ }
193
+ catch {
194
+ return false;
195
+ }
196
+ });
197
+ }
198
+ catch (error) {
199
+ if (isLockUnavailableError(error)) {
200
+ return false;
201
+ }
202
+ throw error;
203
+ }
204
+ }
205
+ function installBrowserMcpServer() {
206
+ const sourcePath = resolveBundledServerSourcePath();
207
+ if (!sourcePath) {
208
+ return false;
209
+ }
210
+ const mcpDir = getCcsMcpDir();
211
+ if (!fs.existsSync(mcpDir)) {
212
+ fs.mkdirSync(mcpDir, { recursive: true, mode: 0o700 });
213
+ }
214
+ const serverPath = getBrowserMcpServerPath();
215
+ const sourceMode = fs.statSync(sourcePath).mode & 0o777;
216
+ if (hasMatchingContents(sourcePath, serverPath)) {
217
+ if ((fs.statSync(serverPath).mode & 0o777) !== sourceMode) {
218
+ fs.chmodSync(serverPath, sourceMode);
219
+ }
220
+ return true;
221
+ }
222
+ const tempPath = getTempPath(serverPath);
223
+ try {
224
+ fs.copyFileSync(sourcePath, tempPath);
225
+ fs.chmodSync(tempPath, sourceMode);
226
+ try {
227
+ fs.renameSync(tempPath, serverPath);
228
+ }
229
+ catch (renameError) {
230
+ const errorCode = renameError.code;
231
+ if (errorCode !== 'EEXIST' && errorCode !== 'EPERM') {
232
+ throw renameError;
233
+ }
234
+ if (!hasMatchingContents(sourcePath, serverPath)) {
235
+ fs.copyFileSync(tempPath, serverPath);
236
+ fs.chmodSync(serverPath, sourceMode);
237
+ }
238
+ }
239
+ return true;
240
+ }
241
+ catch {
242
+ return false;
243
+ }
244
+ finally {
245
+ if (fs.existsSync(tempPath)) {
246
+ fs.unlinkSync(tempPath);
247
+ }
248
+ }
249
+ }
250
+ exports.installBrowserMcpServer = installBrowserMcpServer;
251
+ function ensureBrowserMcpConfig() {
252
+ const claudeUserConfigPath = (0, claude_config_path_1.getClaudeUserConfigPath)();
253
+ const claudeUserConfigDir = path.dirname(claudeUserConfigPath);
254
+ if (!fs.existsSync(claudeUserConfigDir)) {
255
+ fs.mkdirSync(claudeUserConfigDir, { recursive: true, mode: 0o700 });
256
+ }
257
+ const desiredServerConfig = {
258
+ type: 'stdio',
259
+ command: 'node',
260
+ args: [getBrowserMcpServerPath()],
261
+ env: getBrowserMcpServerEnv(),
262
+ };
263
+ try {
264
+ return withClaudeUserConfigLock(claudeUserConfigPath, () => {
265
+ const config = readClaudeUserConfig(claudeUserConfigPath);
266
+ if (config === null) {
267
+ return false;
268
+ }
269
+ const existingServers = config.mcpServers &&
270
+ typeof config.mcpServers === 'object' &&
271
+ !Array.isArray(config.mcpServers)
272
+ ? config.mcpServers
273
+ : {};
274
+ const currentConfig = existingServers[BROWSER_MCP_SERVER_NAME];
275
+ if (typeof currentConfig === 'object' &&
276
+ currentConfig !== null &&
277
+ JSON.stringify(currentConfig) === JSON.stringify(desiredServerConfig)) {
278
+ return true;
279
+ }
280
+ const nextConfig = {
281
+ ...config,
282
+ mcpServers: {
283
+ ...existingServers,
284
+ [BROWSER_MCP_SERVER_NAME]: desiredServerConfig,
285
+ },
286
+ };
287
+ try {
288
+ writeClaudeUserConfig(claudeUserConfigPath, nextConfig);
289
+ return true;
290
+ }
291
+ catch {
292
+ return false;
293
+ }
294
+ });
295
+ }
296
+ catch (error) {
297
+ if (isLockUnavailableError(error)) {
298
+ return false;
299
+ }
300
+ throw error;
301
+ }
302
+ }
303
+ exports.ensureBrowserMcpConfig = ensureBrowserMcpConfig;
304
+ function ensureBrowserMcp() {
305
+ const installed = installBrowserMcpServer();
306
+ const configured = installed && ensureBrowserMcpConfig();
307
+ return installed && configured;
308
+ }
309
+ exports.ensureBrowserMcp = ensureBrowserMcp;
310
+ function syncBrowserMcpToConfigDir(claudeConfigDir) {
311
+ if (!claudeConfigDir) {
312
+ return false;
313
+ }
314
+ return new instance_manager_1.InstanceManager().syncMcpServers(claudeConfigDir);
315
+ }
316
+ exports.syncBrowserMcpToConfigDir = syncBrowserMcpToConfigDir;
317
+ function uninstallBrowserMcpServer() {
318
+ const serverPath = getBrowserMcpServerPath();
319
+ if (!fs.existsSync(serverPath)) {
320
+ return false;
321
+ }
322
+ try {
323
+ fs.unlinkSync(serverPath);
324
+ return true;
325
+ }
326
+ catch {
327
+ return false;
328
+ }
329
+ }
330
+ exports.uninstallBrowserMcpServer = uninstallBrowserMcpServer;
331
+ function removeBrowserMcpConfig() {
332
+ let removed = removeManagedServerConfig((0, claude_config_path_1.getClaudeUserConfigPath)());
333
+ const instanceManager = new instance_manager_1.InstanceManager();
334
+ for (const instanceName of instanceManager.listInstances()) {
335
+ const instancePath = instanceManager.getInstancePath(instanceName);
336
+ const instanceClaudeConfigPath = path.join(instancePath, '.claude.json');
337
+ removed = removeManagedServerConfig(instanceClaudeConfigPath) || removed;
338
+ }
339
+ return removed;
340
+ }
341
+ exports.removeBrowserMcpConfig = removeBrowserMcpConfig;
342
+ function uninstallBrowserMcp() {
343
+ const removedConfig = removeBrowserMcpConfig();
344
+ const removedServer = uninstallBrowserMcpServer();
345
+ return removedConfig || removedServer;
346
+ }
347
+ exports.uninstallBrowserMcp = uninstallBrowserMcp;
348
+ function ensureBrowserMcpOrThrow() {
349
+ const ready = ensureBrowserMcp();
350
+ if (!ready) {
351
+ throw new Error('Browser MCP is enabled, but CCS could not prepare the local browser tool.');
352
+ }
353
+ return ready;
354
+ }
355
+ exports.ensureBrowserMcpOrThrow = ensureBrowserMcpOrThrow;
356
+ //# sourceMappingURL=mcp-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-installer.js","sourceRoot":"","sources":["../../../src/utils/browser/mcp-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function getCodexBrowserMcpServerName(): string;
2
+ export declare function buildCodexBrowserMcpOverrides(): string[];
3
+ //# sourceMappingURL=browser-codex-overrides.d.ts.map
@@ -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,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="bun-types" />
2
3
  import type { ClaudeCliInfo } from '../types';
3
4
  export interface ClaudeAuthStatus {
4
5
  loggedIn: boolean;
@@ -1 +1 @@
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
+ {"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"}
@@ -5,6 +5,7 @@
5
5
  * Handles Windows .cmd/.bat/.ps1 files properly.
6
6
  */
7
7
  /// <reference types="node" />
8
+ /// <reference types="bun-types" />
8
9
  /// <reference types="node" />
9
10
  import { ChildProcess, SpawnOptions } from 'child_process';
10
11
  export interface SpawnClaudeOptions {
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"claude-spawner.d.ts","sourceRoot":"","sources":["../../src/utils/claude-spawner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;AAEH,OAAO,EAAS,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlE,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAmC/E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBjF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAyBjF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAGnE"}
@@ -0,0 +1,7 @@
1
+ export declare function splitArgsAtTerminator(args: string[]): {
2
+ optionArgs: string[];
3
+ trailingArgs: string[];
4
+ };
5
+ export declare function getImmediateFlagValue(args: string[], index: number): string | null;
6
+ export declare function hasExactFlagValue(args: string[], flag: string, expectedValue: string): boolean;
7
+ //# sourceMappingURL=claude-tool-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../src/utils/claude-tool-args.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAUA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMlF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAsB9F"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasExactFlagValue = exports.getImmediateFlagValue = exports.splitArgsAtTerminator = void 0;
4
+ function splitArgsAtTerminator(args) {
5
+ const terminatorIndex = args.indexOf('--');
6
+ if (terminatorIndex === -1) {
7
+ return { optionArgs: args, trailingArgs: [] };
8
+ }
9
+ return {
10
+ optionArgs: args.slice(0, terminatorIndex),
11
+ trailingArgs: args.slice(terminatorIndex),
12
+ };
13
+ }
14
+ exports.splitArgsAtTerminator = splitArgsAtTerminator;
15
+ function getImmediateFlagValue(args, index) {
16
+ const value = args[index + 1];
17
+ if (value === undefined || value === '--' || value.startsWith('--')) {
18
+ return null;
19
+ }
20
+ return value;
21
+ }
22
+ exports.getImmediateFlagValue = getImmediateFlagValue;
23
+ function hasExactFlagValue(args, flag, expectedValue) {
24
+ for (let index = 0; index < args.length; index += 1) {
25
+ const arg = args[index];
26
+ if (arg === flag) {
27
+ const value = getImmediateFlagValue(args, index);
28
+ if (value === expectedValue) {
29
+ return true;
30
+ }
31
+ continue;
32
+ }
33
+ if (arg === `${flag}=${expectedValue}`) {
34
+ return true;
35
+ }
36
+ if (arg.startsWith(`${flag}=`) && arg.slice(flag.length + 1) === expectedValue) {
37
+ return true;
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+ exports.hasExactFlagValue = hasExactFlagValue;
43
+ //# sourceMappingURL=claude-tool-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-tool-args.js","sourceRoot":"","sources":["../../src/utils/claude-tool-args.ts"],"names":[],"mappings":";;;AAAA,SAAgB,qBAAqB,CAAC,IAAc;IAIlD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;QAC1C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KAC1C,CAAC;AACJ,CAAC;AAbD,sDAaC;AAED,SAAgB,qBAAqB,CAAC,IAAc,EAAE,KAAa;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAND,sDAMC;AAED,SAAgB,iBAAiB,CAAC,IAAc,EAAE,IAAY,EAAE,aAAqB;IACnF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,aAAa,EAAE,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,8CAsBC"}
@@ -1,5 +1,8 @@
1
1
  /**
2
2
  * Claude launch argument helpers for first-class Image Analysis.
3
+ *
4
+ * Uses the same prompt injection mode as the user to avoid mixing
5
+ * `--append-system-prompt` and `--append-system-prompt-file` in one request.
3
6
  */
4
7
  export declare function appendThirdPartyImageAnalysisToolArgs(args: string[]): string[];
5
8
  export declare function getImageAnalysisSteeringPrompt(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/image-analysis/claude-tool-args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiEH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD"}
1
+ {"version":3,"file":"claude-tool-args.d.ts","sourceRoot":"","sources":["../../../src/utils/image-analysis/claude-tool-args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD"}