@tryglen/cli 0.24.10 → 0.26.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 (86) hide show
  1. package/README.md +55 -28
  2. package/dist/_utils/cli-error.d.ts +1 -0
  3. package/dist/_utils/cli-error.js.map +1 -1
  4. package/dist/_utils/config.d.ts +7 -0
  5. package/dist/_utils/config.js +7 -0
  6. package/dist/_utils/config.js.map +1 -1
  7. package/dist/_utils/parse-cursor-db.js +2 -0
  8. package/dist/_utils/parse-cursor-db.js.map +1 -1
  9. package/dist/_utils/refresh-control-state.d.ts +3 -0
  10. package/dist/_utils/refresh-control-state.js +24 -0
  11. package/dist/_utils/refresh-control-state.js.map +1 -0
  12. package/dist/_utils/sync-mode-from-server.d.ts +1 -2
  13. package/dist/_utils/sync-mode-from-server.js +28 -13
  14. package/dist/_utils/sync-mode-from-server.js.map +1 -1
  15. package/dist/bin.js +10 -0
  16. package/dist/bin.js.map +1 -1
  17. package/dist/commands/ingest.js +8 -4
  18. package/dist/commands/ingest.js.map +1 -1
  19. package/dist/commands/org.js +51 -4
  20. package/dist/commands/org.js.map +1 -1
  21. package/dist/commands/session-start.js +5 -1
  22. package/dist/commands/session-start.js.map +1 -1
  23. package/dist/commands/set-mode.d.ts +3 -4
  24. package/dist/commands/set-mode.js +20 -15
  25. package/dist/commands/set-mode.js.map +1 -1
  26. package/dist/commands/takeover/_utils/agent-paths.d.ts +6 -0
  27. package/dist/commands/takeover/_utils/agent-paths.js +23 -0
  28. package/dist/commands/takeover/_utils/agent-paths.js.map +1 -0
  29. package/dist/commands/takeover/_utils/archive-codex-desktop-thread.d.ts +5 -0
  30. package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js +63 -0
  31. package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js.map +1 -0
  32. package/dist/commands/takeover/_utils/canonical-digest.d.ts +5 -0
  33. package/dist/commands/takeover/_utils/canonical-digest.js +4 -0
  34. package/dist/commands/takeover/_utils/canonical-digest.js.map +1 -0
  35. package/dist/commands/takeover/_utils/codex-desktop-recovery.d.ts +16 -0
  36. package/dist/commands/takeover/_utils/codex-desktop-recovery.js +102 -0
  37. package/dist/commands/takeover/_utils/codex-desktop-recovery.js.map +1 -0
  38. package/dist/commands/takeover/_utils/context-fit.d.ts +18 -0
  39. package/dist/commands/takeover/_utils/context-fit.js +30 -0
  40. package/dist/commands/takeover/_utils/context-fit.js.map +1 -0
  41. package/dist/commands/takeover/_utils/cursor-store.d.ts +49 -0
  42. package/dist/commands/takeover/_utils/cursor-store.js +359 -0
  43. package/dist/commands/takeover/_utils/cursor-store.js.map +1 -0
  44. package/dist/commands/takeover/_utils/import-codex-desktop-thread.d.ts +14 -0
  45. package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +293 -0
  46. package/dist/commands/takeover/_utils/import-codex-desktop-thread.js.map +1 -0
  47. package/dist/commands/takeover/_utils/launch-desktop-url.d.ts +4 -0
  48. package/dist/commands/takeover/_utils/launch-desktop-url.js +40 -0
  49. package/dist/commands/takeover/_utils/launch-desktop-url.js.map +1 -0
  50. package/dist/commands/takeover/_utils/native-file.d.ts +14 -0
  51. package/dist/commands/takeover/_utils/native-file.js +105 -0
  52. package/dist/commands/takeover/_utils/native-file.js.map +1 -0
  53. package/dist/commands/takeover/_utils/probe-agent.d.ts +20 -0
  54. package/dist/commands/takeover/_utils/probe-agent.js +37 -0
  55. package/dist/commands/takeover/_utils/probe-agent.js.map +1 -0
  56. package/dist/commands/takeover/_utils/provenance-context.d.ts +7 -0
  57. package/dist/commands/takeover/_utils/provenance-context.js +12 -0
  58. package/dist/commands/takeover/_utils/provenance-context.js.map +1 -0
  59. package/dist/commands/takeover/_utils/staged-session.d.ts +64 -0
  60. package/dist/commands/takeover/_utils/staged-session.js +30 -0
  61. package/dist/commands/takeover/_utils/staged-session.js.map +1 -0
  62. package/dist/commands/takeover/_utils/write-claude-desktop-session.d.ts +47 -0
  63. package/dist/commands/takeover/_utils/write-claude-desktop-session.js +24 -0
  64. package/dist/commands/takeover/_utils/write-claude-desktop-session.js.map +1 -0
  65. package/dist/commands/takeover/_utils/write-claude-session.d.ts +53 -0
  66. package/dist/commands/takeover/_utils/write-claude-session.js +132 -0
  67. package/dist/commands/takeover/_utils/write-claude-session.js.map +1 -0
  68. package/dist/commands/takeover/_utils/write-codex-desktop-session.d.ts +96 -0
  69. package/dist/commands/takeover/_utils/write-codex-desktop-session.js +272 -0
  70. package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -0
  71. package/dist/commands/takeover/_utils/write-codex-session.d.ts +52 -0
  72. package/dist/commands/takeover/_utils/write-codex-session.js +117 -0
  73. package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -0
  74. package/dist/commands/takeover/_utils/write-cursor-session.d.ts +57 -0
  75. package/dist/commands/takeover/_utils/write-cursor-session.js +174 -0
  76. package/dist/commands/takeover/_utils/write-cursor-session.js.map +1 -0
  77. package/dist/commands/takeover/_utils/write-pi-session.d.ts +52 -0
  78. package/dist/commands/takeover/_utils/write-pi-session.js +173 -0
  79. package/dist/commands/takeover/_utils/write-pi-session.js.map +1 -0
  80. package/dist/commands/takeover/index.d.ts +21 -0
  81. package/dist/commands/takeover/index.js +201 -0
  82. package/dist/commands/takeover/index.js.map +1 -0
  83. package/dist/commands/takeover/takeover.schema.d.ts +24 -0
  84. package/dist/commands/takeover/takeover.schema.js +66 -0
  85. package/dist/commands/takeover/takeover.schema.js.map +1 -0
  86. package/package.json +1 -1
@@ -0,0 +1,30 @@
1
+ import { cliErr } from "../../../_utils/cli-error.js";
2
+ import { err, ok } from "../../../_utils/result.js";
3
+ import { writeClaudeDesktopSession } from "./write-claude-desktop-session.js";
4
+ import { writeClaudeSession } from "./write-claude-session.js";
5
+ import { writeCodexDesktopSession } from "./write-codex-desktop-session.js";
6
+ import { writeCodexSession } from "./write-codex-session.js";
7
+ import { writeCursorSession } from "./write-cursor-session.js";
8
+ import { writePiSession } from "./write-pi-session.js";
9
+ const stagedSession = {
10
+ async forTarget(_target, _payload, _workspace) {
11
+ if (_target === "claude-code" || _target === "claude-code-cli")
12
+ return ok(writeClaudeSession(_payload, _workspace));
13
+ if (_target === "claude-code-desktop")
14
+ return ok(writeClaudeDesktopSession(_payload, _workspace));
15
+ if (_target === "codex" || _target === "codex-cli")
16
+ return ok(writeCodexSession(_payload, _workspace));
17
+ if (_target === "codex-desktop")
18
+ return ok(writeCodexDesktopSession(_payload, _workspace));
19
+ if (_target === "cursor")
20
+ return ok(writeCursorSession(_payload, _workspace));
21
+ if (_target === "pi")
22
+ return ok(writePiSession(_payload, _workspace));
23
+ return err(cliErr({
24
+ what: "this target agent adapter is not supported for takeover",
25
+ remedy: "update Glen and Cursor, close Cursor completely, then retry; no session was created",
26
+ }));
27
+ },
28
+ };
29
+ export { stagedSession };
30
+ //# sourceMappingURL=staged-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staged-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/staged-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+CvD,MAAM,aAAa,GAAG;IACpB,KAAK,CAAC,SAAS,CACb,OAQQ,EACR,QAWC,EACD,UAAkB;QAElB,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,iBAAiB;YAC5D,OAAO,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,qBAAqB;YACnC,OAAO,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QAC7D,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,WAAW;YAChD,OAAO,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,eAAe;YAC7B,OAAO,EAAE,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QAC5D,IAAI,OAAO,KAAK,QAAQ;YACtB,OAAO,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,yDAAyD;YAC/D,MAAM,EACJ,qFAAqF;SACxF,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { launchDesktopUrl } from "./launch-desktop-url.js";
2
+ import { writeClaudeSession } from "./write-claude-session.js";
3
+ declare const writeClaudeDesktopSession: (payload: Parameters<typeof writeClaudeSession>[0], workspace: string, launchUrl?: typeof launchDesktopUrl) => {
4
+ stage: () => Promise<{
5
+ readonly ok: false;
6
+ readonly error: import("../../../_utils/cli-error.js").CliError;
7
+ } | {
8
+ value: {
9
+ recoveryCommand: string;
10
+ path: string;
11
+ };
12
+ ok: true;
13
+ }>;
14
+ launch: (_installed: Parameters<(_installed: {
15
+ recoveryCommand: string;
16
+ }) => Promise<import("../../../_utils/result.js").Result<void, import("../../../_utils/cli-error.js").CliError>>>[0]) => Promise<import("../../../_utils/result.js").Result<void, import("../../../_utils/cli-error.js").CliError>>;
17
+ probe: () => Promise<import("../../../_utils/result.js").Result<{
18
+ binary: string;
19
+ model: string;
20
+ version: string;
21
+ contextWindowTokens: number;
22
+ startupReserveTokens: number;
23
+ responseReserveTokens: number;
24
+ }, import("../../../_utils/cli-error.js").CliError>>;
25
+ parse: (staged: {
26
+ path: string;
27
+ }) => Promise<{
28
+ readonly ok: false;
29
+ readonly error: import("../../../_utils/cli-error.js").CliError;
30
+ } | {
31
+ readonly ok: true;
32
+ readonly value: {
33
+ role: "user" | "assistant";
34
+ content: string;
35
+ }[];
36
+ }>;
37
+ install: (staged: {
38
+ path: string;
39
+ recoveryCommand: string;
40
+ }) => Promise<import("../../../_utils/result.js").Result<{
41
+ recoveryCommand: string;
42
+ }, import("../../../_utils/cli-error.js").CliError>>;
43
+ cleanup: (staged: {
44
+ path: string;
45
+ }) => Promise<void>;
46
+ };
47
+ export { writeClaudeDesktopSession };
@@ -0,0 +1,24 @@
1
+ import { launchDesktopUrl } from "./launch-desktop-url.js";
2
+ import { writeClaudeSession } from "./write-claude-session.js";
3
+ const writeClaudeDesktopSession = (payload, workspace, launchUrl = launchDesktopUrl) => {
4
+ const base = writeClaudeSession(payload, workspace);
5
+ const url = `claude://resume?session=${encodeURIComponent(payload.destinationSessionId)}`;
6
+ return {
7
+ ...base,
8
+ stage: async () => {
9
+ const staged = await base.stage();
10
+ return staged.ok
11
+ ? {
12
+ ...staged,
13
+ value: {
14
+ ...staged.value,
15
+ recoveryCommand: `open ${JSON.stringify(url)}`,
16
+ },
17
+ }
18
+ : staged;
19
+ },
20
+ launch: async (_installed) => launchUrl(url),
21
+ };
22
+ };
23
+ export { writeClaudeDesktopSession };
24
+ //# sourceMappingURL=write-claude-desktop-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-claude-desktop-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/write-claude-desktop-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,yBAAyB,GAAG,CAChC,OAAiD,EACjD,SAAiB,EACjB,YAAqC,gBAAgB,EACrD,EAAE;IACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,2BAA2B,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;IAE1F,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,EAAE;gBACd,CAAC,CAAC;oBACE,GAAG,MAAM;oBACT,KAAK,EAAE;wBACL,GAAG,MAAM,CAAC,KAAK;wBACf,eAAe,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;qBAC/C;iBACF;gBACH,CAAC,CAAC,MAAM,CAAC;QACb,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,UAA6C,EAAE,EAAE,CAC9D,SAAS,CAAC,GAAG,CAAC;KACjB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { provenanceContext } from "./provenance-context.js";
2
+ declare const writeClaudeSession: (payload: {
3
+ readonly destinationSessionId: string;
4
+ readonly messages: readonly {
5
+ role: "user" | "assistant";
6
+ content: string;
7
+ }[];
8
+ readonly provenance: Parameters<typeof provenanceContext>[0];
9
+ }, workspace: string) => {
10
+ probe: () => Promise<import("../../../_utils/result.js").Result<{
11
+ binary: string;
12
+ model: string;
13
+ version: string;
14
+ contextWindowTokens: number;
15
+ startupReserveTokens: number;
16
+ responseReserveTokens: number;
17
+ }, import("../../../_utils/cli-error.js").CliError>>;
18
+ stage: () => Promise<{
19
+ readonly ok: false;
20
+ readonly error: import("../../../_utils/cli-error.js").CliError;
21
+ } | {
22
+ readonly ok: true;
23
+ readonly value: {
24
+ recoveryCommand: string;
25
+ path: string;
26
+ };
27
+ }>;
28
+ parse: (staged: {
29
+ path: string;
30
+ }) => Promise<{
31
+ readonly ok: false;
32
+ readonly error: import("../../../_utils/cli-error.js").CliError;
33
+ } | {
34
+ readonly ok: true;
35
+ readonly value: {
36
+ role: "user" | "assistant";
37
+ content: string;
38
+ }[];
39
+ }>;
40
+ install: (staged: {
41
+ path: string;
42
+ recoveryCommand: string;
43
+ }) => Promise<import("../../../_utils/result.js").Result<{
44
+ recoveryCommand: string;
45
+ }, import("../../../_utils/cli-error.js").CliError>>;
46
+ launch: (_installed: {
47
+ recoveryCommand: string;
48
+ }) => Promise<import("../../../_utils/result.js").Result<void, import("../../../_utils/cli-error.js").CliError>>;
49
+ cleanup: (staged: {
50
+ path: string;
51
+ }) => Promise<void>;
52
+ };
53
+ export { writeClaudeSession };
@@ -0,0 +1,132 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { readFile } from "node:fs/promises";
3
+ import { causeOf, cliErr } from "../../../_utils/cli-error.js";
4
+ import { parseClaudeTranscript } from "../../../_utils/parse-claude-transcript.js";
5
+ import { err, fromPromise, ok } from "../../../_utils/result.js";
6
+ import { agentPaths } from "./agent-paths.js";
7
+ import { nativeFile } from "./native-file.js";
8
+ import { probeAgent } from "./probe-agent.js";
9
+ import { provenanceContext } from "./provenance-context.js";
10
+ const writeClaudeSession = (payload, workspace) => {
11
+ const targetPath = agentPaths.claude(workspace, payload.destinationSessionId);
12
+ const probe = async () => probeAgent({
13
+ displayName: "Claude Code",
14
+ binName: "claude",
15
+ ...(process.env.GLEN_CLAUDE_BIN
16
+ ? { binaryOverride: process.env.GLEN_CLAUDE_BIN }
17
+ : {}),
18
+ versionPattern: /^2\.1\.\d+/,
19
+ model: "claude-fable-5",
20
+ contextWindowTokens: 200_000,
21
+ startupReserveTokens: 32_768,
22
+ responseReserveTokens: 32_768,
23
+ });
24
+ const stage = async () => {
25
+ const startedAt = Date.now();
26
+ const provenanceId = randomUUID();
27
+ const initial = [
28
+ {
29
+ type: "system",
30
+ uuid: provenanceId,
31
+ parentUuid: null,
32
+ sessionId: payload.destinationSessionId,
33
+ timestamp: new Date(startedAt).toISOString(),
34
+ cwd: workspace,
35
+ version: "2.1",
36
+ isSidechain: false,
37
+ message: {
38
+ role: "system",
39
+ content: provenanceContext(payload.provenance),
40
+ },
41
+ glenTakeover: true,
42
+ },
43
+ ];
44
+ const lines = payload.messages.reduce((state, message, index) => {
45
+ const uuid = randomUUID();
46
+ const timestamp = new Date(startedAt + index + 1).toISOString();
47
+ const entry = message.role === "user"
48
+ ? {
49
+ type: "user",
50
+ uuid,
51
+ parentUuid: state.parentUuid,
52
+ sessionId: payload.destinationSessionId,
53
+ timestamp,
54
+ cwd: workspace,
55
+ version: "2.1",
56
+ isSidechain: false,
57
+ userType: "external",
58
+ message: { role: "user", content: message.content },
59
+ }
60
+ : {
61
+ type: "assistant",
62
+ uuid,
63
+ parentUuid: state.parentUuid,
64
+ sessionId: payload.destinationSessionId,
65
+ timestamp,
66
+ cwd: workspace,
67
+ version: "2.1",
68
+ isSidechain: false,
69
+ userType: "external",
70
+ message: {
71
+ id: `msg_${uuid.replaceAll("-", "")}`,
72
+ type: "message",
73
+ role: "assistant",
74
+ model: "claude-fable-5",
75
+ content: [{ type: "text", text: message.content }],
76
+ stop_reason: "end_turn",
77
+ stop_sequence: null,
78
+ usage: {
79
+ input_tokens: 0,
80
+ output_tokens: 0,
81
+ cache_creation_input_tokens: 0,
82
+ cache_read_input_tokens: 0,
83
+ },
84
+ },
85
+ };
86
+ return {
87
+ entries: [...state.entries, entry],
88
+ parentUuid: uuid,
89
+ };
90
+ }, { entries: initial, parentUuid: provenanceId }).entries;
91
+ const staged = await nativeFile.stage("glen-claude-takeover-", lines);
92
+ return staged.ok
93
+ ? ok({
94
+ ...staged.value,
95
+ recoveryCommand: `claude --resume ${payload.destinationSessionId}`,
96
+ })
97
+ : staged;
98
+ };
99
+ const parse = async (staged) => {
100
+ const raw = await fromPromise(readFile(staged.path, "utf8"));
101
+ if (!raw.ok)
102
+ return err(cliErr({
103
+ what: "could not re-read the staged Claude Code session",
104
+ why: causeOf(raw.error),
105
+ path: staged.path,
106
+ remedy: "retry the takeover command",
107
+ }));
108
+ const parsed = parseClaudeTranscript(raw.value.split(/\r?\n/).filter(Boolean), payload.destinationSessionId);
109
+ if (!parsed)
110
+ return err(cliErr({
111
+ what: "Claude Code could not parse the staged transcript",
112
+ path: staged.path,
113
+ remedy: "update Glen and Claude Code, then retry",
114
+ }));
115
+ return ok(parsed.messages.map(({ role, text }) => ({ role, content: text })));
116
+ };
117
+ return {
118
+ probe,
119
+ stage,
120
+ parse,
121
+ install: (staged) => nativeFile.install(staged.path, targetPath, staged.recoveryCommand),
122
+ launch: async (_installed) => {
123
+ const checked = await probe();
124
+ if (!checked.ok)
125
+ return checked;
126
+ return nativeFile.launch(checked.value.binary, ["--resume", payload.destinationSessionId], workspace);
127
+ },
128
+ cleanup: (staged) => nativeFile.cleanup(staged.path),
129
+ };
130
+ };
131
+ export { writeClaudeSession };
132
+ //# sourceMappingURL=write-claude-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-claude-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/write-claude-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { archiveCodexDesktopThread } from "./archive-codex-desktop-thread.js";
2
+ import { codexDesktopRecovery } from "./codex-desktop-recovery.js";
3
+ import { importCodexDesktopThread } from "./import-codex-desktop-thread.js";
4
+ import { launchDesktopUrl } from "./launch-desktop-url.js";
5
+ import { provenanceContext } from "./provenance-context.js";
6
+ declare const removeCodexDesktopSource: (path: string) => Promise<import("../../../_utils/result.js").Result<void, unknown>>;
7
+ declare const writeCodexDesktopSession: (payload: {
8
+ readonly takeoverId: string;
9
+ readonly canonicalDigest: string;
10
+ readonly destinationSessionId: string;
11
+ readonly messages: readonly {
12
+ role: "user" | "assistant";
13
+ content: string;
14
+ }[];
15
+ readonly provenance: Parameters<typeof provenanceContext>[0];
16
+ }, workspace: string, options?: {
17
+ readonly binary?: string;
18
+ readonly importThread?: typeof importCodexDesktopThread;
19
+ readonly launchUrl?: typeof launchDesktopUrl;
20
+ readonly recovery?: typeof codexDesktopRecovery;
21
+ readonly archiveThread?: typeof archiveCodexDesktopThread;
22
+ readonly removeSource?: typeof removeCodexDesktopSource;
23
+ }) => {
24
+ probe: () => Promise<import("../../../_utils/result.js").Result<{
25
+ binary: string;
26
+ model: string;
27
+ version: string;
28
+ contextWindowTokens: number;
29
+ startupReserveTokens: number;
30
+ responseReserveTokens: number;
31
+ }, import("../../../_utils/cli-error.js").CliError>>;
32
+ stage: () => Promise<{
33
+ readonly ok: false;
34
+ readonly error: import("../../../_utils/cli-error.js").CliError;
35
+ } | {
36
+ readonly ok: true;
37
+ readonly value: {
38
+ recoveryCommand: string;
39
+ path: string;
40
+ };
41
+ }>;
42
+ parse: (staged: {
43
+ path: string;
44
+ }) => Promise<{
45
+ readonly ok: false;
46
+ readonly error: import("../../../_utils/cli-error.js").CliError;
47
+ } | {
48
+ readonly ok: true;
49
+ readonly value: {
50
+ role: "user" | "assistant";
51
+ content: string;
52
+ }[];
53
+ }>;
54
+ install: (staged: {
55
+ path: string;
56
+ }) => Promise<{
57
+ readonly ok: false;
58
+ readonly error: import("../../../_utils/cli-error.js").CliError;
59
+ } | {
60
+ readonly ok: true;
61
+ readonly value: {
62
+ destinationSessionId: string;
63
+ recoveryCommand: string;
64
+ };
65
+ }>;
66
+ recover: () => Promise<{
67
+ readonly ok: false;
68
+ readonly error: import("../../../_utils/cli-error.js").CliError;
69
+ } | {
70
+ readonly ok: true;
71
+ readonly value: null;
72
+ } | {
73
+ readonly ok: true;
74
+ readonly value: {
75
+ destinationSessionId: string;
76
+ recoveryCommand: string;
77
+ };
78
+ }>;
79
+ settleRecovery: (destinationSessionId: string) => Promise<{
80
+ readonly ok: false;
81
+ readonly error: import("../../../_utils/cli-error.js").CliError;
82
+ } | {
83
+ readonly ok: true;
84
+ readonly value: undefined;
85
+ }>;
86
+ rollback: (installed: {
87
+ destinationSessionId?: string;
88
+ }) => Promise<import("../../../_utils/result.js").Result<void, import("../../../_utils/cli-error.js").CliError>>;
89
+ launch: (installed: {
90
+ destinationSessionId?: string;
91
+ }) => Promise<import("../../../_utils/result.js").Result<void, import("../../../_utils/cli-error.js").CliError>>;
92
+ cleanup: (staged: {
93
+ path: string;
94
+ }) => Promise<void>;
95
+ };
96
+ export { writeCodexDesktopSession };