anyray-connect 0.11.67 → 0.11.69

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 (90) hide show
  1. package/dist/assets/vscodeExtensionAsset.js +4 -4
  2. package/dist/assets/vscodeExtensionAsset.js.map +1 -1
  3. package/dist/cli.js +96 -97
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/desktop.js +2 -2
  6. package/dist/commands/desktop.js.map +1 -1
  7. package/dist/commands/doctor.js +114 -27
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/history.js +196 -0
  10. package/dist/commands/history.js.map +1 -0
  11. package/dist/commands/hook.js +21 -1
  12. package/dist/commands/hook.js.map +1 -1
  13. package/dist/commands/managed.js +7 -7
  14. package/dist/commands/managed.js.map +1 -1
  15. package/dist/commands/mcpServer.js +115 -2
  16. package/dist/commands/mcpServer.js.map +1 -1
  17. package/dist/commands/refreshProxy.js +532 -0
  18. package/dist/commands/refreshProxy.js.map +1 -0
  19. package/dist/commands/shared.js +3 -3
  20. package/dist/commands/shared.js.map +1 -1
  21. package/dist/commands/ssoGate.js +12 -1
  22. package/dist/commands/ssoGate.js.map +1 -1
  23. package/dist/commands/ssoPoll.js +8 -0
  24. package/dist/commands/ssoPoll.js.map +1 -1
  25. package/dist/commands/status.js +11 -20
  26. package/dist/commands/status.js.map +1 -1
  27. package/dist/target.js +5 -5
  28. package/dist/target.js.map +1 -1
  29. package/dist/tools/claudeCode.js +18 -4
  30. package/dist/tools/claudeCode.js.map +1 -1
  31. package/dist/tools/claudeCodeEnv.js +21 -1
  32. package/dist/tools/claudeCodeEnv.js.map +1 -1
  33. package/dist/tools/claudeDesktopNative.js +6 -1
  34. package/dist/tools/claudeDesktopNative.js.map +1 -1
  35. package/dist/tools/claudeDesktopProfileNotice.js +44 -0
  36. package/dist/tools/claudeDesktopProfileNotice.js.map +1 -0
  37. package/dist/tools/claudeDesktopWindows.js +5 -0
  38. package/dist/tools/claudeDesktopWindows.js.map +1 -1
  39. package/dist/tools/codex.js +23 -4
  40. package/dist/tools/codex.js.map +1 -1
  41. package/dist/tools/copilotChat.js +2 -2
  42. package/dist/tools/copilotChat.js.map +1 -1
  43. package/dist/tools/copilotCli.js +406 -143
  44. package/dist/tools/copilotCli.js.map +1 -1
  45. package/dist/tools/cursor.js +17 -17
  46. package/dist/tools/cursor.js.map +1 -1
  47. package/dist/util/claudeImporter.js +161 -0
  48. package/dist/util/claudeImporter.js.map +1 -0
  49. package/dist/util/cliInvocation.js +2 -2
  50. package/dist/util/codexConfig.js +24 -0
  51. package/dist/util/codexConfig.js.map +1 -1
  52. package/dist/util/copilotSeatToken.js +189 -0
  53. package/dist/util/copilotSeatToken.js.map +1 -0
  54. package/dist/util/desktopHistoryRestore.js +116 -0
  55. package/dist/util/desktopHistoryRestore.js.map +1 -0
  56. package/dist/util/desktopSessionStore.js +216 -0
  57. package/dist/util/desktopSessionStore.js.map +1 -0
  58. package/dist/util/devRefresh.js +227 -32
  59. package/dist/util/devRefresh.js.map +1 -1
  60. package/dist/util/fleetBootstrap.js +1 -1
  61. package/dist/util/historyImport.js +142 -0
  62. package/dist/util/historyImport.js.map +1 -0
  63. package/dist/util/historyStore.js +0 -0
  64. package/dist/util/historyStore.js.map +1 -0
  65. package/dist/util/loopback.js +20 -20
  66. package/dist/util/loopback.js.map +1 -1
  67. package/dist/util/modelContextWindow.js +114 -0
  68. package/dist/util/modelContextWindow.js.map +1 -0
  69. package/dist/util/persist.js +77 -2
  70. package/dist/util/persist.js.map +1 -1
  71. package/dist/util/profileTarget.js +5 -5
  72. package/dist/util/profileTarget.js.map +1 -1
  73. package/dist/util/proxyEnrollmentGate.js +3 -3
  74. package/dist/util/proxyService.js +58 -25
  75. package/dist/util/proxyService.js.map +1 -1
  76. package/dist/util/refreshScheduler.js +12 -4
  77. package/dist/util/refreshScheduler.js.map +1 -1
  78. package/dist/util/serviceArtifacts.js +163 -0
  79. package/dist/util/serviceArtifacts.js.map +1 -0
  80. package/dist/util/vscodeState.js +4 -2
  81. package/dist/util/vscodeState.js.map +1 -1
  82. package/package.json +1 -1
  83. package/dist/commands/fallbackProxy.js +0 -718
  84. package/dist/commands/fallbackProxy.js.map +0 -1
  85. package/dist/util/fallback.js +0 -542
  86. package/dist/util/fallback.js.map +0 -1
  87. package/dist/util/fallbackClient.js +0 -68
  88. package/dist/util/fallbackClient.js.map +0 -1
  89. package/dist/util/fallbackStore.js +0 -187
  90. package/dist/util/fallbackStore.js.map +0 -1
@@ -4,9 +4,9 @@
4
4
  * source so both npm/npx runtimes and Bun's single-file executable carry the
5
5
  * same installable extension without a Marketplace dependency.
6
6
  */
7
- export const BUNDLED_VSCODE_EXTENSION_VERSION = "0.1.15";
8
- export const BUNDLED_VSCODE_EXTENSION_SOURCE_SHA256 = "b113ea0cb02542cf383077de7b6ad69b0ebbaff0ab7e28f82d2efa3b3ab4fb1b";
7
+ export const BUNDLED_VSCODE_EXTENSION_VERSION = "0.1.16";
8
+ export const BUNDLED_VSCODE_EXTENSION_SOURCE_SHA256 = "7ff69c1087675c2640babbcc7457b33f0b1355621b9fdf0602e816997df48c5d";
9
9
  export const BUNDLED_VSCODE_EXTENSION_DIST_SHA256 = "95eefccd0762153769ad73b23e28924dc866d1d84c057832968e7b96fc9b8112";
10
- export const BUNDLED_VSCODE_EXTENSION_SHA256 = "af7bde1fff8e6ad4cb390d6db27ff3799cae5aea7491bde714e41d31c4644a1a";
11
- export const BUNDLED_VSCODE_EXTENSION_BASE64 = "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";
10
+ export const BUNDLED_VSCODE_EXTENSION_SHA256 = "d9de41df5ea06e26bb7dbddea1c9813bb9d9dee7ff8ed33fc56cd00a8c97d391";
11
+ export const BUNDLED_VSCODE_EXTENSION_BASE64 = "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";
12
12
  //# sourceMappingURL=vscodeExtensionAsset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vscodeExtensionAsset.js","sourceRoot":"","sources":["../../src/assets/vscodeExtensionAsset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAQ,CAAC;AACzD,MAAM,CAAC,MAAM,sCAAsC,GACjD,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,8wmBAA8wmB,CAAC"}
1
+ {"version":3,"file":"vscodeExtensionAsset.js","sourceRoot":"","sources":["../../src/assets/vscodeExtensionAsset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAQ,CAAC;AACzD,MAAM,CAAC,MAAM,sCAAsC,GACjD,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kxmBAAkxmB,CAAC"}
package/dist/cli.js CHANGED
@@ -10,10 +10,9 @@
10
10
  * personal gateway authentication, and content-free attribution.
11
11
  */
12
12
  import { isPersonalClientKey, isInsecureRemoteOrigin, normalizeOrigin, resolveOrigin, resolveTarget, withLocalProxy, } from "./target.js";
13
- import { pickFallbackPort, installProxyService, uninstallProxyService, probeHealth, } from "./util/proxyService.js";
13
+ import { pickLoopbackPort, installProxyService, uninstallProxyService, probeHealth, } from "./util/proxyService.js";
14
14
  import { installRefreshScheduler, uninstallRefreshScheduler, } from "./util/refreshScheduler.js";
15
- import { clearBundle, clearQueue } from "./util/fallbackStore.js";
16
- import { runFallbackProxy } from "./commands/fallbackProxy.js";
15
+ import { runRefreshProxy } from "./commands/refreshProxy.js";
17
16
  import { loopbackEngaged } from "./util/loopback.js";
18
17
  import { runCursorWatch } from "./commands/cursorWatch.js";
19
18
  import { runManaged } from "./commands/managed.js";
@@ -21,18 +20,19 @@ import { runPrintKey } from "./commands/printKey.js";
21
20
  import { runClaudeDesktopCredential, } from "./commands/claudeDesktopCredential.js";
22
21
  import { runDesktop } from "./commands/desktop.js";
23
22
  import { runRecallCommand, runRetrieveCommand } from "./commands/retrieval.js";
23
+ import { runHistoryCommand } from "./commands/history.js";
24
24
  import { checkGateway } from "./util/preflight.js";
25
25
  import { maskKey } from "./util/redeem.js";
26
26
  import { parseEnrollLink, isEnrollArg, resolveEnrollLink, } from "./util/enrollLink.js";
27
27
  import { canReuseEnrolledCert, enrollAndVerify, enrollTokenHash, GatewayVerifyError, verifyWithGateway, } from "./util/devVerify.js";
28
28
  import { detectDisplayName } from "./util/identity.js";
29
29
  import { parseSsoLink, ssoEnroll } from "./util/ssoEnroll.js";
30
- import { refreshIfDue } from "./util/devRefresh.js";
30
+ import { recordMintSuccess, refreshIfDue, reserveMint, } from "./util/devRefresh.js";
31
31
  import { REGISTRY, byId } from "./tools/index.js";
32
32
  import { staleShellExportsForTargets } from "./tools/shellEnv.js";
33
33
  import { effectiveSubscription, metadataHeaderValue } from "./types.js";
34
34
  import { bold, cyan, dim, fail, heading, info, note, ok, warn, } from "./util/log.js";
35
- import { clearDevKey, clearEnrollment, hasEnrollment, loadProfile, recordManagedTools, saveProfile, saveDevKey, loadDevKey, stateDir, ensureStateDir, } from "./util/persist.js";
35
+ import { clearDevKey, clearEnrollment, hasEnrollment, loadProfile, recordManagedTools, saveProfile, saveDevKey, loadDevKey, stateDir, ensureStateDir, purgeRetiredFallbackState, } from "./util/persist.js";
36
36
  import { confirm, isInteractive, prompt, resolveDisplayName, resolveTeam, } from "./commands/shared.js";
37
37
  import { fetchSavings, formatSavingsLine } from "./util/savings.js";
38
38
  import { verifyConnection } from "./util/verify.js";
@@ -72,7 +72,11 @@ ${bold("Subcommands")}
72
72
  model retrieve capability);
73
73
  --repair re-applies managed tools whose routing drifted
74
74
  (only tools a previous apply recorded — a reverted tool
75
- is never resurrected)
75
+ is never resurrected) and deletes the retired fallback
76
+ lane's cached provider key;
77
+ --security-review prints the allow-list your endpoint-security
78
+ team needs (service names, unit-file paths, loopback-only
79
+ network posture) — use it when an EDR quarantines Anyray
76
80
  sync Pull the team's shared skills/instructions into each tool's skills dir
77
81
  print-key Print the enrolled dev's short-lived gateway key for helper
78
82
  integrations. --json emits the desktop helper contract.
@@ -82,6 +86,10 @@ ${bold("Subcommands")}
82
86
  marker. stdout carries the content alone — pipe it anywhere.
83
87
  recall <query> Semantic search over your externalized tool outputs; prints
84
88
  ranked handle<TAB>score<TAB>preview lines (--k N to limit)
89
+ history Import a Claude data export so past conversations stay
90
+ searchable from a client whose own history is unavailable
91
+ (a third-party Claude Desktop). \`history import <file>\`,
92
+ \`history status\`.
85
93
  managed Emit or install a fleet-wide Claude Code managed-settings.json
86
94
  (MDM). See \`anyray-connect managed\` for its modes.
87
95
  (no subcommand) Apply the connect flow (wizard-driven when interactive)
@@ -159,14 +167,6 @@ ${bold("Options")}
159
167
  --force Skip the gateway reachability check before writing
160
168
  --skip-verify Skip the post-apply smoke test (one tiny inference request for
161
169
  routed tools, or a key-only check for native Cursor mode)
162
- --fallback Opt in to the local fallback proxy: a small daemon on
163
- 127.0.0.1 your tools point at. It forwards to the gateway,
164
- and if the gateway is unavailable or returns a transient
165
- failure it routes the request straight to the original
166
- provider so you're never blocked — reconciling the usage
167
- when the gateway is back. Off by default; a plain apply
168
- points tools straight at the gateway and removes the proxy
169
- if an earlier run installed it.
170
170
  --no-key-refresh Turn OFF the default-on seamless key refresh for
171
171
  subscription Claude Code + Codex. Normally a small loopback
172
172
  daemon fills a freshly re-minted key on each request so a
@@ -278,10 +278,8 @@ export const parseArgs = (argv) => {
278
278
  args.skipVerify = true;
279
279
  break;
280
280
  case "--fallback":
281
- args.fallback = true;
282
- break;
283
281
  case "--no-fallback":
284
- args.noFallback = true;
282
+ args.retiredFallbackFlag = true;
285
283
  break;
286
284
  case "--no-key-refresh":
287
285
  args.noKeyRefresh = true;
@@ -298,6 +296,9 @@ export const parseArgs = (argv) => {
298
296
  case "--repair":
299
297
  args.repair = true;
300
298
  break;
299
+ case "--security-review":
300
+ args.securityReview = true;
301
+ break;
301
302
  case "--help":
302
303
  case "-h":
303
304
  args.help = true;
@@ -448,6 +449,12 @@ export const runApply = async (adapters, target, opts, revert,
448
449
  * background lanes (refresh, drift repair), which carry none.
449
450
  */
450
451
  explicitIds) => {
452
+ // Upgrade cleanup: drop the retired fallback lane's cached ORG PROVIDER KEY.
453
+ // Deliberately here rather than in the interactive command — most upgraded
454
+ // machines never re-run Connect by hand, so the background refresh/repair
455
+ // lanes are what actually reach them. Best-effort, never fails the run.
456
+ if (!opts.dryRun)
457
+ await purgeRetiredFallbackState();
451
458
  let changes = 0;
452
459
  const manual = [];
453
460
  const results = [];
@@ -628,16 +635,13 @@ const runVerify = async (target, toolIds) => {
628
635
  * should be pointed at. On health-check success the tools point at the loopback
629
636
  * (`viaLocalProxy`); if it never binds we **degrade to the direct gateway
630
637
  * target** so the worst case is exactly today's static-key lane — pointing tools
631
- * at a dead 127.0.0.1 port is never an option. Shared by both modes: the daemon
632
- * itself picks refresh-only vs fallback from the persisted profile, so this only
633
- * varies the user-facing copy.
638
+ * at a dead 127.0.0.1 port is never an option.
634
639
  */
635
- export const setupLoopbackProxy = async (target, port, mode, deps = {}) => {
640
+ export const setupLoopbackProxy = async (target, port, deps = {}) => {
636
641
  const install = deps.install ?? installProxyService;
637
642
  const probe = deps.probe ?? probeHealth;
638
643
  const pollDelayMs = deps.pollDelayMs ?? 300;
639
- const isFallback = mode === "fallback";
640
- heading(isFallback ? "Local fallback proxy" : "Seamless key refresh");
644
+ heading("Seamless key refresh");
641
645
  const svc = await install();
642
646
  for (const m of svc.messages)
643
647
  info(` ${m}`);
@@ -655,22 +659,17 @@ export const setupLoopbackProxy = async (target, port, mode, deps = {}) => {
655
659
  await new Promise((r) => setTimeout(r, pollDelayMs));
656
660
  }
657
661
  if (health) {
658
- ok(isFallback
659
- ? ` Running on 127.0.0.1:${port} → ${target.origin} — tools fail over to the provider automatically.`
660
- : ` Running on 127.0.0.1:${port} → ${target.origin} — your key refreshes automatically, no restart needed.`);
662
+ ok(` Running on 127.0.0.1:${port} → ${target.origin} — your key refreshes automatically, no restart needed.`);
661
663
  return withLocalProxy(target, port);
662
664
  }
663
- warn(` ${isFallback ? "Fallback proxy" : "Key-refresh proxy"} did not come up — pointing tools directly at the gateway for now.`);
665
+ warn(" Key-refresh proxy did not come up — pointing tools directly at the gateway for now.");
664
666
  info(dim(svc.ok
665
667
  ? // Install succeeded but the port never bound — a transient miss the
666
668
  // next run retries against the same supervisor.
667
669
  " It will retry on the next run; check the service logs if it persists."
668
- : // No supervised daemon on this platform (svc.messages said why).
669
- // Refresh-only seats still get the scheduled ~30-min re-mint; the
670
- // fallback lane has no non-daemon equivalent.
671
- isFallback
672
- ? " Local fallback isn't available on this platform."
673
- : " Your key still refreshes on a schedule — no daemon needed here."));
670
+ : // No supervised daemon on this platform (svc.messages said why); the
671
+ // scheduled ~30-min re-mint still keeps the seat's key fresh.
672
+ " Your key still refreshes on a schedule — no daemon needed here."));
674
673
  return target;
675
674
  };
676
675
  /**
@@ -813,12 +812,14 @@ export const run = async (argv) => {
813
812
  return 0;
814
813
  }
815
814
  // Hidden entrypoint: the OS login service (launchd/systemd) launches
816
- // `anyray-connect __anyray-fallback-proxy` — the local fallback proxy daemon
817
- // (commands/fallbackProxy.ts). It listens on loopback, forwards to the remote
818
- // gateway, and routes direct to the provider when the gateway isn't
819
- // responding. Runs until the supervisor stops it.
815
+ // `anyray-connect __anyray-fallback-proxy` — the local key-refresh daemon
816
+ // (commands/refreshProxy.ts). It listens on loopback and forwards to the
817
+ // remote gateway, filling the empty client-key slot with a freshly re-minted
818
+ // key. Runs until the supervisor stops it. The flag keeps its historic
819
+ // `fallback` spelling because it is baked into already-installed launchd
820
+ // plists and systemd units (see PROXY_FLAG in util/proxyService.ts).
820
821
  if (argv[0] === "__anyray-fallback-proxy") {
821
- return runFallbackProxy();
822
+ return runRefreshProxy();
822
823
  }
823
824
  // Hidden entrypoint: the Cursor adapter spawns this DETACHED when Cursor was
824
825
  // running at apply/revert time. It waits for Cursor to quit, completes the
@@ -877,6 +878,12 @@ export const run = async (argv) => {
877
878
  if (argv[0] === "recall") {
878
879
  return runRecallCommand(argv.slice(1));
879
880
  }
881
+ // `history` — import a Claude data export so past conversations stay
882
+ // reachable from a client that can't show them (a third-party Claude Desktop
883
+ // runs in a profile with no account, so its sidebar is empty).
884
+ if (argv[0] === "history") {
885
+ return runHistoryCommand(argv.slice(1));
886
+ }
880
887
  if (argv[0] === "login") {
881
888
  return runLoginCommand(argv.slice(1));
882
889
  }
@@ -907,6 +914,7 @@ export const run = async (argv) => {
907
914
  json: parsed.json,
908
915
  verify: parsed.verify,
909
916
  repair: parsed.repair,
917
+ securityReview: parsed.securityReview,
910
918
  });
911
919
  if (sub === "sync")
912
920
  return runSync({ gateway: parsed.gateway });
@@ -976,11 +984,12 @@ const runApplyCommand = async (argv, forceWizard) => {
976
984
  !args.revert) {
977
985
  byoUpstream = profile.byoUpstream;
978
986
  }
979
- // On a gateway outage the daemon would route to the provider's PUBLIC API
980
- // host, sending the personal upstream key to a third party.
981
- if (byoUpstream && args.fallback) {
982
- fail("--fallback is not supported with a BYO upstream: the fallback daemon routes to the provider's public API host, where your personal upstream key must never be sent.");
983
- return 1;
987
+ // Retired flag: the provider-direct lane is gone. Accepted (not an error) so
988
+ // an old fleet script keeps working, but say so the seat is on the
989
+ // key-refresh loopback either way, and nothing now caches an org provider key
990
+ // on this machine.
991
+ if (args.retiredFallbackFlag) {
992
+ warn("--fallback/--no-fallback are retired and ignored: the local daemon no longer routes around the gateway to the provider. Seamless key refresh is on by default (--no-key-refresh opts out).");
984
993
  }
985
994
  // Wizard: explicit `wizard` subcommand, or a bare interactive invocation
986
995
  // (no gateway, not a revert/dry-run/scripted run). Non-TTY always falls
@@ -1140,6 +1149,11 @@ const runApplyCommand = async (argv, forceWizard) => {
1140
1149
  // A stored cert is only reusable for THIS deployment — when the link
1141
1150
  // resolves a deploymentId, a cert bound to a different (e.g. rebuilt)
1142
1151
  // deployment must re-enroll rather than be reused.
1152
+ // Claim the mint slot before any network round trip: an interactive enroll
1153
+ // must never race a detached refresh minting against the same cert. The
1154
+ // `recordMintSuccess` below is the other half, and on its own it only closes
1155
+ // the window once we already hold a key.
1156
+ await reserveMint();
1143
1157
  const presentedTokenHash = enrollTokenHash(input.token);
1144
1158
  const storedValid = canReuseEnrolledCert(profile.enrolledCert, profile.enrolledCertExpiry, input.deploymentId, Date.now(), presentedTokenHash, profile.enrolledTokenHash);
1145
1159
  const storedPrivateKey = storedValid ? await loadDevKey() : undefined;
@@ -1231,6 +1245,7 @@ const runApplyCommand = async (argv, forceWizard) => {
1231
1245
  // --enroll. The cert + key persist below so the auto-refresher can re-mint
1232
1246
  // until the (short) SSO cert expires, after which the dev re-runs --sso.
1233
1247
  if (ssoEnrollment) {
1248
+ await reserveMint();
1234
1249
  try {
1235
1250
  const verification = await verifyWithGateway(origin, ssoEnrollment.cert, ssoEnrollment.privateKeyPem);
1236
1251
  clientKey = verification.key;
@@ -1294,7 +1309,7 @@ const runApplyCommand = async (argv, forceWizard) => {
1294
1309
  });
1295
1310
  const opts = { dryRun: args.dryRun };
1296
1311
  // `/v1` authentication is always client-key gated. Stop before confirmation,
1297
- // fallback setup, adapter writes, or a misleading placeholder-only manual
1312
+ // loopback setup, adapter writes, or a misleading placeholder-only manual
1298
1313
  // recipe. Dry-run remains read-only and useful: it reports which selected
1299
1314
  // installs are present, but does not pretend an unauthenticated config could
1300
1315
  // be applied successfully.
@@ -1369,47 +1384,33 @@ const runApplyCommand = async (argv, forceWizard) => {
1369
1384
  return 1;
1370
1385
  }
1371
1386
  }
1372
- // Local fallback proxy: OFF by default — opt in with --fallback. The provider-
1373
- // direct fallback leg proved unreliable in the field (the fat daemon could
1374
- // crash mid-session and strand tools on a dead 127.0.0.1 port), so a plain
1375
- // apply never enables it. --no-fallback stays accepted and always wins, so
1376
- // scripts that pass it keep working.
1377
- const wantFallback = !args.revert && args.fallback === true && args.noFallback !== true;
1378
1387
  // Seamless key refresh: ON by default for subscription/passthrough Claude Code
1379
- // + Codex — the only tools whose traffic actually traverses the loopback (see
1380
- // the daemon's ProxyMode). They bake a short-TTL client key as a STATIC header
1381
- // read once at launch, so without the daemon a long session 401s the moment
1382
- // the key lapses mid-flight, curable only by a re-run + a tool relaunch. Here
1383
- // the daemon runs in the crash-minimal refresh-only mode (fallbackEnabled is
1384
- // false) — that tiny surface is what lets it default on where the full
1385
- // fallback leg cannot. --no-key-refresh forces the legacy direct static-key
1386
- // lane. Other tools (native Cursor, the Copilot extension, ACP launchers)
1387
- // rebuild their own target and bypass the loopback, so they are unaffected
1388
- // either way — see the scope boundary in commands/fallbackProxy.ts.
1388
+ // + Codex — the only tools whose traffic actually traverses the loopback. They
1389
+ // bake a short-TTL client key as a STATIC header read once at launch, so
1390
+ // without the daemon a long session 401s the moment the key lapses mid-flight,
1391
+ // curable only by a re-run + a tool relaunch. The daemon's surface is
1392
+ // deliberately tiny (fill the empty key slot, forward the bytes unchanged)
1393
+ // that is what lets it default on where the retired provider-direct lane could
1394
+ // not. --no-key-refresh forces the legacy direct static-key lane. Other tools
1395
+ // (native Cursor, the Copilot extension, ACP launchers) rebuild their own
1396
+ // target and bypass the loopback, so they are unaffected either way — see the
1397
+ // scope boundary in commands/refreshProxy.ts.
1389
1398
  const keyRefreshSeatSelected = (adapters.some((a) => a.id === "claude-code") &&
1390
1399
  effectiveSubscription(target, "anthropic")) ||
1391
1400
  (adapters.some((a) => a.id === "codex") &&
1392
1401
  effectiveSubscription(target, "openai"));
1393
1402
  const wantKeyRefresh = !args.revert && args.noKeyRefresh !== true && keyRefreshSeatSelected;
1394
- // Either flag engages the loopback daemon; --fallback additionally turns it
1395
- // into the provider-direct fallback (the daemon derives its mode from
1396
- // fallbackEnabled at boot, so fallback wins when both are set).
1397
- const wantLoopback = wantFallback || wantKeyRefresh;
1398
1403
  // A scoped apply (`--tools x`) that doesn't itself engage the loopback must
1399
1404
  // not tear down the DEFAULT-ON key-refresh lane the tools it did NOT name
1400
1405
  // still depend on — the apply-side mirror of the scoped-revert credential rule
1401
1406
  // below. Without this, `anyray-connect --tools cursor` after a full connect
1402
1407
  // would uninstall the refresh daemon and drop Claude Code / Codex back to the
1403
- // 401-prone static-key lane. Scope is deliberately the refresh-only lane only:
1404
- // the opt-in --fallback machinery is NOT preserved here, so the upgrade
1405
- // cleanup that disables a proxy an earlier release auto-enabled still runs
1406
- // (re-opt-in with --fallback). An explicit --no-key-refresh still wins, and a
1408
+ // 401-prone static-key lane. An explicit --no-key-refresh still wins, and a
1407
1409
  // full, unscoped apply falls through to the normal want-driven teardown below.
1408
1410
  const scopedApply = !args.revert && (args.tools?.length ?? 0) > 0;
1409
1411
  const preserveKeyRefresh = scopedApply &&
1410
1412
  args.noKeyRefresh !== true &&
1411
1413
  Boolean(profile.keyRefreshEnabled);
1412
- const preserveLoopback = preserveKeyRefresh;
1413
1414
  // The refresh SCHEDULER is the universal trigger: a per-user launchd/systemd/
1414
1415
  // Task Scheduler task that runs `__anyray-refresh` every ~30 min to re-mint
1415
1416
  // the short-TTL ark_ key for EVERY configured tool. The loopback daemon above
@@ -1426,21 +1427,19 @@ const runApplyCommand = async (argv, forceWizard) => {
1426
1427
  const hasRefreshableCert = !usingEnvironmentKey && Boolean(enrolledCert ?? profile.enrolledCert);
1427
1428
  const wantRefreshScheduler = !args.revert && args.noKeyRefresh !== true && hasRefreshableCert;
1428
1429
  let applyTarget = target;
1429
- const resolvedFallbackEnabled = wantFallback;
1430
1430
  const resolvedKeyRefreshEnabled = wantKeyRefresh || preserveKeyRefresh;
1431
- const loopbackMode = resolvedFallbackEnabled
1432
- ? "fallback"
1433
- : "refresh-only";
1434
1431
  // Hold the port when the loopback is wanted now, or preserved for the tools
1435
1432
  // this scoped apply didn't name; otherwise clear it so the persisted profile
1436
1433
  // and the teardown below agree the daemon is gone.
1437
- let resolvedFallbackPort = wantLoopback || preserveLoopback ? profile.fallbackPort : undefined;
1438
- if (wantLoopback && !args.dryRun) {
1439
- resolvedFallbackPort = profile.fallbackPort ?? (await pickFallbackPort());
1434
+ let resolvedFallbackPort = resolvedKeyRefreshEnabled
1435
+ ? profile.fallbackPort
1436
+ : undefined;
1437
+ if (wantKeyRefresh && !args.dryRun) {
1438
+ resolvedFallbackPort = profile.fallbackPort ?? (await pickLoopbackPort());
1440
1439
  }
1441
1440
  // ACP agents and Claude Desktop's credential helper intentionally persist no
1442
1441
  // static key: they load this owner-only profile when the app launches them.
1443
- // Commit the complete target + enrollment pair before any adapter or fallback
1442
+ // Commit the complete target + enrollment pair before any adapter or loopback
1444
1443
  // service can register such a launcher. A persistence failure is fatal here,
1445
1444
  // while no tool configuration has changed yet.
1446
1445
  if (!args.revert && !args.dryRun) {
@@ -1479,7 +1478,6 @@ const runApplyCommand = async (argv, forceWizard) => {
1479
1478
  : undefined)),
1480
1479
  authMode: target.authMode,
1481
1480
  byoUpstream: target.byoUpstream,
1482
- fallbackEnabled: resolvedFallbackEnabled,
1483
1481
  keyRefreshEnabled: resolvedKeyRefreshEnabled,
1484
1482
  refreshSchedulerEnabled: wantRefreshScheduler,
1485
1483
  fallbackPort: resolvedFallbackPort,
@@ -1491,9 +1489,16 @@ const runApplyCommand = async (argv, forceWizard) => {
1491
1489
  fail("Could not save the owner-only Anyray runtime profile. No tool configuration was changed.");
1492
1490
  return 1;
1493
1491
  }
1492
+ // This run minted a key (--enroll / --sso). Share that with the
1493
+ // auto-refresher's bookkeeping: with no successful mint on record, the next
1494
+ // detached refresh sees a credential "not rotated in hours", re-mints
1495
+ // immediately, and rotates the key out from under the session just set up.
1496
+ if (clientKeyExpiresAt && !usingEnvironmentKey) {
1497
+ await recordMintSuccess({ expiresAt: clientKeyExpiresAt });
1498
+ }
1494
1499
  }
1495
- if (wantLoopback && !args.dryRun) {
1496
- applyTarget = await setupLoopbackProxy(target, resolvedFallbackPort, loopbackMode);
1500
+ if (wantKeyRefresh && !args.dryRun) {
1501
+ applyTarget = await setupLoopbackProxy(target, resolvedFallbackPort);
1497
1502
  }
1498
1503
  // Drop the enrollment credential FIRST, before a single config is unpicked —
1499
1504
  // see util/persist `clearEnrollment` for why a revert that leaves it behind
@@ -1548,27 +1553,23 @@ const runApplyCommand = async (argv, forceWizard) => {
1548
1553
  if (!args.dryRun) {
1549
1554
  await recordManagedTools(results, args.revert, fullRevert).catch(() => undefined);
1550
1555
  }
1551
- // Tear down the loopback daemon + its at-rest state whenever NEITHER layer is
1552
- // wanted but a previous run left it installed — covers an explicit --revert,
1553
- // --no-key-refresh, or a subscription→api-key switch that no longer needs the
1554
- // refresh lane. Runs AFTER the adapters above re-pointed tools straight at the
1555
- // gateway, so uninstalling the loopback service strands nothing.
1556
- if (!wantLoopback &&
1557
- !preserveLoopback &&
1556
+ // Tear down the loopback daemon whenever it isn't wanted but a previous run
1557
+ // left it installed — covers an explicit --revert, --no-key-refresh, or a
1558
+ // subscription→api-key switch that no longer needs the refresh lane. Runs
1559
+ // AFTER the adapters above re-pointed tools straight at the gateway, so
1560
+ // uninstalling the loopback service strands nothing.
1561
+ if (!resolvedKeyRefreshEnabled &&
1558
1562
  !args.dryRun &&
1559
1563
  (loopbackEngaged(profile) || profile.fallbackPort)) {
1560
1564
  heading("Local loopback proxy");
1561
1565
  const svc = await uninstallProxyService(profile.fallbackPort);
1562
1566
  for (const m of svc.messages)
1563
1567
  info(` ${m}`);
1564
- await clearBundle();
1565
- await clearQueue();
1566
1568
  // Re-read: on a --revert `clearEnrollment` already stripped the credential
1567
1569
  // from disk, so spreading the pre-run `profile` snapshot would write it
1568
1570
  // straight back. loadProfile() reflects what is actually persisted now.
1569
1571
  await saveProfile({
1570
1572
  ...(await loadProfile()),
1571
- fallbackEnabled: false,
1572
1573
  keyRefreshEnabled: false,
1573
1574
  fallbackPort: undefined,
1574
1575
  });
@@ -1582,7 +1583,7 @@ const runApplyCommand = async (argv, forceWizard) => {
1582
1583
  // Cursor-only seat has the scheduler but never had a daemon.
1583
1584
  await reconcileRefreshScheduler({
1584
1585
  want: wantRefreshScheduler,
1585
- announcePrimary: !wantLoopback,
1586
+ announcePrimary: !wantKeyRefresh,
1586
1587
  scopedRevert: Boolean(args.revert) && !fullRevert,
1587
1588
  dryRun: Boolean(args.dryRun),
1588
1589
  wasEnabled: Boolean(profile.refreshSchedulerEnabled),
@@ -1651,12 +1652,10 @@ const runApplyCommand = async (argv, forceWizard) => {
1651
1652
  }
1652
1653
  else {
1653
1654
  // MUST probe `target` (the remote gateway), NOT `applyTarget` (the local
1654
- // fallback daemon the tools were pointed at when --fallback is on). The
1655
- // verify classifiers sniff response bodies: probed through the daemon, a
1656
- // daemon-synthesized 502 would confuse them, and with the gateway down the
1657
- // daemon would forward the seat-wiring probe's sentinel bearer direct to
1658
- // the provider — whose 401 false-positives classifySeatWiring's "gateway
1659
- // passes your sign-in through" verdict. The daemon hop is health-checked
1655
+ // key-refresh daemon the tools were pointed at). The verify classifiers
1656
+ // sniff response bodies, and a daemon-synthesized 502 ("gateway
1657
+ // unreachable") would confuse them into reporting a routing fault the
1658
+ // gateway itself never returned. The daemon hop is health-checked
1660
1659
  // separately at install time (and by `doctor`).
1661
1660
  await runVerify(target, adapters.map((a) => a.id));
1662
1661
  }