Просмотр исходного кода

fix(stats): restore worker runtime

Adam 2 месяцев назад
Родитель
Сommit
c0dc6e50a7

+ 2 - 2
packages/stats/app/src/routes/[lab]/[model].tsx

@@ -14,7 +14,6 @@ import {
   type StatsModelData,
   type UsageRange,
 } from "@opencode-ai/stats-core/domain/home"
-import { runtime } from "@opencode-ai/stats-core/runtime"
 import { createAsync, query, useParams } from "@solidjs/router"
 import { createMemo, createSignal, For, onMount, Show, type JSX } from "solid-js"
 import { getRequestEvent } from "solid-js/web"
@@ -96,7 +95,8 @@ const worldBorderPath = worldPath(mesh(worldTopology, worldCountryGeometries, (a
 
 const getModelData = query(async (lab: string, model: string) => {
   "use server"
-  return runtime.runPromise(getStatsModelData(model, lab))
+  const { statsRuntime } = await import("../../stats-runtime")
+  return statsRuntime.runPromise(getStatsModelData(model, lab))
 }, "getStatsModelData")
 
 export default function StatsModel() {

+ 2 - 2
packages/stats/app/src/routes/[lab]/index.tsx

@@ -6,7 +6,6 @@ import {
   type ModelUsagePoint,
   type StatsLabData,
 } from "@opencode-ai/stats-core/domain/home"
-import { runtime } from "@opencode-ai/stats-core/runtime"
 import { createAsync, query, useParams } from "@solidjs/router"
 import { createMemo, createSignal, For, onMount, Show, type JSX } from "solid-js"
 import { getRequestEvent } from "solid-js/web"
@@ -46,7 +45,8 @@ const labFooterLinks: readonly HeaderLink[] = [
 
 const getLabData = query(async (lab: string) => {
   "use server"
-  return runtime.runPromise(getStatsLabData(lab))
+  const { statsRuntime } = await import("../../stats-runtime")
+  return statsRuntime.runPromise(getStatsLabData(lab))
 }, "getStatsLabData")
 
 export default function StatsLab() {

+ 2 - 2
packages/stats/app/src/routes/api/health.ts

@@ -1,10 +1,10 @@
 import { AppConfig } from "@opencode-ai/stats-core/config"
-import { runtime } from "@opencode-ai/stats-core/runtime"
 import { Effect } from "effect"
 
 export async function GET() {
+  const { statsRuntime } = await import("../../stats-runtime")
   return Response.json(
-    await runtime.runPromise(
+    await statsRuntime.runPromise(
       Effect.gen(function* () {
         const config = yield* AppConfig
         return {

+ 2 - 2
packages/stats/app/src/routes/index.tsx

@@ -21,7 +21,6 @@ import {
   type TokenCostEntry,
   type UsagePoint,
 } from "@opencode-ai/stats-core/domain/home"
-import { runtime } from "@opencode-ai/stats-core/runtime"
 import { createAsync, query } from "@solidjs/router"
 import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show, type JSX } from "solid-js"
 import { getRequestEvent } from "solid-js/web"
@@ -109,7 +108,8 @@ const worldBorderPath = worldPath(mesh(worldTopology, worldCountryGeometries, (a
 
 const getData = query(async () => {
   "use server"
-  return runtime.runPromise(getStatsHomeData())
+  const { statsRuntime } = await import("../stats-runtime")
+  return statsRuntime.runPromise(getStatsHomeData())
 }, "getStatsHomeData")
 
 export default function StatsHome() {

+ 12 - 0
packages/stats/app/src/stats-runtime.ts

@@ -0,0 +1,12 @@
+import { AppConfig } from "@opencode-ai/stats-core/config"
+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"
+
+const repoLayer = Layer.mergeAll(ModelStatRepo.layer, ProviderStatRepo.layer, GeoStatRepo.layer).pipe(
+  Layer.provide(layer),
+)
+
+export const statsRuntime = ManagedRuntime.make(Layer.mergeAll(AppConfig.layer, layer, repoLayer))