@tickernelz/paperclip-pro-adapter-grok-local 2026.925.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 (119) hide show
  1. package/LICENSE +22 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +55 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/format-event.test.d.ts +2 -0
  7. package/dist/cli/format-event.test.d.ts.map +1 -0
  8. package/dist/cli/format-event.test.js +19 -0
  9. package/dist/cli/format-event.test.js.map +1 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +2 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/index.d.ts +10 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +53 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/server/adapter-auth-promotion.d.ts +87 -0
  19. package/dist/server/adapter-auth-promotion.d.ts.map +1 -0
  20. package/dist/server/adapter-auth-promotion.js +294 -0
  21. package/dist/server/adapter-auth-promotion.js.map +1 -0
  22. package/dist/server/adapter-auth-promotion.test.d.ts +2 -0
  23. package/dist/server/adapter-auth-promotion.test.d.ts.map +1 -0
  24. package/dist/server/adapter-auth-promotion.test.js +563 -0
  25. package/dist/server/adapter-auth-promotion.test.js.map +1 -0
  26. package/dist/server/device-login-parse.d.ts +23 -0
  27. package/dist/server/device-login-parse.d.ts.map +1 -0
  28. package/dist/server/device-login-parse.js +148 -0
  29. package/dist/server/device-login-parse.js.map +1 -0
  30. package/dist/server/device-login-parse.test.d.ts +2 -0
  31. package/dist/server/device-login-parse.test.d.ts.map +1 -0
  32. package/dist/server/device-login-parse.test.js +146 -0
  33. package/dist/server/device-login-parse.test.js.map +1 -0
  34. package/dist/server/execute.d.ts +3 -0
  35. package/dist/server/execute.d.ts.map +1 -0
  36. package/dist/server/execute.js +572 -0
  37. package/dist/server/execute.js.map +1 -0
  38. package/dist/server/execute.test.d.ts +2 -0
  39. package/dist/server/execute.test.d.ts.map +1 -0
  40. package/dist/server/execute.test.js +731 -0
  41. package/dist/server/execute.test.js.map +1 -0
  42. package/dist/server/grok-auth-copyback.d.ts +48 -0
  43. package/dist/server/grok-auth-copyback.d.ts.map +1 -0
  44. package/dist/server/grok-auth-copyback.js +92 -0
  45. package/dist/server/grok-auth-copyback.js.map +1 -0
  46. package/dist/server/grok-auth-copyback.test.d.ts +2 -0
  47. package/dist/server/grok-auth-copyback.test.d.ts.map +1 -0
  48. package/dist/server/grok-auth-copyback.test.js +246 -0
  49. package/dist/server/grok-auth-copyback.test.js.map +1 -0
  50. package/dist/server/grok-auth-merge-decision.cjs +157 -0
  51. package/dist/server/grok-auth-merge-decision.d.ts +21 -0
  52. package/dist/server/grok-auth-merge-decision.d.ts.map +1 -0
  53. package/dist/server/grok-auth-merge-decision.js +58 -0
  54. package/dist/server/grok-auth-merge-decision.js.map +1 -0
  55. package/dist/server/grok-auth-merge-decision.test.d.ts +2 -0
  56. package/dist/server/grok-auth-merge-decision.test.d.ts.map +1 -0
  57. package/dist/server/grok-auth-merge-decision.test.js +189 -0
  58. package/dist/server/grok-auth-merge-decision.test.js.map +1 -0
  59. package/dist/server/grok-home.d.ts +57 -0
  60. package/dist/server/grok-home.d.ts.map +1 -0
  61. package/dist/server/grok-home.js +145 -0
  62. package/dist/server/grok-home.js.map +1 -0
  63. package/dist/server/grok-home.test.d.ts +2 -0
  64. package/dist/server/grok-home.test.d.ts.map +1 -0
  65. package/dist/server/grok-home.test.js +109 -0
  66. package/dist/server/grok-home.test.js.map +1 -0
  67. package/dist/server/index.d.ts +12 -0
  68. package/dist/server/index.d.ts.map +1 -0
  69. package/dist/server/index.js +67 -0
  70. package/dist/server/index.js.map +1 -0
  71. package/dist/server/parse.d.ts +15 -0
  72. package/dist/server/parse.d.ts.map +1 -0
  73. package/dist/server/parse.js +93 -0
  74. package/dist/server/parse.js.map +1 -0
  75. package/dist/server/parse.test.d.ts +2 -0
  76. package/dist/server/parse.test.d.ts.map +1 -0
  77. package/dist/server/parse.test.js +82 -0
  78. package/dist/server/parse.test.js.map +1 -0
  79. package/dist/server/skills.d.ts +4 -0
  80. package/dist/server/skills.d.ts.map +1 -0
  81. package/dist/server/skills.js +21 -0
  82. package/dist/server/skills.js.map +1 -0
  83. package/dist/server/test.d.ts +9 -0
  84. package/dist/server/test.d.ts.map +1 -0
  85. package/dist/server/test.js +362 -0
  86. package/dist/server/test.js.map +1 -0
  87. package/dist/server/test.test.d.ts +2 -0
  88. package/dist/server/test.test.d.ts.map +1 -0
  89. package/dist/server/test.test.js +293 -0
  90. package/dist/server/test.test.js.map +1 -0
  91. package/dist/shared/turn-boundary.d.ts +7 -0
  92. package/dist/shared/turn-boundary.d.ts.map +1 -0
  93. package/dist/shared/turn-boundary.js +44 -0
  94. package/dist/shared/turn-boundary.js.map +1 -0
  95. package/dist/shared/turn-boundary.test.d.ts +2 -0
  96. package/dist/shared/turn-boundary.test.d.ts.map +1 -0
  97. package/dist/shared/turn-boundary.test.js +43 -0
  98. package/dist/shared/turn-boundary.test.js.map +1 -0
  99. package/dist/ui/build-config.d.ts +3 -0
  100. package/dist/ui/build-config.d.ts.map +1 -0
  101. package/dist/ui/build-config.js +29 -0
  102. package/dist/ui/build-config.js.map +1 -0
  103. package/dist/ui/build-config.test.d.ts +2 -0
  104. package/dist/ui/build-config.test.d.ts.map +1 -0
  105. package/dist/ui/build-config.test.js +26 -0
  106. package/dist/ui/build-config.test.js.map +1 -0
  107. package/dist/ui/index.d.ts +3 -0
  108. package/dist/ui/index.d.ts.map +1 -0
  109. package/dist/ui/index.js +3 -0
  110. package/dist/ui/index.js.map +1 -0
  111. package/dist/ui/parse-stdout.d.ts +7 -0
  112. package/dist/ui/parse-stdout.d.ts.map +1 -0
  113. package/dist/ui/parse-stdout.js +76 -0
  114. package/dist/ui/parse-stdout.js.map +1 -0
  115. package/dist/ui/parse-stdout.test.d.ts +2 -0
  116. package/dist/ui/parse-stdout.test.d.ts.map +1 -0
  117. package/dist/ui/parse-stdout.test.js +62 -0
  118. package/dist/ui/parse-stdout.test.js.map +1 -0
  119. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.test.js","sourceRoot":"","sources":["../../src/server/execute.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /** Outcome of a copy-out attempt. No token material is ever surfaced. */
2
+ export type CopyBackGrokAuthOutcome = "copied" | "kept-host";
3
+ export interface CopyBackGrokAuthInput {
4
+ /**
5
+ * Reads the sandbox `auth.json` bytes back from the (about-to-be-
6
+ * destroyed) sandbox. In production this is bound to the managed-runtime
7
+ * restore context's `readFile` for `${assetDir}/auth.json`.
8
+ */
9
+ readSandboxAuth: () => Promise<Buffer>;
10
+ /**
11
+ * The managed Grok home directory to (maybe) update. Callers must resolve
12
+ * this from `resolveManagedGrokHomeDir` — never from a user- or
13
+ * environment-supplied value — so the copy-out destination always stays
14
+ * server-derived.
15
+ */
16
+ hostHomeDir: string;
17
+ /** Non-leaking progress sink: receives decision/outcome lines only. */
18
+ log: (line: string) => void | Promise<void>;
19
+ /** Environment for the directory-merge-lock root resolution. Defaults to `process.env`. */
20
+ env?: NodeJS.ProcessEnv;
21
+ }
22
+ /**
23
+ * Guards, locks, and atomically installs a strictly-later same-identity
24
+ * sandbox Grok `auth.json` onto the shared host credential at teardown.
25
+ *
26
+ * Sequence, all under `withDirectoryMergeLock` on `hostHomeDir` so a
27
+ * concurrent copy-out can never interleave with another:
28
+ * 1. Read the sandbox credential bytes. A genuinely absent sandbox
29
+ * `auth.json` (ENOENT) means there is nothing to copy back, so this
30
+ * resolves to `kept-host` (benign no-op, host untouched); every other
31
+ * read error stays fail-loud.
32
+ * 2. Stage the bytes to a `0600` temp file inside `hostHomeDir`, which
33
+ * doubles as the predicate `source`.
34
+ * 3. Run the decision predicate (`source` = staged temp, `destination` =
35
+ * the host `auth.json`, which may not exist yet). Exit 10 installs the
36
+ * sandbox copy; every other exit keeps the host copy untouched
37
+ * (including a wholly absent one).
38
+ * 4. On install, `rename` the staged temp over the host `auth.json` — an
39
+ * atomic same-directory swap that preserves mode `0600`.
40
+ * The staged temp is always removed (the rename consumes it on the install
41
+ * path; the `finally` removes it otherwise), so no failure ever leaves a
42
+ * temporary file, and the displaced host credential is never kept as a
43
+ * backup anywhere. Never logs token bytes. On error, only the `errno` code
44
+ * is logged, then the error is rethrown — the message would embed the home
45
+ * path, and the path embeds the account handle.
46
+ */
47
+ export declare function copyBackGrokAuth(input: CopyBackGrokAuthInput): Promise<CopyBackGrokAuthOutcome>;
48
+ //# sourceMappingURL=grok-auth-copyback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-auth-copyback.d.ts","sourceRoot":"","sources":["../../src/server/grok-auth-copyback.ts"],"names":[],"mappings":"AAaA,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,2FAA2F;IAC3F,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4ErG"}
@@ -0,0 +1,92 @@
1
+ import { mkdir, open, rename, rm } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { withDirectoryMergeLock } from "@tickernelz/paperclip-pro-adapter-utils/workspace-restore-merge";
5
+ import { USE_SOURCE_EXIT, decideGrokAuthMerge } from "./grok-auth-merge-decision.js";
6
+ /**
7
+ * Guards, locks, and atomically installs a strictly-later same-identity
8
+ * sandbox Grok `auth.json` onto the shared host credential at teardown.
9
+ *
10
+ * Sequence, all under `withDirectoryMergeLock` on `hostHomeDir` so a
11
+ * concurrent copy-out can never interleave with another:
12
+ * 1. Read the sandbox credential bytes. A genuinely absent sandbox
13
+ * `auth.json` (ENOENT) means there is nothing to copy back, so this
14
+ * resolves to `kept-host` (benign no-op, host untouched); every other
15
+ * read error stays fail-loud.
16
+ * 2. Stage the bytes to a `0600` temp file inside `hostHomeDir`, which
17
+ * doubles as the predicate `source`.
18
+ * 3. Run the decision predicate (`source` = staged temp, `destination` =
19
+ * the host `auth.json`, which may not exist yet). Exit 10 installs the
20
+ * sandbox copy; every other exit keeps the host copy untouched
21
+ * (including a wholly absent one).
22
+ * 4. On install, `rename` the staged temp over the host `auth.json` — an
23
+ * atomic same-directory swap that preserves mode `0600`.
24
+ * The staged temp is always removed (the rename consumes it on the install
25
+ * path; the `finally` removes it otherwise), so no failure ever leaves a
26
+ * temporary file, and the displaced host credential is never kept as a
27
+ * backup anywhere. Never logs token bytes. On error, only the `errno` code
28
+ * is logged, then the error is rethrown — the message would embed the home
29
+ * path, and the path embeds the account handle.
30
+ */
31
+ export async function copyBackGrokAuth(input) {
32
+ const { readSandboxAuth, hostHomeDir, log, env } = input;
33
+ // Read first (outside the lock) — a read never mutates the host, so there
34
+ // is nothing to serialize yet. A genuinely absent sandbox `auth.json`
35
+ // (ENOENT — a non-provisioned edge, or Grok removed it mid-run) is a
36
+ // "nothing to copy back" no-op, not a teardown failure. Every other read
37
+ // error stays fail-loud so a real read fault is never silently mistaken
38
+ // for "nothing to copy back".
39
+ let sandboxAuthBytes;
40
+ try {
41
+ sandboxAuthBytes = await readSandboxAuth();
42
+ }
43
+ catch (error) {
44
+ if (error?.code === "ENOENT") {
45
+ await log("[paperclip] Grok auth copy-out: no sandbox credential to copy back (absent auth.json); host credential kept.");
46
+ return "kept-host";
47
+ }
48
+ throw error;
49
+ }
50
+ try {
51
+ await mkdir(hostHomeDir, { recursive: true });
52
+ return await withDirectoryMergeLock(hostHomeDir, async (canonicalHostHomeDir) => {
53
+ const hostAuthPath = path.join(canonicalHostHomeDir, "auth.json");
54
+ // Stage on the same filesystem as the host target so both the
55
+ // predicate read and the final rename stay device-local (rename
56
+ // across devices is not atomic and would fail with EXDEV).
57
+ const stagedTempPath = path.join(canonicalHostHomeDir, `.auth.json.copyback-${process.pid}-${randomUUID()}.tmp`);
58
+ // `wx` + explicit mode create the temp private (0600) and fail if it
59
+ // somehow already exists, so this never writes through a
60
+ // pre-existing symlink.
61
+ const handle = await open(stagedTempPath, "wx", 0o600);
62
+ try {
63
+ await handle.writeFile(sandboxAuthBytes);
64
+ await handle.close();
65
+ const decision = await decideGrokAuthMerge(stagedTempPath, hostAuthPath, {
66
+ errorLabel: "grok auth copy-out",
67
+ });
68
+ if (decision === USE_SOURCE_EXIT) {
69
+ // Atomic same-directory swap; rename preserves the temp's 0600 mode.
70
+ await rename(stagedTempPath, hostAuthPath);
71
+ await log("[paperclip] Grok auth copy-out: sandbox credential is strictly newer for the same identity; installed to the host at mode 0600.");
72
+ return "copied";
73
+ }
74
+ await log("[paperclip] Grok auth copy-out: host credential kept (sandbox copy is not a strictly-newer same-identity credential).");
75
+ return "kept-host";
76
+ }
77
+ finally {
78
+ // The temp is the thing that must never linger. On the install
79
+ // path rename already consumed it (force makes the removal a
80
+ // no-op); on every other path this deletes the staged bytes.
81
+ await handle.close().catch(() => undefined);
82
+ await rm(stagedTempPath, { force: true }).catch(() => undefined);
83
+ }
84
+ }, env);
85
+ }
86
+ catch (error) {
87
+ const code = error?.code ?? "unknown";
88
+ await Promise.resolve(log(`[paperclip] Grok auth copy-out failed (${code}); host credential kept.`)).catch(() => undefined);
89
+ throw error;
90
+ }
91
+ }
92
+ //# sourceMappingURL=grok-auth-copyback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-auth-copyback.js","sourceRoot":"","sources":["../../src/server/grok-auth-copyback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=grok-auth-copyback.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-auth-copyback.test.d.ts","sourceRoot":"","sources":["../../src/server/grok-auth-copyback.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import { chmod, lstat, mkdtemp, readdir, readFile, rm, stat, writeFile } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, describe, expect, it } from "vitest";
5
+ import { copyBackGrokAuth } from "./grok-auth-copyback.js";
6
+ // The copy-out module reuses the direction-agnostic decision predicate
7
+ // (`grok-auth-merge-decision.cjs`): the sandbox copy is always the `source`
8
+ // and the host copy is always the `destination`, so exit 10 (use source)
9
+ // installs the sandbox credential onto the host and every other exit keeps
10
+ // the host credential untouched. This suite drives the REAL `.cjs` through
11
+ // the module (no stub predicate) against a real host tmp filesystem,
12
+ // injecting only the sandbox read.
13
+ describe("copyBackGrokAuth", () => {
14
+ const cleanupDirs = [];
15
+ afterEach(async () => {
16
+ while (cleanupDirs.length > 0) {
17
+ const dir = cleanupDirs.pop();
18
+ if (!dir)
19
+ continue;
20
+ // Re-open perms in case a test tightened them, so cleanup always succeeds.
21
+ await chmod(dir, 0o700).catch(() => undefined);
22
+ await rm(dir, { recursive: true, force: true }).catch(() => undefined);
23
+ }
24
+ });
25
+ const IDENTITY = "https://auth.x.ai::11111111-1111-1111-1111-111111111111";
26
+ const OTHER_IDENTITY = "https://auth.x.ai::22222222-2222-2222-2222-222222222222";
27
+ function auth(input) {
28
+ return JSON.stringify({
29
+ [input.identityKey ?? IDENTITY]: {
30
+ key: `key-${input.marker}`,
31
+ refresh_token: `refresh-${input.marker}`,
32
+ ...(input.expiresAt ? { expires_at: input.expiresAt } : {}),
33
+ },
34
+ }, null, 2);
35
+ }
36
+ async function makeHostDir() {
37
+ const dir = await mkdtemp(path.join(os.tmpdir(), "paperclip-grok-copyback-"));
38
+ cleanupDirs.push(dir);
39
+ return dir;
40
+ }
41
+ const now = Date.now();
42
+ const NEWER = new Date(now + 2 * 60_000).toISOString();
43
+ const OLDER = new Date(now + 60_000).toISOString();
44
+ async function runCopyBack(input) {
45
+ const hostHomeDir = input.hostHomeDir ?? (await makeHostDir());
46
+ const hostAuthPath = path.join(hostHomeDir, "auth.json");
47
+ if (input.hostAuth !== undefined) {
48
+ await writeFile(hostAuthPath, input.hostAuth, { mode: 0o600 });
49
+ }
50
+ const readSandboxAuth = typeof input.sandboxAuth === "function"
51
+ ? input.sandboxAuth
52
+ : async () => Buffer.from(input.sandboxAuth, "utf8");
53
+ const logs = [];
54
+ const outcome = await copyBackGrokAuth({
55
+ readSandboxAuth,
56
+ hostHomeDir,
57
+ log: (line) => {
58
+ logs.push(line);
59
+ },
60
+ });
61
+ const finalHostAuth = await readFile(hostAuthPath, "utf8").catch((error) => error.code === "ENOENT" ? null : Promise.reject(error));
62
+ const finalHostMode = finalHostAuth === null ? null : (await lstat(hostAuthPath)).mode & 0o777;
63
+ const leftoverEntries = (await readdir(hostHomeDir)).filter((name) => name !== "auth.json");
64
+ return { outcome, finalHostAuth, finalHostMode, logs, leftoverEntries };
65
+ }
66
+ it("installs a strictly-later same-identity credential at mode 0600", async () => {
67
+ const sandboxAuth = auth({ expiresAt: NEWER, marker: "sandbox-newer-SENTINEL" });
68
+ const hostAuth = auth({ expiresAt: OLDER, marker: "host-older-SENTINEL" });
69
+ const result = await runCopyBack({ sandboxAuth, hostAuth });
70
+ expect(result.outcome).toBe("copied");
71
+ expect(result.finalHostAuth).toBe(sandboxAuth);
72
+ expect(result.finalHostMode).toBe(0o600);
73
+ // Temp staging file must be gone once the swap completes.
74
+ expect(result.leftoverEntries).toEqual([]);
75
+ // Never leak token bytes in log output.
76
+ expect(result.logs.join("\n")).not.toContain("SENTINEL");
77
+ });
78
+ it("keeps the host credential when the predicate keeps the destination", async () => {
79
+ const hostKeep = auth({ expiresAt: OLDER, marker: "host-keep" });
80
+ const cases = [
81
+ {
82
+ name: "tie",
83
+ sandboxAuth: auth({ expiresAt: NEWER, marker: "sandbox-tie" }),
84
+ hostAuth: auth({ expiresAt: NEWER, marker: "host-tie" }),
85
+ },
86
+ {
87
+ name: "sandbox older",
88
+ sandboxAuth: auth({ expiresAt: OLDER, marker: "sandbox-older" }),
89
+ hostAuth: auth({ expiresAt: NEWER, marker: "host-newer" }),
90
+ },
91
+ {
92
+ name: "identity mismatch",
93
+ sandboxAuth: auth({ identityKey: OTHER_IDENTITY, expiresAt: NEWER, marker: "sandbox-other" }),
94
+ hostAuth: hostKeep,
95
+ },
96
+ {
97
+ name: "sandbox unusable JSON",
98
+ sandboxAuth: "{not valid json",
99
+ hostAuth: hostKeep,
100
+ },
101
+ ];
102
+ for (const entry of cases) {
103
+ const result = await runCopyBack({ sandboxAuth: entry.sandboxAuth, hostAuth: entry.hostAuth });
104
+ expect(result.outcome, entry.name).toBe("kept-host");
105
+ expect(result.finalHostAuth, entry.name).toBe(entry.hostAuth);
106
+ expect(result.finalHostMode, entry.name).toBe(0o600);
107
+ expect(result.leftoverEntries, entry.name).toEqual([]);
108
+ }
109
+ });
110
+ it("creates no host credential when the destination auth.json does not exist, through stage, predicate, and install steps", async () => {
111
+ const hostHomeDir = await makeHostDir();
112
+ const sandboxAuth = auth({ expiresAt: NEWER, marker: "sandbox-no-dest" });
113
+ const result = await runCopyBack({ sandboxAuth, hostHomeDir });
114
+ expect(result.outcome).toBe("kept-host");
115
+ expect(result.finalHostAuth).toBeNull();
116
+ expect(result.leftoverEntries).toEqual([]);
117
+ });
118
+ it("returns kept-host and writes nothing when the sandbox auth.json is absent", async () => {
119
+ const hostAuth = auth({ expiresAt: OLDER, marker: "host-intact" });
120
+ const enoent = Object.assign(new Error("ENOENT: no such file or directory, open 'auth.json'"), {
121
+ code: "ENOENT",
122
+ });
123
+ const result = await runCopyBack({
124
+ sandboxAuth: async () => {
125
+ throw enoent;
126
+ },
127
+ hostAuth,
128
+ });
129
+ expect(result.outcome).toBe("kept-host");
130
+ expect(result.finalHostAuth).toBe(hostAuth);
131
+ // No staging temp is ever created on the ENOENT path.
132
+ expect(result.leftoverEntries).toEqual([]);
133
+ expect(result.logs.join("\n")).toContain("no sandbox credential to copy back");
134
+ });
135
+ it("rethrows a sandbox read error that is not ENOENT", async () => {
136
+ const hostHomeDir = await makeHostDir();
137
+ const hostAuth = auth({ expiresAt: OLDER, marker: "host-intact" });
138
+ const hostAuthPath = path.join(hostHomeDir, "auth.json");
139
+ await writeFile(hostAuthPath, hostAuth, { mode: 0o600 });
140
+ await expect(copyBackGrokAuth({
141
+ readSandboxAuth: async () => {
142
+ throw new Error("sandbox read boom");
143
+ },
144
+ hostHomeDir,
145
+ log: () => { },
146
+ })).rejects.toThrow(/sandbox read boom/);
147
+ expect(await readFile(hostAuthPath, "utf8")).toBe(hostAuth);
148
+ expect((await readdir(hostHomeDir)).filter((name) => name !== "auth.json")).toEqual([]);
149
+ });
150
+ it("serializes two concurrent copy-out operations on one home", async () => {
151
+ const hostHomeDir = await makeHostDir();
152
+ const hostAuthPath = path.join(hostHomeDir, "auth.json");
153
+ await writeFile(hostAuthPath, auth({ expiresAt: OLDER, marker: "host" }), { mode: 0o600 });
154
+ const run = (marker, expiresAt) => copyBackGrokAuth({
155
+ readSandboxAuth: async () => Buffer.from(auth({ expiresAt, marker }), "utf8"),
156
+ hostHomeDir,
157
+ log: () => { },
158
+ });
159
+ await Promise.all([
160
+ run("a", new Date(now + 3 * 60_000).toISOString()),
161
+ run("b", new Date(now + 4 * 60_000).toISOString()),
162
+ ]);
163
+ // Exactly one valid file, no leftover staging temp, regardless of which
164
+ // concurrent write won the lock first.
165
+ expect(await readdir(hostHomeDir)).toEqual(["auth.json"]);
166
+ const finalAuth = JSON.parse(await readFile(hostAuthPath, "utf8"));
167
+ expect(Object.keys(finalAuth)).toEqual([IDENTITY]);
168
+ });
169
+ it("leaves no temporary file after a successful install", async () => {
170
+ const result = await runCopyBack({
171
+ sandboxAuth: auth({ expiresAt: NEWER, marker: "sandbox" }),
172
+ hostAuth: auth({ expiresAt: OLDER, marker: "host" }),
173
+ });
174
+ expect(result.outcome).toBe("copied");
175
+ expect(result.leftoverEntries).toEqual([]);
176
+ });
177
+ it("leaves no temporary file when the predicate keeps the destination", async () => {
178
+ const result = await runCopyBack({
179
+ sandboxAuth: auth({ expiresAt: OLDER, marker: "sandbox" }),
180
+ hostAuth: auth({ expiresAt: NEWER, marker: "host" }),
181
+ });
182
+ expect(result.outcome).toBe("kept-host");
183
+ expect(result.leftoverEntries).toEqual([]);
184
+ });
185
+ it("leaves no temporary file after an install error", async () => {
186
+ const hostHomeDir = await makeHostDir();
187
+ const hostAuth = auth({ expiresAt: OLDER, marker: "host-intact" });
188
+ const hostAuthPath = path.join(hostHomeDir, "auth.json");
189
+ await writeFile(hostAuthPath, hostAuth, { mode: 0o600 });
190
+ const before = await stat(hostAuthPath);
191
+ await chmod(hostHomeDir, 0o500); // r-x: readable/traversable, not writable
192
+ try {
193
+ const sandboxAuth = auth({ expiresAt: NEWER, marker: "sandbox-newer" });
194
+ await expect(copyBackGrokAuth({
195
+ readSandboxAuth: async () => Buffer.from(sandboxAuth, "utf8"),
196
+ hostHomeDir,
197
+ log: () => { },
198
+ })).rejects.toThrow();
199
+ }
200
+ finally {
201
+ await chmod(hostHomeDir, 0o700);
202
+ }
203
+ const after = await stat(hostAuthPath);
204
+ expect(await readFile(hostAuthPath, "utf8")).toBe(hostAuth);
205
+ expect(after.mode & 0o777).toBe(0o600);
206
+ expect(after.mtimeMs).toBe(before.mtimeMs);
207
+ expect((await readdir(hostHomeDir)).filter((name) => name !== "auth.json")).toEqual([]);
208
+ });
209
+ it("keeps no backup copy of the displaced credential in the destination directory", async () => {
210
+ const hostAuth = auth({ expiresAt: OLDER, marker: "host-displaced" });
211
+ const sandboxAuth = auth({ expiresAt: NEWER, marker: "sandbox-newer" });
212
+ const result = await runCopyBack({ sandboxAuth, hostAuth });
213
+ expect(result.outcome).toBe("copied");
214
+ // The staged temp is the only extra file the copy-out may ever create,
215
+ // and it is always removed. No backup of the displaced `host-displaced`
216
+ // credential survives anywhere in the destination directory.
217
+ expect(result.leftoverEntries).toEqual([]);
218
+ });
219
+ it("logs no token bytes and no home path on an error", async () => {
220
+ const marker = "SECRET-ACCOUNT-HANDLE";
221
+ const root = await mkdtemp(path.join(os.tmpdir(), `paperclip-grok-copyback-${marker}-`));
222
+ cleanupDirs.push(root);
223
+ const hostAuth = auth({ expiresAt: OLDER, marker: "HOST-TOKEN-SENTINEL" });
224
+ await writeFile(path.join(root, "auth.json"), hostAuth, { mode: 0o600 });
225
+ await chmod(root, 0o500);
226
+ const logs = [];
227
+ try {
228
+ await copyBackGrokAuth({
229
+ readSandboxAuth: async () => Buffer.from(auth({ expiresAt: NEWER, marker: "SANDBOX-TOKEN-SENTINEL" }), "utf8"),
230
+ hostHomeDir: root,
231
+ log: (line) => {
232
+ logs.push(line);
233
+ },
234
+ }).catch(() => undefined);
235
+ }
236
+ finally {
237
+ await chmod(root, 0o700);
238
+ }
239
+ const combined = logs.join("\n");
240
+ expect(combined).toContain("EACCES");
241
+ expect(combined).toContain("failed");
242
+ expect(combined).not.toContain(marker);
243
+ expect(combined).not.toContain("SENTINEL");
244
+ });
245
+ });
246
+ //# sourceMappingURL=grok-auth-copyback.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-auth-copyback.test.js","sourceRoot":"","sources":["../../src/server/grok-auth-copyback.test.ts"],"names":[],"mappings":"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"}