@botiverse/oar 0.15.2 → 0.16.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 (80) hide show
  1. package/README.md +4 -3
  2. package/dist/observe/tool-activity.d.ts +9 -2
  3. package/dist/observe/tool-activity.d.ts.map +1 -1
  4. package/dist/observe/tool-activity.js +34 -9
  5. package/dist/observe/tool-activity.js.map +1 -1
  6. package/dist/observe/tool-groups.d.ts.map +1 -1
  7. package/dist/observe/tool-groups.js +1 -0
  8. package/dist/observe/tool-groups.js.map +1 -1
  9. package/dist/runtimes/cursor/index.d.ts +6 -3
  10. package/dist/runtimes/cursor/index.d.ts.map +1 -1
  11. package/dist/runtimes/cursor/index.js +6 -3
  12. package/dist/runtimes/cursor/index.js.map +1 -1
  13. package/dist/runtimes/cursor/installation.d.ts +7 -6
  14. package/dist/runtimes/cursor/installation.d.ts.map +1 -1
  15. package/dist/runtimes/cursor/installation.js +35 -13
  16. package/dist/runtimes/cursor/installation.js.map +1 -1
  17. package/dist/runtimes/cursor/list-models.d.ts +7 -8
  18. package/dist/runtimes/cursor/list-models.d.ts.map +1 -1
  19. package/dist/runtimes/cursor/list-models.js +50 -82
  20. package/dist/runtimes/cursor/list-models.js.map +1 -1
  21. package/dist/runtimes/cursor/model.d.ts +25 -0
  22. package/dist/runtimes/cursor/model.d.ts.map +1 -0
  23. package/dist/runtimes/cursor/model.js +98 -0
  24. package/dist/runtimes/cursor/model.js.map +1 -0
  25. package/dist/runtimes/cursor/projection.d.ts +40 -0
  26. package/dist/runtimes/cursor/projection.d.ts.map +1 -0
  27. package/dist/runtimes/cursor/projection.js +205 -0
  28. package/dist/runtimes/cursor/projection.js.map +1 -0
  29. package/dist/runtimes/cursor/run.d.ts +33 -0
  30. package/dist/runtimes/cursor/run.d.ts.map +1 -0
  31. package/dist/runtimes/cursor/run.js +68 -0
  32. package/dist/runtimes/cursor/run.js.map +1 -0
  33. package/dist/runtimes/cursor/sdk.d.ts +64 -0
  34. package/dist/runtimes/cursor/sdk.d.ts.map +1 -0
  35. package/dist/runtimes/cursor/sdk.js +50 -0
  36. package/dist/runtimes/cursor/sdk.js.map +1 -0
  37. package/dist/runtimes/cursor/session.d.ts +4 -37
  38. package/dist/runtimes/cursor/session.d.ts.map +1 -1
  39. package/dist/runtimes/cursor/session.js +265 -71
  40. package/dist/runtimes/cursor/session.js.map +1 -1
  41. package/dist/shared/acp/client-app.d.ts +0 -2
  42. package/dist/shared/acp/client-app.d.ts.map +1 -1
  43. package/dist/shared/acp/client-app.js +1 -8
  44. package/dist/shared/acp/client-app.js.map +1 -1
  45. package/dist/shared/acp/effort.d.ts +1 -1
  46. package/dist/shared/acp/effort.js +1 -1
  47. package/dist/shared/acp/model.d.ts +5 -8
  48. package/dist/shared/acp/model.d.ts.map +1 -1
  49. package/dist/shared/acp/model.js +6 -14
  50. package/dist/shared/acp/model.js.map +1 -1
  51. package/dist/shared/acp/process.d.ts +0 -2
  52. package/dist/shared/acp/process.d.ts.map +1 -1
  53. package/dist/shared/acp/process.js +2 -7
  54. package/dist/shared/acp/process.js.map +1 -1
  55. package/dist/shared/acp/profile.d.ts +2 -17
  56. package/dist/shared/acp/profile.d.ts.map +1 -1
  57. package/dist/shared/acp/profile.js +1 -5
  58. package/dist/shared/acp/profile.js.map +1 -1
  59. package/dist/shared/acp/records.d.ts +1 -3
  60. package/dist/shared/acp/records.d.ts.map +1 -1
  61. package/dist/shared/acp/records.js +6 -14
  62. package/dist/shared/acp/records.js.map +1 -1
  63. package/dist/shared/acp/session.d.ts.map +1 -1
  64. package/dist/shared/acp/session.js +1 -6
  65. package/dist/shared/acp/session.js.map +1 -1
  66. package/dist/shared/failure-class.js +1 -1
  67. package/dist/shared/failure-class.js.map +1 -1
  68. package/dist/shared/update.d.ts +1 -1
  69. package/dist/shared/update.d.ts.map +1 -1
  70. package/dist/shared/update.js +3 -4
  71. package/dist/shared/update.js.map +1 -1
  72. package/package.json +6 -5
  73. package/dist/runtimes/cursor/update.d.ts +0 -19
  74. package/dist/runtimes/cursor/update.d.ts.map +0 -1
  75. package/dist/runtimes/cursor/update.js +0 -88
  76. package/dist/runtimes/cursor/update.js.map +0 -1
  77. package/dist/shared/acp/vendor-updates.d.ts +0 -7
  78. package/dist/shared/acp/vendor-updates.d.ts.map +0 -1
  79. package/dist/shared/acp/vendor-updates.js +0 -46
  80. package/dist/shared/acp/vendor-updates.js.map +0 -1
package/README.md CHANGED
@@ -59,7 +59,7 @@ The package has six public entry points:
59
59
 
60
60
  Brand SVG files are exported at `@botiverse/oar/assets/brands/<runtime-id>.svg`. Any other deep import (`@botiverse/oar/dist/...`, source paths) is internal and may break without notice.
61
61
 
62
- Antigravity, Cursor, Grok, and Kimi share an internal ACP v1 transport and session kernel, but only their concrete runtime identities are public. The registry deliberately does not expose a generic `acp` runtime.
62
+ Antigravity, Grok, and Kimi share an internal ACP v1 transport and session kernel, but only their concrete runtime identities are public. The registry deliberately does not expose a generic `acp` runtime. Pi and Cursor run in the host process through their SDKs (`@earendil-works/pi-coding-agent`, `@cursor/sdk`), both dependencies of this package; `@cursor/sdk` is Cursor's own package under Cursor's terms, and it signs in with `CURSOR_API_KEY` or its own `Cursor.auth.login()`.
63
63
 
64
64
  The command-line interface is a separate package: `@botiverse/oar-cli`.
65
65
 
@@ -73,8 +73,9 @@ codex, grok and kimi; its failure semantics are in the
73
73
  updater would install and where that answer came from;
74
74
  `runtime.upgrade(installation)` runs that updater without a terminal and
75
75
  judges the result by the version the same executable reports afterwards,
76
- never by its exit code. oar never upgrades on its own. Claude, Codex, Cursor,
77
- Grok and Kimi have both; Antigravity has only the check; Pi moves with oar.
76
+ never by its exit code. oar never upgrades on its own. Claude, Codex, Grok
77
+ and Kimi have both; Antigravity has only the check; Pi and Cursor move with
78
+ oar.
78
79
  See [runtime updates](https://github.com/botiverse/oar/blob/main/docs/spec/update.md).
79
80
 
80
81
  Images go with an input through `InputOptions.images` (`{ path }` entries:
@@ -8,18 +8,25 @@
8
8
  * The tool set is OPEN (custom + MCP tools have arbitrary names), so unknown
9
9
  * tools fall back to "other" rather than being force-fit.
10
10
  */
11
- export type ToolActionKind = "run_command" | "read_file" | "edit_file" | "search" | "web" | "mcp" | "other";
11
+ export type ToolActionKind = "run_command" | "read_file" | "edit_file" | "search" | "web" | "mcp" | "wait" | "other";
12
12
  export interface ToolAction {
13
13
  readonly kind: ToolActionKind;
14
14
  /** A short target extracted from the tool input: the command text, a file path, a query. */
15
15
  readonly detail?: string;
16
16
  /**
17
17
  * `run_command`: the command line as the runtime reported it. Set only for runtimes whose
18
- * shell input shape is recorded (claude `Bash`, codex `commandExecution`, pi `bash`).
18
+ * shell input shape is recorded (claude `Bash`, codex `commandExecution`, pi `bash`, cursor `shell`).
19
19
  */
20
20
  readonly command?: string;
21
21
  /** The agent's own one-line account of the call, where the runtime sends one (claude `Bash`). */
22
22
  readonly description?: string;
23
+ /**
24
+ * `wait`: how long the agent asked to wait, in ms, as the runtime reported it (codex
25
+ * `sleep`'s `durationMs`). How long it waited, as OAR saw it, is the tool part's
26
+ * `endedAt - startedAt` (when OAR observed the call start and end): a steer can end a
27
+ * wait early.
28
+ */
29
+ readonly durationMs?: number;
23
30
  }
24
31
  /** Classify one tool call into a cross-runtime semantic action plus an extracted detail. */
25
32
  export declare function classifyTool(runtimeId: string, tool: string, inputJson?: string): ToolAction;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,WAAW,GACX,QAAQ,GACR,KAAK,GACL,KAAK,GACL,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAwGD,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAM5F;AAYD,kHAAkH;AAClH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAElG"}
1
+ {"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,WAAW,GACX,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAiID,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAM5F;AAaD,kHAAkH;AAClH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAElG"}
@@ -1,4 +1,4 @@
1
- import { asRecord, parseJson } from "../shared/json.js";
1
+ import { asNumber, asRecord, parseJson } from "../shared/json.js";
2
2
  // Per-runtime tool name → kind. Names are what the tool_call_started event
3
3
  // carries (codex uses its item type; claude/pi use the tool name).
4
4
  const BY_RUNTIME = {
@@ -18,6 +18,7 @@ const BY_RUNTIME = {
18
18
  fileChange: "edit_file",
19
19
  webSearch: "web",
20
20
  mcpToolCall: "mcp",
21
+ sleep: "wait",
21
22
  },
22
23
  pi: {
23
24
  bash: "run_command",
@@ -28,6 +29,21 @@ const BY_RUNTIME = {
28
29
  grep: "search",
29
30
  find: "search",
30
31
  },
32
+ // The `toolCall.type` of `@cursor/sdk` 1.0.35's tool updates.
33
+ cursor: {
34
+ shell: "run_command",
35
+ read: "read_file",
36
+ ls: "read_file",
37
+ edit: "edit_file",
38
+ write: "edit_file",
39
+ delete: "edit_file",
40
+ grep: "search",
41
+ glob: "search",
42
+ semSearch: "search",
43
+ webSearch: "web",
44
+ webFetch: "web",
45
+ mcp: "mcp",
46
+ },
31
47
  };
32
48
  function kindOf(runtimeId, tool) {
33
49
  const runtime = runtimeId.replace(/-aimock$/u, "");
@@ -55,18 +71,26 @@ function stringFields(inputJson, withDescription) {
55
71
  ...(description === undefined ? {} : { description }),
56
72
  };
57
73
  }
74
+ /** A wait's asked duration: the input's `durationMs`, when a finite positive number. */
75
+ function waitFields(inputJson) {
76
+ const durationMs = asNumber(asRecord(parseJson(inputJson))?.durationMs);
77
+ return durationMs !== null && durationMs > 0 ? { durationMs } : {};
78
+ }
58
79
  /**
59
- * Where each runtime's shell tool keeps its command, from recorded inputs
60
- * (tests/replay/fixtures/*-tool-round.raw.jsonl); a runtime with no recorded
61
- * shape gets none. codex's `commandExecution` input is the bare command line,
62
- * not JSON (codex/item-detail.ts).
80
+ * Where each runtime's tools keep the fields a host shows, from recorded inputs
81
+ * (tests/replay/fixtures/*-tool-round.raw.jsonl): a shell tool's command (and
82
+ * description), a wait's duration. A runtime with no recorded shape gets none.
83
+ * codex's `commandExecution` input is the bare command line, not JSON
84
+ * (codex/item-detail.ts).
63
85
  */
64
- const SHELL = {
86
+ const FIELDS = {
65
87
  claude: { Bash: (input) => stringFields(input, true) },
66
88
  codex: {
67
89
  commandExecution: (input) => input.length === 0 || asRecord(parseJson(input)) !== null ? {} : { command: input },
90
+ sleep: waitFields,
68
91
  },
69
92
  pi: { bash: (input) => stringFields(input, false) },
93
+ cursor: { shell: (input) => stringFields(input, false) },
70
94
  };
71
95
  const FIRST_STRING_KEYS = ["command", "cmd", "path", "file_path", "filePath", "file", "pattern", "query", "url"];
72
96
  function detailOf(inputJson) {
@@ -96,9 +120,9 @@ function detailOf(inputJson) {
96
120
  export function classifyTool(runtimeId, tool, inputJson) {
97
121
  const kind = kindOf(runtimeId, tool);
98
122
  const runtime = runtimeId.replace(/-aimock$/u, "");
99
- const shell = inputJson === undefined ? {} : (SHELL[runtime]?.[tool]?.(inputJson) ?? {});
100
- const detail = detailOf(inputJson) ?? shell.command ?? (kind === "other" ? tool : undefined);
101
- return { kind, ...(detail === undefined ? {} : { detail }), ...shell };
123
+ const fields = inputJson === undefined ? {} : (FIELDS[runtime]?.[tool]?.(inputJson) ?? {});
124
+ const detail = detailOf(inputJson) ?? fields.command ?? (kind === "other" ? tool : undefined);
125
+ return { kind, ...(detail === undefined ? {} : { detail }), ...fields };
102
126
  }
103
127
  const LABELS = {
104
128
  run_command: { running: "Running command", done: "Ran command", failed: "Command failed" },
@@ -107,6 +131,7 @@ const LABELS = {
107
131
  search: { running: "Searching", done: "Searched", failed: "Search failed" },
108
132
  web: { running: "Searching the web", done: "Searched the web", failed: "Web request failed" },
109
133
  mcp: { running: "Using a tool", done: "Used a tool", failed: "Tool failed" },
134
+ wait: { running: "Waiting", done: "Waited", failed: "Wait failed" },
110
135
  other: { running: "Working", done: "Done", failed: "Failed" },
111
136
  };
112
137
  /** The human label for an action in a given lifecycle state; tense centralized here so events stay consistent. */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-groups.d.ts","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACtD,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtF,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC1E,SAAS,CAAC;AAqBd,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAoBnG;AAYD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAkBpE"}
1
+ {"version":3,"file":"tool-groups.d.ts","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACtD,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtF,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC1E,SAAS,CAAC;AAqBd,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAoBnG;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAkBpE"}
@@ -47,6 +47,7 @@ const DONE = {
47
47
  search: (n) => (n === 1 ? "searched" : `searched ${n} times`),
48
48
  web: (n) => (n === 1 ? "searched the web" : `searched the web ${n} times`),
49
49
  mcp: (n) => (n === 1 ? "used a tool" : `used ${n} tools`),
50
+ wait: (n) => (n === 1 ? "waited" : `waited ${n} times`),
50
51
  other: (n) => (n === 1 ? "used a tool" : `used ${n} tools`),
51
52
  };
52
53
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-groups.js","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-groups.js","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AA+BvE,SAAS,KAAK,CAAC,SAAiB,EAAE,KAAa,EAAE,KAA4C;IAC3F,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACpE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK;QACL,KAAK;QACL,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM;QACN,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAA0B;IAC7E,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,IAAI,OAAO,GAAkE,IAAI,CAAC;IAClF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtD,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;YACR,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,GAAsD;IAC9D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACrE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC;IAC1E,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;CAC5D,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA2B;IAC1D,MAAM,KAAK,GAAG,MAAM;SACjB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,CAAC;SACxD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -1,4 +1,9 @@
1
- import { cursorUpgrade } from "./update.js";
1
+ /**
2
+ * Cursor, embedded through its official SDK (`@cursor/sdk`): the agent runs
3
+ * in this process, the way pi does. Account usage is absent: the SDK's
4
+ * usage call is not available to every account (`feature_unavailable`,
5
+ * probed 2026-10-03), and each run reports its own tokens anyway.
6
+ */
2
7
  export declare const cursorRuntime: {
3
8
  readonly id: "cursor";
4
9
  readonly brand: {
@@ -11,8 +16,6 @@ export declare const cursorRuntime: {
11
16
  };
12
17
  readonly installation: import("../../index.js").InstallationProbe;
13
18
  readonly listModels: import("../../index.js").ModelLister;
14
- readonly checkUpdate: import("../../index.js").UpdateChecker;
15
- readonly upgrade: typeof cursorUpgrade;
16
19
  readonly session: import("../../index.js").StartSession;
17
20
  } & import("../../index.js").RuntimeInventories & {
18
21
  readonly brand: import("../../brands.js").RuntimeBrand;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAQxB,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;CAMxB,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -2,15 +2,18 @@ import { runtimeBrands } from "../../brands.js";
2
2
  import { defineRuntime } from "../../contracts/runtime.js";
3
3
  import { cursorInstallation } from "./installation.js";
4
4
  import { cursorListModels } from "./list-models.js";
5
- import { cursorCheckUpdate, cursorUpgrade } from "./update.js";
6
5
  import { cursorSession } from "./session.js";
6
+ /**
7
+ * Cursor, embedded through its official SDK (`@cursor/sdk`): the agent runs
8
+ * in this process, the way pi does. Account usage is absent: the SDK's
9
+ * usage call is not available to every account (`feature_unavailable`,
10
+ * probed 2026-10-03), and each run reports its own tokens anyway.
11
+ */
7
12
  export const cursorRuntime = defineRuntime({
8
13
  id: "cursor",
9
14
  brand: runtimeBrands.cursor,
10
15
  installation: cursorInstallation,
11
16
  listModels: cursorListModels,
12
- checkUpdate: cursorCheckUpdate,
13
- upgrade: cursorUpgrade,
14
17
  session: cursorSession,
15
18
  });
16
19
  export { cursorListModels, projectCursorModels } from "./list-models.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,aAAa,CAAC,MAAM;IAC3B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,aAAa,CAAC,MAAM;IAC3B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,9 +1,10 @@
1
+ import type { InstallationProbe } from "../../contracts/installation.js";
1
2
  /**
2
- * The official installer's layout, which can be invisible to GUI-process
3
- * PATH: `~/.local/bin/cursor-agent` links into
4
- * `~/.local/share/cursor-agent/versions/<version>/` (cursor-agent 2026.09.28).
5
- * The installer also links `~/.local/bin/agent`, a name too generic to probe.
3
+ * Cursor ships inside this package as the `@cursor/sdk` dependency, the way
4
+ * pi does: there is no executable to probe and no version to report (the
5
+ * embedder pins the SDK). The SDK's agent needs its native companion package,
6
+ * which exists only for the platforms in `PLATFORMS`.
6
7
  */
7
- export declare function cursorInstalledExecutableCandidates(platform?: NodeJS.Platform, home?: string): readonly string[];
8
- export declare const cursorInstallation: import("../../index.js").InstallationProbe;
8
+ export declare function cursorInstallationFor(platform: string, arch: string, resolvable: () => Promise<boolean>): InstallationProbe;
9
+ export declare const cursorInstallation: InstallationProbe;
9
10
  //# sourceMappingURL=installation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/installation.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAkB,GACvB,SAAS,MAAM,EAAE,CAKnB;AAED,eAAO,MAAM,kBAAkB,4CAM9B,CAAC"}
1
+ {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/installation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,iCAAiC,CAAC;AAkB/F;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAO3H;AAED,eAAO,MAAM,kBAAkB,EAAE,iBAQ/B,CAAC"}
@@ -1,17 +1,39 @@
1
- import { homedir } from "node:os";
2
- import path from "node:path";
3
- import { executableInstallation } from "../../shared/installation.js";
1
+ const SDK_PACKAGE = "@cursor/sdk";
2
+ /** The platforms `@cursor/sdk` 1.0.35 ships a native companion package for. */
3
+ const PLATFORMS = new Set(["darwin-arm64", "darwin-x64", "linux-arm64", "linux-x64", "win32-x64"]);
4
+ async function sdkLoads() {
5
+ try {
6
+ // A string LITERAL, not SDK_PACKAGE: bundlers only compile in (and
7
+ // resolve) literal specifiers, and this fallback exists for bundles.
8
+ await import("@cursor/sdk");
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
4
15
  /**
5
- * The official installer's layout, which can be invisible to GUI-process
6
- * PATH: `~/.local/bin/cursor-agent` links into
7
- * `~/.local/share/cursor-agent/versions/<version>/` (cursor-agent 2026.09.28).
8
- * The installer also links `~/.local/bin/agent`, a name too generic to probe.
16
+ * Cursor ships inside this package as the `@cursor/sdk` dependency, the way
17
+ * pi does: there is no executable to probe and no version to report (the
18
+ * embedder pins the SDK). The SDK's agent needs its native companion package,
19
+ * which exists only for the platforms in `PLATFORMS`.
9
20
  */
10
- export function cursorInstalledExecutableCandidates(platform = process.platform, home = homedir()) {
11
- if (platform === "win32") {
12
- return [];
13
- }
14
- return [path.posix.join(home, ".local", "bin", "cursor-agent")];
21
+ export function cursorInstallationFor(platform, arch, resolvable) {
22
+ return async () => {
23
+ if (!PLATFORMS.has(`${platform}-${arch}`)) {
24
+ return { kind: "unsupported", reason: `@cursor/sdk has no native package for ${platform}-${arch}` };
25
+ }
26
+ return await resolvable() ? { kind: "available", via: "bundled" } : { kind: "not_found" };
27
+ };
15
28
  }
16
- export const cursorInstallation = executableInstallation("OAR_CURSOR_BIN", "cursor-agent", cursorInstalledExecutableCandidates, ["acp", "--help"], { readinessTimeoutMs: 30_000, versionTimeoutMs: 30_000 });
29
+ export const cursorInstallation = cursorInstallationFor(process.platform, process.arch, async () => {
30
+ try {
31
+ import.meta.resolve(SDK_PACKAGE);
32
+ return true;
33
+ }
34
+ catch {
35
+ const loads = await sdkLoads();
36
+ return loads;
37
+ }
38
+ });
17
39
  //# sourceMappingURL=installation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/installation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CACjD,WAA4B,OAAO,CAAC,QAAQ,EAC5C,OAAe,OAAO,EAAE;IAExB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CACtD,gBAAgB,EAChB,cAAc,EACd,mCAAmC,EACnC,CAAC,KAAK,EAAE,QAAQ,CAAC,EACjB,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,CACzD,CAAC"}
1
+ {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/installation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,+EAA+E;AAC/E,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAExH,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC;QACH,mEAAmE;QACnE,qEAAqE;QACrE,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,IAAY,EAAE,UAAkC;IACtG,OAAO,KAAK,IAAmC,EAAE;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,yCAAyC,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC;QACtG,CAAC;QACD,OAAO,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5F,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAsB,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;IACpH,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,13 +1,12 @@
1
1
  import type { ModelEntry, ModelLister } from "../../contracts/list-models.js";
2
+ import { type CursorSdk, type ModelListItem } from "./sdk.js";
2
3
  /**
3
- * Project the `cursor/list_available_models` answer (cursor-agent
4
- * 2026.09.28): `{models: [{value, name, configOptions}]}`, where `value` is
5
- * the model name `session/set_config_option` accepts for `model`, `name` the
6
- * display name, and `configOptions` the model's parameters as select options
7
- * at their default values. The reasoning parameter is the `thought_level`
8
- * option a session would set for that model (`acpThoughtLevelOption`: the
9
- * `effort` menu over the `thinking` switch when a Claude model has both).
4
+ * Project `Cursor.models.list()` (SDK 1.0.35): `id` is the selector the SDK
5
+ * accepts, the effort menu is the model's reasoning parameter
6
+ * (`cursorEffortParameter`), and the default effort is that parameter's
7
+ * value in the variant the catalog marks `isDefault`.
10
8
  */
11
- export declare function projectCursorModels(result: unknown): ModelEntry[];
9
+ export declare function projectCursorModels(models: readonly ModelListItem[]): ModelEntry[];
10
+ export declare function cursorListModelsWith(load: () => Promise<CursorSdk>): ModelLister;
12
11
  export declare const cursorListModels: ModelLister;
13
12
  //# sourceMappingURL=list-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/list-models.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAgB9E;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,EAAE,CAqBjE;AA0CD,eAAO,MAAM,gBAAgB,EAAE,WAmB9B,CAAC"}
1
+ {"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/list-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,UAAU,EAAE,CAalF;AAYD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,CAyBhF;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAiD,CAAC"}
@@ -1,92 +1,60 @@
1
- /* oxlint-disable typescript/promise-function-async -- Deadline callbacks deliberately return the SDK's native promises. */
2
- import { client as createClient, methods, PROTOCOL_VERSION, RequestError, } from "@agentclientprotocol/sdk";
3
- import { acpThoughtLevelOption } from "../../shared/acp/model.js";
4
- import { startAcpProcess, withAcpDeadline } from "../../shared/acp/process.js";
5
- import { asRecord, asRecordList } from "../../shared/json.js";
6
- import { cursorAcpArgs, cursorClientCapabilitiesMeta, selectCursorAuthMethod } from "./session.js";
7
- const listMethod = "cursor/list_available_models";
8
- function text(value) {
9
- if (typeof value !== "string") {
10
- return undefined;
11
- }
12
- const trimmed = value.trim();
13
- return trimmed.length > 0 ? trimmed : undefined;
14
- }
1
+ import { cursorEffortParameter } from "./model.js";
2
+ import { loadCursorSdk } from "./sdk.js";
15
3
  /**
16
- * Project the `cursor/list_available_models` answer (cursor-agent
17
- * 2026.09.28): `{models: [{value, name, configOptions}]}`, where `value` is
18
- * the model name `session/set_config_option` accepts for `model`, `name` the
19
- * display name, and `configOptions` the model's parameters as select options
20
- * at their default values. The reasoning parameter is the `thought_level`
21
- * option a session would set for that model (`acpThoughtLevelOption`: the
22
- * `effort` menu over the `thinking` switch when a Claude model has both).
4
+ * Project `Cursor.models.list()` (SDK 1.0.35): `id` is the selector the SDK
5
+ * accepts, the effort menu is the model's reasoning parameter
6
+ * (`cursorEffortParameter`), and the default effort is that parameter's
7
+ * value in the variant the catalog marks `isDefault`.
23
8
  */
24
- export function projectCursorModels(result) {
25
- const entries = [];
26
- for (const model of asRecordList(asRecord(result)?.models)) {
27
- const id = text(model.value);
28
- if (id === undefined) {
29
- continue;
30
- }
31
- const displayName = text(model.name);
32
- const thoughtLevel = acpThoughtLevelOption({ configOptions: model.configOptions }) ?? undefined;
33
- const effortLevels = thoughtLevel === undefined
9
+ export function projectCursorModels(models) {
10
+ return models.map((model) => {
11
+ const parameter = cursorEffortParameter(model);
12
+ const defaultEffort = parameter === null
34
13
  ? undefined
35
- : asRecordList(thoughtLevel.options).flatMap((option) => text(option.value) ?? []);
36
- const defaultEffort = thoughtLevel === undefined ? undefined : text(thoughtLevel.currentValue);
37
- entries.push({
38
- id,
39
- ...(displayName === undefined || displayName === id ? {} : { displayName }),
40
- ...(effortLevels === undefined || effortLevels.length === 0 ? {} : { effortLevels }),
14
+ : model.variants?.find((variant) => variant.isDefault === true)?.params.find((param) => param.id === parameter.id)?.value;
15
+ return {
16
+ id: model.id,
17
+ ...(model.displayName === "" || model.displayName === model.id ? {} : { displayName: model.displayName }),
18
+ ...(parameter === null || parameter.levels.length === 0 ? {} : { effortLevels: parameter.levels }),
41
19
  ...(defaultEffort === undefined ? {} : { defaultEffort }),
42
- });
43
- }
44
- return entries;
20
+ };
21
+ });
45
22
  }
46
- async function readModels(command, timeoutMs) {
47
- const runtime = startAcpProcess(command, cursorAcpArgs, createClient({ name: "oar" }), { env: process.env });
48
- try {
49
- const initialize = methods.agent.initialize;
50
- const response = await withAcpDeadline(runtime, initialize, timeoutMs, (requestOptions) => runtime.connection.agent.request(initialize, {
51
- protocolVersion: PROTOCOL_VERSION,
52
- clientCapabilities: {
53
- fs: { readTextFile: false, writeTextFile: false },
54
- terminal: false,
55
- _meta: cursorClientCapabilitiesMeta(),
56
- },
57
- clientInfo: { name: "oar", version: "0.0.0" },
58
- }, requestOptions));
59
- const method = selectCursorAuthMethod(asRecord(response) ?? {});
60
- if (method !== undefined) {
61
- const authenticate = methods.agent.authenticate;
62
- await withAcpDeadline(runtime, authenticate, timeoutMs, (requestOptions) => runtime.connection.agent.request(authenticate, { methodId: method }, requestOptions));
63
- }
64
- return await withAcpDeadline(runtime, listMethod, timeoutMs, (requestOptions) => runtime.connection.agent.request(listMethod, {}, requestOptions));
65
- }
66
- finally {
67
- runtime.kill();
68
- await runtime.exited;
23
+ /** Without a credential the SDK refuses before asking (`ConfigurationError`: "API key is required …"). */
24
+ function unauthenticated(error) {
25
+ if (!(error instanceof Error)) {
26
+ return null;
69
27
  }
28
+ return error.name === "AuthenticationError" || /api key is required|invalid (?:user )?api key/iu.test(error.message)
29
+ ? error.message
30
+ : null;
70
31
  }
71
- export const cursorListModels = async (installation, options = {}) => {
72
- if (installation.via !== "executable") {
73
- return { kind: "unsupported", reason: "cursor model listing requires the cursor-agent executable" };
74
- }
75
- try {
76
- const result = await readModels(installation.command, options.timeoutMs ?? 15_000);
77
- return { kind: "ok", models: projectCursorModels(result) };
78
- }
79
- catch (error) {
80
- if (error instanceof RequestError) {
81
- if (error.code === -32_601) {
82
- return { kind: "unsupported", reason: `this cursor-agent build has no ${listMethod} method` };
83
- }
84
- // cursor-agent answers `authRequired` (-32000) until `cursor-agent login` has run.
85
- if (error.code === -32_000 || /auth(?:entication)?|log(?:ged)? ?in/iu.test(error.message)) {
86
- return { kind: "unauthenticated", detail: error.message };
32
+ export function cursorListModelsWith(load) {
33
+ return async (installation, options = {}) => {
34
+ if (installation.via !== "bundled") {
35
+ return { kind: "unsupported", reason: "cursor model listing needs the bundled @cursor/sdk" };
36
+ }
37
+ const timeoutMs = options.timeoutMs ?? 15_000;
38
+ try {
39
+ const sdk = await load();
40
+ const models = await Promise.race([
41
+ sdk.Cursor.models.list(),
42
+ new Promise((_resolve, reject) => {
43
+ setTimeout(() => {
44
+ reject(new Error(`Cursor.models.list() did not answer within ${String(timeoutMs)} ms`));
45
+ }, timeoutMs).unref();
46
+ }),
47
+ ]);
48
+ return { kind: "ok", models: projectCursorModels(models) };
49
+ }
50
+ catch (error) {
51
+ const detail = unauthenticated(error);
52
+ if (detail !== null) {
53
+ return { kind: "unauthenticated", detail };
87
54
  }
55
+ throw new Error("Failed to list Cursor models", { cause: error });
88
56
  }
89
- throw new Error("Failed to list Cursor models", { cause: error });
90
- }
91
- };
57
+ };
58
+ }
59
+ export const cursorListModels = cursorListModelsWith(loadCursorSdk);
92
60
  //# sourceMappingURL=list-models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/list-models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/list-models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { SessionOptions } from "../../contracts/session.js";
2
+ import type { CursorSdk, ModelListItem, ModelSelection } from "./sdk.js";
3
+ /** The catalog's "Auto" entry; a local agent needs a model, and this is the one Cursor picks for the user. */
4
+ export declare const CURSOR_DEFAULT_MODEL = "default";
5
+ export declare function cursorEffortParameter(model: ModelListItem): {
6
+ readonly id: string;
7
+ readonly levels: readonly string[];
8
+ } | null;
9
+ /** The effort a selection carries, by the same parameter preference. */
10
+ export declare function cursorSelectionEffort(selection: ModelSelection | undefined): string | null;
11
+ /**
12
+ * The selection a session opens with. A local agent always needs one, and a
13
+ * resumed agent does not restore its own, so on resume without a model the
14
+ * agent's latest recorded run says what it ran. A requested effort is
15
+ * checked against the model's own parameter menu, because the SDK passes an
16
+ * unknown value through unchecked and reports it back as given (probed
17
+ * 2026-10-03: `reasoning: "ludicrous"` ran and came back verbatim). It
18
+ * replaces only that parameter: the other parameters stay as the resumed run
19
+ * had them, or as the catalog's default variant sets them (a `thinking`
20
+ * switch stays on beside an `effort` level).
21
+ */
22
+ /** Options the SDK cannot honor, refused before anything opens. */
23
+ export declare function validateCursorOptions(options: SessionOptions): void;
24
+ export declare function cursorModelSelection(sdk: CursorSdk, options: SessionOptions): Promise<ModelSelection>;
25
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAczE,8GAA8G;AAC9G,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAS9H;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAS1F;AAMD;;;;;;;;;;GAUG;AACH,mEAAmE;AACnE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CASnE;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAsB3G"}