Explorar o código

zen: data dumper

Frank hai 4 meses
pai
achega
1f11d4fb1a

+ 1 - 1
github/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../sst-env.d.ts" />
 /// <reference path="../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 2 - 1
infra/console.ts

@@ -116,7 +116,8 @@ const gatewayKv = new sst.cloudflare.Kv("GatewayKv")
 // CONSOLE
 // CONSOLE
 ////////////////
 ////////////////
 
 
-const bucket = new sst.cloudflare.Bucket("ConsoleData")
+const oldBucket = new sst.cloudflare.Bucket("ConsoleData")
+const bucket = new sst.cloudflare.Bucket("ZenData")
 
 
 const AWS_SES_ACCESS_KEY_ID = new sst.Secret("AWS_SES_ACCESS_KEY_ID")
 const AWS_SES_ACCESS_KEY_ID = new sst.Secret("AWS_SES_ACCESS_KEY_ID")
 const AWS_SES_SECRET_ACCESS_KEY = new sst.Secret("AWS_SES_SECRET_ACCESS_KEY")
 const AWS_SES_SECRET_ACCESS_KEY = new sst.Secret("AWS_SES_SECRET_ACCESS_KEY")

+ 21 - 9
packages/console/app/src/routes/zen/util/dataDumper.ts

@@ -1,25 +1,37 @@
 import { Resource, waitUntil } from "@opencode-ai/console-resource"
 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 (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 {
   return {
-    provideModel: (model?: string) => (modelName = model),
+    provideModel: (model?: string) => {
+      data.modelName = model
+      metadata.modelName = model
+    },
     provideRequest: (request: string) => (data.request = request),
     provideRequest: (request: string) => (data.request = request),
     provideResponse: (response: string) => (data.response = response),
     provideResponse: (response: string) => (data.response = response),
     provideStream: (chunk: string) => (data.response = (data.response ?? "") + chunk),
     provideStream: (chunk: string) => (data.response = (data.response ?? "") + chunk),
     flush: () => {
     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(
       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 }),
+        ),
       )
       )
     },
     },
   }
   }

+ 3 - 8
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 { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js"
 import { logger } from "./logger"
 import { logger } from "./logger"
 import { AuthError, CreditsError, MonthlyLimitError, UserLimitError, ModelError, RateLimitError } from "./error"
 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 { anthropicHelper } from "./provider/anthropic"
 import { googleHelper } from "./provider/google"
 import { googleHelper } from "./provider/google"
 import { openaiHelper } from "./provider/openai"
 import { openaiHelper } from "./provider/openai"
@@ -61,6 +55,7 @@ export async function handler(
     const ip = input.request.headers.get("x-real-ip") ?? ""
     const ip = input.request.headers.get("x-real-ip") ?? ""
     const sessionId = input.request.headers.get("x-opencode-session") ?? ""
     const sessionId = input.request.headers.get("x-opencode-session") ?? ""
     const requestId = input.request.headers.get("x-opencode-request") ?? ""
     const requestId = input.request.headers.get("x-opencode-request") ?? ""
+    const projectId = input.request.headers.get("x-opencode-project") ?? ""
     logger.metric({
     logger.metric({
       is_tream: isStream,
       is_tream: isStream,
       session: sessionId,
       session: sessionId,
@@ -68,7 +63,7 @@ export async function handler(
     })
     })
     const zenData = ZenData.list()
     const zenData = ZenData.list()
     const modelInfo = validateModel(zenData, model)
     const modelInfo = validateModel(zenData, model)
-    const dataDumper = createDataDumper(sessionId, requestId)
+    const dataDumper = createDataDumper(sessionId, requestId, projectId)
     const trialLimiter = createTrialLimiter(modelInfo.trial?.limit, ip)
     const trialLimiter = createTrialLimiter(modelInfo.trial?.limit, ip)
     const isTrial = await trialLimiter?.isTrial()
     const isTrial = await trialLimiter?.isTrial()
     const rateLimiter = createRateLimiter(modelInfo.id, modelInfo.rateLimit, ip)
     const rateLimiter = createRateLimiter(modelInfo.id, modelInfo.rateLimit, ip)

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

@@ -6,4 +6,4 @@
 /// <reference path="../../../sst-env.d.ts" />
 /// <reference path="../../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 119 - 114
packages/console/core/sst-env.d.ts

@@ -6,126 +6,131 @@
 import "sst"
 import "sst"
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    ADMIN_SECRET: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AUTH_API_URL: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    AWS_SES_ACCESS_KEY_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AWS_SES_SECRET_ACCESS_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_API_TOKEN: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_DEFAULT_ACCOUNT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    Console: {
-      type: "sst.cloudflare.SolidStart"
-      url: string
-    }
-    Database: {
-      database: string
-      host: string
-      password: string
-      port: number
-      type: "sst.sst.Linkable"
-      username: string
-    }
-    Desktop: {
-      type: "sst.cloudflare.StaticSite"
-      url: string
-    }
-    EMAILOCTOPUS_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_PRIVATE_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_ID_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_SECRET_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GOOGLE_CLIENT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    HONEYCOMB_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2AccessKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2SecretKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_SECRET_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_WEBHOOK_SECRET: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    Web: {
-      type: "sst.cloudflare.Astro"
-      url: string
-    }
-    ZEN_MODELS1: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS2: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS3: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS4: {
-      type: "sst.sst.Secret"
-      value: string
+    "ADMIN_SECRET": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AUTH_API_URL": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "AWS_SES_ACCESS_KEY_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AWS_SES_SECRET_ACCESS_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_API_TOKEN": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_DEFAULT_ACCOUNT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Console": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "Database": {
+      "database": string
+      "host": string
+      "password": string
+      "port": number
+      "type": "sst.sst.Linkable"
+      "username": string
+    }
+    "Desktop": {
+      "type": "sst.cloudflare.StaticSite"
+      "url": string
+    }
+    "EMAILOCTOPUS_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Enterprise": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "GITHUB_APP_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_APP_PRIVATE_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_ID_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_SECRET_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GOOGLE_CLIENT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "HONEYCOMB_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2AccessKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2SecretKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_SECRET_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_WEBHOOK_SECRET": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "Web": {
+      "type": "sst.cloudflare.Astro"
+      "url": string
+    }
+    "ZEN_MODELS1": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS2": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS3": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS4": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
   }
   }
 }
 }
-// cloudflare
-import * as cloudflare from "@cloudflare/workers-types"
+// cloudflare 
+import * as cloudflare from "@cloudflare/workers-types";
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    Api: cloudflare.Service
-    AuthApi: cloudflare.Service
-    AuthStorage: cloudflare.KVNamespace
-    Bucket: cloudflare.R2Bucket
-    ConsoleData: cloudflare.R2Bucket
-    EnterpriseStorage: cloudflare.R2Bucket
-    GatewayKv: cloudflare.KVNamespace
-    LogProcessor: cloudflare.Service
+    "Api": cloudflare.Service
+    "AuthApi": cloudflare.Service
+    "AuthStorage": cloudflare.KVNamespace
+    "Bucket": cloudflare.R2Bucket
+    "ConsoleData": cloudflare.R2Bucket
+    "EnterpriseStorage": cloudflare.R2Bucket
+    "GatewayKv": cloudflare.KVNamespace
+    "LogProcessor": cloudflare.Service
+    "ZenData": cloudflare.R2Bucket
   }
   }
 }
 }
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 119 - 114
packages/console/function/sst-env.d.ts

@@ -6,126 +6,131 @@
 import "sst"
 import "sst"
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    ADMIN_SECRET: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AUTH_API_URL: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    AWS_SES_ACCESS_KEY_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AWS_SES_SECRET_ACCESS_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_API_TOKEN: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_DEFAULT_ACCOUNT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    Console: {
-      type: "sst.cloudflare.SolidStart"
-      url: string
-    }
-    Database: {
-      database: string
-      host: string
-      password: string
-      port: number
-      type: "sst.sst.Linkable"
-      username: string
-    }
-    Desktop: {
-      type: "sst.cloudflare.StaticSite"
-      url: string
-    }
-    EMAILOCTOPUS_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_PRIVATE_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_ID_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_SECRET_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GOOGLE_CLIENT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    HONEYCOMB_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2AccessKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2SecretKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_SECRET_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_WEBHOOK_SECRET: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    Web: {
-      type: "sst.cloudflare.Astro"
-      url: string
-    }
-    ZEN_MODELS1: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS2: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS3: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS4: {
-      type: "sst.sst.Secret"
-      value: string
+    "ADMIN_SECRET": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AUTH_API_URL": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "AWS_SES_ACCESS_KEY_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AWS_SES_SECRET_ACCESS_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_API_TOKEN": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_DEFAULT_ACCOUNT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Console": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "Database": {
+      "database": string
+      "host": string
+      "password": string
+      "port": number
+      "type": "sst.sst.Linkable"
+      "username": string
+    }
+    "Desktop": {
+      "type": "sst.cloudflare.StaticSite"
+      "url": string
+    }
+    "EMAILOCTOPUS_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Enterprise": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "GITHUB_APP_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_APP_PRIVATE_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_ID_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_SECRET_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GOOGLE_CLIENT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "HONEYCOMB_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2AccessKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2SecretKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_SECRET_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_WEBHOOK_SECRET": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "Web": {
+      "type": "sst.cloudflare.Astro"
+      "url": string
+    }
+    "ZEN_MODELS1": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS2": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS3": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS4": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
   }
   }
 }
 }
-// cloudflare
-import * as cloudflare from "@cloudflare/workers-types"
+// cloudflare 
+import * as cloudflare from "@cloudflare/workers-types";
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    Api: cloudflare.Service
-    AuthApi: cloudflare.Service
-    AuthStorage: cloudflare.KVNamespace
-    Bucket: cloudflare.R2Bucket
-    ConsoleData: cloudflare.R2Bucket
-    EnterpriseStorage: cloudflare.R2Bucket
-    GatewayKv: cloudflare.KVNamespace
-    LogProcessor: cloudflare.Service
+    "Api": cloudflare.Service
+    "AuthApi": cloudflare.Service
+    "AuthStorage": cloudflare.KVNamespace
+    "Bucket": cloudflare.R2Bucket
+    "ConsoleData": cloudflare.R2Bucket
+    "EnterpriseStorage": cloudflare.R2Bucket
+    "GatewayKv": cloudflare.KVNamespace
+    "LogProcessor": cloudflare.Service
+    "ZenData": cloudflare.R2Bucket
   }
   }
 }
 }
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/console/mail/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../../sst-env.d.ts" />
 /// <reference path="../../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 2 - 2
packages/console/resource/resource.node.ts

@@ -2,8 +2,8 @@ import type { KVNamespaceListOptions, KVNamespaceListResult, KVNamespacePutOptio
 import { Resource as ResourceBase } from "sst"
 import { Resource as ResourceBase } from "sst"
 import Cloudflare from "cloudflare"
 import Cloudflare from "cloudflare"
 
 
-export const waitUntil = async (fn: () => Promise<void>) => {
-  await fn()
+export const waitUntil = async (promise: Promise<any>) => {
+  await promise
 }
 }
 
 
 export const Resource = new Proxy(
 export const Resource = new Proxy(

+ 119 - 114
packages/console/resource/sst-env.d.ts

@@ -6,126 +6,131 @@
 import "sst"
 import "sst"
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    ADMIN_SECRET: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AUTH_API_URL: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    AWS_SES_ACCESS_KEY_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AWS_SES_SECRET_ACCESS_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_API_TOKEN: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_DEFAULT_ACCOUNT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    Console: {
-      type: "sst.cloudflare.SolidStart"
-      url: string
-    }
-    Database: {
-      database: string
-      host: string
-      password: string
-      port: number
-      type: "sst.sst.Linkable"
-      username: string
-    }
-    Desktop: {
-      type: "sst.cloudflare.StaticSite"
-      url: string
-    }
-    EMAILOCTOPUS_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_PRIVATE_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_ID_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_SECRET_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GOOGLE_CLIENT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    HONEYCOMB_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2AccessKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2SecretKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_SECRET_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_WEBHOOK_SECRET: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    Web: {
-      type: "sst.cloudflare.Astro"
-      url: string
-    }
-    ZEN_MODELS1: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS2: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS3: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS4: {
-      type: "sst.sst.Secret"
-      value: string
+    "ADMIN_SECRET": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AUTH_API_URL": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "AWS_SES_ACCESS_KEY_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AWS_SES_SECRET_ACCESS_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_API_TOKEN": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_DEFAULT_ACCOUNT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Console": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "Database": {
+      "database": string
+      "host": string
+      "password": string
+      "port": number
+      "type": "sst.sst.Linkable"
+      "username": string
+    }
+    "Desktop": {
+      "type": "sst.cloudflare.StaticSite"
+      "url": string
+    }
+    "EMAILOCTOPUS_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Enterprise": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "GITHUB_APP_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_APP_PRIVATE_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_ID_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_SECRET_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GOOGLE_CLIENT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "HONEYCOMB_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2AccessKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2SecretKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_SECRET_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_WEBHOOK_SECRET": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "Web": {
+      "type": "sst.cloudflare.Astro"
+      "url": string
+    }
+    "ZEN_MODELS1": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS2": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS3": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS4": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
   }
   }
 }
 }
-// cloudflare
-import * as cloudflare from "@cloudflare/workers-types"
+// cloudflare 
+import * as cloudflare from "@cloudflare/workers-types";
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    Api: cloudflare.Service
-    AuthApi: cloudflare.Service
-    AuthStorage: cloudflare.KVNamespace
-    Bucket: cloudflare.R2Bucket
-    ConsoleData: cloudflare.R2Bucket
-    EnterpriseStorage: cloudflare.R2Bucket
-    GatewayKv: cloudflare.KVNamespace
-    LogProcessor: cloudflare.Service
+    "Api": cloudflare.Service
+    "AuthApi": cloudflare.Service
+    "AuthStorage": cloudflare.KVNamespace
+    "Bucket": cloudflare.R2Bucket
+    "ConsoleData": cloudflare.R2Bucket
+    "EnterpriseStorage": cloudflare.R2Bucket
+    "GatewayKv": cloudflare.KVNamespace
+    "LogProcessor": cloudflare.Service
+    "ZenData": cloudflare.R2Bucket
   }
   }
 }
 }
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 4 - 2
packages/desktop/src/sst-env.d.ts

@@ -2,7 +2,9 @@
 /* tslint:disable */
 /* tslint:disable */
 /* eslint-disable */
 /* eslint-disable */
 /// <reference types="vite/client" />
 /// <reference types="vite/client" />
-interface ImportMetaEnv {}
+interface ImportMetaEnv {
+
+}
 interface ImportMeta {
 interface ImportMeta {
   readonly env: ImportMetaEnv
   readonly env: ImportMetaEnv
-}
+}

+ 1 - 1
packages/desktop/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 119 - 114
packages/enterprise/sst-env.d.ts

@@ -6,126 +6,131 @@
 import "sst"
 import "sst"
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    ADMIN_SECRET: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AUTH_API_URL: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    AWS_SES_ACCESS_KEY_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AWS_SES_SECRET_ACCESS_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_API_TOKEN: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_DEFAULT_ACCOUNT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    Console: {
-      type: "sst.cloudflare.SolidStart"
-      url: string
-    }
-    Database: {
-      database: string
-      host: string
-      password: string
-      port: number
-      type: "sst.sst.Linkable"
-      username: string
-    }
-    Desktop: {
-      type: "sst.cloudflare.StaticSite"
-      url: string
-    }
-    EMAILOCTOPUS_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_PRIVATE_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_ID_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_SECRET_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GOOGLE_CLIENT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    HONEYCOMB_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2AccessKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2SecretKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_SECRET_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_WEBHOOK_SECRET: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    Web: {
-      type: "sst.cloudflare.Astro"
-      url: string
-    }
-    ZEN_MODELS1: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS2: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS3: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS4: {
-      type: "sst.sst.Secret"
-      value: string
+    "ADMIN_SECRET": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AUTH_API_URL": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "AWS_SES_ACCESS_KEY_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AWS_SES_SECRET_ACCESS_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_API_TOKEN": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_DEFAULT_ACCOUNT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Console": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "Database": {
+      "database": string
+      "host": string
+      "password": string
+      "port": number
+      "type": "sst.sst.Linkable"
+      "username": string
+    }
+    "Desktop": {
+      "type": "sst.cloudflare.StaticSite"
+      "url": string
+    }
+    "EMAILOCTOPUS_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Enterprise": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "GITHUB_APP_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_APP_PRIVATE_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_ID_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_SECRET_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GOOGLE_CLIENT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "HONEYCOMB_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2AccessKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2SecretKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_SECRET_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_WEBHOOK_SECRET": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "Web": {
+      "type": "sst.cloudflare.Astro"
+      "url": string
+    }
+    "ZEN_MODELS1": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS2": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS3": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS4": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
   }
   }
 }
 }
-// cloudflare
-import * as cloudflare from "@cloudflare/workers-types"
+// cloudflare 
+import * as cloudflare from "@cloudflare/workers-types";
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    Api: cloudflare.Service
-    AuthApi: cloudflare.Service
-    AuthStorage: cloudflare.KVNamespace
-    Bucket: cloudflare.R2Bucket
-    ConsoleData: cloudflare.R2Bucket
-    EnterpriseStorage: cloudflare.R2Bucket
-    GatewayKv: cloudflare.KVNamespace
-    LogProcessor: cloudflare.Service
+    "Api": cloudflare.Service
+    "AuthApi": cloudflare.Service
+    "AuthStorage": cloudflare.KVNamespace
+    "Bucket": cloudflare.R2Bucket
+    "ConsoleData": cloudflare.R2Bucket
+    "EnterpriseStorage": cloudflare.R2Bucket
+    "GatewayKv": cloudflare.KVNamespace
+    "LogProcessor": cloudflare.Service
+    "ZenData": cloudflare.R2Bucket
   }
   }
 }
 }
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 119 - 114
packages/function/sst-env.d.ts

@@ -6,126 +6,131 @@
 import "sst"
 import "sst"
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    ADMIN_SECRET: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AUTH_API_URL: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    AWS_SES_ACCESS_KEY_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AWS_SES_SECRET_ACCESS_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_API_TOKEN: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    CLOUDFLARE_DEFAULT_ACCOUNT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    Console: {
-      type: "sst.cloudflare.SolidStart"
-      url: string
-    }
-    Database: {
-      database: string
-      host: string
-      password: string
-      port: number
-      type: "sst.sst.Linkable"
-      username: string
-    }
-    Desktop: {
-      type: "sst.cloudflare.StaticSite"
-      url: string
-    }
-    EMAILOCTOPUS_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_APP_PRIVATE_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_ID_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GITHUB_CLIENT_SECRET_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    GOOGLE_CLIENT_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    HONEYCOMB_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2AccessKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    R2SecretKey: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_SECRET_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    STRIPE_WEBHOOK_SECRET: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    Web: {
-      type: "sst.cloudflare.Astro"
-      url: string
-    }
-    ZEN_MODELS1: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS2: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS3: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    ZEN_MODELS4: {
-      type: "sst.sst.Secret"
-      value: string
+    "ADMIN_SECRET": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AUTH_API_URL": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "AWS_SES_ACCESS_KEY_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AWS_SES_SECRET_ACCESS_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_API_TOKEN": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_DEFAULT_ACCOUNT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Console": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "Database": {
+      "database": string
+      "host": string
+      "password": string
+      "port": number
+      "type": "sst.sst.Linkable"
+      "username": string
+    }
+    "Desktop": {
+      "type": "sst.cloudflare.StaticSite"
+      "url": string
+    }
+    "EMAILOCTOPUS_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Enterprise": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
+    }
+    "GITHUB_APP_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_APP_PRIVATE_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_ID_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GITHUB_CLIENT_SECRET_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "GOOGLE_CLIENT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "HONEYCOMB_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2AccessKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "R2SecretKey": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_SECRET_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "STRIPE_WEBHOOK_SECRET": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "Web": {
+      "type": "sst.cloudflare.Astro"
+      "url": string
+    }
+    "ZEN_MODELS1": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS2": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS3": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "ZEN_MODELS4": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
   }
   }
 }
 }
-// cloudflare
-import * as cloudflare from "@cloudflare/workers-types"
+// cloudflare 
+import * as cloudflare from "@cloudflare/workers-types";
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    Api: cloudflare.Service
-    AuthApi: cloudflare.Service
-    AuthStorage: cloudflare.KVNamespace
-    Bucket: cloudflare.R2Bucket
-    ConsoleData: cloudflare.R2Bucket
-    EnterpriseStorage: cloudflare.R2Bucket
-    GatewayKv: cloudflare.KVNamespace
-    LogProcessor: cloudflare.Service
+    "Api": cloudflare.Service
+    "AuthApi": cloudflare.Service
+    "AuthStorage": cloudflare.KVNamespace
+    "Bucket": cloudflare.R2Bucket
+    "ConsoleData": cloudflare.R2Bucket
+    "EnterpriseStorage": cloudflare.R2Bucket
+    "GatewayKv": cloudflare.KVNamespace
+    "LogProcessor": cloudflare.Service
+    "ZenData": cloudflare.R2Bucket
   }
   }
 }
 }
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 0
packages/opencode/src/session/prompt.ts

@@ -544,6 +544,7 @@ export namespace SessionPrompt {
           headers: {
           headers: {
             ...(model.providerID.startsWith("opencode")
             ...(model.providerID.startsWith("opencode")
               ? {
               ? {
+                  "x-opencode-project": Instance.project.id,
                   "x-opencode-session": sessionID,
                   "x-opencode-session": sessionID,
                   "x-opencode-request": lastUser.id,
                   "x-opencode-request": lastUser.id,
                 }
                 }

+ 1 - 1
packages/opencode/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/plugin/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/script/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/sdk/js/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../../sst-env.d.ts" />
 /// <reference path="../../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 3 - 0
packages/sdk/python/sst.pyi

@@ -111,4 +111,7 @@ class Resource:
     class ZEN_MODELS4:
     class ZEN_MODELS4:
         type: str
         type: str
         value: str
         value: str
+    class ZenData:
+        name: str
+        type: str
 
 

+ 1 - 1
packages/slack/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/tauri/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/ui/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/util/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
packages/web/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 1 - 1
sdks/vscode/sst-env.d.ts

@@ -6,4 +6,4 @@
 /// <reference path="../../sst-env.d.ts" />
 /// <reference path="../../sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}

+ 119 - 111
sst-env.d.ts

@@ -5,144 +5,152 @@
 
 
 declare module "sst" {
 declare module "sst" {
   export interface Resource {
   export interface Resource {
-    ADMIN_SECRET: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AUTH_API_URL: {
-      type: "sst.sst.Linkable"
-      value: string
-    }
-    AWS_SES_ACCESS_KEY_ID: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    AWS_SES_SECRET_ACCESS_KEY: {
-      type: "sst.sst.Secret"
-      value: string
-    }
-    Api: {
-      type: "sst.cloudflare.Worker"
-      url: string
-    }
-    AuthApi: {
-      type: "sst.cloudflare.Worker"
-      url: string
-    }
-    AuthStorage: {
-      namespaceId: string
-      type: "sst.cloudflare.Kv"
-    }
-    Bucket: {
-      name: string
-      type: "sst.cloudflare.Bucket"
-    }
-    CLOUDFLARE_API_TOKEN: {
-      type: "sst.sst.Secret"
-      value: string
+    "ADMIN_SECRET": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AUTH_API_URL": {
+      "type": "sst.sst.Linkable"
+      "value": string
+    }
+    "AWS_SES_ACCESS_KEY_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "AWS_SES_SECRET_ACCESS_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Api": {
+      "type": "sst.cloudflare.Worker"
+      "url": string
+    }
+    "AuthApi": {
+      "type": "sst.cloudflare.Worker"
+      "url": string
+    }
+    "AuthStorage": {
+      "namespaceId": string
+      "type": "sst.cloudflare.Kv"
+    }
+    "Bucket": {
+      "name": string
+      "type": "sst.cloudflare.Bucket"
+    }
+    "CLOUDFLARE_API_TOKEN": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "CLOUDFLARE_DEFAULT_ACCOUNT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
+    }
+    "Console": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
     }
     }
-    CLOUDFLARE_DEFAULT_ACCOUNT_ID: {
-      type: "sst.sst.Secret"
-      value: string
+    "ConsoleData": {
+      "name": string
+      "type": "sst.cloudflare.Bucket"
     }
     }
-    Console: {
-      type: "sst.cloudflare.SolidStart"
-      url: string
+    "Database": {
+      "database": string
+      "host": string
+      "password": string
+      "port": number
+      "type": "sst.sst.Linkable"
+      "username": string
     }
     }
-    ConsoleData: {
-      name: string
-      type: "sst.cloudflare.Bucket"
+    "Desktop": {
+      "type": "sst.cloudflare.StaticSite"
+      "url": string
     }
     }
-    Database: {
-      database: string
-      host: string
-      password: string
-      port: number
-      type: "sst.sst.Linkable"
-      username: string
+    "EMAILOCTOPUS_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    Desktop: {
-      type: "sst.cloudflare.StaticSite"
-      url: string
+    "Enterprise": {
+      "type": "sst.cloudflare.SolidStart"
+      "url": string
     }
     }
-    EMAILOCTOPUS_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
+    "EnterpriseStorage": {
+      "name": string
+      "type": "sst.cloudflare.Bucket"
     }
     }
-    EnterpriseStorage: {
-      name: string
-      type: "sst.cloudflare.Bucket"
+    "GITHUB_APP_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    GITHUB_APP_ID: {
-      type: "sst.sst.Secret"
-      value: string
+    "GITHUB_APP_PRIVATE_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    GITHUB_APP_PRIVATE_KEY: {
-      type: "sst.sst.Secret"
-      value: string
+    "GITHUB_CLIENT_ID_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    GITHUB_CLIENT_ID_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
+    "GITHUB_CLIENT_SECRET_CONSOLE": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    GITHUB_CLIENT_SECRET_CONSOLE: {
-      type: "sst.sst.Secret"
-      value: string
+    "GOOGLE_CLIENT_ID": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    GOOGLE_CLIENT_ID: {
-      type: "sst.sst.Secret"
-      value: string
+    "GatewayKv": {
+      "namespaceId": string
+      "type": "sst.cloudflare.Kv"
     }
     }
-    GatewayKv: {
-      namespaceId: string
-      type: "sst.cloudflare.Kv"
+    "HONEYCOMB_API_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    HONEYCOMB_API_KEY: {
-      type: "sst.sst.Secret"
-      value: string
+    "LogProcessor": {
+      "type": "sst.cloudflare.Worker"
     }
     }
-    LogProcessor: {
-      type: "sst.cloudflare.Worker"
+    "R2AccessKey": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    R2AccessKey: {
-      type: "sst.sst.Secret"
-      value: string
+    "R2SecretKey": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    R2SecretKey: {
-      type: "sst.sst.Secret"
-      value: string
+    "STRIPE_SECRET_KEY": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    STRIPE_SECRET_KEY: {
-      type: "sst.sst.Secret"
-      value: string
+    "STRIPE_WEBHOOK_SECRET": {
+      "type": "sst.sst.Linkable"
+      "value": string
     }
     }
-    STRIPE_WEBHOOK_SECRET: {
-      type: "sst.sst.Linkable"
-      value: string
+    "Web": {
+      "type": "sst.cloudflare.Astro"
+      "url": string
     }
     }
-    Web: {
-      type: "sst.cloudflare.Astro"
-      url: string
+    "ZEN_MODELS1": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    ZEN_MODELS1: {
-      type: "sst.sst.Secret"
-      value: string
+    "ZEN_MODELS2": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    ZEN_MODELS2: {
-      type: "sst.sst.Secret"
-      value: string
+    "ZEN_MODELS3": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    ZEN_MODELS3: {
-      type: "sst.sst.Secret"
-      value: string
+    "ZEN_MODELS4": {
+      "type": "sst.sst.Secret"
+      "value": string
     }
     }
-    ZEN_MODELS4: {
-      type: "sst.sst.Secret"
-      value: string
+    "ZenData": {
+      "name": string
+      "type": "sst.cloudflare.Bucket"
     }
     }
   }
   }
 }
 }
 /// <reference path="sst-env.d.ts" />
 /// <reference path="sst-env.d.ts" />
 
 
 import "sst"
 import "sst"
-export {}
+export {}