MCPcopy
hub / github.com/coder/mux / loadAutoRetryEnabledPreference

Method loadAutoRetryEnabledPreference

src/node/services/agentSession.ts:948–996  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

946 }
947
948 private async loadAutoRetryEnabledPreference(): Promise<boolean> {
949 if (this.autoRetryEnabledPreference !== null) {
950 return this.autoRetryEnabledPreference;
951 }
952
953 const preferencePath = this.getAutoRetryPreferencePath();
954 try {
955 const raw = await readFile(preferencePath, "utf-8");
956 const parsed = JSON.parse(raw) as {
957 enabled?: unknown;
958 startupAutoRetryAbandon?: unknown;
959 };
960 const enabled = parsed.enabled !== false;
961 this.autoRetryEnabledPreference = enabled;
962 this.legacyAutoRetryEnabledHint = null;
963 this.startupAutoRetryAbandon = this.parseStartupAutoRetryAbandon(
964 parsed.startupAutoRetryAbandon
965 );
966 this.retryManager.setEnabled(enabled);
967 return enabled;
968 } catch (error) {
969 // Missing preference file is the default path. Use any legacy frontend hint
970 // (captured at onChat subscribe time) before falling back to enabled.
971 const errno =
972 typeof error === "object" && error !== null && "code" in error
973 ? (error as { code?: unknown }).code
974 : undefined;
975 const defaultEnabled =
976 errno === "ENOENT" && this.legacyAutoRetryEnabledHint === false ? false : true;
977
978 this.autoRetryEnabledPreference = defaultEnabled;
979 this.legacyAutoRetryEnabledHint = null;
980 this.startupAutoRetryAbandon = null;
981 this.retryManager.setEnabled(defaultEnabled);
982
983 if (errno === "ENOENT" && defaultEnabled === false) {
984 // Persist migrated legacy opt-out so restart behavior no longer depends
985 // on renderer localStorage keys.
986 await this.persistAutoRetryState();
987 } else if (errno !== "ENOENT") {
988 log.warn("Failed to load auto-retry preference; defaulting to enabled", {
989 workspaceId: this.workspaceId,
990 error: getErrorMessage(error),
991 });
992 }
993
994 return defaultEnabled;
995 }
996 }
997
998 private async persistAutoRetryState(): Promise<void> {
999 const preferencePath = this.getAutoRetryPreferencePath();

Calls 7

persistAutoRetryStateMethod · 0.95
getErrorMessageFunction · 0.90
setEnabledMethod · 0.80
readFileFunction · 0.50
parseMethod · 0.45

Tested by

no test coverage detected