@kaitranntt/ccs 7.43.0-dev.1 → 7.43.0-dev.11

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 (203) hide show
  1. package/dist/api/services/profile-reader.d.ts.map +1 -1
  2. package/dist/api/services/profile-reader.js +4 -1
  3. package/dist/api/services/profile-reader.js.map +1 -1
  4. package/dist/auth/profile-detector.d.ts +14 -3
  5. package/dist/auth/profile-detector.d.ts.map +1 -1
  6. package/dist/auth/profile-detector.js +35 -15
  7. package/dist/auth/profile-detector.js.map +1 -1
  8. package/dist/ccs.js +11 -0
  9. package/dist/ccs.js.map +1 -1
  10. package/dist/cliproxy/composite-validator.d.ts +20 -0
  11. package/dist/cliproxy/composite-validator.d.ts.map +1 -0
  12. package/dist/cliproxy/composite-validator.js +85 -0
  13. package/dist/cliproxy/composite-validator.js.map +1 -0
  14. package/dist/cliproxy/config/env-builder.d.ts +24 -0
  15. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  16. package/dist/cliproxy/config/env-builder.js +72 -1
  17. package/dist/cliproxy/config/env-builder.js.map +1 -1
  18. package/dist/cliproxy/config/thinking-config.d.ts +19 -2
  19. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  20. package/dist/cliproxy/config/thinking-config.js +59 -9
  21. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  22. package/dist/cliproxy/executor/env-resolver.d.ts +16 -0
  23. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  24. package/dist/cliproxy/executor/env-resolver.js +82 -26
  25. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  26. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  27. package/dist/cliproxy/executor/index.js +147 -34
  28. package/dist/cliproxy/executor/index.js.map +1 -1
  29. package/dist/cliproxy/executor/retry-handler.d.ts +11 -0
  30. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
  31. package/dist/cliproxy/executor/retry-handler.js +30 -1
  32. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  33. package/dist/cliproxy/provider-capabilities.d.ts +22 -0
  34. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -0
  35. package/dist/cliproxy/provider-capabilities.js +95 -0
  36. package/dist/cliproxy/provider-capabilities.js.map +1 -0
  37. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
  38. package/dist/cliproxy/quota-fetcher-codex.js +106 -87
  39. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
  40. package/dist/cliproxy/remote-auth-fetcher.d.ts.map +1 -1
  41. package/dist/cliproxy/remote-auth-fetcher.js +3 -26
  42. package/dist/cliproxy/remote-auth-fetcher.js.map +1 -1
  43. package/dist/cliproxy/services/index.d.ts +1 -1
  44. package/dist/cliproxy/services/index.d.ts.map +1 -1
  45. package/dist/cliproxy/services/index.js +3 -1
  46. package/dist/cliproxy/services/index.js.map +1 -1
  47. package/dist/cliproxy/services/variant-config-adapter.d.ts +15 -0
  48. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
  49. package/dist/cliproxy/services/variant-config-adapter.js +84 -11
  50. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
  51. package/dist/cliproxy/services/variant-service.d.ts +26 -0
  52. package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
  53. package/dist/cliproxy/services/variant-service.js +163 -9
  54. package/dist/cliproxy/services/variant-service.js.map +1 -1
  55. package/dist/cliproxy/services/variant-settings.d.ts +18 -0
  56. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  57. package/dist/cliproxy/services/variant-settings.js +126 -4
  58. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  59. package/dist/cliproxy/types.d.ts +13 -0
  60. package/dist/cliproxy/types.d.ts.map +1 -1
  61. package/dist/cliproxy/types.js.map +1 -1
  62. package/dist/commands/cliproxy/auth-subcommand.d.ts.map +1 -1
  63. package/dist/commands/cliproxy/auth-subcommand.js +2 -1
  64. package/dist/commands/cliproxy/auth-subcommand.js.map +1 -1
  65. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  66. package/dist/commands/cliproxy/help-subcommand.js +2 -0
  67. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  68. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  69. package/dist/commands/cliproxy/index.js +4 -0
  70. package/dist/commands/cliproxy/index.js.map +1 -1
  71. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  72. package/dist/commands/cliproxy/quota-subcommand.js +106 -4
  73. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  74. package/dist/commands/cliproxy/variant-subcommand.d.ts +1 -0
  75. package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
  76. package/dist/commands/cliproxy/variant-subcommand.js +307 -3
  77. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  78. package/dist/commands/command-execution-contract.d.ts +23 -0
  79. package/dist/commands/command-execution-contract.d.ts.map +1 -0
  80. package/dist/commands/command-execution-contract.js +21 -0
  81. package/dist/commands/command-execution-contract.js.map +1 -0
  82. package/dist/commands/cursor-command.d.ts +12 -0
  83. package/dist/commands/cursor-command.d.ts.map +1 -0
  84. package/dist/commands/cursor-command.js +225 -0
  85. package/dist/commands/cursor-command.js.map +1 -0
  86. package/dist/commands/help-command.d.ts.map +1 -1
  87. package/dist/commands/help-command.js +14 -0
  88. package/dist/commands/help-command.js.map +1 -1
  89. package/dist/commands/shell-completion-command.d.ts +20 -0
  90. package/dist/commands/shell-completion-command.d.ts.map +1 -1
  91. package/dist/commands/shell-completion-command.js +45 -30
  92. package/dist/commands/shell-completion-command.js.map +1 -1
  93. package/dist/config/reserved-names.d.ts +1 -1
  94. package/dist/config/reserved-names.d.ts.map +1 -1
  95. package/dist/config/reserved-names.js +2 -0
  96. package/dist/config/reserved-names.js.map +1 -1
  97. package/dist/config/unified-config-loader.d.ts +6 -1
  98. package/dist/config/unified-config-loader.d.ts.map +1 -1
  99. package/dist/config/unified-config-loader.js +56 -2
  100. package/dist/config/unified-config-loader.js.map +1 -1
  101. package/dist/config/unified-config-types.d.ts +71 -2
  102. package/dist/config/unified-config-types.d.ts.map +1 -1
  103. package/dist/config/unified-config-types.js +27 -2
  104. package/dist/config/unified-config-types.js.map +1 -1
  105. package/dist/cursor/cursor-daemon.d.ts +47 -0
  106. package/dist/cursor/cursor-daemon.d.ts.map +1 -0
  107. package/dist/cursor/cursor-daemon.js +332 -0
  108. package/dist/cursor/cursor-daemon.js.map +1 -0
  109. package/dist/cursor/cursor-executor.d.ts +81 -0
  110. package/dist/cursor/cursor-executor.d.ts.map +1 -0
  111. package/dist/cursor/cursor-executor.js +821 -0
  112. package/dist/cursor/cursor-executor.js.map +1 -0
  113. package/dist/cursor/cursor-models.d.ts +43 -0
  114. package/dist/cursor/cursor-models.d.ts.map +1 -0
  115. package/dist/cursor/cursor-models.js +205 -0
  116. package/dist/cursor/cursor-models.js.map +1 -0
  117. package/dist/cursor/cursor-protobuf-decoder.d.ts +52 -0
  118. package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -0
  119. package/dist/cursor/cursor-protobuf-decoder.js +311 -0
  120. package/dist/cursor/cursor-protobuf-decoder.js.map +1 -0
  121. package/dist/cursor/cursor-protobuf-encoder.d.ts +54 -0
  122. package/dist/cursor/cursor-protobuf-encoder.d.ts.map +1 -0
  123. package/dist/cursor/cursor-protobuf-encoder.js +173 -0
  124. package/dist/cursor/cursor-protobuf-encoder.js.map +1 -0
  125. package/dist/cursor/cursor-protobuf-schema.d.ts +215 -0
  126. package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -0
  127. package/dist/cursor/cursor-protobuf-schema.js +120 -0
  128. package/dist/cursor/cursor-protobuf-schema.js.map +1 -0
  129. package/dist/cursor/cursor-protobuf.d.ts +21 -0
  130. package/dist/cursor/cursor-protobuf.d.ts.map +1 -0
  131. package/dist/cursor/cursor-protobuf.js +116 -0
  132. package/dist/cursor/cursor-protobuf.js.map +1 -0
  133. package/dist/cursor/cursor-stream-parser.d.ts +52 -0
  134. package/dist/cursor/cursor-stream-parser.d.ts.map +1 -0
  135. package/dist/cursor/cursor-stream-parser.js +142 -0
  136. package/dist/cursor/cursor-stream-parser.js.map +1 -0
  137. package/dist/cursor/cursor-translator.d.ts +39 -0
  138. package/dist/cursor/cursor-translator.d.ts.map +1 -0
  139. package/dist/cursor/cursor-translator.js +118 -0
  140. package/dist/cursor/cursor-translator.js.map +1 -0
  141. package/dist/cursor/index.d.ts +11 -0
  142. package/dist/cursor/index.d.ts.map +1 -0
  143. package/dist/cursor/index.js +53 -0
  144. package/dist/cursor/index.js.map +1 -0
  145. package/dist/cursor/types.d.ts +33 -1
  146. package/dist/cursor/types.d.ts.map +1 -1
  147. package/dist/cursor/types.js +1 -1
  148. package/dist/types/index.d.ts +1 -1
  149. package/dist/types/index.d.ts.map +1 -1
  150. package/dist/types/index.js.map +1 -1
  151. package/dist/ui/assets/{accounts-CkN_roEn.js → accounts-D8ceTwko.js} +1 -1
  152. package/dist/ui/assets/{alert-dialog-Dy-8Z_Ud.js → alert-dialog-KnsD6NpU.js} +1 -1
  153. package/dist/ui/assets/{api-2TN7yVwm.js → api-Bp0E7mYy.js} +1 -1
  154. package/dist/ui/assets/{auth-section-CeKCNzzC.js → auth-section-D4quwqhL.js} +1 -1
  155. package/dist/ui/assets/{backups-section-CDuqhiZo.js → backups-section-D-oq--M3.js} +1 -1
  156. package/dist/ui/assets/cliproxy-BsgW2jbH.js +3 -0
  157. package/dist/ui/assets/{cliproxy-control-panel-DJd_zNR3.js → cliproxy-control-panel-B6xlfLnN.js} +1 -1
  158. package/dist/ui/assets/{confirm-dialog-DtYrWaa7.js → confirm-dialog-ConYUjNo.js} +1 -1
  159. package/dist/ui/assets/{copilot-DHdywZ9L.js → copilot-BO0JhNVL.js} +3 -3
  160. package/dist/ui/assets/{globalenv-section-Cn5ufgRh.js → globalenv-section-CGiUottp.js} +1 -1
  161. package/dist/ui/assets/{health-BsMhSeFz.js → health-DnkFdo0B.js} +1 -1
  162. package/dist/ui/assets/index-ByiEOnlQ.css +1 -0
  163. package/dist/ui/assets/{index-CEF_VhSR.js → index-C_MPOoUZ.js} +1 -1
  164. package/dist/ui/assets/index-CxWM9Sgz.js +1 -0
  165. package/dist/ui/assets/index-D4L2ZIJs.js +47 -0
  166. package/dist/ui/assets/{index-B2GQ_Joi.js → index-DcYq7jVv.js} +1 -1
  167. package/dist/ui/assets/{index-DkMR3J96.js → index-aB5MHYio.js} +1 -1
  168. package/dist/ui/assets/{proxy-status-widget-Cb7KfEqq.js → proxy-status-widget-BbZeFxlJ.js} +1 -1
  169. package/dist/ui/assets/{shared-BsWeldW8.js → shared-B_aV9M2M.js} +1 -1
  170. package/dist/ui/assets/{switch-D6XSRTo_.js → switch-60ycFRmr.js} +1 -1
  171. package/dist/ui/index.html +2 -2
  172. package/dist/utils/config-manager.d.ts.map +1 -1
  173. package/dist/utils/config-manager.js +17 -6
  174. package/dist/utils/config-manager.js.map +1 -1
  175. package/dist/web-server/jsonl-parser.js +1 -1
  176. package/dist/web-server/jsonl-parser.js.map +1 -1
  177. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  178. package/dist/web-server/routes/account-routes.js +5 -11
  179. package/dist/web-server/routes/account-routes.js.map +1 -1
  180. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  181. package/dist/web-server/routes/cliproxy-stats-routes.js +43 -4
  182. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  183. package/dist/web-server/routes/cursor-routes.d.ts +6 -0
  184. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -0
  185. package/dist/web-server/routes/cursor-routes.js +163 -0
  186. package/dist/web-server/routes/cursor-routes.js.map +1 -0
  187. package/dist/web-server/routes/cursor-settings-routes.d.ts +6 -0
  188. package/dist/web-server/routes/cursor-settings-routes.d.ts.map +1 -0
  189. package/dist/web-server/routes/cursor-settings-routes.js +171 -0
  190. package/dist/web-server/routes/cursor-settings-routes.js.map +1 -0
  191. package/dist/web-server/routes/index.d.ts.map +1 -1
  192. package/dist/web-server/routes/index.js +3 -0
  193. package/dist/web-server/routes/index.js.map +1 -1
  194. package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
  195. package/dist/web-server/routes/variant-routes.js +107 -6
  196. package/dist/web-server/routes/variant-routes.js.map +1 -1
  197. package/package.json +5 -2
  198. package/scripts/hardening-inventory.js +526 -0
  199. package/scripts/maintainability-baseline.js +309 -0
  200. package/dist/ui/assets/cliproxy-626zUpA_.js +0 -3
  201. package/dist/ui/assets/index-Bmgylhgn.js +0 -1
  202. package/dist/ui/assets/index-Cr6iEc8x.js +0 -47
  203. package/dist/ui/assets/index-QvMpU4Lc.css +0 -1
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /**
3
+ * Cursor Streaming Frame Parser
4
+ * Incrementally parses ConnectRPC frames from arbitrary chunk boundaries
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.StreamingFrameParser = exports.decompressPayload = void 0;
31
+ const zlib = __importStar(require("zlib"));
32
+ const cursor_protobuf_schema_js_1 = require("./cursor-protobuf-schema.js");
33
+ const cursor_protobuf_decoder_js_1 = require("./cursor-protobuf-decoder.js");
34
+ /**
35
+ * Decompress payload if gzip-compressed.
36
+ * Skips decompression for JSON error payloads.
37
+ * NOTE: Uses synchronous gzip for single-request CLI tool. Async not warranted for small payloads.
38
+ */
39
+ function decompressPayload(payload, flags) {
40
+ if (payload.length > 10 && payload[0] === 0x7b && payload[1] === 0x22) {
41
+ try {
42
+ const text = payload.toString('utf-8');
43
+ if (text.startsWith('{"error"'))
44
+ return payload;
45
+ }
46
+ catch {
47
+ // Not JSON, continue
48
+ }
49
+ }
50
+ if (flags === cursor_protobuf_schema_js_1.COMPRESS_FLAG.GZIP ||
51
+ flags === cursor_protobuf_schema_js_1.COMPRESS_FLAG.GZIP_ALT ||
52
+ flags === cursor_protobuf_schema_js_1.COMPRESS_FLAG.GZIP_BOTH) {
53
+ try {
54
+ return zlib.gunzipSync(payload);
55
+ }
56
+ catch (err) {
57
+ if (process.env.CCS_DEBUG) {
58
+ console.error('[cursor] gzip decompression failed:', err);
59
+ }
60
+ return Buffer.alloc(0);
61
+ }
62
+ }
63
+ return payload;
64
+ }
65
+ exports.decompressPayload = decompressPayload;
66
+ /**
67
+ * Incrementally parses ConnectRPC frames from arbitrary chunk boundaries.
68
+ *
69
+ * Usage:
70
+ * const parser = new StreamingFrameParser();
71
+ * req.on('data', (chunk) => {
72
+ * for (const frame of parser.push(chunk)) { handle(frame); }
73
+ * });
74
+ */
75
+ class StreamingFrameParser {
76
+ constructor() {
77
+ this.buffer = Buffer.alloc(0);
78
+ }
79
+ /** Feed a new chunk. Returns zero or more parsed frames. */
80
+ push(chunk) {
81
+ this.buffer = Buffer.concat([this.buffer, chunk]);
82
+ const results = [];
83
+ while (this.buffer.length >= 5) {
84
+ const length = this.buffer.readUInt32BE(1);
85
+ const frameSize = 5 + length;
86
+ if (this.buffer.length < frameSize)
87
+ break;
88
+ const flags = this.buffer[0];
89
+ let payload = this.buffer.slice(5, frameSize);
90
+ this.buffer = this.buffer.slice(frameSize);
91
+ payload = decompressPayload(payload, flags);
92
+ // Check for JSON error
93
+ try {
94
+ const text = payload.toString('utf-8');
95
+ if (text.startsWith('{') && text.includes('"error"')) {
96
+ const json = JSON.parse(text);
97
+ const msg = json?.error?.details?.[0]?.debug?.details?.title ||
98
+ json?.error?.details?.[0]?.debug?.details?.detail ||
99
+ json?.error?.message ||
100
+ 'API Error';
101
+ const isRateLimit = json?.error?.code === 'resource_exhausted';
102
+ results.push({
103
+ type: 'error',
104
+ message: msg,
105
+ status: isRateLimit ? 429 : 400,
106
+ errorType: isRateLimit ? 'rate_limit_error' : 'api_error',
107
+ });
108
+ return results;
109
+ }
110
+ }
111
+ catch {
112
+ // Not JSON, continue to protobuf parsing
113
+ }
114
+ const result = (0, cursor_protobuf_decoder_js_1.extractTextFromResponse)(new Uint8Array(payload));
115
+ if (result.error) {
116
+ const errorLower = result.error.toLowerCase();
117
+ const isRateLimit = errorLower.includes('rate limit') ||
118
+ errorLower.includes('resource_exhausted') ||
119
+ errorLower.includes('too many requests');
120
+ results.push({
121
+ type: 'error',
122
+ message: result.error,
123
+ status: isRateLimit ? 429 : 400,
124
+ errorType: isRateLimit ? 'rate_limit_error' : 'server_error',
125
+ });
126
+ return results;
127
+ }
128
+ if (result.toolCall)
129
+ results.push({ type: 'toolCall', toolCall: result.toolCall });
130
+ if (result.text)
131
+ results.push({ type: 'text', text: result.text });
132
+ if (result.thinking)
133
+ results.push({ type: 'thinking', text: result.thinking });
134
+ }
135
+ return results;
136
+ }
137
+ hasPartial() {
138
+ return this.buffer.length > 0;
139
+ }
140
+ }
141
+ exports.StreamingFrameParser = StreamingFrameParser;
142
+ //# sourceMappingURL=cursor-stream-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-stream-parser.js","sourceRoot":"","sources":["../../src/cursor/cursor-stream-parser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,2EAA4D;AAC5D,6EAAuE;AAiBvE;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,KAAa;IAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,OAAO,OAAO,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,IACE,KAAK,KAAK,yCAAa,CAAC,IAAI;QAC5B,KAAK,KAAK,yCAAa,CAAC,QAAQ;QAChC,KAAK,KAAK,yCAAa,CAAC,SAAS,EACjC,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAzBD,8CAyBC;AAED;;;;;;;;GAQG;AACH,MAAa,oBAAoB;IAAjC;QACU,WAAM,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAqE3C,CAAC;IAnEC,4DAA4D;IAC5D,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS;gBAAE,MAAM;YAE1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAE3C,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAE5C,uBAAuB;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,MAAM,GAAG,GACP,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;wBAChD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;wBACjD,IAAI,EAAE,KAAK,EAAE,OAAO;wBACpB,WAAW,CAAC;oBACd,MAAM,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,oBAAoB,CAAC;oBAC/D,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,GAAG;wBACZ,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;wBAC/B,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW;qBAC1D,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,oDAAuB,EAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAEhE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,WAAW,GACf,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACjC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBACzC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,MAAM,CAAC,KAAK;oBACrB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBAC/B,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc;iBAC7D,CAAC,CAAC;gBACH,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnF,IAAI,MAAM,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;CACF;AAtED,oDAsEC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * OpenAI to Cursor Request Translator
3
+ * Converts OpenAI messages to Cursor format
4
+ */
5
+ import type { CursorMessage, CursorTool } from './cursor-protobuf-schema.js';
6
+ /** OpenAI message format */
7
+ interface OpenAIMessage {
8
+ role: string;
9
+ content: string | Array<{
10
+ type: string;
11
+ text?: string;
12
+ }>;
13
+ name?: string;
14
+ tool_call_id?: string;
15
+ tool_calls?: Array<{
16
+ id: string;
17
+ type: string;
18
+ function: {
19
+ name: string;
20
+ arguments: string;
21
+ };
22
+ }>;
23
+ }
24
+ /** OpenAI request body */
25
+ interface OpenAIRequestBody {
26
+ messages: OpenAIMessage[];
27
+ tools?: CursorTool[];
28
+ reasoning_effort?: string;
29
+ }
30
+ /**
31
+ * Transform OpenAI request to Cursor format
32
+ * Returns modified body with converted messages
33
+ */
34
+ export declare function buildCursorRequest(_model: string, body: OpenAIRequestBody, _stream: boolean, _credentials: unknown): {
35
+ messages: CursorMessage[];
36
+ tools?: CursorTool[];
37
+ };
38
+ export {};
39
+ //# sourceMappingURL=cursor-translator.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ /**
3
+ * OpenAI to Cursor Request Translator
4
+ * Converts OpenAI messages to Cursor format
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.buildCursorRequest = void 0;
8
+ /**
9
+ * Convert OpenAI messages to Cursor format with native tool_results support
10
+ * - 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)
13
+ */
14
+ function convertMessages(messages) {
15
+ const result = [];
16
+ let pendingToolResults = [];
17
+ for (let i = 0; i < messages.length; i++) {
18
+ const msg = messages[i];
19
+ 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
+ result.push({
31
+ role: 'user',
32
+ content: `[System Instructions]\n${content}`,
33
+ });
34
+ continue;
35
+ }
36
+ 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,
56
+ });
57
+ continue;
58
+ }
59
+ 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
+ }
69
+ }
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;
76
+ }
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 = [];
82
+ }
83
+ result.push(assistantMsg);
84
+ }
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 = [];
94
+ }
95
+ result.push(msgObj);
96
+ }
97
+ continue;
98
+ }
99
+ // Unknown role - skip with debug warning
100
+ if (process.env.CCS_DEBUG) {
101
+ console.error(`[cursor] Unknown message role: ${msg.role}, skipping`);
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ /**
107
+ * Transform OpenAI request to Cursor format
108
+ * Returns modified body with converted messages
109
+ */
110
+ function buildCursorRequest(_model, body, _stream, _credentials) {
111
+ const messages = convertMessages(body.messages || []);
112
+ return {
113
+ ...body,
114
+ messages,
115
+ };
116
+ }
117
+ exports.buildCursorRequest = buildCursorRequest;
118
+ //# sourceMappingURL=cursor-translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-translator.js","sourceRoot":"","sources":["../../src/cursor/cursor-translator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Cursor Module Index
3
+ *
4
+ * Central exports for Cursor IDE integration.
5
+ */
6
+ export * from './types';
7
+ export { autoDetectTokens, saveCredentials, loadCredentials, checkAuthStatus } from './cursor-auth';
8
+ export { isDaemonRunning, getDaemonStatus, startDaemon, stopDaemon, getPidFromFile, writePidToFile, removePidFile, } from './cursor-daemon';
9
+ export { DEFAULT_CURSOR_MODELS, DEFAULT_CURSOR_PORT, DEFAULT_CURSOR_MODEL, fetchModelsFromDaemon, getAvailableModels, getDefaultModel, detectProvider, formatModelName, } from './cursor-models';
10
+ export { CursorExecutor } from './cursor-executor';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGpG,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Cursor Module Index
4
+ *
5
+ * Central exports for Cursor IDE integration.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.CursorExecutor = exports.formatModelName = exports.detectProvider = exports.getDefaultModel = exports.getAvailableModels = exports.fetchModelsFromDaemon = exports.DEFAULT_CURSOR_MODEL = exports.DEFAULT_CURSOR_PORT = exports.DEFAULT_CURSOR_MODELS = exports.removePidFile = exports.writePidToFile = exports.getPidFromFile = exports.stopDaemon = exports.startDaemon = exports.getDaemonStatus = exports.isDaemonRunning = exports.checkAuthStatus = exports.loadCredentials = exports.saveCredentials = exports.autoDetectTokens = void 0;
23
+ // Types
24
+ __exportStar(require("./types"), exports);
25
+ // Auth
26
+ var cursor_auth_1 = require("./cursor-auth");
27
+ Object.defineProperty(exports, "autoDetectTokens", { enumerable: true, get: function () { return cursor_auth_1.autoDetectTokens; } });
28
+ Object.defineProperty(exports, "saveCredentials", { enumerable: true, get: function () { return cursor_auth_1.saveCredentials; } });
29
+ Object.defineProperty(exports, "loadCredentials", { enumerable: true, get: function () { return cursor_auth_1.loadCredentials; } });
30
+ Object.defineProperty(exports, "checkAuthStatus", { enumerable: true, get: function () { return cursor_auth_1.checkAuthStatus; } });
31
+ // Daemon
32
+ var cursor_daemon_1 = require("./cursor-daemon");
33
+ Object.defineProperty(exports, "isDaemonRunning", { enumerable: true, get: function () { return cursor_daemon_1.isDaemonRunning; } });
34
+ Object.defineProperty(exports, "getDaemonStatus", { enumerable: true, get: function () { return cursor_daemon_1.getDaemonStatus; } });
35
+ Object.defineProperty(exports, "startDaemon", { enumerable: true, get: function () { return cursor_daemon_1.startDaemon; } });
36
+ Object.defineProperty(exports, "stopDaemon", { enumerable: true, get: function () { return cursor_daemon_1.stopDaemon; } });
37
+ Object.defineProperty(exports, "getPidFromFile", { enumerable: true, get: function () { return cursor_daemon_1.getPidFromFile; } });
38
+ Object.defineProperty(exports, "writePidToFile", { enumerable: true, get: function () { return cursor_daemon_1.writePidToFile; } });
39
+ Object.defineProperty(exports, "removePidFile", { enumerable: true, get: function () { return cursor_daemon_1.removePidFile; } });
40
+ // Models
41
+ var cursor_models_1 = require("./cursor-models");
42
+ Object.defineProperty(exports, "DEFAULT_CURSOR_MODELS", { enumerable: true, get: function () { return cursor_models_1.DEFAULT_CURSOR_MODELS; } });
43
+ Object.defineProperty(exports, "DEFAULT_CURSOR_PORT", { enumerable: true, get: function () { return cursor_models_1.DEFAULT_CURSOR_PORT; } });
44
+ Object.defineProperty(exports, "DEFAULT_CURSOR_MODEL", { enumerable: true, get: function () { return cursor_models_1.DEFAULT_CURSOR_MODEL; } });
45
+ Object.defineProperty(exports, "fetchModelsFromDaemon", { enumerable: true, get: function () { return cursor_models_1.fetchModelsFromDaemon; } });
46
+ Object.defineProperty(exports, "getAvailableModels", { enumerable: true, get: function () { return cursor_models_1.getAvailableModels; } });
47
+ Object.defineProperty(exports, "getDefaultModel", { enumerable: true, get: function () { return cursor_models_1.getDefaultModel; } });
48
+ Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return cursor_models_1.detectProvider; } });
49
+ Object.defineProperty(exports, "formatModelName", { enumerable: true, get: function () { return cursor_models_1.formatModelName; } });
50
+ // Executor
51
+ var cursor_executor_1 = require("./cursor-executor");
52
+ Object.defineProperty(exports, "CursorExecutor", { enumerable: true, get: function () { return cursor_executor_1.CursorExecutor; } });
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cursor/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,QAAQ;AACR,0CAAwB;AAExB,OAAO;AACP,6CAAoG;AAA3F,+GAAA,gBAAgB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,8GAAA,eAAe,OAAA;AAE5E,SAAS;AACT,iDAQyB;AAPvB,gHAAA,eAAe,OAAA;AACf,gHAAA,eAAe,OAAA;AACf,4GAAA,WAAW,OAAA;AACX,2GAAA,UAAU,OAAA;AACV,+GAAA,cAAc,OAAA;AACd,+GAAA,cAAc,OAAA;AACd,8GAAA,aAAa,OAAA;AAGf,SAAS;AACT,iDASyB;AARvB,sHAAA,qBAAqB,OAAA;AACrB,oHAAA,mBAAmB,OAAA;AACnB,qHAAA,oBAAoB,OAAA;AACpB,sHAAA,qBAAqB,OAAA;AACrB,mHAAA,kBAAkB,OAAA;AAClB,gHAAA,eAAe,OAAA;AACf,+GAAA,cAAc,OAAA;AACd,gHAAA,eAAe,OAAA;AAGjB,WAAW;AACX,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
@@ -1,8 +1,16 @@
1
1
  /**
2
2
  * Cursor IDE Type Definitions
3
3
  *
4
- * TypeScript interfaces for the Cursor auth module.
4
+ * TypeScript interfaces for the Cursor module.
5
5
  */
6
+ /**
7
+ * Cursor daemon configuration.
8
+ * Temporary interface until #521 adds cursor to unified config.
9
+ */
10
+ export interface CursorConfig {
11
+ port: number;
12
+ model: string;
13
+ }
6
14
  /**
7
15
  * Cursor authentication credentials
8
16
  */
@@ -46,4 +54,28 @@ export interface AutoDetectResult {
46
54
  /** Error message (if detection failed) */
47
55
  error?: string;
48
56
  }
57
+ /**
58
+ * Cursor daemon/process status
59
+ */
60
+ export interface CursorDaemonStatus {
61
+ /** Whether daemon is running */
62
+ running: boolean;
63
+ /** Port number daemon is listening on */
64
+ port: number;
65
+ /** Process ID (if available) */
66
+ pid?: number;
67
+ }
68
+ /**
69
+ * Cursor AI model
70
+ */
71
+ export interface CursorModel {
72
+ /** Model ID */
73
+ id: string;
74
+ /** Display name */
75
+ name: string;
76
+ /** Provider (e.g., 'openai', 'anthropic') */
77
+ provider: string;
78
+ /** Whether this is the default model */
79
+ isDefault?: boolean;
80
+ }
49
81
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cursor/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC;IACrC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cursor/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC;IACrC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Cursor IDE Type Definitions
4
4
  *
5
- * TypeScript interfaces for the Cursor auth module.
5
+ * TypeScript interfaces for the Cursor module.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  //# sourceMappingURL=types.js.map
@@ -2,7 +2,7 @@
2
2
  * CCS Type Definitions
3
3
  * Single entry point for all types
4
4
  */
5
- export type { Config, ProfilesConfig, Settings, EnvVars, EnvValue, ProfileMetadata, ProfilesRegistry, CLIProxyVariantsConfig, } from './config';
5
+ export type { Config, ProfilesConfig, Settings, EnvVars, EnvValue, ProfileMetadata, ProfilesRegistry, CLIProxyVariantConfig, CLIProxyVariantsConfig, } from './config';
6
6
  export { isConfig, isSettings } from './config';
7
7
  export type { ParsedArgs, ClaudeSpawnOptions, Platform, ClaudeCliInfo } from './cli';
8
8
  export { ExitCode } from './cli';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,GACtB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,GACtB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH,mCAAgD;AAAvC,kGAAA,QAAQ,OAAA;AAAE,oGAAA,UAAU,OAAA;AAI7B,6BAAiC;AAAxB,+FAAA,QAAQ,OAAA;AA4BjB,gBAAgB;AAChB,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,mCAAgD;AAAvC,kGAAA,QAAQ,OAAA;AAAE,oGAAA,UAAU,OAAA;AAI7B,6BAAiC;AAAxB,+FAAA,QAAQ,OAAA;AA4BjB,gBAAgB;AAChB,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA"}
@@ -1 +1 @@
1
- import{j as e}from"./radix-ui-qEZD5MMp.js";import{r as p}from"./react-vendor-CNOkPC89.js";import{u as D,a as b,b as N,d as A,f as y,g as T}from"./tanstack-De4wvi8X.js";import{c as m,ae as f,b as d,a4 as k,a5 as R,a6 as S,a7 as z,a8 as P,L as C,I as q}from"./index-Cr6iEc8x.js";import{A as F,a as _,b as K,c as L,d as M,e as $,f as E,g as H}from"./alert-dialog-Dy-8Z_Ud.js";import{t as u}from"./notifications-B2HqRBj7.js";import{v as Q,j,ag as O,y as I,l as v,$ as B}from"./icons-D5eAI-GR.js";import"./utils-CzKF5WmX.js";import"./form-utils-C-pVd1--.js";import"./code-highlight-BRUf_pqB.js";function U({className:t,...s}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:m("w-full caption-bottom text-sm",t),...s})})}function V({className:t,...s}){return e.jsx("thead",{"data-slot":"table-header",className:m("[&_tr]:border-b",t),...s})}function Z({className:t,...s}){return e.jsx("tbody",{"data-slot":"table-body",className:m("[&_tr:last-child]:border-0",t),...s})}function w({className:t,...s}){return e.jsx("tr",{"data-slot":"table-row",className:m("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t),...s})}function G({className:t,...s}){return e.jsx("th",{"data-slot":"table-head",className:m("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function J({className:t,...s}){return e.jsx("td",{"data-slot":"table-cell",className:m("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function W(){return D({queryKey:["accounts"],queryFn:()=>f.accounts.list()})}function X(){const t=b();return N({mutationFn:s=>f.accounts.setDefault(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Default account set to "${l}"`)},onError:s=>{u.error(s.message)}})}function Y(){const t=b();return N({mutationFn:()=>f.accounts.resetDefault(),onSuccess:()=>{t.invalidateQueries({queryKey:["accounts"]}),u.success("Default account reset to CCS")},onError:s=>{u.error(s.message)}})}function ee(){const t=b();return N({mutationFn:s=>f.accounts.delete(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Account "${l}" deleted`)},onError:s=>{u.error(s.message)}})}function se({data:t,defaultAccount:s}){const l=X(),i=ee(),r=Y(),[c,o]=p.useState(null),x=A({data:t,columns:[{accessorKey:"name",header:"Name",size:200,cell:({row:a})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:a.original.name}),a.original.name===s&&e.jsx("span",{className:"text-xs bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20",children:"default"})]})},{accessorKey:"type",header:"Type",size:100,cell:({row:a})=>e.jsx("span",{className:"capitalize text-muted-foreground",children:a.original.type||"oauth"})},{accessorKey:"created",header:"Created",size:150,cell:({row:a})=>{const n=new Date(a.original.created);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{accessorKey:"last_used",header:"Last Used",size:150,cell:({row:a})=>{if(!a.original.last_used)return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});const n=new Date(a.original.last_used);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{id:"actions",header:"Actions",size:180,cell:({row:a})=>{const n=a.original.name===s,h=l.isPending||i.isPending;return e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(d,{variant:n?"secondary":"default",size:"sm",className:"h-8 px-2",disabled:n||h,onClick:()=>l.mutate(a.original.name),children:[e.jsx(j,{className:`w-3 h-3 mr-1 ${n?"opacity-50":""}`}),n?"Active":"Set Default"]}),e.jsx(d,{variant:"ghost",size:"sm",className:"h-8 px-2 text-destructive hover:text-destructive hover:bg-destructive/10",disabled:n||h,onClick:()=>o(a.original.name),title:n?"Cannot delete default account":"Delete account",children:e.jsx(O,{className:"w-4 h-4"})})]})}}],getCoreRowModel:T()});return t.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:["No accounts found. Use"," ",e.jsx("code",{className:"text-sm bg-muted px-1 rounded",children:"ccs auth create"})," to add accounts."]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"border rounded-md",children:e.jsxs(U,{children:[e.jsx(V,{children:x.getHeaderGroups().map(a=>e.jsx(w,{children:a.headers.map(n=>{const h={name:"w-[200px]",type:"w-[100px]",created:"w-[150px]",last_used:"w-[150px]",actions:"w-[180px]"}[n.id]||"w-auto";return e.jsx(G,{className:h,children:n.isPlaceholder?null:y(n.column.columnDef.header,n.getContext())},n.id)})},a.id))}),e.jsx(Z,{children:x.getRowModel().rows.map(a=>e.jsx(w,{children:a.getVisibleCells().map(n=>e.jsx(J,{children:y(n.column.columnDef.cell,n.getContext())},n.id))},a.id))})]})}),s&&e.jsx("div",{className:"flex justify-end",children:e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>r.mutate(),disabled:r.isPending,children:[e.jsx(Q,{className:"w-4 h-4 mr-2"}),"Reset to CCS Default"]})})]}),e.jsx(F,{open:!!c,onOpenChange:a=>!a&&o(null),children:e.jsxs(_,{children:[e.jsxs(K,{children:[e.jsx(L,{children:"Delete Account"}),e.jsxs(M,{children:['Are you sure you want to delete the account "',c,'"? This will remove the profile and all its session data. This action cannot be undone.']})]}),e.jsxs($,{children:[e.jsx(E,{children:"Cancel"}),e.jsx(H,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{c&&(i.mutate(c),o(null))},children:"Delete"})]})]})})]})}function te({open:t,onClose:s}){const[l,i]=p.useState(""),[r,c]=p.useState(!1),o=/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(l),g=l?`ccs auth create ${l}`:"ccs auth create <name>",x=async()=>{o&&(await navigator.clipboard.writeText(g),c(!0),setTimeout(()=>c(!1),2e3))},a=()=>{i(""),c(!1),s()};return e.jsx(k,{open:t,onOpenChange:n=>!n&&a(),children:e.jsxs(R,{className:"sm:max-w-md",children:[e.jsxs(S,{children:[e.jsx(z,{children:"Create New Account"}),e.jsx(P,{children:"Auth profiles require Claude CLI login. Run the command below in your terminal."})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{htmlFor:"profile-name",children:"Profile Name"}),e.jsx(q,{id:"profile-name",value:l,onChange:n=>i(n.target.value),placeholder:"e.g., work, personal, client",autoComplete:"off"}),l&&!o&&e.jsx("p",{className:"text-xs text-destructive",children:"Name must start with a letter and contain only letters, numbers, dashes, or underscores."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{children:"Command"}),e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-md font-mono text-sm",children:[e.jsx(I,{className:"w-4 h-4 text-muted-foreground shrink-0"}),e.jsx("code",{className:"flex-1 break-all",children:g}),e.jsx(d,{variant:"ghost",size:"sm",className:"shrink-0 h-8 px-2",onClick:x,disabled:!o,children:r?e.jsx(j,{className:"w-4 h-4 text-green-500"}):e.jsx(v,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground space-y-1",children:[e.jsx("p",{children:"After running the command:"}),e.jsxs("ol",{className:"list-decimal list-inside pl-2 space-y-0.5",children:[e.jsx("li",{children:"Complete the Claude login in your browser"}),e.jsx("li",{children:"Return here and refresh to see the new account"})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[e.jsx(d,{variant:"ghost",onClick:a,children:"Close"}),e.jsx(d,{onClick:x,disabled:!o,children:r?e.jsxs(e.Fragment,{children:[e.jsx(j,{className:"w-4 h-4 mr-2"}),"Copied!"]}):e.jsxs(e.Fragment,{children:[e.jsx(v,{className:"w-4 h-4 mr-2"}),"Copy Command"]})})]})]})]})})}function xe(){const{data:t,isLoading:s,refetch:l}=W(),[i,r]=p.useState(!1);return e.jsxs("div",{className:"p-6 max-w-6xl mx-auto space-y-8",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Accounts"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Manage multi-account Claude sessions (profiles.json)"})]}),e.jsxs(d,{onClick:()=>r(!0),children:[e.jsx(B,{className:"w-4 h-4 mr-2"}),"Create Account"]})]}),s?e.jsx("div",{className:"text-muted-foreground",children:"Loading accounts..."}):e.jsx(se,{data:t?.accounts||[],defaultAccount:t?.default??null,onRefresh:l}),e.jsx(te,{open:i,onClose:()=>r(!1)})]})}export{xe as AccountsPage};
1
+ import{j as e}from"./radix-ui-qEZD5MMp.js";import{r as p}from"./react-vendor-CNOkPC89.js";import{u as D,a as b,b as N,d as A,f as y,g as T}from"./tanstack-De4wvi8X.js";import{c as m,ae as f,b as d,a4 as k,a5 as R,a6 as S,a7 as z,a8 as P,L as C,I as q}from"./index-D4L2ZIJs.js";import{A as F,a as _,b as K,c as L,d as M,e as $,f as E,g as H}from"./alert-dialog-KnsD6NpU.js";import{t as u}from"./notifications-B2HqRBj7.js";import{v as Q,j,ag as O,y as I,l as v,$ as B}from"./icons-D5eAI-GR.js";import"./utils-CzKF5WmX.js";import"./form-utils-C-pVd1--.js";import"./code-highlight-BRUf_pqB.js";function U({className:t,...s}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:m("w-full caption-bottom text-sm",t),...s})})}function V({className:t,...s}){return e.jsx("thead",{"data-slot":"table-header",className:m("[&_tr]:border-b",t),...s})}function Z({className:t,...s}){return e.jsx("tbody",{"data-slot":"table-body",className:m("[&_tr:last-child]:border-0",t),...s})}function w({className:t,...s}){return e.jsx("tr",{"data-slot":"table-row",className:m("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t),...s})}function G({className:t,...s}){return e.jsx("th",{"data-slot":"table-head",className:m("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function J({className:t,...s}){return e.jsx("td",{"data-slot":"table-cell",className:m("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function W(){return D({queryKey:["accounts"],queryFn:()=>f.accounts.list()})}function X(){const t=b();return N({mutationFn:s=>f.accounts.setDefault(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Default account set to "${l}"`)},onError:s=>{u.error(s.message)}})}function Y(){const t=b();return N({mutationFn:()=>f.accounts.resetDefault(),onSuccess:()=>{t.invalidateQueries({queryKey:["accounts"]}),u.success("Default account reset to CCS")},onError:s=>{u.error(s.message)}})}function ee(){const t=b();return N({mutationFn:s=>f.accounts.delete(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Account "${l}" deleted`)},onError:s=>{u.error(s.message)}})}function se({data:t,defaultAccount:s}){const l=X(),i=ee(),r=Y(),[c,o]=p.useState(null),x=A({data:t,columns:[{accessorKey:"name",header:"Name",size:200,cell:({row:a})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:a.original.name}),a.original.name===s&&e.jsx("span",{className:"text-xs bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20",children:"default"})]})},{accessorKey:"type",header:"Type",size:100,cell:({row:a})=>e.jsx("span",{className:"capitalize text-muted-foreground",children:a.original.type||"oauth"})},{accessorKey:"created",header:"Created",size:150,cell:({row:a})=>{const n=new Date(a.original.created);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{accessorKey:"last_used",header:"Last Used",size:150,cell:({row:a})=>{if(!a.original.last_used)return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});const n=new Date(a.original.last_used);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{id:"actions",header:"Actions",size:180,cell:({row:a})=>{const n=a.original.name===s,h=l.isPending||i.isPending;return e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(d,{variant:n?"secondary":"default",size:"sm",className:"h-8 px-2",disabled:n||h,onClick:()=>l.mutate(a.original.name),children:[e.jsx(j,{className:`w-3 h-3 mr-1 ${n?"opacity-50":""}`}),n?"Active":"Set Default"]}),e.jsx(d,{variant:"ghost",size:"sm",className:"h-8 px-2 text-destructive hover:text-destructive hover:bg-destructive/10",disabled:n||h,onClick:()=>o(a.original.name),title:n?"Cannot delete default account":"Delete account",children:e.jsx(O,{className:"w-4 h-4"})})]})}}],getCoreRowModel:T()});return t.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:["No accounts found. Use"," ",e.jsx("code",{className:"text-sm bg-muted px-1 rounded",children:"ccs auth create"})," to add accounts."]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"border rounded-md",children:e.jsxs(U,{children:[e.jsx(V,{children:x.getHeaderGroups().map(a=>e.jsx(w,{children:a.headers.map(n=>{const h={name:"w-[200px]",type:"w-[100px]",created:"w-[150px]",last_used:"w-[150px]",actions:"w-[180px]"}[n.id]||"w-auto";return e.jsx(G,{className:h,children:n.isPlaceholder?null:y(n.column.columnDef.header,n.getContext())},n.id)})},a.id))}),e.jsx(Z,{children:x.getRowModel().rows.map(a=>e.jsx(w,{children:a.getVisibleCells().map(n=>e.jsx(J,{children:y(n.column.columnDef.cell,n.getContext())},n.id))},a.id))})]})}),s&&e.jsx("div",{className:"flex justify-end",children:e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>r.mutate(),disabled:r.isPending,children:[e.jsx(Q,{className:"w-4 h-4 mr-2"}),"Reset to CCS Default"]})})]}),e.jsx(F,{open:!!c,onOpenChange:a=>!a&&o(null),children:e.jsxs(_,{children:[e.jsxs(K,{children:[e.jsx(L,{children:"Delete Account"}),e.jsxs(M,{children:['Are you sure you want to delete the account "',c,'"? This will remove the profile and all its session data. This action cannot be undone.']})]}),e.jsxs($,{children:[e.jsx(E,{children:"Cancel"}),e.jsx(H,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{c&&(i.mutate(c),o(null))},children:"Delete"})]})]})})]})}function te({open:t,onClose:s}){const[l,i]=p.useState(""),[r,c]=p.useState(!1),o=/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(l),g=l?`ccs auth create ${l}`:"ccs auth create <name>",x=async()=>{o&&(await navigator.clipboard.writeText(g),c(!0),setTimeout(()=>c(!1),2e3))},a=()=>{i(""),c(!1),s()};return e.jsx(k,{open:t,onOpenChange:n=>!n&&a(),children:e.jsxs(R,{className:"sm:max-w-md",children:[e.jsxs(S,{children:[e.jsx(z,{children:"Create New Account"}),e.jsx(P,{children:"Auth profiles require Claude CLI login. Run the command below in your terminal."})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{htmlFor:"profile-name",children:"Profile Name"}),e.jsx(q,{id:"profile-name",value:l,onChange:n=>i(n.target.value),placeholder:"e.g., work, personal, client",autoComplete:"off"}),l&&!o&&e.jsx("p",{className:"text-xs text-destructive",children:"Name must start with a letter and contain only letters, numbers, dashes, or underscores."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{children:"Command"}),e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-md font-mono text-sm",children:[e.jsx(I,{className:"w-4 h-4 text-muted-foreground shrink-0"}),e.jsx("code",{className:"flex-1 break-all",children:g}),e.jsx(d,{variant:"ghost",size:"sm",className:"shrink-0 h-8 px-2",onClick:x,disabled:!o,children:r?e.jsx(j,{className:"w-4 h-4 text-green-500"}):e.jsx(v,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground space-y-1",children:[e.jsx("p",{children:"After running the command:"}),e.jsxs("ol",{className:"list-decimal list-inside pl-2 space-y-0.5",children:[e.jsx("li",{children:"Complete the Claude login in your browser"}),e.jsx("li",{children:"Return here and refresh to see the new account"})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[e.jsx(d,{variant:"ghost",onClick:a,children:"Close"}),e.jsx(d,{onClick:x,disabled:!o,children:r?e.jsxs(e.Fragment,{children:[e.jsx(j,{className:"w-4 h-4 mr-2"}),"Copied!"]}):e.jsxs(e.Fragment,{children:[e.jsx(v,{className:"w-4 h-4 mr-2"}),"Copy Command"]})})]})]})]})})}function xe(){const{data:t,isLoading:s,refetch:l}=W(),[i,r]=p.useState(!1);return e.jsxs("div",{className:"p-6 max-w-6xl mx-auto space-y-8",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Accounts"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Manage multi-account Claude sessions (profiles.json)"})]}),e.jsxs(d,{onClick:()=>r(!0),children:[e.jsx(B,{className:"w-4 h-4 mr-2"}),"Create Account"]})]}),s?e.jsx("div",{className:"text-muted-foreground",children:"Loading accounts..."}):e.jsx(se,{data:t?.accounts||[],defaultAccount:t?.default??null,onRefresh:l}),e.jsx(te,{open:i,onClose:()=>r(!1)})]})}export{xe as AccountsPage};
@@ -1 +1 @@
1
- import{j as e,a4 as s,a5 as r,a6 as n,a7 as i,a8 as d,a9 as c,aa as u,ab as f}from"./radix-ui-qEZD5MMp.js";import"./react-vendor-CNOkPC89.js";import{c as o,a_ as l}from"./index-Cr6iEc8x.js";function A({...a}){return e.jsx(s,{"data-slot":"alert-dialog",...a})}function g({...a}){return e.jsx(u,{"data-slot":"alert-dialog-portal",...a})}function m({className:a,...t}){return e.jsx(f,{"data-slot":"alert-dialog-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...t})}function D({className:a,...t}){return e.jsxs(g,{children:[e.jsx(m,{}),e.jsx(r,{"data-slot":"alert-dialog-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",a),...t})]})}function b({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-header",className:o("flex flex-col gap-2 text-center sm:text-left",a),...t})}function N({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-footer",className:o("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...t})}function v({className:a,...t}){return e.jsx(n,{"data-slot":"alert-dialog-title",className:o("text-lg font-semibold",a),...t})}function w({className:a,...t}){return e.jsx(i,{"data-slot":"alert-dialog-description",className:o("text-muted-foreground text-sm",a),...t})}function y({className:a,...t}){return e.jsx(c,{className:o(l(),a),...t})}function z({className:a,...t}){return e.jsx(d,{className:o(l({variant:"outline"}),a),...t})}export{A,D as a,b,v as c,w as d,N as e,z as f,y as g};
1
+ import{j as e,a4 as s,a5 as r,a6 as n,a7 as i,a8 as d,a9 as c,aa as u,ab as f}from"./radix-ui-qEZD5MMp.js";import"./react-vendor-CNOkPC89.js";import{c as o,b0 as l}from"./index-D4L2ZIJs.js";function A({...a}){return e.jsx(s,{"data-slot":"alert-dialog",...a})}function g({...a}){return e.jsx(u,{"data-slot":"alert-dialog-portal",...a})}function m({className:a,...t}){return e.jsx(f,{"data-slot":"alert-dialog-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...t})}function D({className:a,...t}){return e.jsxs(g,{children:[e.jsx(m,{}),e.jsx(r,{"data-slot":"alert-dialog-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",a),...t})]})}function b({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-header",className:o("flex flex-col gap-2 text-center sm:text-left",a),...t})}function N({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-footer",className:o("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...t})}function v({className:a,...t}){return e.jsx(n,{"data-slot":"alert-dialog-title",className:o("text-lg font-semibold",a),...t})}function w({className:a,...t}){return e.jsx(i,{"data-slot":"alert-dialog-description",className:o("text-muted-foreground text-sm",a),...t})}function y({className:a,...t}){return e.jsx(c,{className:o(l(),a),...t})}function z({className:a,...t}){return e.jsx(d,{className:o(l({variant:"outline"}),a),...t})}export{A,D as a,b,v as c,w as d,N as e,z as f,y as g};