From 1a111be49457c1e274f2bd473c88ec047806925f Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Sun, 21 Jun 2026 06:30:15 -0500 Subject: [PATCH] fix(stats): run worker effects directly --- packages/stats/app/src/routes/[lab]/[model].tsx | 4 ++-- packages/stats/app/src/routes/[lab]/index.tsx | 4 ++-- packages/stats/app/src/routes/api/health.ts | 4 ++-- packages/stats/app/src/routes/index.tsx | 4 ++-- packages/stats/app/src/stats-runtime.ts | 8 ++++++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index 838fa6925..a068ed005 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -26,7 +26,7 @@ import { type ModelCatalogCost, type ModelCatalogEntry, } from "../model-catalog" -import { statsRuntime } from "../../stats-runtime" +import { runStatsEffect } from "../../stats-runtime" import { applyThemePreference, Footer, @@ -96,7 +96,7 @@ const worldBorderPath = worldPath(mesh(worldTopology, worldCountryGeometries, (a const getModelData = query(async (lab: string, model: string) => { "use server" - return statsRuntime.runPromise(getStatsModelData(model, lab)) + return runStatsEffect(getStatsModelData(model, lab)) }, "getStatsModelData") export default function StatsModel() { diff --git a/packages/stats/app/src/routes/[lab]/index.tsx b/packages/stats/app/src/routes/[lab]/index.tsx index fc4482639..9d71f7b64 100644 --- a/packages/stats/app/src/routes/[lab]/index.tsx +++ b/packages/stats/app/src/routes/[lab]/index.tsx @@ -16,7 +16,7 @@ import { type ModelCatalogEntry, type ModelCatalogLab, } from "../model-catalog" -import { statsRuntime } from "../../stats-runtime" +import { runStatsEffect } from "../../stats-runtime" import { applyThemePreference, Footer, @@ -46,7 +46,7 @@ const labFooterLinks: readonly HeaderLink[] = [ const getLabData = query(async (lab: string) => { "use server" - return statsRuntime.runPromise(getStatsLabData(lab)) + return runStatsEffect(getStatsLabData(lab)) }, "getStatsLabData") export default function StatsLab() { diff --git a/packages/stats/app/src/routes/api/health.ts b/packages/stats/app/src/routes/api/health.ts index b648adb20..81e60f82e 100644 --- a/packages/stats/app/src/routes/api/health.ts +++ b/packages/stats/app/src/routes/api/health.ts @@ -1,10 +1,10 @@ import { AppConfig } from "@opencode-ai/stats-core/config" import { Effect } from "effect" -import { statsRuntime } from "../../stats-runtime" +import { runStatsEffect } from "../../stats-runtime" export async function GET() { return Response.json( - await statsRuntime.runPromise( + await runStatsEffect( Effect.gen(function* () { const config = yield* AppConfig return { diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx index 90ba9ce9f..1d46d43a1 100644 --- a/packages/stats/app/src/routes/index.tsx +++ b/packages/stats/app/src/routes/index.tsx @@ -26,7 +26,7 @@ import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show, import { getRequestEvent } from "solid-js/web" import type { FeatureCollection, GeometryObject, GeoJsonProperties } from "geojson" import type { GeometryCollection, Topology } from "topojson-specification" -import { statsRuntime } from "../stats-runtime" +import { runStatsEffect } from "../stats-runtime" import { findModelCatalogEntry, getModelCatalog, type ModelCatalog } from "./model-catalog" import { applyThemePreference, @@ -109,7 +109,7 @@ const worldBorderPath = worldPath(mesh(worldTopology, worldCountryGeometries, (a const getData = query(async () => { "use server" - return statsRuntime.runPromise(getStatsHomeData()) + return runStatsEffect(getStatsHomeData()) }, "getStatsHomeData") export default function StatsHome() { diff --git a/packages/stats/app/src/stats-runtime.ts b/packages/stats/app/src/stats-runtime.ts index 8267f41cc..15beb678b 100644 --- a/packages/stats/app/src/stats-runtime.ts +++ b/packages/stats/app/src/stats-runtime.ts @@ -3,10 +3,14 @@ import { layer } from "@opencode-ai/stats-core/database" import { GeoStatRepo } from "@opencode-ai/stats-core/domain/geo" import { ModelStatRepo } from "@opencode-ai/stats-core/domain/model" import { ProviderStatRepo } from "@opencode-ai/stats-core/domain/provider" -import { Layer, ManagedRuntime } from "effect" +import { Effect, Layer } from "effect" +import type { Success } from "effect/Layer" const repoLayer = Layer.mergeAll(ModelStatRepo.layer, ProviderStatRepo.layer, GeoStatRepo.layer).pipe( Layer.provide(layer), ) +const statsLayer = Layer.mergeAll(AppConfig.layer, layer, repoLayer) -export const statsRuntime = ManagedRuntime.make(Layer.mergeAll(AppConfig.layer, layer, repoLayer)) +export function runStatsEffect(effect: Effect.Effect>) { + return Effect.runPromise(Effect.provide(effect, statsLayer)) +}