@mycadet/cli 0.12.7 → 0.12.9

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 (179) hide show
  1. package/README.md +2 -2
  2. package/knip.json +1 -1
  3. package/node_modules/@mycadet/assistant-api/events/cloud-disconnected.ts +21 -0
  4. package/node_modules/@mycadet/assistant-api/events/host-bash.ts +1 -1
  5. package/node_modules/@mycadet/assistant-api/events/host-cu.ts +1 -1
  6. package/node_modules/@mycadet/assistant-api/events/host-file.ts +1 -1
  7. package/node_modules/@mycadet/assistant-api/events/notification-intent.ts +1 -1
  8. package/node_modules/@mycadet/assistant-api/events/show-cloud-login.ts +18 -0
  9. package/node_modules/@mycadet/assistant-api/index.ts +11 -11
  10. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/package.json +2 -2
  11. package/node_modules/@mycadet/{service-contracts/src/platform-credential.ts → assistant-api/node_modules/@mycadet/service-contracts/src/cloud-credential.ts} +9 -9
  12. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  13. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  14. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  15. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  16. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  17. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  18. package/node_modules/@mycadet/assistant-api/responses/home.ts +1 -1
  19. package/node_modules/@mycadet/assistant-api/surfaces.ts +4 -4
  20. package/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
  21. package/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
  22. package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
  23. package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
  24. package/node_modules/@mycadet/environments/src/types.ts +6 -6
  25. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
  26. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
  27. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/environments/src/seeds.ts +6 -6
  28. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
  29. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/environments/src/types.ts +6 -6
  30. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/package.json +2 -2
  31. package/node_modules/@mycadet/{assistant-api/node_modules/@mycadet/service-contracts/src/platform-credential.ts → local-mode/node_modules/@mycadet/service-contracts/src/cloud-credential.ts} +9 -9
  32. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  33. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  34. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  35. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  36. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  37. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  38. package/node_modules/@mycadet/local-mode/src/__tests__/pair.test.ts +5 -5
  39. package/node_modules/@mycadet/local-mode/src/__tests__/retire.test.ts +1 -1
  40. package/node_modules/@mycadet/local-mode/src/config.ts +2 -2
  41. package/node_modules/@mycadet/local-mode/src/index.ts +1 -1
  42. package/node_modules/@mycadet/local-mode/src/lockfile-contract.test.ts +3 -3
  43. package/node_modules/@mycadet/local-mode/src/lockfile-contract.ts +10 -5
  44. package/node_modules/@mycadet/local-mode/src/lockfile.test.ts +15 -15
  45. package/node_modules/@mycadet/local-mode/src/lockfile.ts +9 -9
  46. package/node_modules/@mycadet/local-mode/src/pair.ts +2 -2
  47. package/node_modules/@mycadet/local-mode/src/retire.ts +3 -3
  48. package/node_modules/@mycadet/local-mode/src/teleport-backup-policy.ts +2 -2
  49. package/node_modules/@mycadet/local-mode/src/unpair.ts +2 -2
  50. package/node_modules/@mycadet/service-contracts/package.json +2 -2
  51. package/node_modules/@mycadet/{local-mode/node_modules/@mycadet/service-contracts/src/platform-credential.ts → service-contracts/src/cloud-credential.ts} +9 -9
  52. package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  53. package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  54. package/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  55. package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  56. package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  57. package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  58. package/package.json +3 -2
  59. package/src/__tests__/assistant-api-key-resolution.test.ts +6 -6
  60. package/src/__tests__/{assistant-client-platform-auth.test.ts → assistant-client-cloud-auth.test.ts} +10 -10
  61. package/src/__tests__/assistant-client-refresh.test.ts +2 -2
  62. package/src/__tests__/backup.test.ts +86 -91
  63. package/src/__tests__/client-token.test.ts +1 -1
  64. package/src/__tests__/client-tui-refresh.test.ts +1 -1
  65. package/src/__tests__/client-web-config.test.ts +2 -2
  66. package/src/__tests__/{platform-client.test.ts → cloud-client.test.ts} +59 -59
  67. package/src/__tests__/{platform-releases.test.ts → cloud-releases.test.ts} +28 -18
  68. package/src/__tests__/{cloudflare-tunnel.test.ts → cloudflare.test.ts} +1 -1
  69. package/src/__tests__/connect-import.test.ts +55 -39
  70. package/src/__tests__/debug.test.ts +38 -38
  71. package/src/__tests__/ensure-binary.test.ts +182 -0
  72. package/src/__tests__/guardian-token.test.ts +149 -56
  73. package/src/__tests__/hatch-provider-secrets.test.ts +2 -2
  74. package/src/__tests__/helpers/guardian-token.ts +22 -0
  75. package/src/__tests__/helpers/http.ts +10 -0
  76. package/src/__tests__/nginx-ingress.test.ts +21 -20
  77. package/src/__tests__/ngrok-spawn.test.ts +49 -0
  78. package/src/__tests__/orphan-detection.test.ts +1 -1
  79. package/src/__tests__/pair.test.ts +1 -8
  80. package/src/__tests__/{ps-platform-status.test.ts → ps-cloud-status.test.ts} +79 -26
  81. package/src/__tests__/ps-table.test.ts +79 -0
  82. package/src/__tests__/{recover.test.ts → restore.test.ts} +29 -28
  83. package/src/__tests__/retire.test.ts +58 -199
  84. package/src/__tests__/root-process-lockfile.test.ts +99 -0
  85. package/src/__tests__/sleep.test.ts +19 -19
  86. package/src/__tests__/statefulset.test.ts +8 -8
  87. package/src/__tests__/{tailscale-tunnel.test.ts → tailscale.test.ts} +2 -2
  88. package/src/__tests__/teleport-backup.test.ts +3 -3
  89. package/src/__tests__/teleport.test.ts +181 -197
  90. package/src/__tests__/tunnel.test.ts +257 -222
  91. package/src/__tests__/uninstall.test.ts +13 -4
  92. package/src/__tests__/upgrade-local.test.ts +3 -3
  93. package/src/__tests__/upgrade-replay-env.test.ts +12 -12
  94. package/src/__tests__/wake.test.ts +260 -43
  95. package/src/__tests__/workos-pkce.test.ts +2 -2
  96. package/src/commands/backup.ts +24 -24
  97. package/src/commands/client.ts +76 -76
  98. package/src/commands/completions.test.ts +104 -0
  99. package/src/commands/completions.ts +87 -0
  100. package/src/commands/debug.ts +20 -20
  101. package/src/commands/exec.ts +12 -12
  102. package/src/commands/flags.ts +2 -2
  103. package/src/commands/hatch.ts +23 -23
  104. package/src/commands/login.ts +22 -22
  105. package/src/commands/logs.ts +8 -8
  106. package/src/commands/ps.ts +244 -86
  107. package/src/commands/restart.ts +30 -0
  108. package/src/commands/restore.ts +140 -22
  109. package/src/commands/retire.ts +48 -150
  110. package/src/commands/rollback.ts +20 -26
  111. package/src/commands/setup.ts +2 -2
  112. package/src/commands/sleep.ts +2 -2
  113. package/src/commands/teleport.ts +109 -109
  114. package/src/commands/terminal.ts +158 -18
  115. package/src/commands/tunnel.ts +138 -157
  116. package/src/commands/uninstall.ts +57 -9
  117. package/src/commands/unpair.ts +3 -3
  118. package/src/commands/upgrade.ts +30 -54
  119. package/src/commands/use.ts +1 -1
  120. package/src/commands/wake.ts +166 -50
  121. package/src/index.ts +18 -9
  122. package/src/lib/__tests__/{platform-client-signed-url.test.ts → cloud-client-signed-url.test.ts} +16 -16
  123. package/src/lib/__tests__/docker.test.ts +168 -20
  124. package/src/lib/__tests__/job-polling.test.ts +2 -2
  125. package/src/lib/__tests__/local-runtime-client.test.ts +4 -4
  126. package/src/lib/__tests__/runtime-url.test.ts +1 -1
  127. package/src/lib/assistant-api-key-resolution.ts +5 -5
  128. package/src/lib/assistant-client.ts +8 -8
  129. package/src/lib/assistant-config.ts +58 -12
  130. package/src/lib/{platform-client.ts → cloud-client.ts} +107 -98
  131. package/src/lib/cloud-login.ts +24 -24
  132. package/src/lib/{platform-releases.ts → cloud-releases.ts} +11 -9
  133. package/src/lib/cloud-values.ts +3 -0
  134. package/src/lib/config-utils.ts +1 -1
  135. package/src/lib/detached-process.ts +1 -1
  136. package/src/lib/docker.ts +260 -53
  137. package/src/lib/ensure-binary.ts +171 -0
  138. package/src/lib/environments/__tests__/paths.test.ts +2 -2
  139. package/src/lib/environments/__tests__/resolve.test.ts +26 -26
  140. package/src/lib/environments/resolve.ts +8 -8
  141. package/src/lib/flag-args.test.ts +1 -1
  142. package/src/lib/flag-args.ts +1 -1
  143. package/src/lib/guardian-token.ts +37 -5
  144. package/src/lib/hatch-local.ts +19 -23
  145. package/src/lib/health-check.ts +6 -6
  146. package/src/lib/ingress-config.ts +8 -35
  147. package/src/lib/job-polling.ts +2 -2
  148. package/src/lib/live-voice/connection.ts +12 -12
  149. package/src/lib/live-voice/tunnel.test.ts +11 -11
  150. package/src/lib/live-voice/tunnel.ts +15 -15
  151. package/src/lib/local-runtime-client.ts +20 -20
  152. package/src/lib/local.ts +10 -31
  153. package/src/lib/nginx-ingress.ts +42 -15
  154. package/src/lib/pair.ts +1 -1
  155. package/src/lib/process.ts +1 -1
  156. package/src/lib/provider-secrets.ts +3 -3
  157. package/src/lib/retire-apple-container.ts +1 -1
  158. package/src/lib/runtime-url.ts +8 -8
  159. package/src/lib/statefulset.ts +2 -2
  160. package/src/lib/sync-cloud-assistants.ts +19 -19
  161. package/src/lib/teleport-backup.ts +4 -4
  162. package/src/lib/terminal-client.ts +17 -17
  163. package/src/lib/terminal-session.ts +24 -24
  164. package/src/lib/{tunnel-edge.ts → tunnel.ts} +199 -11
  165. package/src/lib/tunnels/cadet.ts +29 -0
  166. package/src/lib/{cloudflare-tunnel.ts → tunnels/cloudflare.ts} +36 -15
  167. package/src/lib/tunnels/gateway-notify.ts +61 -0
  168. package/src/lib/{ngrok.ts → tunnels/ngrok.ts} +350 -89
  169. package/src/lib/{tailscale-tunnel.ts → tunnels/tailscale.ts} +53 -9
  170. package/src/lib/upgrade-lifecycle.ts +8 -21
  171. package/src/lib/upgrade-preflight.ts +2 -2
  172. package/src/lib/workos-pkce.ts +5 -5
  173. package/node_modules/@mycadet/assistant-api/events/platform-disconnected.ts +0 -21
  174. package/node_modules/@mycadet/assistant-api/events/show-platform-login.ts +0 -20
  175. package/src/commands/recover.ts +0 -131
  176. package/src/commands/roadmap.ts +0 -459
  177. package/src/commands/ssh.ts +0 -144
  178. package/src/commands/workflows.ts +0 -305
  179. package/src/lib/managed-cloud.ts +0 -3
@@ -7,6 +7,7 @@ import {
7
7
  spyOn,
8
8
  test,
9
9
  } from "bun:test";
10
+ import type { GuardianTokenData } from "../lib/guardian-token.js";
10
11
  import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
11
12
  import { tmpdir } from "node:os";
12
13
  import { join } from "node:path";
@@ -49,10 +50,8 @@ mock.module("../lib/drain.js", () => ({
49
50
 
50
51
  const realGuardianToken = { ...(await import("../lib/guardian-token.js")) };
51
52
  const loadGuardianTokenMock = mock(
52
- (_assistantId: string) =>
53
- ({ accessToken: "test-guardian-token" }) as unknown as ReturnType<
54
- typeof realGuardianToken.loadGuardianToken
55
- >,
53
+ (_assistantId: string): GuardianTokenData | null =>
54
+ makeGuardianTokenData({ accessToken: "test-guardian-token" }),
56
55
  );
57
56
  mock.module("../lib/guardian-token.js", () => ({
58
57
  ...realGuardianToken,
@@ -92,6 +91,7 @@ import {
92
91
  DEFAULT_GATEWAY_PORT,
93
92
  DEFAULT_QDRANT_PORT,
94
93
  } from "../lib/constants.js";
94
+ import { makeGuardianTokenData } from "./helpers/guardian-token.js";
95
95
 
96
96
  // Write a lockfile entry so the real resolveTargetAssistant() finds our test
97
97
  // assistant without needing to mock the entire assistant-config module.
@@ -153,9 +153,9 @@ describe("sleep command", () => {
153
153
  drainAssistantMock.mockReset();
154
154
  drainAssistantMock.mockResolvedValue("drained");
155
155
  loadGuardianTokenMock.mockReset();
156
- loadGuardianTokenMock.mockReturnValue({
157
- accessToken: "test-guardian-token",
158
- } as unknown as ReturnType<typeof realGuardianToken.loadGuardianToken>);
156
+ loadGuardianTokenMock.mockReturnValue(
157
+ makeGuardianTokenData({ accessToken: "test-guardian-token" }),
158
+ );
159
159
  resolveFreshBearerTokenMock.mockReset();
160
160
  resolveFreshBearerTokenMock.mockImplementation(
161
161
  async (_url, _id, bearerToken, _cloud) => bearerToken,
@@ -180,11 +180,11 @@ describe("sleep command", () => {
180
180
  process.argv = ["bun", "cadet", "sleep", "sleep-test"];
181
181
 
182
182
  const consoleError = spyOn(console, "error").mockImplementation(() => {});
183
- const exitMock = mock((code?: number) => {
183
+ const exitMock = mock((code?: number | string | undefined): never => {
184
184
  throw new Error(`process.exit:${code}`);
185
185
  });
186
186
  const originalExit = process.exit;
187
- process.exit = exitMock as unknown as typeof process.exit;
187
+ process.exit = exitMock;
188
188
 
189
189
  try {
190
190
  await expect(sleep()).rejects.toThrow("process.exit:1");
@@ -300,11 +300,11 @@ describe("sleep command", () => {
300
300
  process.argv = ["bun", "cadet", "sleep", "sleep-test", "--wait"];
301
301
 
302
302
  const consoleLog = spyOn(console, "log").mockImplementation(() => {});
303
- const exitMock = mock((code?: number) => {
303
+ const exitMock = mock((code?: number | string | undefined): never => {
304
304
  throw new Error(`process.exit:${code}`);
305
305
  });
306
306
  const originalExit = process.exit;
307
- process.exit = exitMock as unknown as typeof process.exit;
307
+ process.exit = exitMock;
308
308
  try {
309
309
  await expect(sleep()).rejects.toThrow("process.exit:130");
310
310
  } finally {
@@ -350,11 +350,11 @@ describe("sleep command", () => {
350
350
  process.argv = ["bun", "cadet", "sleep", "sleep-test", "--wait=abc"];
351
351
 
352
352
  const consoleError = spyOn(console, "error").mockImplementation(() => {});
353
- const exitMock = mock((code?: number) => {
353
+ const exitMock = mock((code?: number | string | undefined): never => {
354
354
  throw new Error(`process.exit:${code}`);
355
355
  });
356
356
  const originalExit = process.exit;
357
- process.exit = exitMock as unknown as typeof process.exit;
357
+ process.exit = exitMock;
358
358
  try {
359
359
  await expect(sleep()).rejects.toThrow("process.exit:1");
360
360
  expect(consoleError).toHaveBeenCalledWith(
@@ -484,11 +484,11 @@ describe("sleep command", () => {
484
484
  process.argv = ["bun", "cadet", "sleep", "--all"];
485
485
 
486
486
  const consoleError = spyOn(console, "error").mockImplementation(() => {});
487
- const exitMock = mock((code?: number) => {
487
+ const exitMock = mock((code?: number | string | undefined): never => {
488
488
  throw new Error(`process.exit:${code}`);
489
489
  });
490
490
  const originalExit = process.exit;
491
- process.exit = exitMock as unknown as typeof process.exit;
491
+ process.exit = exitMock;
492
492
 
493
493
  try {
494
494
  await expect(sleep()).rejects.toThrow("process.exit:1");
@@ -511,11 +511,11 @@ describe("sleep command", () => {
511
511
  process.argv = ["bun", "cadet", "sleep", "--all"];
512
512
 
513
513
  const consoleError = spyOn(console, "error").mockImplementation(() => {});
514
- const exitMock = mock((code?: number) => {
514
+ const exitMock = mock((code?: number | string | undefined): never => {
515
515
  throw new Error(`process.exit:${code}`);
516
516
  });
517
517
  const originalExit = process.exit;
518
- process.exit = exitMock as unknown as typeof process.exit;
518
+ process.exit = exitMock;
519
519
 
520
520
  try {
521
521
  await expect(sleep()).rejects.toThrow("process.exit:1");
@@ -532,11 +532,11 @@ describe("sleep command", () => {
532
532
  process.argv = ["bun", "cadet", "sleep", "sleep-test", "--all"];
533
533
 
534
534
  const consoleError = spyOn(console, "error").mockImplementation(() => {});
535
- const exitMock = mock((code?: number) => {
535
+ const exitMock = mock((code?: number | string | undefined): never => {
536
536
  throw new Error(`process.exit:${code}`);
537
537
  });
538
538
  const originalExit = process.exit;
539
- process.exit = exitMock as unknown as typeof process.exit;
539
+ process.exit = exitMock;
540
540
 
541
541
  try {
542
542
  await expect(sleep()).rejects.toThrow("process.exit:1");
@@ -35,7 +35,7 @@ describe("getBuilderManagedEnvKeys", () => {
35
35
  expect(always.has(key)).toBe(true);
36
36
  }
37
37
 
38
- expect(always.has("CADET_DISABLE_PLATFORM")).toBe(false);
38
+ expect(always.has("CADET_DISABLE_CLOUD")).toBe(false);
39
39
  expect(always.has("CADET_DEVICE_ID")).toBe(false);
40
40
  });
41
41
 
@@ -60,8 +60,8 @@ describe("getBuilderManagedEnvKeys", () => {
60
60
  a.name.localeCompare(b.name),
61
61
  );
62
62
  expect(sorted).toEqual([
63
+ { name: "CADET_CLOUD_URL", hostVar: "CADET_CLOUD_URL" },
63
64
  { name: "CADET_ENVIRONMENT", hostVar: "CADET_ENVIRONMENT" },
64
- { name: "CADET_PLATFORM_URL", hostVar: "CADET_PLATFORM_URL" },
65
65
  { name: "TUNNEL_BASE_URL", hostVar: "TUNNEL_BASE_URL" },
66
66
  ]);
67
67
  });
@@ -76,8 +76,8 @@ describe("getBuilderManagedEnvKeys", () => {
76
76
  expect(hostForwarded).toContainEqual({ name: envVar, hostVar: envVar });
77
77
  }
78
78
  expect(hostForwarded).toContainEqual({
79
- name: "CADET_PLATFORM_URL",
80
- hostVar: "CADET_PLATFORM_URL",
79
+ name: "CADET_CLOUD_URL",
80
+ hostVar: "CADET_CLOUD_URL",
81
81
  });
82
82
  });
83
83
 
@@ -126,7 +126,7 @@ describe("buildServiceRunArgs extra env routing", () => {
126
126
  gatewayContainer: "test-gateway",
127
127
  network: "test-net",
128
128
  },
129
- extraGatewayEnv: { CADET_DISABLE_PLATFORM: "1" },
129
+ extraGatewayEnv: { CADET_DISABLE_CLOUD: "1" },
130
130
  extraAssistantEnv: { FOO: "bar" },
131
131
  };
132
132
 
@@ -134,19 +134,19 @@ describe("buildServiceRunArgs extra env routing", () => {
134
134
 
135
135
  test("extraGatewayEnv lands only in gateway args", () => {
136
136
  const gatewayArgs = runArgs.gateway();
137
- expect(gatewayArgs).toContain("CADET_DISABLE_PLATFORM=1");
137
+ expect(gatewayArgs).toContain("CADET_DISABLE_CLOUD=1");
138
138
  expect(gatewayArgs).not.toContain("FOO=bar");
139
139
  });
140
140
 
141
141
  test("extraAssistantEnv lands only in assistant args", () => {
142
142
  const assistantArgs = runArgs.assistant();
143
143
  expect(assistantArgs).toContain("FOO=bar");
144
- expect(assistantArgs).not.toContain("CADET_DISABLE_PLATFORM=1");
144
+ expect(assistantArgs).not.toContain("CADET_DISABLE_CLOUD=1");
145
145
  });
146
146
 
147
147
  test("credential-executor args get neither extra env map", () => {
148
148
  const cesArgs = runArgs["credential-executor"]();
149
- expect(cesArgs).not.toContain("CADET_DISABLE_PLATFORM=1");
149
+ expect(cesArgs).not.toContain("CADET_DISABLE_CLOUD=1");
150
150
  expect(cesArgs).not.toContain("FOO=bar");
151
151
  });
152
152
 
@@ -20,7 +20,7 @@ import {
20
20
  stopTailscaleServe,
21
21
  type TailscaleCommandResult,
22
22
  type TailscaleDeps,
23
- } from "../lib/tailscale-tunnel.js";
23
+ } from "../lib/tunnels/tailscale.js";
24
24
  import { snapshotEnv } from "./helpers/env.js";
25
25
 
26
26
  describe("Tailscale discovery", () => {
@@ -79,7 +79,7 @@ function makeDeps(opts: {
79
79
  const calls: string[][] = [];
80
80
  const binary = opts.binary === undefined ? "tailscale" : opts.binary;
81
81
  const deps: TailscaleDeps = {
82
- findBinary: () => binary,
82
+ findBinary: async () => binary,
83
83
  run: (_bin, args) => {
84
84
  calls.push(args);
85
85
  return opts.responses?.[args.join(" ")] ?? ok();
@@ -9,19 +9,19 @@ import {
9
9
  test,
10
10
  } from "bun:test";
11
11
 
12
- import * as platformClient from "../lib/platform-client.js";
12
+ import * as cloudClient from "../lib/cloud-client.js";
13
13
  import {
14
14
  createPlatformBackup,
15
15
  listPlatformBackups,
16
16
  } from "../lib/teleport-backup.js";
17
17
 
18
- const authHeadersSpy = spyOn(platformClient, "authHeaders").mockResolvedValue({
18
+ const authHeadersSpy = spyOn(cloudClient, "authHeaders").mockResolvedValue({
19
19
  "Content-Type": "application/json",
20
20
  "X-Session-Token": "platform-token",
21
21
  "Cadet-Organization-Id": "org-1",
22
22
  });
23
23
  const invalidateOrgIdCacheSpy = spyOn(
24
- platformClient,
24
+ cloudClient,
25
25
  "invalidateOrgIdCache",
26
26
  ).mockImplementation(() => {});
27
27