From c265fa308a85c79b6caf11e80036bc77b78998c2 Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Wed, 13 May 2026 09:30:08 -0700 Subject: [PATCH] fix: double rate limits across the board (#3108) * fix: sqlite auto create path if missing * fix: double rate limits across the board --- src/backend/clients/database/SqliteDatabaseClient.ts | 8 ++++++-- src/backend/drivers/kv/KVStoreDriver.ts | 6 +++--- src/backend/drivers/subdomain/SubdomainDriver.ts | 6 +++--- src/backend/drivers/util/aiLimits.ts | 12 ++++++------ 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/backend/clients/database/SqliteDatabaseClient.ts b/src/backend/clients/database/SqliteDatabaseClient.ts index 1a0c258fe..6881b0aa4 100644 --- a/src/backend/clients/database/SqliteDatabaseClient.ts +++ b/src/backend/clients/database/SqliteDatabaseClient.ts @@ -17,8 +17,8 @@ * along with this program. If not, see . */ -import { existsSync, readFileSync } from 'fs'; -import { basename, extname, join, resolve } from 'path'; +import { existsSync, mkdirSync, readFileSync } from 'fs'; +import { basename, dirname, extname, join, resolve } from 'path'; import { createContext, runInContext } from 'vm'; import type { IConfig } from '../../types'; import { AbstractDatabaseClient, type WriteResult } from './DatabaseClient'; @@ -102,6 +102,10 @@ export class SqliteDatabaseClient extends AbstractDatabaseClient { : (this.config.database?.path ?? ':memory:'); const isNew = dbPath === ':memory:' || !existsSync(dbPath); + if (dbPath !== ':memory:') { + mkdirSync(dirname(dbPath), { recursive: true }); + } + this.db = new Database(dbPath); await this.runMigrations(isNew); diff --git a/src/backend/drivers/kv/KVStoreDriver.ts b/src/backend/drivers/kv/KVStoreDriver.ts index 6f059daa7..2af0fc9e2 100644 --- a/src/backend/drivers/kv/KVStoreDriver.ts +++ b/src/backend/drivers/kv/KVStoreDriver.ts @@ -51,11 +51,11 @@ export class KVStoreDriver extends PuterDriver { // (no subscription resolution) is not given the tighter cap. readonly rateLimit: DriverRateLimitConfig = { default: { - limit: 200, + limit: 400, window: 10_000, bySubscription: { - [DEFAULT_FREE_SUBSCRIPTION]: 200, - [DEFAULT_TEMP_SUBSCRIPTION]: 100, + [DEFAULT_FREE_SUBSCRIPTION]: 400, + [DEFAULT_TEMP_SUBSCRIPTION]: 200, }, }, }; diff --git a/src/backend/drivers/subdomain/SubdomainDriver.ts b/src/backend/drivers/subdomain/SubdomainDriver.ts index 2024adc94..c496e28bc 100644 --- a/src/backend/drivers/subdomain/SubdomainDriver.ts +++ b/src/backend/drivers/subdomain/SubdomainDriver.ts @@ -81,11 +81,11 @@ export class SubdomainDriver extends PuterDriver { // same shape — the three crud-q drivers share one envelope. readonly rateLimit: DriverRateLimitConfig = { default: { - limit: 100, + limit: 200, window: 10_000, bySubscription: { - [DEFAULT_FREE_SUBSCRIPTION]: 100, - [DEFAULT_TEMP_SUBSCRIPTION]: 50, + [DEFAULT_FREE_SUBSCRIPTION]: 200, + [DEFAULT_TEMP_SUBSCRIPTION]: 100, }, }, }; diff --git a/src/backend/drivers/util/aiLimits.ts b/src/backend/drivers/util/aiLimits.ts index 65ddcbc1a..614feebbd 100644 --- a/src/backend/drivers/util/aiLimits.ts +++ b/src/backend/drivers/util/aiLimits.ts @@ -42,21 +42,21 @@ import type { DriverConcurrentConfig, DriverRateLimitConfig } from '../meta.js'; export const AI_RATE_LIMIT: DriverRateLimitConfig = { default: { - limit: 100, // subscribed / paid tier + limit: 200, // subscribed / paid tier window: 10_000, bySubscription: { - [DEFAULT_FREE_SUBSCRIPTION]: 30, // verified registered user - [DEFAULT_TEMP_SUBSCRIPTION]: 20, // temp / anonymous-email user + [DEFAULT_FREE_SUBSCRIPTION]: 60, // verified registered user + [DEFAULT_TEMP_SUBSCRIPTION]: 40, // temp / anonymous-email user }, }, }; export const AI_CONCURRENT: DriverConcurrentConfig = { default: { - limit: 10, // subscribed / paid tier + limit: 20, // subscribed / paid tier bySubscription: { - [DEFAULT_FREE_SUBSCRIPTION]: 3, // verified registered user - [DEFAULT_TEMP_SUBSCRIPTION]: 2, // temp / anonymous-email user + [DEFAULT_FREE_SUBSCRIPTION]: 6, // verified registered user + [DEFAULT_TEMP_SUBSCRIPTION]: 4, // temp / anonymous-email user }, }, };