@tryglen/cli 0.24.9 → 0.26.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.
- package/README.md +55 -28
- package/dist/_utils/cli-error.d.ts +1 -0
- package/dist/_utils/cli-error.js.map +1 -1
- package/dist/_utils/config.d.ts +7 -0
- package/dist/_utils/config.js +7 -0
- package/dist/_utils/config.js.map +1 -1
- package/dist/_utils/normalize-transcript-timestamp.d.ts +2 -0
- package/dist/_utils/normalize-transcript-timestamp.js +19 -0
- package/dist/_utils/normalize-transcript-timestamp.js.map +1 -0
- package/dist/_utils/parse-claude-transcript.js +12 -2
- package/dist/_utils/parse-claude-transcript.js.map +1 -1
- package/dist/_utils/parse-codex-transcript.js +7 -3
- package/dist/_utils/parse-codex-transcript.js.map +1 -1
- package/dist/_utils/parse-cursor-db.js +5 -1
- package/dist/_utils/parse-cursor-db.js.map +1 -1
- package/dist/_utils/parse-pi-transcript.js +14 -6
- package/dist/_utils/parse-pi-transcript.js.map +1 -1
- package/dist/_utils/refresh-control-state.d.ts +3 -0
- package/dist/_utils/refresh-control-state.js +24 -0
- package/dist/_utils/refresh-control-state.js.map +1 -0
- package/dist/_utils/sync-mode-from-server.d.ts +1 -2
- package/dist/_utils/sync-mode-from-server.js +28 -13
- package/dist/_utils/sync-mode-from-server.js.map +1 -1
- package/dist/_utils/transcript-turns.d.ts +2 -0
- package/dist/_utils/transcript-turns.js +12 -2
- package/dist/_utils/transcript-turns.js.map +1 -1
- package/dist/bin.js +10 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/import.js +18 -8
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/ingest.js +8 -4
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/org.js +51 -4
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/session-start.js +5 -1
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/set-mode.d.ts +3 -4
- package/dist/commands/set-mode.js +20 -15
- package/dist/commands/set-mode.js.map +1 -1
- package/dist/commands/takeover/_utils/agent-paths.d.ts +6 -0
- package/dist/commands/takeover/_utils/agent-paths.js +23 -0
- package/dist/commands/takeover/_utils/agent-paths.js.map +1 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.d.ts +5 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js +63 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js.map +1 -0
- package/dist/commands/takeover/_utils/canonical-digest.d.ts +5 -0
- package/dist/commands/takeover/_utils/canonical-digest.js +4 -0
- package/dist/commands/takeover/_utils/canonical-digest.js.map +1 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.d.ts +16 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js +102 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js.map +1 -0
- package/dist/commands/takeover/_utils/context-fit.d.ts +18 -0
- package/dist/commands/takeover/_utils/context-fit.js +30 -0
- package/dist/commands/takeover/_utils/context-fit.js.map +1 -0
- package/dist/commands/takeover/_utils/cursor-store.d.ts +49 -0
- package/dist/commands/takeover/_utils/cursor-store.js +359 -0
- package/dist/commands/takeover/_utils/cursor-store.js.map +1 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.d.ts +9 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +143 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js.map +1 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.d.ts +4 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.js +40 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.js.map +1 -0
- package/dist/commands/takeover/_utils/native-file.d.ts +14 -0
- package/dist/commands/takeover/_utils/native-file.js +105 -0
- package/dist/commands/takeover/_utils/native-file.js.map +1 -0
- package/dist/commands/takeover/_utils/probe-agent.d.ts +20 -0
- package/dist/commands/takeover/_utils/probe-agent.js +37 -0
- package/dist/commands/takeover/_utils/probe-agent.js.map +1 -0
- package/dist/commands/takeover/_utils/provenance-context.d.ts +7 -0
- package/dist/commands/takeover/_utils/provenance-context.js +12 -0
- package/dist/commands/takeover/_utils/provenance-context.js.map +1 -0
- package/dist/commands/takeover/_utils/staged-session.d.ts +64 -0
- package/dist/commands/takeover/_utils/staged-session.js +30 -0
- package/dist/commands/takeover/_utils/staged-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.d.ts +47 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.js +24 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-claude-session.d.ts +53 -0
- package/dist/commands/takeover/_utils/write-claude-session.js +132 -0
- package/dist/commands/takeover/_utils/write-claude-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.d.ts +94 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js +233 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-session.d.ts +52 -0
- package/dist/commands/takeover/_utils/write-codex-session.js +117 -0
- package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-cursor-session.d.ts +57 -0
- package/dist/commands/takeover/_utils/write-cursor-session.js +174 -0
- package/dist/commands/takeover/_utils/write-cursor-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-pi-session.d.ts +52 -0
- package/dist/commands/takeover/_utils/write-pi-session.js +173 -0
- package/dist/commands/takeover/_utils/write-pi-session.js.map +1 -0
- package/dist/commands/takeover/index.d.ts +21 -0
- package/dist/commands/takeover/index.js +201 -0
- package/dist/commands/takeover/index.js.map +1 -0
- package/dist/commands/takeover/takeover.schema.d.ts +24 -0
- package/dist/commands/takeover/takeover.schema.js +66 -0
- package/dist/commands/takeover/takeover.schema.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-mode.js","sourceRoot":"","sources":["../../src/commands/set-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAGL,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,YAAY,GAA6B;IAC7C,EAAE,EAAE,oEAAoE;IACxE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"set-mode.js","sourceRoot":"","sources":["../../src/commands/set-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const projectKey = (workspace) => workspace.replaceAll("/", "-").replace(/[^A-Za-z0-9._-]/g, "-");
|
|
4
|
+
const agentPaths = {
|
|
5
|
+
claude(workspace, sessionId) {
|
|
6
|
+
const root = process.env.GLEN_CLAUDE_HOME ?? join(homedir(), ".claude");
|
|
7
|
+
return join(root, "projects", projectKey(workspace), `${sessionId}.jsonl`);
|
|
8
|
+
},
|
|
9
|
+
codex(sessionId, date = new Date()) {
|
|
10
|
+
const root = process.env.GLEN_CODEX_HOME ?? join(homedir(), ".codex");
|
|
11
|
+
const day = date.toISOString().slice(0, 10);
|
|
12
|
+
const timestamp = date.toISOString().replace(/[:.]/g, "-");
|
|
13
|
+
return join(root, "sessions", day.slice(0, 4), day.slice(5, 7), day.slice(8, 10), `rollout-${timestamp}-${sessionId}.jsonl`);
|
|
14
|
+
},
|
|
15
|
+
pi(workspace, sessionId, date = new Date()) {
|
|
16
|
+
const root = process.env.GLEN_PI_HOME ?? join(homedir(), ".pi", "agent");
|
|
17
|
+
const sessionRoot = process.env.PI_CODING_AGENT_SESSION_DIR;
|
|
18
|
+
const timestamp = date.toISOString().replace(/[:.]/g, "-");
|
|
19
|
+
return join(sessionRoot ?? join(root, "sessions"), projectKey(workspace), `${timestamp}_${sessionId}.jsonl`);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export { agentPaths };
|
|
23
|
+
//# sourceMappingURL=agent-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-paths.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/agent-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC/C,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAElE,MAAM,UAAU,GAAG;IACjB,MAAM,CAAC,SAAiB,EAAE,SAAiB;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,CAAC,SAAiB,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CACT,IAAI,EACJ,UAAU,EACV,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,WAAW,SAAS,IAAI,SAAS,QAAQ,CAC1C,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,SAAiB,EAAE,SAAiB,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CACT,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EACrC,UAAU,CAAC,SAAS,CAAC,EACrB,GAAG,SAAS,IAAI,SAAS,QAAQ,CAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { cliVersion } from "../../../_utils/version.js";
|
|
3
|
+
const CLEANUP_TIMEOUT_MS = 5_000;
|
|
4
|
+
const archiveCodexDesktopThread = (input) => new Promise((resolve) => {
|
|
5
|
+
const child = spawn(input.binary, ["app-server"], {
|
|
6
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
7
|
+
});
|
|
8
|
+
const state = { buffer: "", finished: false };
|
|
9
|
+
const finish = (archived = false) => {
|
|
10
|
+
if (state.finished)
|
|
11
|
+
return;
|
|
12
|
+
state.finished = true;
|
|
13
|
+
clearTimeout(timer);
|
|
14
|
+
child.kill();
|
|
15
|
+
resolve(archived);
|
|
16
|
+
};
|
|
17
|
+
const write = (message) => {
|
|
18
|
+
if (state.finished)
|
|
19
|
+
return;
|
|
20
|
+
child.stdin.write(`${JSON.stringify({ jsonrpc: "2.0", ...message })}\n`);
|
|
21
|
+
};
|
|
22
|
+
const timer = setTimeout(finish, CLEANUP_TIMEOUT_MS);
|
|
23
|
+
child.on("error", () => finish(false));
|
|
24
|
+
child.on("close", () => finish(false));
|
|
25
|
+
child.stdin.on("error", () => finish(false));
|
|
26
|
+
child.stdout.on("data", (chunk) => {
|
|
27
|
+
state.buffer += chunk.toString();
|
|
28
|
+
const lines = state.buffer.split("\n");
|
|
29
|
+
state.buffer = lines.pop() ?? "";
|
|
30
|
+
for (const line of lines) {
|
|
31
|
+
if (!line.trim())
|
|
32
|
+
continue;
|
|
33
|
+
const message = (() => {
|
|
34
|
+
try {
|
|
35
|
+
return JSON.parse(line);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
})();
|
|
41
|
+
if (message?.id === 1) {
|
|
42
|
+
write({ method: "initialized", params: {} });
|
|
43
|
+
write({
|
|
44
|
+
id: 2,
|
|
45
|
+
method: "thread/archive",
|
|
46
|
+
params: { threadId: input.threadId },
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
if (message?.id === 2)
|
|
50
|
+
finish(message.error === undefined);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
queueMicrotask(() => write({
|
|
54
|
+
id: 1,
|
|
55
|
+
method: "initialize",
|
|
56
|
+
params: {
|
|
57
|
+
clientInfo: { name: "glen", title: "Glen CLI", version: cliVersion },
|
|
58
|
+
capabilities: { experimentalApi: true },
|
|
59
|
+
},
|
|
60
|
+
}));
|
|
61
|
+
});
|
|
62
|
+
export { archiveCodexDesktopThread };
|
|
63
|
+
//# sourceMappingURL=archive-codex-desktop-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-codex-desktop-thread.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/archive-codex-desktop-thread.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-digest.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/canonical-digest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,eAAe,GAAG,CACtB,QAAsD,EAC9C,EAAE,CACV,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type CliError } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { type Result } from "../../../_utils/result.js";
|
|
3
|
+
declare const codexDesktopRecovery: {
|
|
4
|
+
load(takeoverId: string): Promise<Result<{
|
|
5
|
+
takeoverId: string;
|
|
6
|
+
canonicalDigest: string;
|
|
7
|
+
destinationSessionId: string;
|
|
8
|
+
} | null, CliError>>;
|
|
9
|
+
save(record: {
|
|
10
|
+
readonly takeoverId: string;
|
|
11
|
+
readonly canonicalDigest: string;
|
|
12
|
+
readonly destinationSessionId: string;
|
|
13
|
+
}): Promise<Result<typeof record, CliError>>;
|
|
14
|
+
clear(takeoverId: string, expectedDestinationSessionId: string): Promise<Result<void, CliError>>;
|
|
15
|
+
};
|
|
16
|
+
export { codexDesktopRecovery };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { link, mkdir, readFile, rm, unlink, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { causeOf, cliErr } from "../../../_utils/cli-error.js";
|
|
5
|
+
import { err, fromPromise, ok } from "../../../_utils/result.js";
|
|
6
|
+
import { statePath } from "../../../_utils/state.js";
|
|
7
|
+
const pathFor = (takeoverId) => join(dirname(statePath()), "takeover-recovery", `${encodeURIComponent(takeoverId)}.json`);
|
|
8
|
+
const codexDesktopRecovery = {
|
|
9
|
+
async load(takeoverId) {
|
|
10
|
+
const path = pathFor(takeoverId);
|
|
11
|
+
const raw = await fromPromise(readFile(path, "utf8"));
|
|
12
|
+
if (!raw.ok) {
|
|
13
|
+
if (raw.error.code === "ENOENT")
|
|
14
|
+
return ok(null);
|
|
15
|
+
return err(cliErr({
|
|
16
|
+
what: "could not read the saved Codex Desktop takeover",
|
|
17
|
+
why: causeOf(raw.error),
|
|
18
|
+
path,
|
|
19
|
+
remedy: "fix the reported file permissions, then retry",
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
const parsed = await fromPromise(new Promise((resolve) => resolve(JSON.parse(raw.value))));
|
|
23
|
+
if (!parsed.ok)
|
|
24
|
+
return err(cliErr({
|
|
25
|
+
what: "the saved Codex Desktop takeover is invalid",
|
|
26
|
+
why: causeOf(parsed.error),
|
|
27
|
+
path,
|
|
28
|
+
remedy: "remove the reported recovery file, then retry",
|
|
29
|
+
}));
|
|
30
|
+
const value = parsed.value;
|
|
31
|
+
if (!value ||
|
|
32
|
+
value.takeoverId !== takeoverId ||
|
|
33
|
+
typeof value.canonicalDigest !== "string" ||
|
|
34
|
+
typeof value.destinationSessionId !== "string")
|
|
35
|
+
return err(cliErr({
|
|
36
|
+
what: "the saved Codex Desktop takeover is invalid",
|
|
37
|
+
path,
|
|
38
|
+
remedy: "remove the reported recovery file, then retry",
|
|
39
|
+
}));
|
|
40
|
+
return ok({
|
|
41
|
+
takeoverId,
|
|
42
|
+
canonicalDigest: value.canonicalDigest,
|
|
43
|
+
destinationSessionId: value.destinationSessionId,
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
async save(record) {
|
|
47
|
+
const path = pathFor(record.takeoverId);
|
|
48
|
+
const made = await fromPromise(mkdir(dirname(path), { recursive: true, mode: 0o700 }));
|
|
49
|
+
if (!made.ok)
|
|
50
|
+
return err(cliErr({
|
|
51
|
+
what: "could not create Codex Desktop takeover recovery storage",
|
|
52
|
+
why: causeOf(made.error),
|
|
53
|
+
path: dirname(path),
|
|
54
|
+
remedy: "fix the reported directory permissions, then retry",
|
|
55
|
+
}));
|
|
56
|
+
const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
|
|
57
|
+
const written = await fromPromise(writeFile(temporary, JSON.stringify(record), { mode: 0o600 }));
|
|
58
|
+
if (!written.ok)
|
|
59
|
+
return err(cliErr({
|
|
60
|
+
what: "could not save Codex Desktop takeover recovery",
|
|
61
|
+
why: causeOf(written.error),
|
|
62
|
+
path: temporary,
|
|
63
|
+
remedy: "check disk space and permissions, then retry",
|
|
64
|
+
}));
|
|
65
|
+
const claimed = await fromPromise(link(temporary, path));
|
|
66
|
+
await rm(temporary, { force: true });
|
|
67
|
+
if (claimed.ok)
|
|
68
|
+
return ok(record);
|
|
69
|
+
const existing = await codexDesktopRecovery.load(record.takeoverId);
|
|
70
|
+
if (!existing.ok)
|
|
71
|
+
return existing;
|
|
72
|
+
if (existing.value)
|
|
73
|
+
return ok(existing.value);
|
|
74
|
+
return err(cliErr({
|
|
75
|
+
what: "could not claim Codex Desktop takeover recovery",
|
|
76
|
+
why: causeOf(claimed.error),
|
|
77
|
+
path,
|
|
78
|
+
remedy: "fix the reported directory permissions, then retry",
|
|
79
|
+
}));
|
|
80
|
+
},
|
|
81
|
+
async clear(takeoverId, expectedDestinationSessionId) {
|
|
82
|
+
const path = pathFor(takeoverId);
|
|
83
|
+
const existing = await codexDesktopRecovery.load(takeoverId);
|
|
84
|
+
if (!existing.ok)
|
|
85
|
+
return existing;
|
|
86
|
+
if (!existing.value ||
|
|
87
|
+
existing.value.destinationSessionId !== expectedDestinationSessionId)
|
|
88
|
+
return ok(undefined);
|
|
89
|
+
const removed = await fromPromise(unlink(path));
|
|
90
|
+
if (!removed.ok &&
|
|
91
|
+
removed.error.code !== "ENOENT")
|
|
92
|
+
return err(cliErr({
|
|
93
|
+
what: "could not clear Codex Desktop takeover recovery",
|
|
94
|
+
why: causeOf(removed.error),
|
|
95
|
+
path,
|
|
96
|
+
remedy: "remove the reported recovery file manually",
|
|
97
|
+
}));
|
|
98
|
+
return ok(undefined);
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
export { codexDesktopRecovery };
|
|
102
|
+
//# sourceMappingURL=codex-desktop-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-desktop-recovery.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/codex-desktop-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CliError } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { type Result } from "../../../_utils/result.js";
|
|
3
|
+
declare const contextFit: (input: {
|
|
4
|
+
readonly messages: readonly {
|
|
5
|
+
role: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}[];
|
|
8
|
+
readonly model: string;
|
|
9
|
+
readonly version: string;
|
|
10
|
+
readonly contextWindowTokens: number;
|
|
11
|
+
readonly startupReserveTokens: number;
|
|
12
|
+
readonly responseReserveTokens: number;
|
|
13
|
+
}) => Result<{
|
|
14
|
+
transcriptTokenUpperBound: number;
|
|
15
|
+
totalRequiredTokens: number;
|
|
16
|
+
availableTokens: number;
|
|
17
|
+
}, CliError>;
|
|
18
|
+
export { contextFit };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { cliErr } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { err, ok } from "../../../_utils/result.js";
|
|
3
|
+
const contextFit = (input) => {
|
|
4
|
+
if (input.model.trim() === "" ||
|
|
5
|
+
input.version.trim() === "" ||
|
|
6
|
+
!Number.isSafeInteger(input.contextWindowTokens) ||
|
|
7
|
+
input.contextWindowTokens <= 0)
|
|
8
|
+
return err(cliErr({
|
|
9
|
+
what: "cannot prove this transcript fits the target session",
|
|
10
|
+
why: "the target agent reported an unknown model, version, or context window",
|
|
11
|
+
remedy: "update the target agent and Glen, then retry; no session was created",
|
|
12
|
+
}));
|
|
13
|
+
const transcriptTokenUpperBound = Buffer.byteLength(JSON.stringify(input.messages), "utf8");
|
|
14
|
+
const totalRequiredTokens = transcriptTokenUpperBound +
|
|
15
|
+
input.startupReserveTokens +
|
|
16
|
+
input.responseReserveTokens;
|
|
17
|
+
if (totalRequiredTokens > input.contextWindowTokens)
|
|
18
|
+
return err(cliErr({
|
|
19
|
+
what: "the entire transcript does not fit in the target session",
|
|
20
|
+
why: `required ${totalRequiredTokens} tokens by the conservative UTF-8 bound; available ${input.contextWindowTokens}; startup reserve ${input.startupReserveTokens}; response reserve ${input.responseReserveTokens}`,
|
|
21
|
+
remedy: "use a target model with a larger context window; Glen did not truncate anything and did not create a session",
|
|
22
|
+
}));
|
|
23
|
+
return ok({
|
|
24
|
+
transcriptTokenUpperBound,
|
|
25
|
+
totalRequiredTokens,
|
|
26
|
+
availableTokens: input.contextWindowTokens,
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
export { contextFit };
|
|
30
|
+
//# sourceMappingURL=context-fit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-fit.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/context-fit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,UAAU,GAAG,CAAC,KAOnB,EAOC,EAAE;IACF,IACE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAC3B,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAChD,KAAK,CAAC,mBAAmB,IAAI,CAAC;QAE9B,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,sDAAsD;YAC5D,GAAG,EAAE,wEAAwE;YAC7E,MAAM,EACJ,sEAAsE;SACzE,CAAC,CACH,CAAC;IAEJ,MAAM,yBAAyB,GAAG,MAAM,CAAC,UAAU,CACjD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,MAAM,CACP,CAAC;IACF,MAAM,mBAAmB,GACvB,yBAAyB;QACzB,KAAK,CAAC,oBAAoB;QAC1B,KAAK,CAAC,qBAAqB,CAAC;IAC9B,IAAI,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;QACjD,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,0DAA0D;YAChE,GAAG,EAAE,YAAY,mBAAmB,sDAAsD,KAAK,CAAC,mBAAmB,qBAAqB,KAAK,CAAC,oBAAoB,sBAAsB,KAAK,CAAC,qBAAqB,EAAE;YACrN,MAAM,EACJ,8GAA8G;SACjH,CAAC,CACH,CAAC;IAEJ,OAAO,EAAE,CAAC;QACR,yBAAyB;QACzB,mBAAmB;QACnB,eAAe,EAAE,KAAK,CAAC,mBAAmB;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type CliError } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { type Result } from "../../../_utils/result.js";
|
|
3
|
+
type SqliteStatement = {
|
|
4
|
+
all: (...params: unknown[]) => Record<string, unknown>[];
|
|
5
|
+
get: (...params: unknown[]) => Record<string, unknown> | undefined;
|
|
6
|
+
run: (...params: unknown[]) => unknown;
|
|
7
|
+
};
|
|
8
|
+
type SqliteDb = {
|
|
9
|
+
exec: (sql: string) => void;
|
|
10
|
+
prepare: (sql: string) => SqliteStatement;
|
|
11
|
+
close: () => void;
|
|
12
|
+
};
|
|
13
|
+
declare const mutate: (db: SqliteDb, input: {
|
|
14
|
+
readonly sessionId: string;
|
|
15
|
+
readonly workspaceId: string;
|
|
16
|
+
readonly composer: string;
|
|
17
|
+
readonly header: string;
|
|
18
|
+
readonly bubbles: readonly {
|
|
19
|
+
key: string;
|
|
20
|
+
value: string;
|
|
21
|
+
}[];
|
|
22
|
+
readonly workspaceIndex: string;
|
|
23
|
+
readonly now: number;
|
|
24
|
+
}) => void;
|
|
25
|
+
declare const cursorStore: {
|
|
26
|
+
locate(workspace: string): Promise<Result<{
|
|
27
|
+
globalDb: string;
|
|
28
|
+
workspaceDb: string;
|
|
29
|
+
workspaceId: string;
|
|
30
|
+
}, CliError>>;
|
|
31
|
+
probe(paths: {
|
|
32
|
+
globalDb: string;
|
|
33
|
+
workspaceDb: string;
|
|
34
|
+
}): Promise<Result<void, CliError>>;
|
|
35
|
+
stage(paths: {
|
|
36
|
+
globalDb: string;
|
|
37
|
+
workspaceDb: string;
|
|
38
|
+
}, input: Parameters<typeof mutate>[1]): Promise<Result<{
|
|
39
|
+
path: string;
|
|
40
|
+
}, CliError>>;
|
|
41
|
+
install(paths: {
|
|
42
|
+
globalDb: string;
|
|
43
|
+
workspaceDb: string;
|
|
44
|
+
}, stagedDirectory: string, sessionId: string): Promise<Result<{
|
|
45
|
+
backups: readonly string[];
|
|
46
|
+
}, CliError>>;
|
|
47
|
+
cleanup(path: string): Promise<void>;
|
|
48
|
+
};
|
|
49
|
+
export { cursorStore };
|