@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.
- package/README.md +10 -5
- package/dist/contracts/login.d.ts +50 -0
- package/dist/contracts/login.d.ts.map +1 -1
- package/dist/contracts/runtime.d.ts +3 -1
- package/dist/contracts/runtime.d.ts.map +1 -1
- package/dist/contracts/runtime.js.map +1 -1
- package/dist/contracts/session-options.d.ts +6 -5
- package/dist/contracts/session-options.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtimes/claude/auth-status.d.ts +8 -0
- package/dist/runtimes/claude/auth-status.d.ts.map +1 -1
- package/dist/runtimes/claude/auth-status.js +10 -4
- package/dist/runtimes/claude/auth-status.js.map +1 -1
- package/dist/runtimes/claude/index.d.ts +3 -2
- package/dist/runtimes/claude/index.d.ts.map +1 -1
- package/dist/runtimes/claude/index.js +3 -2
- package/dist/runtimes/claude/index.js.map +1 -1
- package/dist/runtimes/claude/launch.d.ts +5 -8
- package/dist/runtimes/claude/launch.d.ts.map +1 -1
- package/dist/runtimes/claude/launch.js +14 -36
- package/dist/runtimes/claude/launch.js.map +1 -1
- package/dist/runtimes/claude/login.d.ts +1 -0
- package/dist/runtimes/claude/login.d.ts.map +1 -1
- package/dist/runtimes/claude/login.js +1 -0
- package/dist/runtimes/claude/login.js.map +1 -1
- package/dist/runtimes/claude/logout.d.ts +5 -0
- package/dist/runtimes/claude/logout.d.ts.map +1 -0
- package/dist/runtimes/claude/logout.js +37 -0
- package/dist/runtimes/claude/logout.js.map +1 -0
- package/dist/runtimes/claude/mcp-config.d.ts +19 -0
- package/dist/runtimes/claude/mcp-config.d.ts.map +1 -0
- package/dist/runtimes/claude/mcp-config.js +137 -0
- package/dist/runtimes/claude/mcp-config.js.map +1 -0
- package/dist/runtimes/codex/index.d.ts +2 -0
- package/dist/runtimes/codex/index.d.ts.map +1 -1
- package/dist/runtimes/codex/index.js +2 -0
- package/dist/runtimes/codex/index.js.map +1 -1
- package/dist/runtimes/codex/logout.d.ts +5 -0
- package/dist/runtimes/codex/logout.d.ts.map +1 -0
- package/dist/runtimes/codex/logout.js +37 -0
- package/dist/runtimes/codex/logout.js.map +1 -0
- package/dist/runtimes/cursor/index.d.ts +4 -3
- package/dist/runtimes/cursor/index.d.ts.map +1 -1
- package/dist/runtimes/cursor/index.js +4 -1
- package/dist/runtimes/cursor/index.js.map +1 -1
- package/dist/runtimes/cursor/logout.d.ts +5 -0
- package/dist/runtimes/cursor/logout.d.ts.map +1 -0
- package/dist/runtimes/cursor/logout.js +59 -0
- package/dist/runtimes/cursor/logout.js.map +1 -0
- package/dist/runtimes/cursor/sdk.d.ts +8 -0
- package/dist/runtimes/cursor/sdk.d.ts.map +1 -1
- package/dist/runtimes/cursor/sdk.js.map +1 -1
- package/dist/runtimes/opencode/prompt-config.d.ts.map +1 -1
- package/dist/runtimes/opencode/prompt-config.js +8 -5
- package/dist/runtimes/opencode/prompt-config.js.map +1 -1
- package/dist/shared/login.d.ts +17 -5
- package/dist/shared/login.d.ts.map +1 -1
- package/dist/shared/login.js +5 -2
- package/dist/shared/login.js.map +1 -1
- package/dist/shared/logout.d.ts +56 -0
- package/dist/shared/logout.d.ts.map +1 -0
- package/dist/shared/logout.js +114 -0
- package/dist/shared/logout.js.map +1 -0
- package/dist/shared/private-temp.d.ts +10 -0
- package/dist/shared/private-temp.d.ts.map +1 -0
- package/dist/shared/private-temp.js +78 -0
- package/dist/shared/private-temp.js.map +1 -0
- 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;
|
|
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
|
|
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;
|
|
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
|
|
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
|
|
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":"AAkBA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACvF,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS;QAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;QAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KAC9B,EAAE,CAAC;CACL;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAE1E,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1E;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,CAAC;AAE/E,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,uGAAuG;IACvG,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,qFAAqF;IACrF,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChK,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;CAClG;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,mGAAmG;AACnG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;CAClC;AAED,4FAA4F;AAC5F,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACjC;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,MAAM,WAAW,UAAU;IACzB,kHAAkH;IAClH,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YACzH,QAAQ,CAAC,KAAK,EAAE,SAAS;gBAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;gBAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YAC5F,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;SAC9B,CAAC,CAAC;KACJ,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,MAAM,EAAE;YAAE,IAAI,IAAI,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAA;SAAE,CAAC;QAC/D;;;;;WAKG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,UAAU,yBAAyB,CAAC;CACpE;AAED,2EAA2E;AAC3E,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAOhH;AAiCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAoBxF"}
|
|
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;
|
|
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":"
|
|
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 {
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-config.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/prompt-config.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/login.d.ts
CHANGED
|
@@ -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:
|
|
80
|
+
readonly result: ExecutableRefusal;
|
|
69
81
|
};
|
|
70
82
|
/**
|
|
71
|
-
* The executable to sign in, or the result that ends the login
|
|
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;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/shared/login.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/login.js
CHANGED
|
@@ -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
|
|
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
|