@tryglen/cli 0.24.10 → 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.
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 +9 -0
  45. package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +143 -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 +94 -0
  69. package/dist/commands/takeover/_utils/write-codex-desktop-session.js +233 -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,105 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { constants } from "node:fs";
3
+ import { copyFile, link, mkdir, mkdtemp, readFile, rm, writeFile, } from "node:fs/promises";
4
+ import { tmpdir } from "node:os";
5
+ import { basename, dirname, join } from "node:path";
6
+ import { causeOf, cliErr } from "../../../_utils/cli-error.js";
7
+ import { err, fromPromise, ok } from "../../../_utils/result.js";
8
+ const nativeFile = {
9
+ async stage(prefix, lines) {
10
+ const directory = await fromPromise(mkdtemp(join(tmpdir(), prefix)));
11
+ if (!directory.ok)
12
+ return err(cliErr({
13
+ what: "could not create a private takeover staging directory",
14
+ why: causeOf(directory.error),
15
+ remedy: "check temporary-directory permissions, then retry",
16
+ }));
17
+ const path = join(directory.value, "session.jsonl");
18
+ const written = await fromPromise(writeFile(path, `${lines.map((line) => JSON.stringify(line)).join("\n")}\n`, {
19
+ mode: 0o600,
20
+ flag: "wx",
21
+ }));
22
+ if (!written.ok) {
23
+ await rm(directory.value, { recursive: true, force: true });
24
+ return err(cliErr({
25
+ what: "could not stage the native takeover session",
26
+ why: causeOf(written.error),
27
+ path,
28
+ remedy: "check disk space and temporary-directory permissions, then retry",
29
+ }));
30
+ }
31
+ return ok({ path, recoveryCommand: "" });
32
+ },
33
+ async install(stagedPath, targetPath, recoveryCommand) {
34
+ const staged = await fromPromise(readFile(stagedPath));
35
+ if (!staged.ok)
36
+ return err(cliErr({
37
+ what: "could not read the verified staged session",
38
+ why: causeOf(staged.error),
39
+ path: stagedPath,
40
+ remedy: "retry the takeover command",
41
+ }));
42
+ const existing = await fromPromise(readFile(targetPath));
43
+ if (existing.ok) {
44
+ if (existing.value.equals(staged.value))
45
+ return ok({ recoveryCommand });
46
+ return err(cliErr({
47
+ what: "the destination session ID already exists with different content",
48
+ path: targetPath,
49
+ remedy: "ask the sender for a new takeover command; nothing was overwritten",
50
+ }));
51
+ }
52
+ const made = await fromPromise(mkdir(dirname(targetPath), { recursive: true, mode: 0o700 }));
53
+ if (!made.ok)
54
+ return err(cliErr({
55
+ what: "could not create the target agent session directory",
56
+ why: causeOf(made.error),
57
+ path: dirname(targetPath),
58
+ remedy: "check directory permissions, then retry",
59
+ }));
60
+ const temporary = join(dirname(targetPath), `.${basename(targetPath)}.${process.pid}.tmp`);
61
+ const copied = await fromPromise(copyFile(stagedPath, temporary, constants.COPYFILE_EXCL));
62
+ if (!copied.ok)
63
+ return err(cliErr({
64
+ what: "could not copy the verified session into the target store",
65
+ why: causeOf(copied.error),
66
+ path: temporary,
67
+ remedy: "remove the reported temporary file if present, then retry",
68
+ }));
69
+ const linked = await fromPromise(link(temporary, targetPath));
70
+ await rm(temporary, { force: true });
71
+ if (!linked.ok) {
72
+ const raced = await fromPromise(readFile(targetPath));
73
+ if (raced.ok && raced.value.equals(staged.value))
74
+ return ok({ recoveryCommand });
75
+ return err(cliErr({
76
+ what: "could not atomically install the native session",
77
+ why: causeOf(linked.error),
78
+ path: targetPath,
79
+ remedy: "ask the sender for a new takeover command if that destination now exists; nothing was overwritten",
80
+ }));
81
+ }
82
+ return ok({ recoveryCommand });
83
+ },
84
+ async cleanup(stagedPath) {
85
+ await rm(dirname(stagedPath), { recursive: true, force: true });
86
+ },
87
+ launch(binary, args, workspace) {
88
+ const launched = spawnSync(binary, [...args], {
89
+ cwd: workspace,
90
+ stdio: "inherit",
91
+ });
92
+ if (launched.error || launched.status !== 0)
93
+ return err(cliErr({
94
+ what: "the target agent process exited before continuing the session",
95
+ why: launched.error
96
+ ? causeOf(launched.error)
97
+ : `exit status ${launched.status ?? "unknown"}`,
98
+ path: binary,
99
+ remedy: "launch the installed session manually",
100
+ }));
101
+ return ok(undefined);
102
+ },
103
+ };
104
+ export { nativeFile };
105
+ //# sourceMappingURL=native-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-file.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/native-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type CliError } from "../../../_utils/cli-error.js";
2
+ import { type Result } from "../../../_utils/result.js";
3
+ declare const probeAgent: (input: {
4
+ readonly displayName: string;
5
+ readonly binName: string;
6
+ readonly binaryOverride?: string;
7
+ readonly versionPattern: RegExp;
8
+ readonly model: string;
9
+ readonly contextWindowTokens: number;
10
+ readonly startupReserveTokens: number;
11
+ readonly responseReserveTokens: number;
12
+ }) => Result<{
13
+ binary: string;
14
+ model: string;
15
+ version: string;
16
+ contextWindowTokens: number;
17
+ startupReserveTokens: number;
18
+ responseReserveTokens: number;
19
+ }, CliError>;
20
+ export { probeAgent };
@@ -0,0 +1,37 @@
1
+ import { cliErr } from "../../../_utils/cli-error.js";
2
+ import { findBin } from "../../../_utils/find-bin.js";
3
+ import { err, ok } from "../../../_utils/result.js";
4
+ import { runBin } from "../../../_utils/run-bin.js";
5
+ const probeAgent = (input) => {
6
+ const binary = input.binaryOverride ?? findBin(input.binName);
7
+ if (!binary)
8
+ return err(cliErr({
9
+ what: `${input.displayName} is not installed or discoverable`,
10
+ remedy: `install ${input.displayName}, then run \`glen install --agent ${input.binName}\` and retry`,
11
+ }));
12
+ const version = runBin(binary, ["--version"], { timeoutMs: 5000 });
13
+ if (!version.ok)
14
+ return err(cliErr({
15
+ what: `could not verify the installed ${input.displayName} version`,
16
+ why: version.error.spawnError ?? version.error.stderrTail,
17
+ path: binary,
18
+ remedy: `confirm \`${input.binName} --version\` works, then retry`,
19
+ }));
20
+ const normalized = version.value.stdout.trim();
21
+ if (!input.versionPattern.test(normalized))
22
+ return err(cliErr({
23
+ what: `this ${input.displayName} version is not supported for transcript takeover`,
24
+ why: normalized || "the version command returned no version",
25
+ remedy: "update Glen and the target agent; no native session was written",
26
+ }));
27
+ return ok({
28
+ binary,
29
+ model: input.model,
30
+ version: normalized,
31
+ contextWindowTokens: input.contextWindowTokens,
32
+ startupReserveTokens: input.startupReserveTokens,
33
+ responseReserveTokens: input.responseReserveTokens,
34
+ });
35
+ };
36
+ export { probeAgent };
37
+ //# sourceMappingURL=probe-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-agent.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/probe-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,MAAM,UAAU,GAAG,CAAC,KASnB,EAUC,EAAE;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM;QACT,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,mCAAmC;YAC7D,MAAM,EAAE,WAAW,KAAK,CAAC,WAAW,qCAAqC,KAAK,CAAC,OAAO,cAAc;SACrG,CAAC,CACH,CAAC;IACJ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,kCAAkC,KAAK,CAAC,WAAW,UAAU;YACnE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU;YACzD,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,gCAAgC;SACnE,CAAC,CACH,CAAC;IACJ,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACxC,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,QAAQ,KAAK,CAAC,WAAW,mDAAmD;YAClF,GAAG,EAAE,UAAU,IAAI,yCAAyC;YAC5D,MAAM,EACJ,iEAAiE;SACpE,CAAC,CACH,CAAC;IACJ,OAAO,EAAE,CAAC;QACR,MAAM;QACN,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,UAAU;QACnB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;KACnD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const provenanceContext: (input: {
2
+ readonly sourceTitle: string | null;
3
+ readonly sourceOwner: string | null;
4
+ readonly sourceAgent: string | null;
5
+ readonly sourceEntityId: string;
6
+ }) => string;
7
+ export { provenanceContext };
@@ -0,0 +1,12 @@
1
+ const provenanceContext = (input) => [
2
+ "This is a fresh, non-destructive Glen transcript handoff.",
3
+ input.sourceTitle ? `Source: ${input.sourceTitle}.` : null,
4
+ input.sourceOwner ? `Shared by: ${input.sourceOwner}.` : null,
5
+ input.sourceAgent ? `Original agent: ${input.sourceAgent}.` : null,
6
+ `Source transcript ID: ${input.sourceEntityId}.`,
7
+ "Continue from the imported history; the original session remains unchanged.",
8
+ ]
9
+ .filter((part) => part !== null)
10
+ .join(" ");
11
+ export { provenanceContext };
12
+ //# sourceMappingURL=provenance-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance-context.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/provenance-context.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,CAAC,KAK1B,EAAU,EAAE,CACX;IACE,2DAA2D;IAC3D,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI;IAC1D,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI;IAC7D,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI;IAClE,yBAAyB,KAAK,CAAC,cAAc,GAAG;IAChD,6EAA6E;CAC9E;KACE,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;KAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;AAEf,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { type CliError } from "../../../_utils/cli-error.js";
2
+ import { type Result } from "../../../_utils/result.js";
3
+ type Adapter = {
4
+ probe: () => Promise<Result<{
5
+ model: string;
6
+ version: string;
7
+ contextWindowTokens: number;
8
+ startupReserveTokens: number;
9
+ responseReserveTokens: number;
10
+ }, CliError>>;
11
+ stage: () => Promise<Result<{
12
+ path: string;
13
+ recoveryCommand: string;
14
+ }, CliError>>;
15
+ parse: (staged: {
16
+ path: string;
17
+ recoveryCommand: string;
18
+ }) => Promise<Result<readonly {
19
+ role: string;
20
+ content: string;
21
+ }[], CliError>>;
22
+ install: (staged: {
23
+ path: string;
24
+ recoveryCommand: string;
25
+ }) => Promise<Result<{
26
+ recoveryCommand: string;
27
+ destinationSessionId?: string;
28
+ }, CliError>>;
29
+ launch: (installed: {
30
+ recoveryCommand: string;
31
+ destinationSessionId?: string;
32
+ }) => Promise<Result<void, CliError>>;
33
+ cleanup: (staged: {
34
+ path: string;
35
+ recoveryCommand: string;
36
+ }) => Promise<void>;
37
+ recover?: () => Promise<Result<{
38
+ recoveryCommand: string;
39
+ destinationSessionId?: string;
40
+ } | null, CliError>>;
41
+ settleRecovery?: (destinationSessionId: string) => Promise<Result<void, CliError>>;
42
+ rollback?: (installed: {
43
+ recoveryCommand: string;
44
+ destinationSessionId?: string;
45
+ }) => Promise<Result<void, CliError>>;
46
+ };
47
+ declare const stagedSession: {
48
+ forTarget(_target: "claude-code" | "claude-code-cli" | "claude-code-desktop" | "codex" | "codex-cli" | "codex-desktop" | "cursor" | "pi", _payload: {
49
+ takeoverId: string;
50
+ canonicalDigest: string;
51
+ destinationSessionId: string;
52
+ messages: readonly {
53
+ role: "user" | "assistant";
54
+ content: string;
55
+ }[];
56
+ provenance: {
57
+ sourceEntityId: string;
58
+ sourceTitle: string | null;
59
+ sourceOwner: string | null;
60
+ sourceAgent: string | null;
61
+ };
62
+ }, _workspace: string): Promise<Result<Adapter, CliError>>;
63
+ };
64
+ export { stagedSession };
@@ -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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"}