cursor-api-proxy 0.5.0 → 0.7.0

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 (47) hide show
  1. package/README.md +61 -29
  2. package/dist/cli/reset-hwid.js +10 -1
  3. package/dist/cli/reset-hwid.js.map +1 -1
  4. package/dist/cli/usage.d.ts +1 -5
  5. package/dist/cli/usage.js +1 -38
  6. package/dist/cli/usage.js.map +1 -1
  7. package/dist/lib/acp-client.d.ts +42 -0
  8. package/dist/lib/acp-client.js +472 -0
  9. package/dist/lib/acp-client.js.map +1 -0
  10. package/dist/lib/agent-cmd-args.d.ts +4 -0
  11. package/dist/lib/agent-cmd-args.js +8 -3
  12. package/dist/lib/agent-cmd-args.js.map +1 -1
  13. package/dist/lib/agent-runner.d.ts +2 -2
  14. package/dist/lib/agent-runner.js +97 -5
  15. package/dist/lib/agent-runner.js.map +1 -1
  16. package/dist/lib/config.d.ts +20 -0
  17. package/dist/lib/config.js +22 -1
  18. package/dist/lib/config.js.map +1 -1
  19. package/dist/lib/env.d.ts +9 -0
  20. package/dist/lib/env.js +51 -0
  21. package/dist/lib/env.js.map +1 -1
  22. package/dist/lib/handlers/anthropic-messages.js +128 -20
  23. package/dist/lib/handlers/anthropic-messages.js.map +1 -1
  24. package/dist/lib/handlers/chat-completions.js +150 -20
  25. package/dist/lib/handlers/chat-completions.js.map +1 -1
  26. package/dist/lib/http.d.ts +2 -2
  27. package/dist/lib/http.js +7 -3
  28. package/dist/lib/http.js.map +1 -1
  29. package/dist/lib/process.d.ts +7 -0
  30. package/dist/lib/process.js +22 -2
  31. package/dist/lib/process.js.map +1 -1
  32. package/dist/lib/request-listener.js +7 -2
  33. package/dist/lib/request-listener.js.map +1 -1
  34. package/dist/lib/request-log.js +1 -1
  35. package/dist/lib/request-log.js.map +1 -1
  36. package/dist/lib/server.js +8 -0
  37. package/dist/lib/server.js.map +1 -1
  38. package/dist/lib/token-cache.d.ts +6 -0
  39. package/dist/lib/token-cache.js +40 -0
  40. package/dist/lib/token-cache.js.map +1 -0
  41. package/dist/lib/win-cmdline-limit.d.ts +32 -0
  42. package/dist/lib/win-cmdline-limit.js +92 -0
  43. package/dist/lib/win-cmdline-limit.js.map +1 -0
  44. package/dist/lib/workspace.d.ts +5 -0
  45. package/dist/lib/workspace.js +53 -2
  46. package/dist/lib/workspace.js.map +1 -1
  47. package/package.json +1 -1
@@ -1,6 +1,8 @@
1
1
  import * as fs from "node:fs";
2
+ import { runAcpStream, runAcpSync } from "./acp-client.js";
2
3
  import { run, runStreaming } from "./process.js";
3
- import { readKeychainToken, writeCachedToken } from "../cli/usage.js";
4
+ import { getChatOnlyEnvOverrides } from "./workspace.js";
5
+ import { readKeychainToken, writeCachedToken } from "./token-cache.js";
4
6
  function cacheTokenForAccount(configDir) {
5
7
  if (!configDir)
6
8
  return;
@@ -8,14 +10,66 @@ function cacheTokenForAccount(configDir) {
8
10
  if (token)
9
11
  writeCachedToken(configDir, token);
10
12
  }
11
- export function runAgentSync(config, workspaceDir, cmdArgs, tempDir, configDir, signal) {
13
+ function acpArgsWithModel(acpArgs, model) {
14
+ const i = acpArgs.indexOf("acp");
15
+ if (i === -1)
16
+ return acpArgs;
17
+ return [...acpArgs.slice(0, i + 1), "--model", model, ...acpArgs.slice(i + 1)];
18
+ }
19
+ function acpArgsWithWorkspace(acpArgs, workspaceDir) {
20
+ const i = acpArgs.indexOf("acp");
21
+ if (i === -1)
22
+ return acpArgs;
23
+ return [...acpArgs.slice(0, i), "--workspace", workspaceDir, ...acpArgs.slice(i)];
24
+ }
25
+ function extractModelFromCmdArgs(cmdArgs) {
26
+ const i = cmdArgs.indexOf("--model");
27
+ return i >= 0 && i + 1 < cmdArgs.length ? cmdArgs[i + 1] : undefined;
28
+ }
29
+ export function runAgentSync(config, workspaceDir, cmdArgs, tempDir, stdinPrompt, configDir, signal) {
30
+ if (config.useAcp && typeof stdinPrompt === "string") {
31
+ const acpModel = extractModelFromCmdArgs(cmdArgs);
32
+ let args = acpArgsWithWorkspace(config.acpArgs, workspaceDir);
33
+ args = acpModel ? acpArgsWithModel(args, acpModel) : args;
34
+ const acpEnv = { ...config.acpEnv };
35
+ if (config.chatOnlyWorkspace) {
36
+ Object.assign(acpEnv, getChatOnlyEnvOverrides(workspaceDir));
37
+ }
38
+ return runAcpSync(config.acpCommand, args, stdinPrompt, {
39
+ cwd: workspaceDir,
40
+ timeoutMs: config.timeoutMs,
41
+ env: acpEnv,
42
+ model: acpModel,
43
+ requestTimeoutMs: 60_000,
44
+ spawnOptions: config.acpSpawnOptions,
45
+ skipAuthenticate: config.acpSkipAuthenticate,
46
+ rawDebug: config.acpRawDebug,
47
+ signal,
48
+ }).then((out) => {
49
+ cacheTokenForAccount(configDir);
50
+ if (tempDir) {
51
+ try {
52
+ fs.rmSync(tempDir, { recursive: true, force: true });
53
+ }
54
+ catch {
55
+ /* ignore */
56
+ }
57
+ }
58
+ return out;
59
+ });
60
+ }
61
+ const runEnvOverrides = config.chatOnlyWorkspace
62
+ ? getChatOnlyEnvOverrides(workspaceDir)
63
+ : undefined;
12
64
  return run(config.agentBin, cmdArgs, {
13
65
  cwd: workspaceDir,
14
66
  timeoutMs: config.timeoutMs,
15
67
  maxMode: config.maxMode,
68
+ stdinContent: stdinPrompt,
69
+ envOverrides: runEnvOverrides,
16
70
  configDir,
17
71
  signal,
18
- }).finally(() => {
72
+ }).then((out) => {
19
73
  cacheTokenForAccount(configDir);
20
74
  if (tempDir) {
21
75
  try {
@@ -25,17 +79,54 @@ export function runAgentSync(config, workspaceDir, cmdArgs, tempDir, configDir,
25
79
  /* ignore */
26
80
  }
27
81
  }
82
+ return out;
28
83
  });
29
84
  }
30
- export function runAgentStream(config, workspaceDir, cmdArgs, onLine, tempDir, configDir, signal) {
85
+ export function runAgentStream(config, workspaceDir, cmdArgs, onLine, tempDir, stdinPrompt, configDir, signal) {
86
+ if (config.useAcp && typeof stdinPrompt === "string") {
87
+ const acpModel = extractModelFromCmdArgs(cmdArgs);
88
+ let args = acpArgsWithWorkspace(config.acpArgs, workspaceDir);
89
+ args = acpModel ? acpArgsWithModel(args, acpModel) : args;
90
+ const acpEnv = { ...config.acpEnv };
91
+ if (config.chatOnlyWorkspace) {
92
+ Object.assign(acpEnv, getChatOnlyEnvOverrides(workspaceDir));
93
+ }
94
+ return runAcpStream(config.acpCommand, args, stdinPrompt, {
95
+ cwd: workspaceDir,
96
+ timeoutMs: config.timeoutMs,
97
+ env: acpEnv,
98
+ model: acpModel,
99
+ requestTimeoutMs: 60_000,
100
+ spawnOptions: config.acpSpawnOptions,
101
+ skipAuthenticate: config.acpSkipAuthenticate,
102
+ rawDebug: config.acpRawDebug,
103
+ signal,
104
+ }, onLine).then((result) => {
105
+ cacheTokenForAccount(configDir);
106
+ if (tempDir) {
107
+ try {
108
+ fs.rmSync(tempDir, { recursive: true, force: true });
109
+ }
110
+ catch {
111
+ /* ignore */
112
+ }
113
+ }
114
+ return result;
115
+ });
116
+ }
117
+ const streamEnvOverrides = config.chatOnlyWorkspace
118
+ ? getChatOnlyEnvOverrides(workspaceDir)
119
+ : undefined;
31
120
  return runStreaming(config.agentBin, cmdArgs, {
32
121
  cwd: workspaceDir,
33
122
  timeoutMs: config.timeoutMs,
34
123
  maxMode: config.maxMode,
35
124
  onLine,
125
+ stdinContent: stdinPrompt,
126
+ envOverrides: streamEnvOverrides,
36
127
  configDir,
37
128
  signal,
38
- }).finally(() => {
129
+ }).then((result) => {
39
130
  cacheTokenForAccount(configDir);
40
131
  if (tempDir) {
41
132
  try {
@@ -45,6 +136,7 @@ export function runAgentStream(config, workspaceDir, cmdArgs, onLine, tempDir, c
45
136
  /* ignore */
46
137
  }
47
138
  }
139
+ return result;
48
140
  });
49
141
  }
50
142
  //# sourceMappingURL=agent-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/lib/agent-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,SAAS,oBAAoB,CAAC,SAAkB;IAC9C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,IAAI,KAAK;QAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAQD,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,YAAoB,EACpB,OAAiB,EACjB,OAAgB,EAChB,SAAkB,EAClB,MAAoB;IAEpB,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;QACnC,GAAG,EAAE,YAAY;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS;QACT,MAAM;KACP,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAID,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,YAAoB,EACpB,OAAiB,EACjB,MAAyB,EACzB,OAAgB,EAChB,SAAkB,EAClB,MAAoB;IAEpB,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;QAC5C,GAAG,EAAE,YAAY;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM;QACN,SAAS;QACT,MAAM;KACP,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/lib/agent-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,SAAS,oBAAoB,CAAC,SAAkB;IAC9C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,IAAI,KAAK;QAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAQD,SAAS,gBAAgB,CAAC,OAAiB,EAAE,KAAa;IACxD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7B,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAiB,EAAE,YAAoB;IACnE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7B,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAiB;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,YAAoB,EACpB,OAAiB,EACjB,OAAgB,EAChB,WAAoB,EACpB,SAAkB,EAClB,MAAoB;IAEpB,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;YACtD,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,QAAQ;YACf,gBAAgB,EAAE,MAAM;YACxB,YAAY,EAAE,MAAM,CAAC,eAAe;YACpC,gBAAgB,EAAE,MAAM,CAAC,mBAAmB;YAC5C,QAAQ,EAAE,MAAM,CAAC,WAAW;YAC5B,MAAM;SACP,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB;QAC9C,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;QACnC,GAAG,EAAE,YAAY;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,eAAe;QAC7B,SAAS;QACT,MAAM;KACP,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAID,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,YAAoB,EACpB,OAAiB,EACjB,MAAyB,EACzB,OAAgB,EAChB,WAAoB,EACpB,SAAkB,EAClB,MAAoB;IAEpB,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,YAAY,CACjB,MAAM,CAAC,UAAU,EACjB,IAAI,EACJ,WAAW,EACX;YACE,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,QAAQ;YACf,gBAAgB,EAAE,MAAM;YACxB,YAAY,EAAE,MAAM,CAAC,eAAe;YACpC,gBAAgB,EAAE,MAAM,CAAC,mBAAmB;YAC5C,QAAQ,EAAE,MAAM,CAAC,WAAW;YAC5B,MAAM;SACP,EACD,MAAM,CACP,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB;QACjD,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;QAC5C,GAAG,EAAE,YAAY;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM;QACN,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,kBAAkB;QAChC,SAAS;QACT,MAAM;KACP,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACjB,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -2,6 +2,12 @@ import { type EnvOptions } from "./env.js";
2
2
  export type CursorExecutionMode = "agent" | "ask" | "plan";
3
3
  export type BridgeConfig = {
4
4
  agentBin: string;
5
+ /** Resolved command for ACP (node + script on Windows when .cmd); avoids spawn EINVAL and DEP0190. */
6
+ acpCommand: string;
7
+ /** Args for ACP (e.g. [scriptPath, "acp"] or ["acp"]). */
8
+ acpArgs: string[];
9
+ /** Env to use when spawning ACP (e.g. CURSOR_INVOKED_AS). */
10
+ acpEnv: Record<string, string | undefined>;
5
11
  host: string;
6
12
  port: number;
7
13
  requiredKey?: string;
@@ -24,9 +30,23 @@ export type BridgeConfig = {
24
30
  verbose: boolean;
25
31
  /** When true, enable Cursor Max Mode (larger context, more tool calls) via cli-config.json preflight. */
26
32
  maxMode: boolean;
33
+ /** When true, pass the user prompt via stdin instead of argv (avoids Windows argv issues). */
34
+ promptViaStdin: boolean;
35
+ /** When true, use ACP (Agent Client Protocol) over stdio; fixes prompt delivery on Windows. */
36
+ useAcp: boolean;
37
+ /** Spawn options for ACP (e.g. windowsVerbatimArguments when using cmd.exe fallback). */
38
+ acpSpawnOptions?: {
39
+ windowsVerbatimArguments?: boolean;
40
+ };
41
+ /** When true, skip ACP authenticate step (use when pre-authenticated via --api-key or agent login). */
42
+ acpSkipAuthenticate: boolean;
43
+ /** When true, log every raw JSON-RPC line from ACP stdout (very verbose). Set CURSOR_BRIDGE_ACP_RAW_DEBUG=1 to enable. */
44
+ acpRawDebug: boolean;
27
45
  /** Pool of cursor configuration directories for round-robin account rotation. */
28
46
  configDirs: string[];
29
47
  /** When true, runs each config dir on its own incrementing port starting from `port` */
30
48
  multiPort: boolean;
49
+ /** Windows CreateProcess command-line budget for prompt truncation (ignored on non-Windows). */
50
+ winCmdlineMax: number;
31
51
  };
32
52
  export declare function loadBridgeConfig(opts?: EnvOptions): BridgeConfig;
@@ -1,8 +1,20 @@
1
- import { loadEnvConfig } from "./env.js";
1
+ import { loadEnvConfig, resolveAgentCommand } from "./env.js";
2
2
  export function loadBridgeConfig(opts = {}) {
3
3
  const env = loadEnvConfig(opts);
4
+ const acpResolved = resolveAgentCommand(env.agentBin, ["acp"], opts);
5
+ const envSource = opts.env ?? process.env;
6
+ const apiKey = envSource.CURSOR_API_KEY ?? envSource.CURSOR_AUTH_TOKEN;
7
+ const acpArgs = acpResolved.args;
8
+ const acpEnv = { ...acpResolved.env };
9
+ if (apiKey) {
10
+ acpEnv.CURSOR_API_KEY = apiKey;
11
+ acpEnv.CURSOR_AUTH_TOKEN = apiKey;
12
+ }
4
13
  return {
5
14
  agentBin: env.agentBin,
15
+ acpCommand: acpResolved.command,
16
+ acpArgs,
17
+ acpEnv,
6
18
  host: env.host,
7
19
  port: env.port,
8
20
  requiredKey: env.requiredKey,
@@ -19,8 +31,17 @@ export function loadBridgeConfig(opts = {}) {
19
31
  chatOnlyWorkspace: env.chatOnlyWorkspace,
20
32
  verbose: env.verbose,
21
33
  maxMode: env.maxMode,
34
+ promptViaStdin: env.promptViaStdin,
35
+ useAcp: env.useAcp,
36
+ acpSpawnOptions: acpResolved.windowsVerbatimArguments != null
37
+ ? { windowsVerbatimArguments: acpResolved.windowsVerbatimArguments }
38
+ : undefined,
39
+ acpSkipAuthenticate: !!apiKey ||
40
+ /^(1|true|yes|on)$/i.test(String(envSource.CURSOR_BRIDGE_ACP_SKIP_AUTHENTICATE ?? "").trim()),
41
+ acpRawDebug: /^(1|true|yes|on)$/i.test(String(envSource.CURSOR_BRIDGE_ACP_RAW_DEBUG ?? "").trim()),
22
42
  configDirs: env.configDirs ?? [],
23
43
  multiPort: env.multiPort,
44
+ winCmdlineMax: env.winCmdlineMax,
24
45
  };
25
46
  }
26
47
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmB,MAAM,UAAU,CAAC;AAkC1D,MAAM,UAAU,gBAAgB,CAAC,OAAmB,EAAE;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEhC,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,IAAI,EAAE,KAAK,EAAE,oDAAoD;QACjE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAmB,MAAM,UAAU,CAAC;AAoD/E,MAAM,UAAU,gBAAgB,CAAC,OAAmB,EAAE;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,iBAAiB,CAAC;IACvE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IAEjC,MAAM,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,EAAwC,CAAC;IAC5E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;QAC/B,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,WAAW,CAAC,OAAO;QAC/B,OAAO;QACP,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,IAAI,EAAE,KAAK,EAAE,oDAAoD;QACjE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,eAAe,EACb,WAAW,CAAC,wBAAwB,IAAI,IAAI;YAC1C,CAAC,CAAC,EAAE,wBAAwB,EAAE,WAAW,CAAC,wBAAwB,EAAE;YACpE,CAAC,CAAC,SAAS;QACf,mBAAmB,EACjB,CAAC,CAAC,MAAM;YACR,oBAAoB,CAAC,IAAI,CACvB,MAAM,CAAC,SAAS,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CACnE;QACH,WAAW,EAAE,oBAAoB,CAAC,IAAI,CACpC,MAAM,CAAC,SAAS,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAC3D;QACD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,aAAa,EAAE,GAAG,CAAC,aAAa;KACjC,CAAC;AACJ,CAAC"}
package/dist/lib/env.d.ts CHANGED
@@ -26,10 +26,19 @@ export type LoadedEnv = {
26
26
  verbose: boolean;
27
27
  /** When true, set maxMode in cli-config.json before each run (larger context, more tools). */
28
28
  maxMode: boolean;
29
+ /** When true, pass the user prompt via stdin instead of argv (avoids Windows argv truncation). */
30
+ promptViaStdin: boolean;
31
+ /** When true, use ACP (Agent Client Protocol) over stdio instead of CLI argv (fixes prompt delivery on Windows). */
32
+ useAcp: boolean;
29
33
  /** Pool of cursor configuration directories for round-robin account rotation. */
30
34
  configDirs: string[];
31
35
  /** When true, runs each config dir on its own incrementing port starting from `port` */
32
36
  multiPort: boolean;
37
+ /**
38
+ * Upper bound (UTF-16 code units, pessimistic) for the Windows CreateProcess command line.
39
+ * On win32 the proxy truncates the prompt tail to stay under this budget.
40
+ */
41
+ winCmdlineMax: number;
33
42
  };
34
43
  export type AgentCommand = {
35
44
  command: string;
package/dist/lib/env.js CHANGED
@@ -50,6 +50,35 @@ function resolveAbsolutePath(raw, cwd) {
50
50
  return undefined;
51
51
  return path.resolve(cwd, raw);
52
52
  }
53
+ /** Version dir name format: YYYY.MM.DD-commit (matches cursor-agent.ps1). */
54
+ const VERSION_DIR_REGEX = /^(\d{4})\.(\d{1,2})\.(\d{1,2})-[a-f0-9]+$/;
55
+ function parseVersionToInt(name) {
56
+ const m = name.match(VERSION_DIR_REGEX);
57
+ if (!m)
58
+ return 0;
59
+ const [, year, month, day] = m;
60
+ const y = year.padStart(4, "0");
61
+ const mo = month.padStart(2, "0");
62
+ const d = day.padStart(2, "0");
63
+ return parseInt(y + mo + d, 10);
64
+ }
65
+ /**
66
+ * Find the latest version directory under dir/versions/ (e.g. cursor-agent/versions/2026.03.11-6dfa30c).
67
+ * Returns the full path to the version dir, or undefined if none found.
68
+ */
69
+ function findLatestVersionDir(dir) {
70
+ const versionsDir = path.join(dir, "versions");
71
+ if (!fs.existsSync(versionsDir) || !fs.statSync(versionsDir).isDirectory()) {
72
+ return undefined;
73
+ }
74
+ const entries = fs.readdirSync(versionsDir, { withFileTypes: true });
75
+ const versionDirs = entries
76
+ .filter((e) => e.isDirectory() && VERSION_DIR_REGEX.test(e.name))
77
+ .sort((a, b) => parseVersionToInt(b.name) - parseVersionToInt(a.name));
78
+ if (versionDirs.length === 0)
79
+ return undefined;
80
+ return path.join(versionsDir, versionDirs[0].name);
81
+ }
53
82
  /**
54
83
  * Auto-discovers configuration directories located inside ~/.cursor-api-proxy/accounts/
55
84
  */
@@ -112,6 +141,8 @@ export function loadEnvConfig(opts = {}) {
112
141
  if (configDirs.length === 0) {
113
142
  configDirs = discoverAccountDirs(home);
114
143
  }
144
+ const winCmdlineRaw = envNumber(env, ["CURSOR_BRIDGE_WIN_CMDLINE_MAX"], 30_000);
145
+ const winCmdlineMax = Math.min(32_700, Math.max(4096, Number.isFinite(winCmdlineRaw) ? winCmdlineRaw : 30_000));
115
146
  return {
116
147
  agentBin: envString(env, [
117
148
  "CURSOR_AGENT_BIN",
@@ -137,8 +168,11 @@ export function loadEnvConfig(opts = {}) {
137
168
  chatOnlyWorkspace: envBool(env, ["CURSOR_BRIDGE_CHAT_ONLY_WORKSPACE"], true),
138
169
  verbose: envBool(env, ["CURSOR_BRIDGE_VERBOSE"], false),
139
170
  maxMode: envBool(env, ["CURSOR_BRIDGE_MAX_MODE"], false),
171
+ promptViaStdin: envBool(env, ["CURSOR_BRIDGE_PROMPT_VIA_STDIN"], false),
172
+ useAcp: envBool(env, ["CURSOR_BRIDGE_USE_ACP"], false),
140
173
  configDirs,
141
174
  multiPort: envBool(env, ["CURSOR_BRIDGE_MULTI_PORT"], false),
175
+ winCmdlineMax,
142
176
  };
143
177
  }
144
178
  export function resolveAgentCommand(cmd, args, opts = {}) {
@@ -181,6 +215,23 @@ export function resolveAgentCommand(cmd, args, opts = {}) {
181
215
  : undefined,
182
216
  };
183
217
  }
218
+ const versionDir = findLatestVersionDir(dir);
219
+ if (versionDir) {
220
+ const versionNode = path.join(versionDir, "node.exe");
221
+ const versionScript = path.join(versionDir, "index.js");
222
+ if (fs.existsSync(versionNode) && fs.existsSync(versionScript)) {
223
+ const configDir = path.join(dir, "..", "data", "config");
224
+ return {
225
+ command: versionNode,
226
+ args: [versionScript, ...args],
227
+ env: { ...env, CURSOR_INVOKED_AS: "agent.cmd" },
228
+ agentScriptPath: versionScript,
229
+ configDir: fs.existsSync(path.join(configDir, "cli-config.json"))
230
+ ? configDir
231
+ : undefined,
232
+ };
233
+ }
234
+ }
184
235
  const quotedArgs = args
185
236
  .map((arg) => (arg.includes(" ") ? `"${arg}"` : arg))
186
237
  .join(" ");
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { buildPromptFromAnthropicMessages } from "../anthropic.js";
3
- import { buildAgentCmdArgs } from "../agent-cmd-args.js";
3
+ import { buildAgentFixedArgs } from "../agent-cmd-args.js";
4
4
  import { runAgentStream, runAgentSync } from "../agent-runner.js";
5
5
  import { createStreamParser } from "../cli-stream-parser.js";
6
6
  import { json, writeSseHeaders } from "../http.js";
@@ -11,6 +11,7 @@ import { resolveModel } from "../resolve-model.js";
11
11
  import { resolveWorkspace } from "../workspace.js";
12
12
  import { sanitizeMessages, sanitizeSystem } from "../sanitize.js";
13
13
  import { getNextAccountConfigDir, reportRequestStart, reportRequestEnd, reportRateLimit, reportRequestSuccess, reportRequestError, getAccountStats, } from "../account-pool.js";
14
+ import { fitPromptToWinCmdline, warnPromptTruncated, } from "../win-cmdline-limit.js";
14
15
  function isRateLimited(stderr) {
15
16
  return /\b429\b|rate.?limit|too many requests/i.test(stderr);
16
17
  }
@@ -19,9 +20,11 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
19
20
  const body = JSON.parse(rawBody || "{}");
20
21
  const requested = normalizeModelId(body.model);
21
22
  const model = resolveModel(requested, lastRequestedModelRef, config);
23
+ const displayModel = requested === "auto" && config.defaultModel !== "auto"
24
+ ? config.defaultModel
25
+ : model;
22
26
  const cleanSystem = sanitizeSystem(body.system);
23
27
  const cleanMessages = sanitizeMessages(body.messages ?? []);
24
- // Inject Anthropic tool schemas as a system text block
25
28
  const toolsText = toolsToSystemText(body.tools);
26
29
  const systemWithTools = toolsText
27
30
  ? [cleanSystem, toolsText].filter(Boolean).join("\n\n")
@@ -60,11 +63,47 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
60
63
  }
61
64
  logTrafficRequest(config.verbose, model ?? cursorModel, trafficMessages, !!body.stream);
62
65
  const headerWs = req.headers["x-cursor-workspace"];
63
- const { workspaceDir, tempDir } = resolveWorkspace(config, headerWs);
64
- const cmdArgs = buildAgentCmdArgs(config, workspaceDir, cursorModel, prompt, !!body.stream);
66
+ let workspaceDir;
67
+ let tempDir;
68
+ try {
69
+ const ws = resolveWorkspace(config, headerWs);
70
+ workspaceDir = ws.workspaceDir;
71
+ tempDir = ws.tempDir;
72
+ }
73
+ catch (e) {
74
+ const msg = e instanceof Error ? e.message : "Invalid workspace";
75
+ json(res, 400, {
76
+ error: { type: "invalid_request_error", message: msg },
77
+ });
78
+ return;
79
+ }
80
+ const fixedArgs = buildAgentFixedArgs(config, workspaceDir, cursorModel, !!body.stream);
81
+ const fit = fitPromptToWinCmdline(config.agentBin, fixedArgs, prompt, {
82
+ maxCmdline: config.winCmdlineMax,
83
+ platform: process.platform,
84
+ cwd: workspaceDir,
85
+ });
86
+ if (!fit.ok) {
87
+ json(res, 500, {
88
+ error: {
89
+ type: "api_error",
90
+ message: fit.error,
91
+ code: "windows_cmdline_limit",
92
+ },
93
+ });
94
+ return;
95
+ }
96
+ if (fit.truncated) {
97
+ warnPromptTruncated(fit.originalLength, fit.finalPromptLength);
98
+ }
99
+ const cmdArgs = fit.args;
65
100
  const msgId = `msg_${randomUUID().replace(/-/g, "")}`;
101
+ const truncatedHeaders = fit.truncated
102
+ ? { "X-Cursor-Proxy-Prompt-Truncated": "true" }
103
+ : undefined;
104
+ const promptForAgent = config.promptViaStdin || config.useAcp ? prompt : undefined;
66
105
  if (body.stream) {
67
- writeSseHeaders(res);
106
+ writeSseHeaders(res, truncatedHeaders);
68
107
  res.on("error", () => {
69
108
  /* client disconnected mid-stream */
70
109
  });
@@ -77,7 +116,7 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
77
116
  id: msgId,
78
117
  type: "message",
79
118
  role: "assistant",
80
- model: model ?? cursorModel,
119
+ model: displayModel ?? cursorModel,
81
120
  content: [],
82
121
  },
83
122
  });
@@ -86,6 +125,71 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
86
125
  index: 0,
87
126
  content_block: { type: "text", text: "" },
88
127
  });
128
+ const configDir = getNextAccountConfigDir();
129
+ logAccountAssigned(configDir);
130
+ reportRequestStart(configDir);
131
+ const streamStart = Date.now();
132
+ const abortController = new AbortController();
133
+ req.once("close", () => abortController.abort());
134
+ if (config.useAcp && typeof promptForAgent === "string") {
135
+ let accumulated = "";
136
+ runAgentStream(config, workspaceDir, cmdArgs, (chunk) => {
137
+ accumulated += chunk;
138
+ writeEvent({
139
+ type: "content_block_delta",
140
+ index: 0,
141
+ delta: { type: "text_delta", text: chunk },
142
+ });
143
+ }, tempDir, promptForAgent, configDir, abortController.signal)
144
+ .then(({ code, stderr: stderrOut }) => {
145
+ const latencyMs = Date.now() - streamStart;
146
+ reportRequestEnd(configDir);
147
+ if (stderrOut && isRateLimited(stderrOut)) {
148
+ reportRateLimit(configDir, 60000);
149
+ }
150
+ if (!abortController.signal.aborted) {
151
+ if (code !== 0) {
152
+ reportRequestError(configDir, latencyMs);
153
+ const publicMsg = logAgentError(config.sessionsLogPath, method, pathname, remoteAddress, code, stderrOut);
154
+ writeEvent({
155
+ type: "error",
156
+ error: { type: "api_error", message: publicMsg },
157
+ });
158
+ }
159
+ else {
160
+ reportRequestSuccess(configDir, latencyMs);
161
+ logTrafficResponse(config.verbose, model ?? cursorModel, accumulated, true);
162
+ writeEvent({ type: "content_block_stop", index: 0 });
163
+ writeEvent({
164
+ type: "message_delta",
165
+ delta: { stop_reason: "end_turn", stop_sequence: null },
166
+ usage: { output_tokens: 0 },
167
+ });
168
+ writeEvent({ type: "message_stop" });
169
+ }
170
+ }
171
+ logAccountStats(config.verbose, getAccountStats());
172
+ res.end();
173
+ })
174
+ .catch((err) => {
175
+ reportRequestEnd(configDir);
176
+ if (!abortController.signal.aborted) {
177
+ reportRequestError(configDir, Date.now() - streamStart);
178
+ }
179
+ console.error(`[${new Date().toISOString()}] Agent stream error:`, err);
180
+ if (!abortController.signal.aborted) {
181
+ writeEvent({
182
+ type: "error",
183
+ error: {
184
+ type: "api_error",
185
+ message: "The Cursor agent stream failed. See server logs for details.",
186
+ },
187
+ });
188
+ }
189
+ res.end();
190
+ });
191
+ return;
192
+ }
89
193
  let accumulated = "";
90
194
  const parseLine = createStreamParser((text) => {
91
195
  accumulated += text;
@@ -104,20 +208,17 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
104
208
  });
105
209
  writeEvent({ type: "message_stop" });
106
210
  });
107
- const configDir = getNextAccountConfigDir();
108
- logAccountAssigned(configDir);
109
- reportRequestStart(configDir);
110
- const streamStart = Date.now();
111
- const abortController = new AbortController();
112
- req.once("close", () => abortController.abort());
113
- runAgentStream(config, workspaceDir, cmdArgs, parseLine, tempDir, configDir, abortController.signal)
211
+ runAgentStream(config, workspaceDir, cmdArgs, parseLine, tempDir, promptForAgent, configDir, abortController.signal)
114
212
  .then(({ code, stderr: stderrOut }) => {
115
213
  const latencyMs = Date.now() - streamStart;
116
214
  reportRequestEnd(configDir);
117
215
  if (stderrOut && isRateLimited(stderrOut)) {
118
216
  reportRateLimit(configDir, 60000);
119
217
  }
120
- if (code !== 0) {
218
+ if (abortController.signal.aborted) {
219
+ /* client disconnected — do not count as success or failure */
220
+ }
221
+ else if (code !== 0) {
121
222
  reportRequestError(configDir, latencyMs);
122
223
  logAgentError(config.sessionsLogPath, method, pathname, remoteAddress, code, stderrOut);
123
224
  }
@@ -129,7 +230,9 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
129
230
  })
130
231
  .catch((err) => {
131
232
  reportRequestEnd(configDir);
132
- reportRequestError(configDir, Date.now() - streamStart);
233
+ if (!abortController.signal.aborted) {
234
+ reportRequestError(configDir, Date.now() - streamStart);
235
+ }
133
236
  console.error(`[${new Date().toISOString()}] Agent stream error:`, err);
134
237
  res.end();
135
238
  });
@@ -141,7 +244,7 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
141
244
  const syncStart = Date.now();
142
245
  const abortController = new AbortController();
143
246
  req.once("close", () => abortController.abort());
144
- const out = await runAgentSync(config, workspaceDir, cmdArgs, tempDir, configDir, abortController.signal);
247
+ const out = await runAgentSync(config, workspaceDir, cmdArgs, tempDir, promptForAgent, configDir, abortController.signal);
145
248
  const syncLatency = Date.now() - syncStart;
146
249
  reportRequestEnd(configDir);
147
250
  if (out.stderr && isRateLimited(out.stderr)) {
@@ -152,7 +255,7 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
152
255
  logAccountStats(config.verbose, getAccountStats());
153
256
  const errMsg = logAgentError(config.sessionsLogPath, method, pathname, remoteAddress, out.code, out.stderr);
154
257
  json(res, 500, {
155
- error: { type: "api_error", message: errMsg },
258
+ error: { type: "api_error", message: errMsg, code: "cursor_cli_error" },
156
259
  });
157
260
  return;
158
261
  }
@@ -160,14 +263,19 @@ export async function handleAnthropicMessages(req, res, ctx, rawBody, method, pa
160
263
  const content = out.stdout.trim();
161
264
  logTrafficResponse(config.verbose, model ?? cursorModel, content, false);
162
265
  logAccountStats(config.verbose, getAccountStats());
266
+ const inTok = Math.max(1, Math.round(prompt.length / 4));
267
+ const outTok = Math.max(1, Math.round(content.length / 4));
163
268
  json(res, 200, {
164
269
  id: msgId,
165
270
  type: "message",
166
271
  role: "assistant",
167
272
  content: [{ type: "text", text: content }],
168
- model: model ?? cursorModel,
273
+ model: displayModel ?? cursorModel,
169
274
  stop_reason: "end_turn",
170
- usage: { input_tokens: 0, output_tokens: 0 },
171
- });
275
+ usage: {
276
+ input_tokens: inTok,
277
+ output_tokens: outTok,
278
+ },
279
+ }, truncatedHeaders);
172
280
  }
173
281
  //# sourceMappingURL=anthropic-messages.js.map