Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 11x | /**
* Account Router — list, add, remove, refresh, update auth, mark exhausted, providers
*/
import { z } from 'zod';
import type { ProcedureBuilder } from '../trpc.js';
import { requireAccountRepository } from './_helpers.js';
import { listProviders as listProviderNames } from '../../agent/providers/registry.js';
export function accountProcedures(publicProcedure: ProcedureBuilder) {
return {
listAccounts: publicProcedure
.query(async ({ ctx }) => {
const repo = requireAccountRepository(ctx);
return repo.findAll();
}),
addAccount: publicProcedure
.input(z.object({
email: z.string().min(1),
provider: z.string().default('claude'),
configJson: z.string().optional(),
credentials: z.string().optional(),
}))
.mutation(async ({ ctx, input }) => {
const repo = requireAccountRepository(ctx);
return repo.create({
email: input.email,
provider: input.provider,
configJson: input.configJson,
credentials: input.credentials,
});
}),
removeAccount: publicProcedure
.input(z.object({ id: z.string().min(1) }))
.mutation(async ({ ctx, input }) => {
const repo = requireAccountRepository(ctx);
await repo.delete(input.id);
return { success: true };
}),
refreshAccounts: publicProcedure
.mutation(async ({ ctx }) => {
const repo = requireAccountRepository(ctx);
const cleared = await repo.clearExpiredExhaustion();
return { cleared };
}),
updateAccountAuth: publicProcedure
.input(z.object({
id: z.string().min(1),
configJson: z.string(),
credentials: z.string(),
}))
.mutation(async ({ ctx, input }) => {
const repo = requireAccountRepository(ctx);
return repo.updateAccountAuth(input.id, input.configJson, input.credentials);
}),
markAccountExhausted: publicProcedure
.input(z.object({
id: z.string().min(1),
until: z.string().datetime(),
}))
.mutation(async ({ ctx, input }) => {
const repo = requireAccountRepository(ctx);
return repo.markExhausted(input.id, new Date(input.until));
}),
listProviderNames: publicProcedure
.query(() => {
return listProviderNames();
}),
};
}
|