AI Agent Tool DB Inventory
Auto-generated by
backend/scripts/inventory-ai-tool-writes.ts. Do not edit by hand. Re-run the script after any change underbackend/src/ai/tools/.
Why this exists
Layer-2 of the AI tool architectural cleanup. The script statically scans
every file under backend/src/ai/tools/**/*.ts and lists every Prisma
write, read, escape-hatch ($transaction / $queryRaw / etc.), and
client import. The result is the complete bypass surface — what the AI
agent panel touches directly today.
The punch list (files with WRITE or ESCAPE hits) is what Layer-3
extraction needs to migrate to domain/agentOps/* so the canonical
services own these invariants instead of the tools reimplementing them.
Summary
- Scanned files: 7
- Total hits: 37
- Mutating (
WRITE): 0 - Read (
findUnique/findMany/...): 33 - Escape-hatch (
$transaction/$queryRaw/...): 0 - Imports of the prisma client: 4
- Mutating (
- Files needing Layer-3 extraction: 0
Punch list (files with mutating DB access)
(none — every tool delegates to a domain service. Layer-3 work is done.)
Full hit list
| File | Line | Kind | Receiver | Entity | Method | Source |
|---|---|---|---|---|---|---|
src/ai/tools/accountTools.ts | 10 | IMPORT | prisma | (import) | (import) | import { prisma } from '../../services/database.js'; |
src/ai/tools/accountTools.ts | 30 | READ | prisma | user | findUnique | const user = await prisma.user.findUnique({ |
src/ai/tools/accountTools.ts | 43 | READ | prisma | order | aggregate | const pendingBets = await prisma.order.aggregate({ |
src/ai/tools/accountTools.ts | 133 | READ | prisma | user | findUnique | const userByWallet = await prisma.user.findUnique({ |
src/ai/tools/accountTools.ts | 152 | READ | prisma | user | findUnique | const targetUser = await prisma.user.findUnique({ |
src/ai/tools/accountTools.ts | 163 | READ | prisma | user | findUnique | const user = await prisma.user.findUnique({ |
src/ai/tools/adminTools.ts | 9 | IMPORT | prisma | (import) | (import) | import { prisma } from '../../services/database.js'; |
src/ai/tools/adminTools.ts | 77 | READ | prisma | user | findUnique | const targetUser = await prisma.user.findUnique({ |
src/ai/tools/adminTools.ts | 103 | READ | prisma | user | findUnique | const callerUser = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 35 | IMPORT | prisma | (import) | (import) | import { prisma } from '../../services/database.js'; |
src/ai/tools/agentTools.ts | 67 | READ | prisma | user | findUnique | const user = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 74 | READ | prisma | agent | findUnique | const agent = await prisma.agent.findUnique({ |
src/ai/tools/agentTools.ts | 133 | READ | prisma | user | findUnique | const exists = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 223 | READ | prisma | user | findMany | const players = await prisma.user.findMany({ |
src/ai/tools/agentTools.ts | 295 | READ | prisma | agent | findUnique | const rootAgent = await prisma.agent.findUnique({ |
src/ai/tools/agentTools.ts | 305 | READ | prisma | agent | findUnique | const a = await prisma.agent.findUnique({ |
src/ai/tools/agentTools.ts | 319 | READ | prisma | agent | findMany | const childAgents = await prisma.agent.findMany({ |
src/ai/tools/agentTools.ts | 329 | READ | prisma | user | findMany | const childPlayers = await prisma.user.findMany({ |
src/ai/tools/agentTools.ts | 351 | READ | prisma | user | findFirst | const selfUser = await prisma.user.findFirst({ |
src/ai/tools/agentTools.ts | 428 | READ | prisma | user | findMany | const players = await prisma.user.findMany({ |
src/ai/tools/agentTools.ts | 445 | READ | prisma | takeBalance | findMany | const takeRows = await prisma.takeBalance.findMany({ |
src/ai/tools/agentTools.ts | 539 | READ | prisma | v3ExposureLedger | findMany | const ledgerRows = await prisma.v3ExposureLedger.findMany({ |
src/ai/tools/agentTools.ts | 661 | READ | prisma | user | findMany | const players = await prisma.user.findMany({ |
src/ai/tools/agentTools.ts | 695 | READ | prisma | order | findMany | const orders = await prisma.order.findMany({ |
src/ai/tools/agentTools.ts | 797 | READ | prisma | user | findFirst | const player = await prisma.user.findFirst({ |
src/ai/tools/agentTools.ts | 994 | READ | prisma | user | findUnique | const player = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 1063 | READ | prisma | user | findMany | const players = await prisma.user.findMany({ |
src/ai/tools/agentTools.ts | 1081 | READ | prisma | commissionRecord | findMany | const records = await prisma.commissionRecord.findMany({ |
src/ai/tools/agentTools.ts | 1193 | READ | prisma | takeBalance | findUnique | const takeRow = await prisma.takeBalance.findUnique({ |
src/ai/tools/agentTools.ts | 1298 | READ | prisma | user | findUnique | const callerUser = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 1308 | READ | prisma | takeBalance | findUnique | const takeRow = await prisma.takeBalance.findUnique({ |
src/ai/tools/agentTools.ts | 1430 | READ | prisma | user | findUnique | const callerUser = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 1522 | READ | prisma | user | findUnique | const callerUser = await prisma.user.findUnique({ |
src/ai/tools/agentTools.ts | 1863 | READ | prisma | user | findMany | const downlinePlayers = await prisma.user.findMany({ |
src/ai/tools/betTools.ts | 11 | IMPORT | prisma | (import) | (import) | import { prisma } from '../../services/database.js'; |
src/ai/tools/betTools.ts | 169 | READ | prisma | user | findUnique | const user = await prisma.user.findUnique({ |
src/ai/tools/betTools.ts | 414 | READ | prisma | order | findMany | const orders = await prisma.order.findMany({ |