@botiverse/oar 0.33.1 → 0.34.1

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 (70) hide show
  1. package/README.md +10 -5
  2. package/dist/contracts/login.d.ts +50 -0
  3. package/dist/contracts/login.d.ts.map +1 -1
  4. package/dist/contracts/runtime.d.ts +3 -1
  5. package/dist/contracts/runtime.d.ts.map +1 -1
  6. package/dist/contracts/runtime.js.map +1 -1
  7. package/dist/contracts/session-options.d.ts +6 -5
  8. package/dist/contracts/session-options.d.ts.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/runtimes/claude/auth-status.d.ts +8 -0
  13. package/dist/runtimes/claude/auth-status.d.ts.map +1 -1
  14. package/dist/runtimes/claude/auth-status.js +10 -4
  15. package/dist/runtimes/claude/auth-status.js.map +1 -1
  16. package/dist/runtimes/claude/index.d.ts +3 -2
  17. package/dist/runtimes/claude/index.d.ts.map +1 -1
  18. package/dist/runtimes/claude/index.js +3 -2
  19. package/dist/runtimes/claude/index.js.map +1 -1
  20. package/dist/runtimes/claude/launch.d.ts +5 -8
  21. package/dist/runtimes/claude/launch.d.ts.map +1 -1
  22. package/dist/runtimes/claude/launch.js +14 -36
  23. package/dist/runtimes/claude/launch.js.map +1 -1
  24. package/dist/runtimes/claude/login.d.ts +1 -0
  25. package/dist/runtimes/claude/login.d.ts.map +1 -1
  26. package/dist/runtimes/claude/login.js +1 -0
  27. package/dist/runtimes/claude/login.js.map +1 -1
  28. package/dist/runtimes/claude/logout.d.ts +5 -0
  29. package/dist/runtimes/claude/logout.d.ts.map +1 -0
  30. package/dist/runtimes/claude/logout.js +37 -0
  31. package/dist/runtimes/claude/logout.js.map +1 -0
  32. package/dist/runtimes/claude/mcp-config.d.ts +19 -0
  33. package/dist/runtimes/claude/mcp-config.d.ts.map +1 -0
  34. package/dist/runtimes/claude/mcp-config.js +137 -0
  35. package/dist/runtimes/claude/mcp-config.js.map +1 -0
  36. package/dist/runtimes/codex/index.d.ts +2 -0
  37. package/dist/runtimes/codex/index.d.ts.map +1 -1
  38. package/dist/runtimes/codex/index.js +2 -0
  39. package/dist/runtimes/codex/index.js.map +1 -1
  40. package/dist/runtimes/codex/logout.d.ts +5 -0
  41. package/dist/runtimes/codex/logout.d.ts.map +1 -0
  42. package/dist/runtimes/codex/logout.js +37 -0
  43. package/dist/runtimes/codex/logout.js.map +1 -0
  44. package/dist/runtimes/cursor/index.d.ts +4 -3
  45. package/dist/runtimes/cursor/index.d.ts.map +1 -1
  46. package/dist/runtimes/cursor/index.js +4 -1
  47. package/dist/runtimes/cursor/index.js.map +1 -1
  48. package/dist/runtimes/cursor/logout.d.ts +5 -0
  49. package/dist/runtimes/cursor/logout.d.ts.map +1 -0
  50. package/dist/runtimes/cursor/logout.js +59 -0
  51. package/dist/runtimes/cursor/logout.js.map +1 -0
  52. package/dist/runtimes/cursor/sdk.d.ts +8 -0
  53. package/dist/runtimes/cursor/sdk.d.ts.map +1 -1
  54. package/dist/runtimes/cursor/sdk.js.map +1 -1
  55. package/dist/runtimes/opencode/prompt-config.d.ts.map +1 -1
  56. package/dist/runtimes/opencode/prompt-config.js +8 -5
  57. package/dist/runtimes/opencode/prompt-config.js.map +1 -1
  58. package/dist/shared/login.d.ts +17 -5
  59. package/dist/shared/login.d.ts.map +1 -1
  60. package/dist/shared/login.js +5 -2
  61. package/dist/shared/login.js.map +1 -1
  62. package/dist/shared/logout.d.ts +56 -0
  63. package/dist/shared/logout.d.ts.map +1 -0
  64. package/dist/shared/logout.js +114 -0
  65. package/dist/shared/logout.js.map +1 -0
  66. package/dist/shared/private-temp.d.ts +10 -0
  67. package/dist/shared/private-temp.d.ts.map +1 -0
  68. package/dist/shared/private-temp.js +78 -0
  69. package/dist/shared/private-temp.js.map +1 -0
  70. package/package.json +1 -1
@@ -0,0 +1,137 @@
1
+ import { constants } from "node:fs";
2
+ import { open, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { setTimeout as delay } from "node:timers/promises";
5
+ import { runExecutable } from "../../shared/executable/run.js";
6
+ import { checkMcpServerNames, isHttpMcpServer } from "../../shared/mcp-servers.js";
7
+ import { privateTempDir, sweepPrivateTempDirs } from "../../shared/private-temp.js";
8
+ /** claude's `--mcp-config` document for the entries: stdio `{type, command, args, env}`, http `{type, url, headers}`. */
9
+ export function claudeMcpConfig(servers) {
10
+ return {
11
+ mcpServers: Object.fromEntries(servers.map((server) => [server.name, isHttpMcpServer(server)
12
+ ? { type: "http", url: server.url, ...(server.headers === undefined ? {} : { headers: server.headers }) }
13
+ : { type: "stdio", command: server.command, args: server.args ?? [], ...(server.env === undefined ? {} : { env: server.env }) }])),
14
+ };
15
+ }
16
+ function errorCode(error) {
17
+ return error instanceof Error && "code" in error ? error.code : undefined;
18
+ }
19
+ /** A 0600 FIFO at `file`; false where none can be made. */
20
+ async function makeFifo(file) {
21
+ if (process.platform === "win32") {
22
+ return false;
23
+ }
24
+ const made = await runExecutable("mkfifo", ["-m", "600", file]);
25
+ return made.ok;
26
+ }
27
+ /** The write end once a reader has the FIFO open; undefined when `stopped()` first. */
28
+ async function openWhenRead(file, stopped) {
29
+ let wait = 5;
30
+ while (!stopped()) {
31
+ try {
32
+ // oxlint-disable-next-line no-await-in-loop -- polling: each attempt waits for the previous one.
33
+ return await open(file, constants.O_WRONLY | constants.O_NONBLOCK);
34
+ }
35
+ catch (error) {
36
+ if (errorCode(error) !== "ENXIO") {
37
+ throw error;
38
+ }
39
+ }
40
+ // oxlint-disable-next-line no-await-in-loop -- as above; unref'd, so polling alone keeps no host alive.
41
+ await delay(wait, undefined, { ref: false });
42
+ wait = Math.min(wait * 2, 100);
43
+ }
44
+ return undefined;
45
+ }
46
+ /** Write all of `content` to a non-blocking pipe: a full pipe answers EAGAIN until the reader drains it. */
47
+ async function writeAll(handle, content, stopped) {
48
+ let rest = content;
49
+ while (rest.length > 0 && !stopped()) {
50
+ try {
51
+ // oxlint-disable-next-line no-await-in-loop -- sequential writes to one pipe.
52
+ const { bytesWritten } = await handle.write(rest);
53
+ rest = rest.subarray(bytesWritten);
54
+ }
55
+ catch (error) {
56
+ if (errorCode(error) !== "EAGAIN") {
57
+ throw error;
58
+ }
59
+ // oxlint-disable-next-line no-await-in-loop -- as above.
60
+ await delay(5, undefined, { ref: false });
61
+ }
62
+ }
63
+ }
64
+ function fifoHandoff(file, content, directory) {
65
+ let ended = false;
66
+ const stopped = () => ended;
67
+ const end = () => {
68
+ ended = true;
69
+ directory.remove();
70
+ };
71
+ const feed = async () => {
72
+ const handle = await openWhenRead(file, stopped);
73
+ if (handle === undefined) {
74
+ return;
75
+ }
76
+ try {
77
+ await writeAll(handle, Buffer.from(content), stopped);
78
+ }
79
+ finally {
80
+ await handle.close();
81
+ }
82
+ };
83
+ return {
84
+ path: file,
85
+ start: () => {
86
+ // A failed feed (claude closed its end early) leaves claude to report
87
+ // the config it could not read; the directory goes either way.
88
+ void (async () => {
89
+ try {
90
+ await feed();
91
+ }
92
+ catch {
93
+ // claude's own error is the report.
94
+ }
95
+ finally {
96
+ end();
97
+ }
98
+ })();
99
+ },
100
+ end,
101
+ };
102
+ }
103
+ const PREFIX = "oar-claude-mcp-";
104
+ /**
105
+ * Before any claude starts, with servers or without: remove what hosts that
106
+ * died left behind, letting a claude still waiting on such a FIFO go.
107
+ */
108
+ export async function sweepAbandonedMcpConfigs() {
109
+ await sweepPrivateTempDirs(PREFIX);
110
+ }
111
+ /** The handoff for these entries (sweeping as above first). Rejects on an empty or repeated name before anything is created. */
112
+ export async function handOverMcpConfig(servers) {
113
+ checkMcpServerNames(servers);
114
+ const directory = await privateTempDir(PREFIX);
115
+ const file = path.join(directory.path, "mcp.json");
116
+ const content = JSON.stringify(claudeMcpConfig(servers));
117
+ try {
118
+ if (await makeFifo(file)) {
119
+ return fifoHandoff(file, content, directory);
120
+ }
121
+ await writeFile(file, content, { mode: 0o600, flag: "wx" });
122
+ }
123
+ catch (error) {
124
+ directory.remove();
125
+ throw error;
126
+ }
127
+ return {
128
+ path: file,
129
+ start: () => {
130
+ // claude reads the file at startup; it goes when claude exits (end).
131
+ },
132
+ end: () => {
133
+ directory.remove();
134
+ },
135
+ };
136
+ }
137
+ //# sourceMappingURL=mcp-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/runtimes/claude/mcp-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { codexAuthStatus, codexLogin } from "./login.js";
2
+ import { codexLogout } from "./logout.js";
2
3
  import { codexCheckUpdate, codexUpgrade } from "./update.js";
3
4
  export declare const codexRuntime: {
4
5
  readonly id: "codex";
@@ -19,6 +20,7 @@ export declare const codexRuntime: {
19
20
  readonly checkUpdate: typeof codexCheckUpdate;
20
21
  readonly upgrade: typeof codexUpgrade;
21
22
  readonly login: typeof codexLogin;
23
+ readonly logout: typeof codexLogout;
22
24
  readonly authStatus: typeof codexAuthStatus;
23
25
  readonly session: import("../../index.js").StartSession;
24
26
  } & import("../../index.js").RuntimeInventories & {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIzD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;CAcvB,CAAC;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;CAevB,CAAC;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -2,6 +2,7 @@ import { runtimeBrands } from "../../brands.js";
2
2
  import { codexSkills, codexMcpServers, codexTools } from "./inventory.js";
3
3
  import { defineRuntime } from "../../contracts/runtime.js";
4
4
  import { codexAuthStatus, codexLogin } from "./login.js";
5
+ import { codexLogout } from "./logout.js";
5
6
  import { codexAccountUsage } from "./account-usage.js";
6
7
  import { codexInstallation } from "./installation.js";
7
8
  import { codexListModels } from "./list-models.js";
@@ -19,6 +20,7 @@ export const codexRuntime = defineRuntime({
19
20
  checkUpdate: codexCheckUpdate,
20
21
  upgrade: codexUpgrade,
21
22
  login: codexLogin,
23
+ logout: codexLogout,
22
24
  authStatus: codexAuthStatus,
23
25
  session: codexSession,
24
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/codex/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,aAAa,CAAC,KAAK;IAC1B,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;IAC3B,KAAK,EAAE,UAAU;IACjB,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/codex/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,aAAa,CAAC,KAAK;IAC1B,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;IAC3B,KAAK,EAAE,UAAU;IACjB,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AvailableInstallation } from "../../contracts/installation.js";
2
+ import type { LogoutOptions, LogoutResult } from "../../contracts/login.js";
3
+ /** Signs codex out with `codex logout`; `codex login status` decides. */
4
+ export declare function codexLogout(installation: AvailableInstallation, options?: LogoutOptions): Promise<LogoutResult>;
5
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAyB5E,yEAAyE;AACzE,wBAAsB,WAAW,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAYzH"}
@@ -0,0 +1,37 @@
1
+ import { loginExecutable } from "../../shared/login.js";
2
+ import { commandLogout, confirmedLogout, runLogoutCommand } from "../../shared/logout.js";
3
+ import { codexAuthStatus } from "./login.js";
4
+ /*
5
+ * `codex logout` (0.160.1, read in openai/codex `rust-v0.160.1`:
6
+ * `cli/src/login.rs` `run_logout`, `login/src/auth/manager.rs`
7
+ * `logout_with_revoke`, `login/src/auth/revoke.rs`): it revokes a stored
8
+ * ChatGPT login's refresh token (or its access token) at
9
+ * `https://auth.openai.com/oauth/revoke`, 10 s and best effort (a failed
10
+ * revoke is logged and the local logout goes on; since 0.122.0), then
11
+ * deletes the credential store, `$CODEX_HOME/auth.json` and the keyring
12
+ * entry. A stored API key is only deleted. It prints to stderr and exits 0
13
+ * with `Successfully logged out`, or `Not logged in` when nothing was
14
+ * stored; a failure is `Error logging out: <error>` (or an unreadable
15
+ * configuration's error) with exit 1. `OPENAI_API_KEY` and `CODEX_API_KEY`
16
+ * are untouched; `codex login status` does not read them either. `codex
17
+ * logout` arrived in 0.15.0.
18
+ */
19
+ const LOGOUT_FLOOR = "0.15.0";
20
+ const LOGOUT_COMMAND = "codex logout";
21
+ /** The revoke has 10 s. */
22
+ const LOGOUT_TIMEOUT_MS = 60_000;
23
+ /** Signs codex out with `codex logout`; `codex login status` decides. */
24
+ export async function codexLogout(installation, options = {}) {
25
+ const target = loginExecutable(installation, "codex", LOGOUT_FLOOR);
26
+ if (target.kind === "settled") {
27
+ return target.result;
28
+ }
29
+ const timeoutMs = options.timeoutMs ?? LOGOUT_TIMEOUT_MS;
30
+ const end = await runLogoutCommand(target.installation.command, ["logout"], process.env, timeoutMs);
31
+ if (end.kind === "not_started") {
32
+ return { kind: "failed", reason: "process_failed", detail: end.detail };
33
+ }
34
+ const native = commandLogout(end, LOGOUT_COMMAND, timeoutMs);
35
+ return confirmedLogout(native, await codexAuthStatus(installation), LOGOUT_COMMAND);
36
+ }
37
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/runtimes/codex/logout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,2BAA2B;AAC3B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAAmC,EAAE,UAAyB,EAAE;IAChG,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACpG,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAC1E,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7D,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,eAAe,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC;AACtF,CAAC"}
@@ -11,8 +11,8 @@ export interface CursorRuntimeOptions {
11
11
  */
12
12
  readonly sdk: () => Promise<CursorSdk>;
13
13
  }
14
- /** A cursor runtime: its probe, model listing, login, status and refusals are always there. */
15
- export type CursorRuntime = Runtime & Required<Pick<Runtime, "installation" | "listModels" | "login" | "authStatus" | "refusedSessionOptions">>;
14
+ /** A cursor runtime: its probe, model listing, login, logout, status and refusals are always there. */
15
+ export type CursorRuntime = Runtime & Required<Pick<Runtime, "installation" | "listModels" | "login" | "logout" | "authStatus" | "refusedSessionOptions">>;
16
16
  /**
17
17
  * Cursor, embedded through its official SDK (`@cursor/sdk`): the agent runs
18
18
  * in this process, the way pi does. It is not in `defaultRuntimes`, because
@@ -21,7 +21,8 @@ export type CursorRuntime = Runtime & Required<Pick<Runtime, "installation" | "l
21
21
  * (docs/design/capabilities.md#a-runtimes-own-settings). Account usage is
22
22
  * absent: the SDK's usage call is not available to every account
23
23
  * (`feature_unavailable`, probed 2026-10-03), and each run reports its own
24
- * tokens anyway. Login and its status are the SDK's own `Cursor.auth`.
24
+ * tokens anyway. Login, logout and the status are the SDK's own
25
+ * `Cursor.auth`.
25
26
  */
26
27
  export declare function createCursorRuntime(options: CursorRuntimeOptions): CursorRuntime;
27
28
  export { projectCursorModels } from "./list-models.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAMzE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG3D,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;CACxC;AAED,+FAA+F;AAC/F,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,uBAAuB,CAAC,CAAC,CAAC;AAEhJ;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAYhF;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAOzE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG3D,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;CACxC;AAED,uGAAuG;AACvG,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,uBAAuB,CAAC,CAAC,CAAC;AAE3J;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAahF;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -4,6 +4,7 @@ import { cursorAuthStatusWith } from "./auth-status.js";
4
4
  import { cursorInstallation } from "./installation.js";
5
5
  import { cursorListModelsWith } from "./list-models.js";
6
6
  import { cursorLoginWith } from "./login.js";
7
+ import { cursorLogoutWith } from "./logout.js";
7
8
  import { cursorRefusedSessionOptions } from "./model.js";
8
9
  import { cursorSdkLoader } from "./sdk.js";
9
10
  import { cursorSessionWith } from "./session.js";
@@ -15,7 +16,8 @@ import { cursorSessionWith } from "./session.js";
15
16
  * (docs/design/capabilities.md#a-runtimes-own-settings). Account usage is
16
17
  * absent: the SDK's usage call is not available to every account
17
18
  * (`feature_unavailable`, probed 2026-10-03), and each run reports its own
18
- * tokens anyway. Login and its status are the SDK's own `Cursor.auth`.
19
+ * tokens anyway. Login, logout and the status are the SDK's own
20
+ * `Cursor.auth`.
19
21
  */
20
22
  export function createCursorRuntime(options) {
21
23
  const load = cursorSdkLoader(options.sdk);
@@ -25,6 +27,7 @@ export function createCursorRuntime(options) {
25
27
  installation: cursorInstallation,
26
28
  listModels: cursorListModelsWith(load),
27
29
  login: cursorLoginWith(load),
30
+ logout: cursorLogoutWith(load),
28
31
  authStatus: cursorAuthStatusWith(load),
29
32
  session: cursorSessionWith(load),
30
33
  refusedSessionOptions: cursorRefusedSessionOptions,
@@ -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,EAAgB,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAiBjD;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,aAAa,CAAC;QACnB,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACtC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC;QAC5B,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC;QAChC,qBAAqB,EAAE,2BAA2B;KACnD,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,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,EAAgB,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAiBjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,aAAa,CAAC;QACnB,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACtC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC;QAC5B,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC9B,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC;QAChC,qBAAqB,EAAE,2BAA2B;KACnD,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { RuntimeLogout } from "../../contracts/login.js";
2
+ import { type CursorSdk } from "./sdk.js";
3
+ /** Signs cursor out with the SDK's own `Cursor.auth.logout`; `Cursor.auth.status` decides. */
4
+ export declare function cursorLogoutWith(load: () => Promise<CursorSdk>): RuntimeLogout;
5
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAmCrD,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,aAAa,CAmB9E"}
@@ -0,0 +1,59 @@
1
+ import { errorMessage, LoginSecrets } from "../../shared/login.js";
2
+ import { confirmedLogout, logoutTimedOut } from "../../shared/logout.js";
3
+ import { readCursorAuthStatus } from "./auth-status.js";
4
+ import { loadedSdk } from "./sdk.js";
5
+ /*
6
+ * `Cursor.auth.logout(options?: { store? })` (@cursor/sdk 1.0.36, read in
7
+ * its bundle, `dist/esm/index.js`, and `dist/esm/auth/login.d.ts`
8
+ * `sdkLogout`; 1.0.35 has the same): with no `store` it runs the SDK's own
9
+ * `new FileCredentialStore().clear()`, which removes
10
+ * `~/.cursor/sdk/auth.json` (`rm` with `force`, so a missing file is no
11
+ * error), then drops the SDK's in-process cache of the stored key, and
12
+ * resolves. It makes no request: "Local-only: the minted key stays valid
13
+ * until its expiry unless revoked from the dashboard's API-keys page." The
14
+ * SDK has no call that revokes it. `CURSOR_API_KEY` is not touched, and
15
+ * `Cursor.auth.status` does not read it.
16
+ */
17
+ const LOGOUT_CALL = "Cursor.auth.logout";
18
+ /** A local file removal. */
19
+ const LOGOUT_TIMEOUT_MS = 20_000;
20
+ /** The SDK's logout within `timeoutMs`; past it OAR stops waiting (a local removal it cannot stop). */
21
+ async function sdkLogout(logout, timeoutMs) {
22
+ const deadline = Promise.withResolvers();
23
+ const timer = setTimeout(() => {
24
+ deadline.resolve("timed_out");
25
+ }, timeoutMs);
26
+ timer.unref();
27
+ try {
28
+ const ended = await Promise.race([logout(), deadline.promise]);
29
+ return ended === "timed_out" ? logoutTimedOut(LOGOUT_CALL, timeoutMs) : { kind: "done" };
30
+ }
31
+ catch (error) {
32
+ return { kind: "failed", reason: "rejected", detail: new LoginSecrets().line(errorMessage(error)) };
33
+ }
34
+ finally {
35
+ clearTimeout(timer);
36
+ }
37
+ }
38
+ /** Signs cursor out with the SDK's own `Cursor.auth.logout`; `Cursor.auth.status` decides. */
39
+ export function cursorLogoutWith(load) {
40
+ return async (installation, options = {}) => {
41
+ if (installation.via !== "bundled") {
42
+ return { kind: "unsupported", reason: "unsupported_installation", detail: "cursor signs out through the bundled @cursor/sdk" };
43
+ }
44
+ const sdk = await loadedSdk(load);
45
+ if ("failed" in sdk) {
46
+ return { kind: "failed", reason: "process_failed", detail: new LoginSecrets().line(sdk.failed) };
47
+ }
48
+ const { auth } = sdk.Cursor;
49
+ if (auth?.logout === undefined) {
50
+ return { kind: "unsupported", reason: "version_unsupported", detail: "@cursor/sdk 1.0.36 is required; this one has no Cursor.auth.logout" };
51
+ }
52
+ // With no store: the SDK's own default, the file `status()` reads.
53
+ const native = await sdkLogout(async () => {
54
+ await auth.logout?.();
55
+ }, options.timeoutMs ?? LOGOUT_TIMEOUT_MS);
56
+ return confirmedLogout(native, await readCursorAuthStatus(auth), LOGOUT_CALL);
57
+ };
58
+ }
59
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,4BAA4B;AAC5B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,uGAAuG;AACvG,KAAK,UAAU,SAAS,CAAC,MAA2B,EAAE,SAAiB;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAe,CAAC;IACtD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC,EAAE,SAAS,CAAC,CAAC;IACd,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACtG,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,gBAAgB,CAAC,IAA8B;IAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QAC1C,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,kDAAkD,EAAE,CAAC;QACjI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnG,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,oEAAoE,EAAE,CAAC;QAC9I,CAAC;QACD,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACxB,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC;QAC3C,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC,CAAC;AACJ,CAAC"}
@@ -100,6 +100,14 @@ export type CursorAuthStatus = {
100
100
  export interface CursorAuth {
101
101
  /** Resolves once the minted key is saved to `store`; OAR never reads what it resolves with (the key among it). */
102
102
  login(options: CursorLoginOptions): Promise<unknown>;
103
+ /**
104
+ * Forgets the stored login: with no `store`, the SDK's own
105
+ * `FileCredentialStore().clear()` (`~/.cursor/sdk/auth.json` removed).
106
+ * Local only: the minted key stays valid until it expires or is revoked
107
+ * in the dashboard. Optional, so a host's own stand-in without it keeps
108
+ * compiling; without it `logout` answers `version_unsupported`.
109
+ */
110
+ logout?(): Promise<void>;
103
111
  status(): Promise<CursorAuthStatus>;
104
112
  }
105
113
  export interface CursorSdk {
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/sdk.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAuI7B,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAA8B;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC;IAC1G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAA8B;IAC5D,IAAI,OAAO,GAA8B,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,IAAwB,EAAE;QAC7C,IAAI,CAAC;YACH,kEAAkE;YAClE,iEAAiE;YACjE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,uBAAuB,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iEAAiE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC,CAAC;IACF,OAAO,KAAK,IAAI,EAAE;QAChB,OAAO,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AA+I7B,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAA8B;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC;IAC1G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAA8B;IAC5D,IAAI,OAAO,GAA8B,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,IAAwB,EAAE;QAC7C,IAAI,CAAC;YACH,kEAAkE;YAClE,iEAAiE;YACjE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,uBAAuB,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iEAAiE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC,CAAC;IACF,OAAO,KAAK,IAAI,EAAE;QAChB,OAAO,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-config.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/prompt-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAYrE;AA2DD,4EAA4E;AAC5E,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,GAAE,gBAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4B3J;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMhF"}
1
+ {"version":3,"file":"prompt-config.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/prompt-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGjE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAYrE;AA2DD,4EAA4E;AAC5E,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,GAAE,gBAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+B3J;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMhF"}
@@ -1,10 +1,10 @@
1
- import { mkdtemp, rm, writeFile } from "node:fs/promises";
2
- import { tmpdir } from "node:os";
1
+ import { rm, writeFile } from "node:fs/promises";
3
2
  import path from "node:path";
4
3
  import { UnsupportedOptionError } from "../../contracts/errors.js";
5
4
  import { processFailure } from "../../shared/executable/diagnostics.js";
6
5
  import { runExecutable } from "../../shared/executable/run.js";
7
6
  import { asRecord } from "../../shared/json.js";
7
+ import { privateTempDir } from "../../shared/private-temp.js";
8
8
  export function validateOpenCodePrompts(options) {
9
9
  const option = options.systemPrompt !== undefined ? "systemPrompt" : "appendSystemPrompt";
10
10
  if (options.systemPrompt === undefined && options.appendSystemPrompt === undefined) {
@@ -76,16 +76,19 @@ async function activeAgent(command, options, run) {
76
76
  export async function prepareOpenCodePrompts(command, options, run = runExecutable) {
77
77
  validateOpenCodePrompts(options);
78
78
  const agent = options.systemPrompt === undefined ? undefined : await activeAgent(command, options, run);
79
- const directory = options.appendSystemPrompt === undefined ? undefined : await mkdtemp(path.join(tmpdir(), "oar-opencode-prompt-"));
79
+ // privateTempDir: a host that ends without disposing leaves it to the backstops there.
80
+ const directory = options.appendSystemPrompt === undefined ? undefined : await privateTempDir("oar-opencode-prompt-");
80
81
  let removal = undefined;
81
82
  const cleanup = async () => {
82
83
  if (directory !== undefined) {
83
- removal ??= rm(directory, { recursive: true, force: true });
84
+ removal ??= rm(directory.path, { recursive: true, force: true });
84
85
  await removal;
86
+ // Already gone; this only takes it off the exit backstop.
87
+ directory.remove();
85
88
  }
86
89
  };
87
90
  try {
88
- const instructions = directory === undefined ? undefined : path.join(directory, "instructions.md");
91
+ const instructions = directory === undefined ? undefined : path.join(directory.path, "instructions.md");
89
92
  if (instructions !== undefined) {
90
93
  await writeFile(instructions, options.appendSystemPrompt ?? "", { mode: 0o600 });
91
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-config.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/prompt-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-config.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/prompt-config.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AvailableInstallation, ExecutableInstallation } from "../contracts/installation.js";
2
- import type { LoginResult } from "../contracts/login.js";
2
+ import type { LoginResult, LoginUnsupportedReason } from "../contracts/login.js";
3
3
  /** Terminal escapes removed: colors, cursor movement, and OSC 8 hyperlinks (their visible text stays). */
4
4
  export declare function stripTerminalEscapes(text: string): string;
5
5
  /**
@@ -34,6 +34,8 @@ export interface LoginProcess {
34
34
  readonly exited: Promise<LoginProcessExit>;
35
35
  /** Write to the command's stdin; a no-op once it has exited. */
36
36
  write(text: string): void;
37
+ /** End the command's stdin: it reads nothing more (a logout command reads nothing at all). */
38
+ closeInput(): void;
37
39
  /**
38
40
  * Stop the command and everything it started: SIGTERM to its process
39
41
  * group, SIGKILL to the group after the grace period (the tree on
@@ -58,18 +60,28 @@ export interface LoginBounds {
58
60
  export declare function loginBounds(signal: AbortSignal | undefined, timeoutMs: number): LoginBounds;
59
61
  /** The result for a bounds stop: a timeout is a failure, an abort a cancellation. */
60
62
  export declare function stoppedResult(stop: LoginStop, timeoutMs: number): LoginResult;
63
+ /** What ends a login or a logout before anything runs: both results take it as it is. */
64
+ export type ExecutableRefusal = {
65
+ readonly kind: "unsupported";
66
+ readonly reason: LoginUnsupportedReason;
67
+ readonly detail: string;
68
+ } | {
69
+ readonly kind: "failed";
70
+ readonly reason: "process_failed";
71
+ readonly detail: string;
72
+ };
61
73
  export type LoginExecutable = {
62
74
  readonly kind: "executable";
63
75
  readonly installation: ExecutableInstallation;
64
76
  }
65
- /** The login ends before anything runs. */
77
+ /** The login (or logout) ends before anything runs. */
66
78
  | {
67
79
  readonly kind: "settled";
68
- readonly result: LoginResult;
80
+ readonly result: ExecutableRefusal;
69
81
  };
70
82
  /**
71
- * The executable to sign in, or the result that ends the login before
72
- * anything runs: a bundled runtime or a version known to predate `floor` is
83
+ * The executable to sign in (or out), or the result that ends the login
84
+ * before anything runs: a bundled runtime or a version known to predate `floor` is
73
85
  * unsupported, and an executable that is no longer there (found as the
74
86
  * installation probe finds it, without spawning) fails alike on every
75
87
  * platform, since a missing command started through a Windows shell would
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/shared/login.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAqBzD,0GAA0G;AAC1G,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AASD;;;;GAIG;AACH,qBAAa,YAAY;;IAGvB,2FAA2F;IAC3F,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAY5B,mGAAmG;IACnG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAG3B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,mGAAmG;IACnG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D,yGAAyG;IACzG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,yDAAyD;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,gEAAgE;IAChE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,IAAI,IAAI,IAAI,CAAC;CACd;AAmDD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,EAAE,mBAAmB,GAC5B,YAAY,CAiDd;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAqB3F;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAI7E;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAA;CAAE;AAChF,2CAA2C;GACzC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAelH"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/shared/login.ts"],"names":[],"mappings":"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"}
@@ -142,6 +142,9 @@ export function spawnLoginProcess(command, args, env, handlers) {
142
142
  child.stdin.write(text);
143
143
  }
144
144
  },
145
+ closeInput() {
146
+ child.stdin?.end();
147
+ },
145
148
  stop() {
146
149
  if (stopped) {
147
150
  return;
@@ -184,8 +187,8 @@ export function stoppedResult(stop, timeoutMs) {
184
187
  : { kind: "failed", reason: "timed_out", detail: `no sign-in within ${String(timeoutMs)} ms` };
185
188
  }
186
189
  /**
187
- * The executable to sign in, or the result that ends the login before
188
- * anything runs: a bundled runtime or a version known to predate `floor` is
190
+ * The executable to sign in (or out), or the result that ends the login
191
+ * before anything runs: a bundled runtime or a version known to predate `floor` is
189
192
  * unsupported, and an executable that is no longer there (found as the
190
193
  * installation probe finds it, without spawning) fails alike on every
191
194
  * platform, since a missing command started through a Windows shell would