diff options
| author | Frank <[email protected]> | 2025-12-02 14:51:25 -0500 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-12-02 14:51:27 -0500 |
| commit | 1f11d4fb1a6003b6b033cd25004700bc6872d543 (patch) | |
| tree | ac4645fa5fb43004b9390e934097bbfef45db097 /packages/console/app/src | |
| parent | b308503ab5ff470be43bdb8a2fb6e0c070f091ca (diff) | |
| download | opencode-1f11d4fb1a6003b6b033cd25004700bc6872d543.tar.gz opencode-1f11d4fb1a6003b6b033cd25004700bc6872d543.zip | |
zen: data dumper
Diffstat (limited to 'packages/console/app/src')
| -rw-r--r-- | packages/console/app/src/routes/zen/util/dataDumper.ts | 30 | ||||
| -rw-r--r-- | packages/console/app/src/routes/zen/util/handler.ts | 11 |
2 files changed, 24 insertions, 17 deletions
diff --git a/packages/console/app/src/routes/zen/util/dataDumper.ts b/packages/console/app/src/routes/zen/util/dataDumper.ts index 6a064138a..155cc6c58 100644 --- a/packages/console/app/src/routes/zen/util/dataDumper.ts +++ b/packages/console/app/src/routes/zen/util/dataDumper.ts @@ -1,25 +1,37 @@ import { Resource, waitUntil } from "@opencode-ai/console-resource" -export function createDataDumper(sessionId: string, requestId: string) { +export function createDataDumper(sessionId: string, requestId: string, projectId: string) { if (Resource.App.stage !== "production") return + if (sessionId === "") return - let data: Record<string, any> = {} - let modelName: string | undefined + let data: Record<string, any> = { sessionId, requestId, projectId } + let metadata: Record<string, any> = { sessionId, requestId, projectId } return { - provideModel: (model?: string) => (modelName = model), + provideModel: (model?: string) => { + data.modelName = model + metadata.modelName = model + }, provideRequest: (request: string) => (data.request = request), provideResponse: (response: string) => (data.response = response), provideStream: (chunk: string) => (data.response = (data.response ?? "") + chunk), flush: () => { - if (!modelName) return + if (!data.modelName) return + + const timestamp = new Date().toISOString().replace(/[^0-9]/g, "") - const str = new Date().toISOString().replace(/[^0-9]/g, "") - const yyyymmdd = str.substring(0, 8) - const hh = str.substring(8, 10) + waitUntil( + Resource.ZenData.put( + `data/${data.modelName}/${sessionId}/${requestId}.json`, + JSON.stringify({ timestamp, ...data }), + ), + ) waitUntil( - Resource.ConsoleData.put(`${yyyymmdd}/${hh}/${modelName}/${sessionId}/${requestId}.json`, JSON.stringify(data)), + Resource.ZenData.put( + `meta/${data.modelName}/${timestamp}/${requestId}.json`, + JSON.stringify({ timestamp, ...metadata }), + ), ) }, } diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 972b60d6c..623c93127 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -13,13 +13,7 @@ import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js" import { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js" import { logger } from "./logger" import { AuthError, CreditsError, MonthlyLimitError, UserLimitError, ModelError, RateLimitError } from "./error" -import { - createBodyConverter, - createStreamPartConverter, - createResponseConverter, - ProviderHelper, - UsageInfo, -} from "./provider/provider" +import { createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -61,6 +55,7 @@ export async function handler( const ip = input.request.headers.get("x-real-ip") ?? "" const sessionId = input.request.headers.get("x-opencode-session") ?? "" const requestId = input.request.headers.get("x-opencode-request") ?? "" + const projectId = input.request.headers.get("x-opencode-project") ?? "" logger.metric({ is_tream: isStream, session: sessionId, @@ -68,7 +63,7 @@ export async function handler( }) const zenData = ZenData.list() const modelInfo = validateModel(zenData, model) - const dataDumper = createDataDumper(sessionId, requestId) + const dataDumper = createDataDumper(sessionId, requestId, projectId) const trialLimiter = createTrialLimiter(modelInfo.trial?.limit, ip) const isTrial = await trialLimiter?.isTrial() const rateLimiter = createRateLimiter(modelInfo.id, modelInfo.rateLimit, ip) |
