@kaitranntt/ccs 7.65.3 → 7.66.0-dev.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 (245) hide show
  1. package/README.md +88 -750
  2. package/dist/api/services/profile-lifecycle-service.d.ts.map +1 -1
  3. package/dist/api/services/profile-lifecycle-service.js +4 -0
  4. package/dist/api/services/profile-lifecycle-service.js.map +1 -1
  5. package/dist/api/services/profile-writer.d.ts.map +1 -1
  6. package/dist/api/services/profile-writer.js +3 -0
  7. package/dist/api/services/profile-writer.js.map +1 -1
  8. package/dist/auth/auth-commands.d.ts +1 -0
  9. package/dist/auth/auth-commands.d.ts.map +1 -1
  10. package/dist/auth/auth-commands.js +11 -0
  11. package/dist/auth/auth-commands.js.map +1 -1
  12. package/dist/auth/commands/backup-command.d.ts +3 -0
  13. package/dist/auth/commands/backup-command.d.ts.map +1 -0
  14. package/dist/auth/commands/backup-command.js +126 -0
  15. package/dist/auth/commands/backup-command.js.map +1 -0
  16. package/dist/auth/commands/index.d.ts +1 -0
  17. package/dist/auth/commands/index.d.ts.map +1 -1
  18. package/dist/auth/commands/index.js +3 -1
  19. package/dist/auth/commands/index.js.map +1 -1
  20. package/dist/auth/profile-continuity-inheritance.d.ts +1 -0
  21. package/dist/auth/profile-continuity-inheritance.d.ts.map +1 -1
  22. package/dist/auth/profile-continuity-inheritance.js +10 -6
  23. package/dist/auth/profile-continuity-inheritance.js.map +1 -1
  24. package/dist/auth/profile-detector.d.ts +9 -1
  25. package/dist/auth/profile-detector.d.ts.map +1 -1
  26. package/dist/auth/profile-detector.js +35 -0
  27. package/dist/auth/profile-detector.js.map +1 -1
  28. package/dist/auth/resume-lane-diagnostics.d.ts +21 -0
  29. package/dist/auth/resume-lane-diagnostics.d.ts.map +1 -0
  30. package/dist/auth/resume-lane-diagnostics.js +146 -0
  31. package/dist/auth/resume-lane-diagnostics.js.map +1 -0
  32. package/dist/auth/resume-lane-warning.d.ts +9 -0
  33. package/dist/auth/resume-lane-warning.d.ts.map +1 -0
  34. package/dist/auth/resume-lane-warning.js +60 -0
  35. package/dist/auth/resume-lane-warning.js.map +1 -0
  36. package/dist/ccs.js +82 -7
  37. package/dist/ccs.js.map +1 -1
  38. package/dist/cliproxy/auth/auth-types.d.ts +29 -6
  39. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  40. package/dist/cliproxy/auth/auth-types.js +58 -10
  41. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  42. package/dist/cliproxy/auth/oauth-handler.d.ts +9 -1
  43. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  44. package/dist/cliproxy/auth/oauth-handler.js +196 -45
  45. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  46. package/dist/cliproxy/auth/oauth-process.d.ts +13 -1
  47. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -1
  48. package/dist/cliproxy/auth/oauth-process.js +262 -17
  49. package/dist/cliproxy/auth/oauth-process.js.map +1 -1
  50. package/dist/cliproxy/executor/env-resolver.d.ts +3 -0
  51. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  52. package/dist/cliproxy/executor/env-resolver.js +19 -1
  53. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  54. package/dist/cliproxy/executor/index.d.ts +5 -0
  55. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  56. package/dist/cliproxy/executor/index.js +138 -12
  57. package/dist/cliproxy/executor/index.js.map +1 -1
  58. package/dist/cliproxy/gemini-cli-quota-normalizer.d.ts +10 -0
  59. package/dist/cliproxy/gemini-cli-quota-normalizer.d.ts.map +1 -0
  60. package/dist/cliproxy/gemini-cli-quota-normalizer.js +122 -0
  61. package/dist/cliproxy/gemini-cli-quota-normalizer.js.map +1 -0
  62. package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts.map +1 -1
  63. package/dist/cliproxy/quota-fetcher-gemini-cli.js +133 -92
  64. package/dist/cliproxy/quota-fetcher-gemini-cli.js.map +1 -1
  65. package/dist/cliproxy/quota-types.d.ts +8 -0
  66. package/dist/cliproxy/quota-types.d.ts.map +1 -1
  67. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  68. package/dist/cliproxy/services/variant-settings.js +11 -0
  69. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  70. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  71. package/dist/commands/cliproxy/quota-subcommand.js +10 -1
  72. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  73. package/dist/commands/command-catalog.d.ts +39 -0
  74. package/dist/commands/command-catalog.d.ts.map +1 -0
  75. package/dist/commands/command-catalog.js +299 -0
  76. package/dist/commands/command-catalog.js.map +1 -0
  77. package/dist/commands/completion-backend.d.ts +14 -0
  78. package/dist/commands/completion-backend.d.ts.map +1 -0
  79. package/dist/commands/completion-backend.js +216 -0
  80. package/dist/commands/completion-backend.js.map +1 -0
  81. package/dist/commands/cursor-command-display.d.ts.map +1 -1
  82. package/dist/commands/cursor-command-display.js +25 -5
  83. package/dist/commands/cursor-command-display.js.map +1 -1
  84. package/dist/commands/cursor-command.d.ts +1 -3
  85. package/dist/commands/cursor-command.d.ts.map +1 -1
  86. package/dist/commands/cursor-command.js +3 -15
  87. package/dist/commands/cursor-command.js.map +1 -1
  88. package/dist/commands/help-command.d.ts +4 -3
  89. package/dist/commands/help-command.d.ts.map +1 -1
  90. package/dist/commands/help-command.js +209 -503
  91. package/dist/commands/help-command.js.map +1 -1
  92. package/dist/commands/install-command.d.ts.map +1 -1
  93. package/dist/commands/install-command.js +16 -3
  94. package/dist/commands/install-command.js.map +1 -1
  95. package/dist/commands/root-command-router.d.ts +2 -0
  96. package/dist/commands/root-command-router.d.ts.map +1 -1
  97. package/dist/commands/root-command-router.js +13 -13
  98. package/dist/commands/root-command-router.js.map +1 -1
  99. package/dist/commands/shell-completion-command.d.ts +1 -0
  100. package/dist/commands/shell-completion-command.d.ts.map +1 -1
  101. package/dist/commands/shell-completion-command.js +27 -11
  102. package/dist/commands/shell-completion-command.js.map +1 -1
  103. package/dist/copilot/copilot-executor.d.ts +2 -0
  104. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  105. package/dist/copilot/copilot-executor.js +36 -4
  106. package/dist/copilot/copilot-executor.js.map +1 -1
  107. package/dist/cursor/constants.d.ts +3 -0
  108. package/dist/cursor/constants.d.ts.map +1 -0
  109. package/dist/cursor/constants.js +20 -0
  110. package/dist/cursor/constants.js.map +1 -0
  111. package/dist/cursor/cursor-models.d.ts.map +1 -1
  112. package/dist/cursor/cursor-models.js +2 -0
  113. package/dist/cursor/cursor-models.js.map +1 -1
  114. package/dist/cursor/cursor-profile-executor.d.ts +10 -0
  115. package/dist/cursor/cursor-profile-executor.d.ts.map +1 -0
  116. package/dist/cursor/cursor-profile-executor.js +158 -0
  117. package/dist/cursor/cursor-profile-executor.js.map +1 -0
  118. package/dist/cursor/cursor-translator.d.ts +22 -11
  119. package/dist/cursor/cursor-translator.d.ts.map +1 -1
  120. package/dist/cursor/cursor-translator.js +254 -75
  121. package/dist/cursor/cursor-translator.js.map +1 -1
  122. package/dist/cursor/index.d.ts +1 -0
  123. package/dist/cursor/index.d.ts.map +1 -1
  124. package/dist/cursor/index.js +4 -1
  125. package/dist/cursor/index.js.map +1 -1
  126. package/dist/delegation/headless-executor.d.ts.map +1 -1
  127. package/dist/delegation/headless-executor.js +79 -2
  128. package/dist/delegation/headless-executor.js.map +1 -1
  129. package/dist/management/checks/image-analysis-check.d.ts.map +1 -1
  130. package/dist/management/checks/image-analysis-check.js +4 -5
  131. package/dist/management/checks/image-analysis-check.js.map +1 -1
  132. package/dist/management/instance-manager.js +1 -1
  133. package/dist/management/instance-manager.js.map +1 -1
  134. package/dist/shared/claude-extension-setup.d.ts.map +1 -1
  135. package/dist/shared/claude-extension-setup.js +36 -16
  136. package/dist/shared/claude-extension-setup.js.map +1 -1
  137. package/dist/targets/target-runtime-compatibility.d.ts.map +1 -1
  138. package/dist/targets/target-runtime-compatibility.js +6 -0
  139. package/dist/targets/target-runtime-compatibility.js.map +1 -1
  140. package/dist/types/profile.d.ts +1 -1
  141. package/dist/types/profile.d.ts.map +1 -1
  142. package/dist/ui/assets/accounts-l__hcQUq.js +1 -0
  143. package/dist/ui/assets/{alert-dialog-D0EFRcfB.js → alert-dialog-BtM3eP43.js} +1 -1
  144. package/dist/ui/assets/{api-DhM3BYXr.js → api-Ddwn7EXC.js} +1 -1
  145. package/dist/ui/assets/{auth-section-DVp8FQGm.js → auth-section-BnYn1EA3.js} +1 -1
  146. package/dist/ui/assets/{backups-section-CRo0NZkA.js → backups-section-M4jx3HzK.js} +1 -1
  147. package/dist/ui/assets/{channels-uZ_9CBqO.js → channels-D9ywyAj3.js} +1 -1
  148. package/dist/ui/assets/{checkbox-32DNqW_Q.js → checkbox-Df-yoPbe.js} +1 -1
  149. package/dist/ui/assets/{claude-extension-BfXlz5gV.js → claude-extension-Cxg0a-Ee.js} +1 -1
  150. package/dist/ui/assets/cliproxy-DPFdpIHy.js +3 -0
  151. package/dist/ui/assets/{cliproxy-ai-providers-5SHLMHiy.js → cliproxy-ai-providers-DtW-6cPc.js} +6 -6
  152. package/dist/ui/assets/cliproxy-control-panel-0TyLDMf7.js +1 -0
  153. package/dist/ui/assets/{codex-CRUSpjsu.js → codex-BtPojOrJ.js} +3 -3
  154. package/dist/ui/assets/{confirm-dialog-DVf5ZmCZ.js → confirm-dialog-BMwFBq5G.js} +1 -1
  155. package/dist/ui/assets/{copilot-BZrihl_Z.js → copilot-BG3BnHxa.js} +2 -2
  156. package/dist/ui/assets/{cursor-BP4nbEk_.js → cursor-BfDO73Lu.js} +1 -1
  157. package/dist/ui/assets/{droid-BG92rdM2.js → droid-iW-Vtuhy.js} +2 -2
  158. package/dist/ui/assets/{globalenv-section-Cf6dKgSf.js → globalenv-section-d9h23hIf.js} +1 -1
  159. package/dist/ui/assets/{health-BTy1UZs3.js → health-BPPMFQMR.js} +1 -1
  160. package/dist/ui/assets/icons-BxSzn11s.js +1 -0
  161. package/dist/ui/assets/index-B6Y8wFQ0.css +1 -0
  162. package/dist/ui/assets/{index-wg7UtkFv.js → index-BPyp9RJE.js} +1 -1
  163. package/dist/ui/assets/{index-DHrTq-0n.js → index-CctYE17X.js} +1 -1
  164. package/dist/ui/assets/{index-BVeN0dIB.js → index-CeP2Pr2w.js} +1 -1
  165. package/dist/ui/assets/{index-DuRYaONg.js → index-DYY3wcwk.js} +1 -1
  166. package/dist/ui/assets/{index-N2ZSJurX.js → index-DusmDwkD.js} +1 -1
  167. package/dist/ui/assets/index-wIy8qzU9.js +69 -0
  168. package/dist/ui/assets/{masked-input-DX9bedLy.js → masked-input-DWNtAEKs.js} +1 -1
  169. package/dist/ui/assets/{proxy-status-widget-DVDMuZK5.js → proxy-status-widget-GS3qroms.js} +1 -1
  170. package/dist/ui/assets/{radix-ui-C98W0NRG.js → radix-ui-Zb8sVEtn.js} +1 -1
  171. package/dist/ui/assets/{raw-json-settings-editor-panel-Dkt5E6Z_.js → raw-json-settings-editor-panel-e3Ziu5B1.js} +1 -1
  172. package/dist/ui/assets/{searchable-select-BP3Q1-Yn.js → searchable-select-D2G6gg3h.js} +1 -1
  173. package/dist/ui/assets/{separator-BLGGUlh9.js → separator-CR1SGLxF.js} +1 -1
  174. package/dist/ui/assets/{shared-G0XRyLig.js → shared-BpB5GiWS.js} +1 -1
  175. package/dist/ui/assets/{table-B4lRrWC-.js → table-BMbwptG_.js} +1 -1
  176. package/dist/ui/assets/{tanstack-CfKik0yL.js → tanstack-DWm6aJ-G.js} +1 -1
  177. package/dist/ui/assets/{updates--A2Sdo7N.js → updates-iC3kvbKP.js} +1 -1
  178. package/dist/ui/index.html +5 -5
  179. package/dist/utils/config-manager.d.ts +5 -0
  180. package/dist/utils/config-manager.d.ts.map +1 -1
  181. package/dist/utils/config-manager.js +10 -1
  182. package/dist/utils/config-manager.js.map +1 -1
  183. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts +26 -0
  184. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts.map +1 -1
  185. package/dist/utils/hooks/get-image-analysis-hook-env.js +79 -1
  186. package/dist/utils/hooks/get-image-analysis-hook-env.js.map +1 -1
  187. package/dist/utils/hooks/image-analysis-backend-resolver.d.ts.map +1 -1
  188. package/dist/utils/hooks/image-analysis-backend-resolver.js +13 -5
  189. package/dist/utils/hooks/image-analysis-backend-resolver.js.map +1 -1
  190. package/dist/utils/hooks/image-analysis-runtime-status.d.ts +2 -0
  191. package/dist/utils/hooks/image-analysis-runtime-status.d.ts.map +1 -1
  192. package/dist/utils/hooks/image-analysis-runtime-status.js +15 -11
  193. package/dist/utils/hooks/image-analysis-runtime-status.js.map +1 -1
  194. package/dist/utils/hooks/image-analyzer-hook-installer.d.ts.map +1 -1
  195. package/dist/utils/hooks/image-analyzer-hook-installer.js +60 -27
  196. package/dist/utils/hooks/image-analyzer-hook-installer.js.map +1 -1
  197. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -1
  198. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +3 -0
  199. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -1
  200. package/dist/utils/hooks/index.d.ts +2 -1
  201. package/dist/utils/hooks/index.d.ts.map +1 -1
  202. package/dist/utils/hooks/index.js +14 -7
  203. package/dist/utils/hooks/index.js.map +1 -1
  204. package/dist/utils/image-analysis/claude-tool-args.d.ts +6 -0
  205. package/dist/utils/image-analysis/claude-tool-args.d.ts.map +1 -0
  206. package/dist/utils/image-analysis/claude-tool-args.js +65 -0
  207. package/dist/utils/image-analysis/claude-tool-args.js.map +1 -0
  208. package/dist/utils/image-analysis/index.d.ts +4 -0
  209. package/dist/utils/image-analysis/index.d.ts.map +1 -1
  210. package/dist/utils/image-analysis/index.js +20 -1
  211. package/dist/utils/image-analysis/index.js.map +1 -1
  212. package/dist/utils/image-analysis/mcp-installer.d.ts +18 -0
  213. package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -0
  214. package/dist/utils/image-analysis/mcp-installer.js +447 -0
  215. package/dist/utils/image-analysis/mcp-installer.js.map +1 -0
  216. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  217. package/dist/web-server/routes/account-routes.js +14 -2
  218. package/dist/web-server/routes/account-routes.js.map +1 -1
  219. package/dist/web-server/routes/auth-routes.d.ts +10 -0
  220. package/dist/web-server/routes/auth-routes.d.ts.map +1 -1
  221. package/dist/web-server/routes/auth-routes.js +33 -6
  222. package/dist/web-server/routes/auth-routes.js.map +1 -1
  223. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +8 -0
  224. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  225. package/dist/web-server/routes/cliproxy-auth-routes.js +141 -11
  226. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  227. package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
  228. package/dist/web-server/routes/image-analysis-routes.js +30 -5
  229. package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
  230. package/lib/hooks/image-analysis-runtime.cjs +469 -0
  231. package/lib/hooks/image-analyzer-transformer.cjs +27 -418
  232. package/lib/hooks/websearch-transformer.cjs +37 -2
  233. package/lib/mcp/ccs-image-analysis-server.cjs +440 -0
  234. package/package.json +1 -1
  235. package/scripts/completion/README.md +55 -131
  236. package/scripts/completion/ccs.bash +22 -190
  237. package/scripts/completion/ccs.fish +19 -245
  238. package/scripts/completion/ccs.ps1 +37 -427
  239. package/scripts/completion/ccs.zsh +27 -305
  240. package/dist/ui/assets/accounts-BHEYnq6b.js +0 -1
  241. package/dist/ui/assets/cliproxy-DjNY9H-U.js +0 -3
  242. package/dist/ui/assets/cliproxy-control-panel-Zax_m1AC.js +0 -1
  243. package/dist/ui/assets/icons-CeH5899d.js +0 -1
  244. package/dist/ui/assets/index-B6SrL1O-.css +0 -1
  245. package/dist/ui/assets/index-Corv1lSo.js +0 -69
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeCursorProfile = exports.resolveCursorImageAnalysisEnv = exports.generateCursorEnv = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const unified_config_loader_1 = require("../config/unified-config-loader");
6
+ const cliproxy_1 = require("../cliproxy");
7
+ const port_manager_1 = require("../cliproxy/config/port-manager");
8
+ const ui_1 = require("../utils/ui");
9
+ const websearch_manager_1 = require("../utils/websearch-manager");
10
+ const hooks_1 = require("../utils/hooks");
11
+ const shell_executor_1 = require("../utils/shell-executor");
12
+ const cursor_auth_1 = require("./cursor-auth");
13
+ const cursor_daemon_1 = require("./cursor-daemon");
14
+ function generateCursorEnv(config, claudeConfigDir) {
15
+ const opusModel = config.opus_model || config.model;
16
+ const sonnetModel = config.sonnet_model || config.model;
17
+ const haikuModel = config.haiku_model || config.model;
18
+ return {
19
+ ANTHROPIC_BASE_URL: `http://127.0.0.1:${config.port}`,
20
+ ANTHROPIC_AUTH_TOKEN: 'cursor-managed',
21
+ ANTHROPIC_MODEL: config.model,
22
+ ANTHROPIC_DEFAULT_OPUS_MODEL: opusModel,
23
+ ANTHROPIC_DEFAULT_SONNET_MODEL: sonnetModel,
24
+ ANTHROPIC_SMALL_FAST_MODEL: haikuModel,
25
+ ANTHROPIC_DEFAULT_HAIKU_MODEL: haikuModel,
26
+ DISABLE_NON_ESSENTIAL_MODEL_CALLS: '1',
27
+ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
28
+ ...(claudeConfigDir ? { CLAUDE_CONFIG_DIR: claudeConfigDir } : {}),
29
+ };
30
+ }
31
+ exports.generateCursorEnv = generateCursorEnv;
32
+ async function resolveCursorImageAnalysisEnv(verbose = false) {
33
+ const env = (0, hooks_1.getImageAnalysisHookEnv)({
34
+ profileName: 'cursor',
35
+ profileType: 'cursor',
36
+ });
37
+ const provider = env['CCS_CURRENT_PROVIDER'];
38
+ if (env['CCS_IMAGE_ANALYSIS_SKIP'] === '1' || !provider) {
39
+ return { env, warning: null };
40
+ }
41
+ const status = await (0, hooks_1.resolveImageAnalysisRuntimeStatus)({
42
+ profileName: 'cursor',
43
+ profileType: 'cursor',
44
+ });
45
+ if (status.effectiveRuntimeMode === 'native-read') {
46
+ return {
47
+ env: {
48
+ ...env,
49
+ CCS_CURRENT_PROVIDER: '',
50
+ CCS_IMAGE_ANALYSIS_SKIP: '1',
51
+ },
52
+ warning: `${status.effectiveRuntimeReason || `Image analysis via ${provider} is unavailable.`} This session will use native Read.`,
53
+ };
54
+ }
55
+ if (status.proxyReadiness === 'stopped') {
56
+ const ensureServiceResult = await (0, cliproxy_1.ensureCliproxyService)(port_manager_1.CLIPROXY_DEFAULT_PORT, verbose);
57
+ if (!ensureServiceResult.started) {
58
+ return {
59
+ env: {
60
+ ...env,
61
+ CCS_CURRENT_PROVIDER: '',
62
+ CCS_IMAGE_ANALYSIS_SKIP: '1',
63
+ },
64
+ warning: `Image analysis via ${provider} is unavailable because CCS could not start the local CLIProxy service. This session will use native Read.`,
65
+ };
66
+ }
67
+ }
68
+ return { env, warning: null };
69
+ }
70
+ exports.resolveCursorImageAnalysisEnv = resolveCursorImageAnalysisEnv;
71
+ async function executeCursorProfile(config, claudeArgs, claudeConfigDir, claudeCliPath = 'claude') {
72
+ if (!config.enabled) {
73
+ console.error((0, ui_1.fail)('Cursor integration is not enabled.'));
74
+ console.error('');
75
+ console.error('Enable it first: ccs cursor enable');
76
+ return 1;
77
+ }
78
+ const authStatus = (0, cursor_auth_1.checkAuthStatus)();
79
+ if (!authStatus.authenticated) {
80
+ console.error((0, ui_1.fail)('Cursor credentials not found.'));
81
+ console.error('');
82
+ console.error('Authenticate first: ccs cursor auth');
83
+ return 1;
84
+ }
85
+ if (authStatus.expired) {
86
+ console.error((0, ui_1.fail)('Cursor credentials have expired.'));
87
+ console.error('');
88
+ console.error('Refresh them with: ccs cursor auth');
89
+ return 1;
90
+ }
91
+ let daemonRunning = await (0, cursor_daemon_1.isDaemonRunning)(config.port);
92
+ if (!daemonRunning) {
93
+ if (config.auto_start) {
94
+ console.log((0, ui_1.info)('Starting cursor daemon...'));
95
+ const result = await (0, cursor_daemon_1.startDaemon)({
96
+ port: config.port,
97
+ ghost_mode: config.ghost_mode,
98
+ });
99
+ if (!result.success) {
100
+ console.error((0, ui_1.fail)(`Failed to start cursor daemon: ${result.error}`));
101
+ return 1;
102
+ }
103
+ console.log((0, ui_1.ok)(`Daemon started on port ${config.port}`));
104
+ daemonRunning = true;
105
+ }
106
+ else {
107
+ console.error((0, ui_1.fail)('Cursor daemon is not running.'));
108
+ console.error('');
109
+ console.error('Start the daemon:');
110
+ console.error(' ccs cursor start');
111
+ console.error('Or enable auto_start in the Cursor config section.');
112
+ return 1;
113
+ }
114
+ }
115
+ const cursorEnv = generateCursorEnv(config, claudeConfigDir);
116
+ const globalEnvConfig = (0, unified_config_loader_1.getGlobalEnvConfig)();
117
+ const globalEnv = globalEnvConfig.enabled ? globalEnvConfig.env : {};
118
+ const webSearchEnv = (0, websearch_manager_1.getWebSearchHookEnv)();
119
+ const { env: imageAnalysisEnv, warning: imageAnalysisWarning } = await resolveCursorImageAnalysisEnv();
120
+ const env = (0, shell_executor_1.stripClaudeCodeEnv)({
121
+ ...process.env,
122
+ ...globalEnv,
123
+ ...cursorEnv,
124
+ ...webSearchEnv,
125
+ ...imageAnalysisEnv,
126
+ CCS_PROFILE_TYPE: 'cursor',
127
+ });
128
+ console.log((0, ui_1.info)(`Using Cursor proxy (model: ${config.model})`));
129
+ if (imageAnalysisWarning) {
130
+ console.log((0, ui_1.info)(imageAnalysisWarning));
131
+ }
132
+ console.log('');
133
+ (0, websearch_manager_1.syncWebSearchMcpToConfigDir)(claudeConfigDir);
134
+ return new Promise((resolve) => {
135
+ const launchArgs = (0, websearch_manager_1.appendThirdPartyWebSearchToolArgs)(claudeArgs);
136
+ const traceEnv = (0, websearch_manager_1.createWebSearchTraceContext)({
137
+ launcher: 'cursor.executor',
138
+ args: launchArgs,
139
+ profile: 'cursor',
140
+ profileType: 'cursor',
141
+ claudeConfigDir,
142
+ });
143
+ const proc = (0, child_process_1.spawn)(claudeCliPath, launchArgs, {
144
+ stdio: 'inherit',
145
+ env: { ...env, ...traceEnv },
146
+ shell: process.platform === 'win32',
147
+ });
148
+ proc.on('close', (code) => {
149
+ resolve(code ?? 0);
150
+ });
151
+ proc.on('error', (err) => {
152
+ console.error((0, ui_1.fail)(`Failed to start Claude: ${err.message}`));
153
+ resolve(1);
154
+ });
155
+ });
156
+ }
157
+ exports.executeCursorProfile = executeCursorProfile;
158
+ //# sourceMappingURL=cursor-profile-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-profile-executor.js","sourceRoot":"","sources":["../../src/cursor/cursor-profile-executor.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,31 @@
1
1
  /**
2
2
  * OpenAI to Cursor Request Translator
3
- * Converts OpenAI messages to Cursor format
3
+ * Converts OpenAI messages to Cursor format.
4
4
  */
5
5
  import type { CursorMessage, CursorTool } from './cursor-protobuf-schema.js';
6
- /** OpenAI message format */
6
+ interface OpenAITextPart {
7
+ type: 'text';
8
+ text?: string;
9
+ }
10
+ interface OpenAIToolUsePart {
11
+ type: 'tool_use';
12
+ id?: string;
13
+ name?: string;
14
+ input?: Record<string, unknown>;
15
+ }
16
+ interface OpenAIToolResultPart {
17
+ type: 'tool_result';
18
+ tool_use_id?: string;
19
+ content?: unknown;
20
+ }
21
+ interface OpenAIUnknownPart {
22
+ type: string;
23
+ [key: string]: unknown;
24
+ }
25
+ type OpenAIContentPart = OpenAITextPart | OpenAIToolUsePart | OpenAIToolResultPart | OpenAIUnknownPart;
7
26
  interface OpenAIMessage {
8
27
  role: string;
9
- content: string | Array<{
10
- type: string;
11
- text?: string;
12
- }>;
28
+ content: string | OpenAIContentPart[];
13
29
  name?: string;
14
30
  tool_call_id?: string;
15
31
  tool_calls?: Array<{
@@ -21,16 +37,11 @@ interface OpenAIMessage {
21
37
  };
22
38
  }>;
23
39
  }
24
- /** OpenAI request body */
25
40
  interface OpenAIRequestBody {
26
41
  messages: OpenAIMessage[];
27
42
  tools?: CursorTool[];
28
43
  reasoning_effort?: string;
29
44
  }
30
- /**
31
- * Transform OpenAI request to Cursor format
32
- * Returns modified body with converted messages
33
- */
34
45
  export declare function buildCursorRequest(_model: string, body: OpenAIRequestBody, _stream: boolean, _credentials: unknown): {
35
46
  messages: CursorMessage[];
36
47
  tools?: CursorTool[];
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-translator.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-translator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE/F,4BAA4B;AAC5B,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;CACJ;AAED,0BAA0B;AAC1B,UAAU,iBAAiB;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA8GD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,OAAO,GACpB;IACD,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB,CAOA"}
1
+ {"version":3,"file":"cursor-translator.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-translator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE7E,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,iBAAiB,GAClB,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;CACJ;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAqXD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,OAAO,GACpB;IACD,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB,CAKA"}
@@ -1,117 +1,296 @@
1
1
  "use strict";
2
2
  /**
3
3
  * OpenAI to Cursor Request Translator
4
- * Converts OpenAI messages to Cursor format
4
+ * Converts OpenAI messages to Cursor format.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.buildCursorRequest = void 0;
8
+ const MAX_TOOL_RESULT_CHARS = 12000;
9
+ const TOOL_RESULT_SERIALIZATION_FALLBACK = '[unserializable content]';
10
+ const TOOL_USE_ARGUMENTS_FALLBACK = '{}';
11
+ const TOOL_CALL_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
12
+ function isTextPart(part) {
13
+ return part.type === 'text';
14
+ }
15
+ function isToolUsePart(part) {
16
+ return part.type === 'tool_use';
17
+ }
18
+ function isToolResultPart(part) {
19
+ return part.type === 'tool_result';
20
+ }
21
+ function extractTextContent(content, separator = '') {
22
+ if (typeof content === 'string') {
23
+ return content;
24
+ }
25
+ const parts = [];
26
+ for (const part of content) {
27
+ if (isTextPart(part) && part.text) {
28
+ parts.push(part.text);
29
+ }
30
+ }
31
+ return parts.join(separator);
32
+ }
33
+ function stringifyUnknown(value, fallback = '') {
34
+ try {
35
+ const serialized = JSON.stringify(value);
36
+ return typeof serialized === 'string' ? serialized : fallback;
37
+ }
38
+ catch {
39
+ return fallback;
40
+ }
41
+ }
42
+ function sanitizeToolResultText(text) {
43
+ return text.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g, '');
44
+ }
45
+ function truncateToolResultText(text) {
46
+ if (text.length <= MAX_TOOL_RESULT_CHARS) {
47
+ return text;
48
+ }
49
+ let omittedChars = text.length - MAX_TOOL_RESULT_CHARS;
50
+ while (true) {
51
+ const suffix = `\n[truncated ${omittedChars} chars]`;
52
+ const keepLength = Math.max(MAX_TOOL_RESULT_CHARS - suffix.length, 0);
53
+ const nextOmittedChars = text.length - keepLength;
54
+ if (nextOmittedChars === omittedChars) {
55
+ return `${text.slice(0, keepLength)}${suffix}`;
56
+ }
57
+ omittedChars = nextOmittedChars;
58
+ }
59
+ }
60
+ function escapeXml(text) {
61
+ return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
62
+ }
63
+ function buildToolResultBlock(toolName, toolCallId, resultText) {
64
+ // Truncate raw tool output before XML escaping so the cap reflects original content.
65
+ const cleanResult = escapeXml(truncateToolResultText(sanitizeToolResultText(resultText)));
66
+ return [
67
+ '<tool_result>',
68
+ `<tool_name>${escapeXml(toolName || 'tool')}</tool_name>`,
69
+ `<tool_call_id>${escapeXml(toolCallId)}</tool_call_id>`,
70
+ `<result>${cleanResult}</result>`,
71
+ '</tool_result>',
72
+ ].join('\n');
73
+ }
74
+ function normalizeToolCallId(toolCallId) {
75
+ return typeof toolCallId === 'string' ? toolCallId.split('\n')[0] : '';
76
+ }
77
+ function sanitizeToolCallId(toolCallId) {
78
+ const normalizedId = normalizeToolCallId(toolCallId).trim();
79
+ if (!normalizedId) {
80
+ return '';
81
+ }
82
+ if (TOOL_CALL_ID_PATTERN.test(normalizedId)) {
83
+ return normalizedId;
84
+ }
85
+ return normalizedId.replace(/[^a-zA-Z0-9_-]/g, '');
86
+ }
87
+ function extractToolResultText(content) {
88
+ if (content === undefined) {
89
+ return '';
90
+ }
91
+ if (typeof content === 'string') {
92
+ return content;
93
+ }
94
+ if (Array.isArray(content)) {
95
+ return content
96
+ .filter(isTextPart)
97
+ .map((part) => part.text || '')
98
+ .join('\n');
99
+ }
100
+ return stringifyUnknown(content, TOOL_RESULT_SERIALIZATION_FALLBACK);
101
+ }
102
+ function createFallbackToolUseId(messageIndex, partIndex) {
103
+ return `toolu_cursor_fallback_${messageIndex}_${partIndex}`;
104
+ }
105
+ function resolveToolUseId(part, messageIndex, partIndex) {
106
+ const sanitizedId = sanitizeToolCallId(part.id);
107
+ return sanitizedId || createFallbackToolUseId(messageIndex, partIndex);
108
+ }
109
+ function requireToolResultId(toolCallId, location) {
110
+ const sanitizedId = sanitizeToolCallId(toolCallId);
111
+ if (sanitizedId) {
112
+ return sanitizedId;
113
+ }
114
+ throw new Error(`${location} must include a valid tool result id`);
115
+ }
116
+ function normalizeAssistantToolCalls(toolCalls, messageIndex) {
117
+ return toolCalls.map((toolCall, toolCallIndex) => ({
118
+ ...toolCall,
119
+ id: sanitizeToolCallId(toolCall.id) || createFallbackToolUseId(messageIndex, toolCallIndex),
120
+ function: {
121
+ name: toolCall.function?.name || 'tool',
122
+ arguments: typeof toolCall.function?.arguments === 'string'
123
+ ? toolCall.function.arguments
124
+ : stringifyUnknown(toolCall.function?.arguments ?? {}, TOOL_USE_ARGUMENTS_FALLBACK),
125
+ },
126
+ }));
127
+ }
128
+ function rememberToolCallMeta(toolCallMetaMap, toolCalls) {
129
+ for (const toolCall of toolCalls) {
130
+ const toolCallId = toolCall.id || '';
131
+ const toolName = toolCall.function?.name || 'tool';
132
+ if (!toolCallId) {
133
+ continue;
134
+ }
135
+ toolCallMetaMap.set(toolCallId, { name: toolName });
136
+ const normalizedId = normalizeToolCallId(toolCallId);
137
+ if (normalizedId && normalizedId !== toolCallId) {
138
+ toolCallMetaMap.set(normalizedId, { name: toolName });
139
+ }
140
+ }
141
+ }
142
+ function rememberToolUseParts(toolCallMetaMap, content, messageIndex) {
143
+ if (!Array.isArray(content)) {
144
+ return;
145
+ }
146
+ for (let partIndex = 0; partIndex < content.length; partIndex++) {
147
+ const part = content[partIndex];
148
+ if (!isToolUsePart(part)) {
149
+ continue;
150
+ }
151
+ const toolCallId = resolveToolUseId(part, messageIndex, partIndex);
152
+ const toolName = part.name || 'tool';
153
+ toolCallMetaMap.set(toolCallId, { name: toolName });
154
+ const normalizedId = normalizeToolCallId(toolCallId);
155
+ if (normalizedId && normalizedId !== toolCallId) {
156
+ toolCallMetaMap.set(normalizedId, { name: toolName });
157
+ }
158
+ }
159
+ }
160
+ function extractToolCallsFromContent(content, messageIndex) {
161
+ if (!Array.isArray(content)) {
162
+ return [];
163
+ }
164
+ return content.flatMap((part, partIndex) => {
165
+ if (!isToolUsePart(part)) {
166
+ return [];
167
+ }
168
+ return [
169
+ {
170
+ id: resolveToolUseId(part, messageIndex, partIndex),
171
+ type: 'function',
172
+ function: {
173
+ name: part.name || 'tool',
174
+ arguments: stringifyUnknown(part.input ?? {}, TOOL_USE_ARGUMENTS_FALLBACK),
175
+ },
176
+ },
177
+ ];
178
+ });
179
+ }
180
+ function mergeAssistantToolCalls(primaryToolCalls, secondaryToolCalls) {
181
+ const merged = [];
182
+ const seenIds = new Set();
183
+ for (const toolCall of [...primaryToolCalls, ...secondaryToolCalls]) {
184
+ if (seenIds.has(toolCall.id)) {
185
+ continue;
186
+ }
187
+ seenIds.add(toolCall.id);
188
+ merged.push(toolCall);
189
+ }
190
+ return merged;
191
+ }
192
+ function renderUserContent(content, toolCallMetaMap, messageIndex) {
193
+ if (typeof content === 'string') {
194
+ return content;
195
+ }
196
+ const parts = [];
197
+ let textBuffer = '';
198
+ for (let partIndex = 0; partIndex < content.length; partIndex++) {
199
+ const part = content[partIndex];
200
+ if (isTextPart(part) && part.text) {
201
+ textBuffer += part.text;
202
+ continue;
203
+ }
204
+ if (!isToolResultPart(part)) {
205
+ continue;
206
+ }
207
+ if (textBuffer) {
208
+ parts.push(textBuffer);
209
+ textBuffer = '';
210
+ }
211
+ const toolCallId = requireToolResultId(part.tool_use_id, `messages[${messageIndex}].content[${partIndex}]`);
212
+ const normalizedId = normalizeToolCallId(toolCallId);
213
+ const toolName = toolCallMetaMap.get(toolCallId)?.name || toolCallMetaMap.get(normalizedId)?.name || 'tool';
214
+ parts.push(buildToolResultBlock(toolName, toolCallId, extractToolResultText(part.content)));
215
+ }
216
+ if (textBuffer) {
217
+ parts.push(textBuffer);
218
+ }
219
+ return parts.join('\n');
220
+ }
8
221
  /**
9
- * Convert OpenAI messages to Cursor format with native tool_results support
222
+ * Convert OpenAI messages to Cursor format with a safer tool-result strategy.
10
223
  * - system → user with [System Instructions] prefix
11
- * - tool → accumulate into tool_results array for next user/assistant message
12
- * - assistant with tool_calls → keep tool_calls structure (Cursor supports it natively)
224
+ * - tool → flatten into a structured user text block for Cursor compatibility
225
+ * - assistant with tool_calls → keep tool_calls in the translated shape for metadata recovery
13
226
  */
14
227
  function convertMessages(messages) {
15
228
  const result = [];
16
- let pendingToolResults = [];
17
- for (let i = 0; i < messages.length; i++) {
18
- const msg = messages[i];
229
+ const toolCallMetaMap = new Map();
230
+ for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) {
231
+ const msg = messages[messageIndex];
19
232
  if (msg.role === 'system') {
20
- let content = '';
21
- if (typeof msg.content === 'string') {
22
- content = msg.content;
23
- }
24
- else if (Array.isArray(msg.content)) {
25
- for (const part of msg.content) {
26
- if (part.type === 'text' && part.text)
27
- content += part.text;
28
- }
29
- }
30
233
  result.push({
31
234
  role: 'user',
32
- content: `[System Instructions]\n${content}`,
235
+ content: `[System Instructions]\n${extractTextContent(msg.content)}`,
33
236
  });
34
237
  continue;
35
238
  }
36
239
  if (msg.role === 'tool') {
37
- let toolContent = '';
38
- if (typeof msg.content === 'string') {
39
- toolContent = msg.content;
40
- }
41
- else if (Array.isArray(msg.content)) {
42
- for (const part of msg.content) {
43
- if (part.type === 'text' && part.text) {
44
- toolContent += part.text;
45
- }
46
- }
47
- }
48
- const toolName = msg.name || 'tool';
49
- const toolCallId = msg.tool_call_id || '';
50
- // Accumulate tool result
51
- pendingToolResults.push({
52
- tool_call_id: toolCallId,
53
- name: toolName,
54
- index: pendingToolResults.length,
55
- raw_args: toolContent,
240
+ const toolCallId = requireToolResultId(msg.tool_call_id, `messages[${messageIndex}].tool_call_id`);
241
+ const normalizedToolCallId = normalizeToolCallId(toolCallId);
242
+ const rememberedToolName = toolCallMetaMap.get(toolCallId)?.name || toolCallMetaMap.get(normalizedToolCallId)?.name;
243
+ const toolName = msg.name || rememberedToolName || 'tool';
244
+ result.push({
245
+ role: 'user',
246
+ content: buildToolResultBlock(toolName, toolCallId, extractTextContent(msg.content, '\n')),
56
247
  });
57
248
  continue;
58
249
  }
59
250
  if (msg.role === 'user' || msg.role === 'assistant') {
60
- let content = '';
61
- if (typeof msg.content === 'string') {
62
- content = msg.content;
63
- }
64
- else if (Array.isArray(msg.content)) {
65
- for (const part of msg.content) {
66
- if (part.type === 'text' && part.text) {
67
- content += part.text;
68
- }
251
+ if (msg.role === 'assistant') {
252
+ const normalizedToolCalls = normalizeAssistantToolCalls(msg.tool_calls || [], messageIndex);
253
+ const assistantToolCalls = mergeAssistantToolCalls(normalizedToolCalls, extractToolCallsFromContent(msg.content, messageIndex));
254
+ if (normalizedToolCalls.length > 0) {
255
+ rememberToolCallMeta(toolCallMetaMap, normalizedToolCalls);
69
256
  }
70
- }
71
- // Keep tool_calls structure for assistant messages
72
- if (msg.role === 'assistant' && msg.tool_calls && msg.tool_calls.length > 0) {
73
- const assistantMsg = { role: 'assistant', content: '' };
74
- if (content) {
75
- assistantMsg.content = content;
257
+ rememberToolUseParts(toolCallMetaMap, msg.content, messageIndex);
258
+ const content = extractTextContent(msg.content);
259
+ if (assistantToolCalls.length > 0) {
260
+ result.push({
261
+ role: 'assistant',
262
+ content,
263
+ tool_calls: assistantToolCalls,
264
+ });
76
265
  }
77
- assistantMsg.tool_calls = msg.tool_calls;
78
- // Attach pending tool results to assistant message with tool_calls
79
- if (pendingToolResults.length > 0) {
80
- assistantMsg.tool_results = pendingToolResults;
81
- pendingToolResults = [];
266
+ else if (content) {
267
+ result.push({
268
+ role: 'assistant',
269
+ content,
270
+ });
82
271
  }
83
- result.push(assistantMsg);
84
272
  }
85
- else if (content || pendingToolResults.length > 0) {
86
- const msgObj = {
87
- role: msg.role,
88
- content: content || '',
89
- };
90
- // Attach pending tool results to this message
91
- if (pendingToolResults.length > 0) {
92
- msgObj.tool_results = pendingToolResults;
93
- pendingToolResults = [];
273
+ else {
274
+ const content = renderUserContent(msg.content, toolCallMetaMap, messageIndex);
275
+ if (content) {
276
+ result.push({
277
+ role: 'user',
278
+ content,
279
+ });
94
280
  }
95
- result.push(msgObj);
96
281
  }
97
282
  continue;
98
283
  }
99
- // Unknown role - skip with debug warning
100
284
  if (process.env.CCS_DEBUG) {
101
285
  console.error(`[cursor] Unknown message role: ${msg.role}, skipping`);
102
286
  }
103
287
  }
104
288
  return result;
105
289
  }
106
- /**
107
- * Transform OpenAI request to Cursor format
108
- * Returns modified body with converted messages
109
- */
110
290
  function buildCursorRequest(_model, body, _stream, _credentials) {
111
- const messages = convertMessages(body.messages || []);
112
291
  return {
113
292
  ...body,
114
- messages,
293
+ messages: convertMessages(body.messages || []),
115
294
  };
116
295
  }
117
296
  exports.buildCursorRequest = buildCursorRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-translator.js","sourceRoot":"","sources":["../../src/cursor/cursor-translator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor-translator.js","sourceRoot":"","sources":["../../src/cursor/cursor-translator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmDH,MAAM,qBAAqB,GAAG,KAAM,CAAC;AACrC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AACtE,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEhD,SAAS,UAAU,CAAC,IAAuB;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CAAC,IAAuB;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB;IAC/C,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AACrC,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAiC,EAAE,SAAS,GAAG,EAAE;IAC3E,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,QAAQ,GAAG,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,iDAAiD,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC;IACvD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,gBAAgB,YAAY,SAAS,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAClD,IAAI,gBAAgB,KAAK,YAAY,EAAE,CAAC;YACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;QACjD,CAAC;QACD,YAAY,GAAG,gBAAgB,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,UAAkB,EAAE,UAAkB;IACpF,qFAAqF;IACrF,MAAM,WAAW,GAAG,SAAS,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE1F,OAAO;QACL,eAAe;QACf,cAAc,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,cAAc;QACzD,iBAAiB,SAAS,CAAC,UAAU,CAAC,iBAAiB;QACvD,WAAW,WAAW,WAAW;QACjC,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA8B;IACzD,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA8B;IACxD,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB;IAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO;aACX,MAAM,CAAC,UAAU,CAAC;aAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,uBAAuB,CAAC,YAAoB,EAAE,SAAiB;IACtE,OAAO,yBAAyB,YAAY,IAAI,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAuB,EACvB,YAAoB,EACpB,SAAiB;IAEjB,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO,WAAW,IAAI,uBAAuB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA8B,EAAE,QAAgB;IAC3E,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,sCAAsC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAmD,EACnD,YAAoB;IAEpB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACjD,GAAG,QAAQ;QACX,EAAE,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,YAAY,EAAE,aAAa,CAAC;QAC3F,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM;YACvC,SAAS,EACP,OAAO,QAAQ,CAAC,QAAQ,EAAE,SAAS,KAAK,QAAQ;gBAC9C,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS;gBAC7B,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,EAAE,2BAA2B,CAAC;SACxF;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAC3B,eAA8C,EAC9C,SAAmD;IAEnD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC;QACnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,YAAY,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YAChD,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,eAA8C,EAC9C,OAAiC,EACjC,YAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;QACrC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,YAAY,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YAChD,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,OAAiC,EACjC,YAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO;YACL;gBACE,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC;gBACnD,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;oBACzB,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,2BAA2B,CAAC;iBAC3E;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,gBAA0D,EAC1D,kBAA4D;IAE5D,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAiC,EACjC,eAA8C,EAC9C,YAAoB;IAEpB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvB,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,mBAAmB,CACpC,IAAI,CAAC,WAAW,EAChB,YAAY,YAAY,aAAa,SAAS,GAAG,CAClD,CAAC;QACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,QAAQ,GACZ,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,QAAyB;IAChD,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE5D,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,0BAA0B,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;aACrE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,mBAAmB,CACpC,GAAG,CAAC,YAAY,EAChB,YAAY,YAAY,gBAAgB,CACzC,CAAC;YACF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,kBAAkB,GACtB,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC;YAC3F,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,kBAAkB,IAAI,MAAM,CAAC;YAE1D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAC3F,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;gBAC5F,MAAM,kBAAkB,GAAG,uBAAuB,CAChD,mBAAmB,EACnB,2BAA2B,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CACvD,CAAC;gBACF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,oBAAoB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;gBAC7D,CAAC;gBACD,oBAAoB,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAEjE,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,WAAW;wBACjB,OAAO;wBACP,UAAU,EAAE,kBAAkB;qBAC/B,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,OAAO,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,WAAW;wBACjB,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;gBAC9E,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAChC,MAAc,EACd,IAAuB,EACvB,OAAgB,EAChB,YAAqB;IAKrB,OAAO;QACL,GAAG,IAAI;QACP,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC;AAbD,gDAaC"}
@@ -8,4 +8,5 @@ export { autoDetectTokens, validateToken, saveCredentials, loadCredentials, dele
8
8
  export { isDaemonRunning, getDaemonStatus, startDaemon, stopDaemon, getPidFromFile, writePidToFile, removePidFile, } from './cursor-daemon';
9
9
  export { DEFAULT_CURSOR_MODELS, DEFAULT_CURSOR_PORT, DEFAULT_CURSOR_MODEL, fetchModelsFromDaemon, fetchModelsFromCursorApi, getModelsForDaemon, getAvailableModels, getDefaultModel, clearCursorModelsCache, detectProvider, formatModelName, } from './cursor-models';
10
10
  export { CursorExecutor } from './cursor-executor';
11
+ export { executeCursorProfile, generateCursorEnv } from './cursor-profile-executor';
11
12
  //# sourceMappingURL=index.d.ts.map