From a7cf21e15773b49821fd9ef21595c9854d11b433 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 16 Jul 2026 14:32:26 -0400 Subject: [PATCH] refactor(core): move wellknown refresh to config --- packages/core/src/config.ts | 17 +++++++++++++++++ packages/core/src/wellknown.ts | 15 +++------------ packages/core/test/wellknown.test.ts | 4 ---- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/core/src/config.ts b/packages/core/src/config.ts index ec3037193ce..b3f762b2286 100644 --- a/packages/core/src/config.ts +++ b/packages/core/src/config.ts @@ -367,6 +367,23 @@ const layer = Layer.effect( ), Effect.forkScoped({ startImmediately: true }), ) + yield* Effect.sleep("10 minutes").pipe( + Effect.andThen( + Effect.suspend(() => { + if (!wellknown.snapshot().length) return Effect.void + return Effect.gen(function* () { + const changed = yield* wellknown.refresh().pipe( + Effect.catch((error) => + Effect.logWarning("failed to refresh wellknown manifests", { error }).pipe(Effect.as(false)), + ), + ) + if (!changed) yield* reload() + }).pipe(Effect.catchCause((cause) => Effect.logWarning("failed to refresh wellknown config", { cause }))) + }), + ), + Effect.forever, + Effect.forkScoped({ startImmediately: true }), + ) yield* reconcile(initial) return Service.of({ diff --git a/packages/core/src/wellknown.ts b/packages/core/src/wellknown.ts index edc00475f68..73eea6dcfbc 100644 --- a/packages/core/src/wellknown.ts +++ b/packages/core/src/wellknown.ts @@ -137,23 +137,14 @@ const layer = Layer.effect( ) const next = new Map(entries.map((entry) => [entry.origin, entry])) const changed = !isDeepStrictEqual(Ref.getUnsafe(cache), next) - if (changed) yield* Ref.set(cache, next) + if (!changed) return false + yield* Ref.set(cache, next) yield* events.publish(Event.Updated, {}) - return changed + return true }), ) }) - yield* Effect.sleep("10 minutes").pipe( - Effect.andThen( - refresh().pipe( - Effect.catch((error) => Effect.logWarning("failed to refresh wellknown manifests", { error })), - ), - ), - Effect.forever, - Effect.forkScoped({ startImmediately: true }), - ) - return Service.of({ entries: load, snapshot: () => Array.from(Ref.getUnsafe(cache).values()), diff --git a/packages/core/test/wellknown.test.ts b/packages/core/test/wellknown.test.ts index 966bf21e764..08ecbfc8b64 100644 --- a/packages/core/test/wellknown.test.ts +++ b/packages/core/test/wellknown.test.ts @@ -104,11 +104,7 @@ serviceIt.live("refreshes changed manifests", () => const wellknown = yield* WellKnown.Service const events = yield* EventV2.Service yield* wellknown.add(server.url.origin) - const refreshed = yield* events - .subscribe(WellKnown.Event.Updated) - .pipe(Stream.take(1), Stream.runCollect, Effect.forkScoped) expect(yield* wellknown.refresh()).toBe(false) - expect(yield* Fiber.join(refreshed)).toHaveLength(1) const changed = yield* events .subscribe(WellKnown.Event.Updated)