From 3819e5df23e75abfcf61bded07ed512f65c163f7 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sun, 4 Oct 2026 19:09:30 -0700 Subject: [PATCH] Allow verified Jeffrey uncapped hosted inference while metering usage --- system/backend/easel-policy.mjs | 5 +++++ system/netlify/functions/easel-credits.mjs | 3 ++- system/netlify/functions/easel-inference.mjs | 7 ++++--- system/tests/easel-braincells.test.mjs | 10 +++++++++- system/tests/easel-credits.test.mjs | 16 ++++++++++++++++ 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/system/backend/easel-policy.mjs b/system/backend/easel-policy.mjs index c783142bde..0bfca1156e 100644 --- a/system/backend/easel-policy.mjs +++ b/system/backend/easel-policy.mjs @@ -86,3 +86,8 @@ export function inferenceBudgetFailure(budget, handle) { } return null; } + +// Only the authenticated, verified owner account may run without a spending cap. +export function unlimitedBraincells(user, handle, adminSub = process.env.ADMIN_SUB) { + return !!adminSub && user?.sub === adminSub && user?.email_verified === true && handle === 'jeffrey'; +} diff --git a/system/netlify/functions/easel-credits.mjs b/system/netlify/functions/easel-credits.mjs index dfa0d90b2e..3788e8e81d 100644 --- a/system/netlify/functions/easel-credits.mjs +++ b/system/netlify/functions/easel-credits.mjs @@ -1,3 +1,4 @@ +import { unlimitedBraincells } from '../../backend/easel-policy.mjs'; // Read the signed-in handle's existing daily allowance; never a vendor balance. export function createHandler({ authorize, getHandleOrEmail, checkBudget, paidBalance = async () => 0, offer = null, creditPack = {amount: 500, credits: 1_000_000} }) { const reply = (statusCode, value) => ({ statusCode, headers: { @@ -23,7 +24,7 @@ export function createHandler({ authorize, getHandleOrEmail, checkBudget, paidBa const valueUSD = cells => Math.round(cells * creditPack.amount / creditPack.credits * 1e6) / 1e8; const dollars = { currency: "USD", free: valueUSD(budget.remaining), purchased: valueUSD(purchased), total: valueUSD(budget.remaining + purchased) }; - return reply(200, { dollars, purchased, offer, handle, unit: "braincells", remaining: budget.remaining, + return reply(200, { unlimited: unlimitedBraincells(user, handle.slice(1)), dollars, purchased, offer, handle, unit: "braincells", remaining: budget.remaining, used: budget.used, limit: budget.budget, day: budget.day, resetsAt: new Date(Date.parse(budget.day + "T00:00:00Z") + 86400000).toISOString() }); } catch { return reply(503, { error: "Allowance unavailable" }); } diff --git a/system/netlify/functions/easel-inference.mjs b/system/netlify/functions/easel-inference.mjs index 602d3ce27c..20da894376 100644 --- a/system/netlify/functions/easel-inference.mjs +++ b/system/netlify/functions/easel-inference.mjs @@ -32,7 +32,7 @@ import { stream } from "@netlify/functions"; import { relayInference } from "../../backend/easel-stream.mjs"; -import { EASEL_MODELS as MODELS, inferenceRequest, inferenceBudgetFailure } from "../../backend/easel-policy.mjs"; +import { EASEL_MODELS as MODELS, inferenceRequest, inferenceBudgetFailure, unlimitedBraincells } from "../../backend/easel-policy.mjs"; const OPENROUTER = "https://openrouter.ai/api/v1/messages"; @@ -68,7 +68,7 @@ export const handler = stream(async (event) => { } // Who is asking, and may they? - let handle = "", userSub = ""; + let handle = "", userSub = "", unlimited = false; try { const { authorize, getHandleOrEmail } = await import("../../backend/authorization.mjs"); const user = await Promise.race([ @@ -80,6 +80,7 @@ export const handler = stream(async (event) => { const handleOrEmail = await getHandleOrEmail(user.sub); if (typeof handleOrEmail === "string" && handleOrEmail.startsWith("@")) { handle = handleOrEmail.slice(1); + unlimited = unlimitedBraincells(user, handle); } } catch (error) { // Unlike /api/ask, a failed check here refuses rather than falling back: @@ -112,7 +113,7 @@ export const handler = stream(async (event) => { } catch (error) { console.log("🪙 easel: budget unavailable —", error.message); } - const budgetFailure = inferenceBudgetFailure(budget, handle); + const budgetFailure = unlimited ? null : inferenceBudgetFailure(budget, handle); let paidHold = null; if (budgetFailure) { if (budgetFailure.statusCode !== 429) return fail(budgetFailure.statusCode, budgetFailure.message); diff --git a/system/tests/easel-braincells.test.mjs b/system/tests/easel-braincells.test.mjs index 328effdd40..4ede69fb64 100644 --- a/system/tests/easel-braincells.test.mjs +++ b/system/tests/easel-braincells.test.mjs @@ -3,7 +3,7 @@ import test from 'node:test'; import assert from 'node:assert/strict'; import {authorizePaidRequest,braincellRate,braincellsFromCost,BRAINCELLS_PER_USD,CREDIT_PACK,DAILY_PAID_BRAINCELL_CAP,INFERENCE_MARKUP,OUT_OF_BRAINCELLS,reserve,settle,settleDurably,reconcileWallet,HOLD_LIFETIME_MS,usageBraincells} from '../backend/easel-paid-credits.mjs'; -import {DEFAULT_EASEL_MODEL,EASEL_MODELS,HOSTED_MAX_TOKENS,inferenceRequest} from '../backend/easel-policy.mjs'; +import {DEFAULT_EASEL_MODEL,EASEL_MODELS,HOSTED_MAX_TOKENS,inferenceRequest,unlimitedBraincells} from '../backend/easel-policy.mjs'; import {relayInference} from '../backend/easel-stream.mjs'; // Just enough of a Mongo collection for the wallet's conditional updates. @@ -208,3 +208,11 @@ test('stream cancellation aborts upstream and waits for one settlement',async()= await reader.read();await reader.cancel('user stopped'); assert.deepEqual([aborted,settled,cancelled],[1,1,1]); }); + +test('only verified Jeffrey matching the configured admin account has uncapped inference',()=>{ + const user={sub:'owner',email_verified:true}; + assert.equal(unlimitedBraincells(user,'jeffrey','owner'),true); + for(const [u,h,admin] of [[user,'tester','owner'],[user,'jeffrey','other'],[user,'jeffrey',''],[{sub:'owner'},'jeffrey','owner'],[{sub:'owner',email_verified:'true'},'jeffrey','owner'],[null,'jeffrey','owner']]) { + assert.equal(unlimitedBraincells(u,h,admin),false); + } +}); diff --git a/system/tests/easel-credits.test.mjs b/system/tests/easel-credits.test.mjs index df1a4f7725..a1bd1dc4c2 100644 --- a/system/tests/easel-credits.test.mjs +++ b/system/tests/easel-credits.test.mjs @@ -49,3 +49,19 @@ test("unknown allowances and malformed purchased balances never become dollar ba 401, ); }); + +test('uncapped status uses the verified account, never a claimed request handle', async () => { + const previous = process.env.ADMIN_SUB; + process.env.ADMIN_SUB = 'owner'; + try { + const owner = {...deps, authorize: async () => ({sub:'owner',email_verified:true}), getHandleOrEmail: async () => '@jeffrey'}; + const result = await createHandler(owner)(event); + assert.equal(JSON.parse(result.body).unlimited, true); + const spoof = await createHandler({...owner, authorize: async () => ({sub:'other',email_verified:true})})({...event, body:JSON.stringify({handle:'jeffrey',unlimited:true})}); + assert.equal(JSON.parse(spoof.body).unlimited, false); + const unverified = await createHandler({...owner, authorize: async () => ({sub:'owner',email_verified:false})})(event); + assert.equal(JSON.parse(unverified.body).unlimited, false); + } finally { + if (previous === undefined) delete process.env.ADMIN_SUB; else process.env.ADMIN_SUB = previous; + } +}); -- 2.51.2