zen: data dumper · argszero/opencode@1f11d4f · GitHub
Skip to content

Commit 1f11d4f

Browse files
author
Frank
committed
zen: data dumper
1 parent b308503 commit 1f11d4f

27 files changed

Lines changed: 764 additions & 717 deletions

File tree

github/sst-env.d.ts

Lines changed: 1 addition & 1 deletion

infra/console.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ const gatewayKv = new sst.cloudflare.Kv("GatewayKv")
116116
// CONSOLE
117117
////////////////
118118

119-
const bucket = new sst.cloudflare.Bucket("ConsoleData")
119+
const oldBucket = new sst.cloudflare.Bucket("ConsoleData")
120+
const bucket = new sst.cloudflare.Bucket("ZenData")
120121

121122
const AWS_SES_ACCESS_KEY_ID = new sst.Secret("AWS_SES_ACCESS_KEY_ID")
122123
const AWS_SES_SECRET_ACCESS_KEY = new sst.Secret("AWS_SES_SECRET_ACCESS_KEY")

packages/console/app/src/routes/zen/util/dataDumper.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,37 @@
11
import { Resource, waitUntil } from "@opencode-ai/console-resource"
22

3-
export function createDataDumper(sessionId: string, requestId: string) {
3+
export function createDataDumper(sessionId: string, requestId: string, projectId: string) {
44
if (Resource.App.stage !== "production") return
5+
if (sessionId === "") return
56

6-
let data: Record<string, any> = {}
7-
let modelName: string | undefined
7+
let data: Record<string, any> = { sessionId, requestId, projectId }
8+
let metadata: Record<string, any> = { sessionId, requestId, projectId }
89

910
return {
10-
provideModel: (model?: string) => (modelName = model),
11+
provideModel: (model?: string) => {
12+
data.modelName = model
13+
metadata.modelName = model
14+
},
1115
provideRequest: (request: string) => (data.request = request),
1216
provideResponse: (response: string) => (data.response = response),
1317
provideStream: (chunk: string) => (data.response = (data.response ?? "") + chunk),
1418
flush: () => {
15-
if (!modelName) return
19+
if (!data.modelName) return
20+
21+
const timestamp = new Date().toISOString().replace(/[^0-9]/g, "")
1622

17-
const str = new Date().toISOString().replace(/[^0-9]/g, "")
18-
const yyyymmdd = str.substring(0, 8)
19-
const hh = str.substring(8, 10)
23+
waitUntil(
24+
Resource.ZenData.put(
25+
`data/${data.modelName}/${sessionId}/${requestId}.json`,
26+
JSON.stringify({ timestamp, ...data }),
27+
),
28+
)
2029

2130
waitUntil(
22-
Resource.ConsoleData.put(`${yyyymmdd}/${hh}/${modelName}/${sessionId}/${requestId}.json`, JSON.stringify(data)),
31+
Resource.ZenData.put(
32+
`meta/${data.modelName}/${timestamp}/${requestId}.json`,
33+
JSON.stringify({ timestamp, ...metadata }),
34+
),
2335
)
2436
},
2537
}

packages/console/app/src/routes/zen/util/handler.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,7 @@ import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
1313
import { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js"
1414
import { logger } from "./logger"
1515
import { AuthError, CreditsError, MonthlyLimitError, UserLimitError, ModelError, RateLimitError } from "./error"
16-
import {
17-
createBodyConverter,
18-
createStreamPartConverter,
19-
createResponseConverter,
20-
ProviderHelper,
21-
UsageInfo,
22-
} from "./provider/provider"
16+
import { createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider"
2317
import { anthropicHelper } from "./provider/anthropic"
2418
import { googleHelper } from "./provider/google"
2519
import { openaiHelper } from "./provider/openai"
@@ -61,14 +55,15 @@ export async function handler(
6155
const ip = input.request.headers.get("x-real-ip") ?? ""
6256
const sessionId = input.request.headers.get("x-opencode-session") ?? ""
6357
const requestId = input.request.headers.get("x-opencode-request") ?? ""
58+
const projectId = input.request.headers.get("x-opencode-project") ?? ""
6459
logger.metric({
6560
is_tream: isStream,
6661
session: sessionId,
6762
request: requestId,
6863
})
6964
const zenData = ZenData.list()
7065
const modelInfo = validateModel(zenData, model)
71-
const dataDumper = createDataDumper(sessionId, requestId)
66+
const dataDumper = createDataDumper(sessionId, requestId, projectId)
7267
const trialLimiter = createTrialLimiter(modelInfo.trial?.limit, ip)
7368
const isTrial = await trialLimiter?.isTrial()
7469
const rateLimiter = createRateLimiter(modelInfo.id, modelInfo.rateLimit, ip)

packages/console/app/sst-env.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
/// <reference path="../../../sst-env.d.ts" />
77

88
import "sst"
9-
export {}
9+
export {}

packages/console/core/sst-env.d.ts

Lines changed: 119 additions & 114 deletions

0 commit comments

Comments
 (0)