@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.
- package/dist/api/services/profile-reader.d.ts.map +1 -1
- package/dist/api/services/profile-reader.js +4 -1
- package/dist/api/services/profile-reader.js.map +1 -1
- package/dist/auth/profile-detector.d.ts +14 -3
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +35 -15
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/ccs.js +11 -0
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/composite-validator.d.ts +20 -0
- package/dist/cliproxy/composite-validator.d.ts.map +1 -0
- package/dist/cliproxy/composite-validator.js +85 -0
- package/dist/cliproxy/composite-validator.js.map +1 -0
- package/dist/cliproxy/config/env-builder.d.ts +24 -0
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +72 -1
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts +19 -2
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +59 -9
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/env-resolver.d.ts +16 -0
- package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
- package/dist/cliproxy/executor/env-resolver.js +82 -26
- package/dist/cliproxy/executor/env-resolver.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +147 -34
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/retry-handler.d.ts +11 -0
- package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
- package/dist/cliproxy/executor/retry-handler.js +30 -1
- package/dist/cliproxy/executor/retry-handler.js.map +1 -1
- package/dist/cliproxy/provider-capabilities.d.ts +22 -0
- package/dist/cliproxy/provider-capabilities.d.ts.map +1 -0
- package/dist/cliproxy/provider-capabilities.js +95 -0
- package/dist/cliproxy/provider-capabilities.js.map +1 -0
- package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
- package/dist/cliproxy/quota-fetcher-codex.js +106 -87
- package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
- package/dist/cliproxy/remote-auth-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/remote-auth-fetcher.js +3 -26
- package/dist/cliproxy/remote-auth-fetcher.js.map +1 -1
- package/dist/cliproxy/services/index.d.ts +1 -1
- package/dist/cliproxy/services/index.d.ts.map +1 -1
- package/dist/cliproxy/services/index.js +3 -1
- package/dist/cliproxy/services/index.js.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.d.ts +15 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.js +84 -11
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
- package/dist/cliproxy/services/variant-service.d.ts +26 -0
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-service.js +163 -9
- package/dist/cliproxy/services/variant-service.js.map +1 -1
- package/dist/cliproxy/services/variant-settings.d.ts +18 -0
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-settings.js +126 -4
- package/dist/cliproxy/services/variant-settings.js.map +1 -1
- package/dist/cliproxy/types.d.ts +13 -0
- package/dist/cliproxy/types.d.ts.map +1 -1
- package/dist/cliproxy/types.js.map +1 -1
- package/dist/commands/cliproxy/auth-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/auth-subcommand.js +2 -1
- package/dist/commands/cliproxy/auth-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +2 -0
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +4 -0
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +106 -4
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/variant-subcommand.d.ts +1 -0
- package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/variant-subcommand.js +307 -3
- package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
- package/dist/commands/command-execution-contract.d.ts +23 -0
- package/dist/commands/command-execution-contract.d.ts.map +1 -0
- package/dist/commands/command-execution-contract.js +21 -0
- package/dist/commands/command-execution-contract.js.map +1 -0
- package/dist/commands/cursor-command.d.ts +12 -0
- package/dist/commands/cursor-command.d.ts.map +1 -0
- package/dist/commands/cursor-command.js +225 -0
- package/dist/commands/cursor-command.js.map +1 -0
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +14 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/shell-completion-command.d.ts +20 -0
- package/dist/commands/shell-completion-command.d.ts.map +1 -1
- package/dist/commands/shell-completion-command.js +45 -30
- package/dist/commands/shell-completion-command.js.map +1 -1
- package/dist/config/reserved-names.d.ts +1 -1
- package/dist/config/reserved-names.d.ts.map +1 -1
- package/dist/config/reserved-names.js +2 -0
- package/dist/config/reserved-names.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts +6 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +56 -2
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +71 -2
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +27 -2
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts +47 -0
- package/dist/cursor/cursor-daemon.d.ts.map +1 -0
- package/dist/cursor/cursor-daemon.js +332 -0
- package/dist/cursor/cursor-daemon.js.map +1 -0
- package/dist/cursor/cursor-executor.d.ts +81 -0
- package/dist/cursor/cursor-executor.d.ts.map +1 -0
- package/dist/cursor/cursor-executor.js +821 -0
- package/dist/cursor/cursor-executor.js.map +1 -0
- package/dist/cursor/cursor-models.d.ts +43 -0
- package/dist/cursor/cursor-models.d.ts.map +1 -0
- package/dist/cursor/cursor-models.js +205 -0
- package/dist/cursor/cursor-models.js.map +1 -0
- package/dist/cursor/cursor-protobuf-decoder.d.ts +52 -0
- package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -0
- package/dist/cursor/cursor-protobuf-decoder.js +311 -0
- package/dist/cursor/cursor-protobuf-decoder.js.map +1 -0
- package/dist/cursor/cursor-protobuf-encoder.d.ts +54 -0
- package/dist/cursor/cursor-protobuf-encoder.d.ts.map +1 -0
- package/dist/cursor/cursor-protobuf-encoder.js +173 -0
- package/dist/cursor/cursor-protobuf-encoder.js.map +1 -0
- package/dist/cursor/cursor-protobuf-schema.d.ts +215 -0
- package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -0
- package/dist/cursor/cursor-protobuf-schema.js +120 -0
- package/dist/cursor/cursor-protobuf-schema.js.map +1 -0
- package/dist/cursor/cursor-protobuf.d.ts +21 -0
- package/dist/cursor/cursor-protobuf.d.ts.map +1 -0
- package/dist/cursor/cursor-protobuf.js +116 -0
- package/dist/cursor/cursor-protobuf.js.map +1 -0
- package/dist/cursor/cursor-stream-parser.d.ts +52 -0
- package/dist/cursor/cursor-stream-parser.d.ts.map +1 -0
- package/dist/cursor/cursor-stream-parser.js +142 -0
- package/dist/cursor/cursor-stream-parser.js.map +1 -0
- package/dist/cursor/cursor-translator.d.ts +39 -0
- package/dist/cursor/cursor-translator.d.ts.map +1 -0
- package/dist/cursor/cursor-translator.js +118 -0
- package/dist/cursor/cursor-translator.js.map +1 -0
- package/dist/cursor/index.d.ts +11 -0
- package/dist/cursor/index.d.ts.map +1 -0
- package/dist/cursor/index.js +53 -0
- package/dist/cursor/index.js.map +1 -0
- package/dist/cursor/types.d.ts +33 -1
- package/dist/cursor/types.d.ts.map +1 -1
- package/dist/cursor/types.js +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/ui/assets/{accounts-CkN_roEn.js → accounts-D8ceTwko.js} +1 -1
- package/dist/ui/assets/{alert-dialog-Dy-8Z_Ud.js → alert-dialog-KnsD6NpU.js} +1 -1
- package/dist/ui/assets/{api-2TN7yVwm.js → api-Bp0E7mYy.js} +1 -1
- package/dist/ui/assets/{auth-section-CeKCNzzC.js → auth-section-D4quwqhL.js} +1 -1
- package/dist/ui/assets/{backups-section-CDuqhiZo.js → backups-section-D-oq--M3.js} +1 -1
- package/dist/ui/assets/cliproxy-BsgW2jbH.js +3 -0
- package/dist/ui/assets/{cliproxy-control-panel-DJd_zNR3.js → cliproxy-control-panel-B6xlfLnN.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-DtYrWaa7.js → confirm-dialog-ConYUjNo.js} +1 -1
- package/dist/ui/assets/{copilot-DHdywZ9L.js → copilot-BO0JhNVL.js} +3 -3
- package/dist/ui/assets/{globalenv-section-Cn5ufgRh.js → globalenv-section-CGiUottp.js} +1 -1
- package/dist/ui/assets/{health-BsMhSeFz.js → health-DnkFdo0B.js} +1 -1
- package/dist/ui/assets/index-ByiEOnlQ.css +1 -0
- package/dist/ui/assets/{index-CEF_VhSR.js → index-C_MPOoUZ.js} +1 -1
- package/dist/ui/assets/index-CxWM9Sgz.js +1 -0
- package/dist/ui/assets/index-D4L2ZIJs.js +47 -0
- package/dist/ui/assets/{index-B2GQ_Joi.js → index-DcYq7jVv.js} +1 -1
- package/dist/ui/assets/{index-DkMR3J96.js → index-aB5MHYio.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-Cb7KfEqq.js → proxy-status-widget-BbZeFxlJ.js} +1 -1
- package/dist/ui/assets/{shared-BsWeldW8.js → shared-B_aV9M2M.js} +1 -1
- package/dist/ui/assets/{switch-D6XSRTo_.js → switch-60ycFRmr.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/config-manager.js +17 -6
- package/dist/utils/config-manager.js.map +1 -1
- package/dist/web-server/jsonl-parser.js +1 -1
- package/dist/web-server/jsonl-parser.js.map +1 -1
- package/dist/web-server/routes/account-routes.d.ts.map +1 -1
- package/dist/web-server/routes/account-routes.js +5 -11
- package/dist/web-server/routes/account-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +43 -4
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts +6 -0
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cursor-routes.js +163 -0
- package/dist/web-server/routes/cursor-routes.js.map +1 -0
- package/dist/web-server/routes/cursor-settings-routes.d.ts +6 -0
- package/dist/web-server/routes/cursor-settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cursor-settings-routes.js +171 -0
- package/dist/web-server/routes/cursor-settings-routes.js.map +1 -0
- package/dist/web-server/routes/index.d.ts.map +1 -1
- package/dist/web-server/routes/index.js +3 -0
- package/dist/web-server/routes/index.js.map +1 -1
- package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
- package/dist/web-server/routes/variant-routes.js +107 -6
- package/dist/web-server/routes/variant-routes.js.map +1 -1
- package/package.json +5 -2
- package/scripts/hardening-inventory.js +526 -0
- package/scripts/maintainability-baseline.js +309 -0
- package/dist/ui/assets/cliproxy-626zUpA_.js +0 -3
- package/dist/ui/assets/index-Bmgylhgn.js +0 -1
- package/dist/ui/assets/index-Cr6iEc8x.js +0 -47
- 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":"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"}
|
|
@@ -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"}
|
package/dist/cursor/types.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cursor IDE Type Definitions
|
|
3
3
|
*
|
|
4
|
-
* TypeScript interfaces for the Cursor
|
|
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"}
|
package/dist/cursor/types.js
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
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-
|
|
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,
|
|
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};
|