This commit is contained in:
Frank
2026-05-07 22:55:48 -04:00
parent 6ff833a22b
commit db6a038829
8 changed files with 26 additions and 20 deletions

View File

@@ -13,13 +13,15 @@ class LimitError extends Error {
}
export class RateLimitError extends LimitError {}
export class FreeUsageLimitError extends LimitError {}
export class BlackUsageLimitError extends LimitError {}
class SubscriptionUsageLimitError extends LimitError {
type LimitName = "5 hour" | "weekly" | "monthly"
export class GoUsageLimitError extends LimitError {
workspace: string
constructor(message: string, workspace: string, retryAfter?: number) {
limitName: LimitName
constructor(message: string, workspace: string, limitName: LimitName, retryAfter?: number) {
super(message, retryAfter)
this.workspace = workspace
this.limitName = limitName
}
}
export class GoUsageLimitError extends SubscriptionUsageLimitError {}
export class BlackUsageLimitError extends SubscriptionUsageLimitError {}

View File

@@ -415,8 +415,11 @@ export async function handler(
message: error.message,
},
metadata:
error instanceof GoUsageLimitError || error instanceof BlackUsageLimitError
? { workspace: error.workspace }
error instanceof GoUsageLimitError
? {
workspace: error.workspace,
limitName: error.limitName,
}
: {},
}),
{ status: 429, headers },
@@ -710,7 +713,6 @@ export async function handler(
t("zen.api.error.subscriptionQuotaExceeded", {
retryIn: formatRetryTime(result.resetInSec),
}),
authInfo.workspaceID,
result.resetInSec,
)
}
@@ -729,7 +731,6 @@ export async function handler(
t("zen.api.error.subscriptionQuotaExceeded", {
retryIn: formatRetryTime(result.resetInSec),
}),
authInfo.workspaceID,
result.resetInSec,
)
}
@@ -757,6 +758,7 @@ export async function handler(
throw new GoUsageLimitError(
t("zen.api.error.subscriptionQuotaExceededUseFreeModels"),
authInfo.workspaceID,
"weekly",
result.resetInSec,
)
}
@@ -773,6 +775,7 @@ export async function handler(
throw new GoUsageLimitError(
t("zen.api.error.subscriptionQuotaExceededUseFreeModels"),
authInfo.workspaceID,
"monthly",
result.resetInSec,
)
}
@@ -789,6 +792,7 @@ export async function handler(
throw new GoUsageLimitError(
t("zen.api.error.subscriptionQuotaExceededUseFreeModels"),
authInfo.workspaceID,
"5 hour",
result.resetInSec,
)
}

View File

@@ -91,8 +91,8 @@ declare module "sst" {
"type": "sst.sst.Secret"
"value": string
}
"INCIDENT_WEBHOOK_SIGNING_SECRET": {
"type": "sst.sst.Secret"
"HoneycombWebhookSecret": {
"type": "random.index/randomPassword.RandomPassword"
"value": string
}
"R2AccessKey": {

View File

@@ -91,8 +91,8 @@ declare module "sst" {
"type": "sst.sst.Secret"
"value": string
}
"INCIDENT_WEBHOOK_SIGNING_SECRET": {
"type": "sst.sst.Secret"
"HoneycombWebhookSecret": {
"type": "random.index/randomPassword.RandomPassword"
"value": string
}
"R2AccessKey": {

View File

@@ -91,8 +91,8 @@ declare module "sst" {
"type": "sst.sst.Secret"
"value": string
}
"INCIDENT_WEBHOOK_SIGNING_SECRET": {
"type": "sst.sst.Secret"
"HoneycombWebhookSecret": {
"type": "random.index/randomPassword.RandomPassword"
"value": string
}
"R2AccessKey": {