Spaces:
Running
Running
Download apps/api/dist/admin/admin.router.js from Benaah/MicProtocol: direct link, hf CLI and curl.
- Browser
- Download file 30.9 kB
-
https://huggingface.co/spaces/Benaah/MicProtocol/resolve/main/apps/api/dist/admin/admin.router.js
- Command line
-
hf download hf://spaces/Benaah/MicProtocol/apps/api/dist/admin/admin.router.js
-
curl -L -o admin.router.js https://huggingface.co/spaces/Benaah/MicProtocol/resolve/main/apps/api/dist/admin/admin.router.js
30.9 kB
| ; | |
| var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | |
| var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | |
| if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | |
| else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | |
| return c > 3 && r && Object.defineProperty(target, key, r), r; | |
| }; | |
| var __metadata = (this && this.__metadata) || function (k, v) { | |
| if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); | |
| }; | |
| var AdminRouter_1; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.AdminRouter = void 0; | |
| const common_1 = require("@nestjs/common"); | |
| const zod_1 = require("zod"); | |
| const trpc_init_1 = require("../trpc/trpc.init"); | |
| const shared_types_1 = require("@micprotocol/shared-types"); | |
| const admin_realtime_service_1 = require("./admin-realtime.service"); | |
| const admin_clip_scorer_service_1 = require("./admin-clip-scorer.service"); | |
| const admin_auth_service_1 = require("./admin-auth.service"); | |
| const admin_users_service_1 = require("./admin-users.service"); | |
| const admin_workspaces_service_1 = require("./admin-workspaces.service"); | |
| const admin_billing_service_1 = require("./admin-billing.service"); | |
| const admin_moderation_service_1 = require("./admin-moderation.service"); | |
| const admin_operations_service_1 = require("./admin-operations.service"); | |
| const admin_settings_service_1 = require("./admin-settings.service"); | |
| const admin_audit_service_1 = require("./admin-audit.service"); | |
| const admin_comms_service_1 = require("./admin-comms.service"); | |
| const admin_supervision_service_1 = require("./admin-supervision.service"); | |
| const cursorListSchema = zod_1.z.object({ | |
| cursor: zod_1.z.string().uuid().optional(), | |
| limit: zod_1.z.number().int().min(1).max(200).optional(), | |
| }); | |
| let AdminRouter = AdminRouter_1 = class AdminRouter { | |
| realtime; | |
| clipScorer; | |
| adminAuth; | |
| users; | |
| workspaces; | |
| billing; | |
| moderation; | |
| operations; | |
| settings; | |
| audit; | |
| comms; | |
| supervision; | |
| logger = new common_1.Logger(AdminRouter_1.name); | |
| constructor(realtime, clipScorer, adminAuth, users, workspaces, billing, moderation, operations, settings, audit, comms, supervision) { | |
| this.realtime = realtime; | |
| this.clipScorer = clipScorer; | |
| this.adminAuth = adminAuth; | |
| this.users = users; | |
| this.workspaces = workspaces; | |
| this.billing = billing; | |
| this.moderation = moderation; | |
| this.operations = operations; | |
| this.settings = settings; | |
| this.audit = audit; | |
| this.comms = comms; | |
| this.supervision = supervision; | |
| } | |
| get router() { | |
| return (0, trpc_init_1.router)({ | |
| realtime: (0, trpc_init_1.router)({ | |
| stats: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_READ).query(async () => this.realtime.getStats()), | |
| metrics: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_READ).query(async () => this.realtime.getMetrics()), | |
| traces: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_READ) | |
| .input(zod_1.z.object({ limit: zod_1.z.number().int().min(1).max(1000).optional() })) | |
| .query(async ({ input }) => this.realtime.getTraces(input.limit ?? 50)), | |
| }), | |
| clipScorer: (0, trpc_init_1.router)({ | |
| locks: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_LOCKS).query(async () => this.clipScorer.getLocks()), | |
| releaseLock: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_LOCKS) | |
| .input(zod_1.z.object({ key: zod_1.z.string() })) | |
| .mutation(async ({ input }) => this.clipScorer.forceReleaseLock(input.key)), | |
| scratch: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_HEALTH).query(async () => this.clipScorer.getScratchStorage()), | |
| }), | |
| aiEngines: (0, trpc_init_1.router)({ | |
| listEngines: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_READ) | |
| .input(zod_1.z.object({ includeMetrics: zod_1.z.boolean().optional() })) | |
| .query(async ({ input }) => { | |
| const locks = await this.clipScorer.getLocks(); | |
| const scratch = await this.clipScorer.getScratchStorage(); | |
| const usedGB = scratch.dirs.reduce((sum, d) => sum + d.bytes, 0) / (1024 * 1024 * 1024); | |
| return { | |
| items: [ | |
| { | |
| id: "clip-scorer", | |
| name: "CLIP Scorer", | |
| engineType: "ml-engine", | |
| status: locks.error ? "down" : "healthy", | |
| requestsPerSecond: 12.5, | |
| avgLatencyMs: 145.5, | |
| errorRate: 0.01, | |
| queueDepth: 0, | |
| jobsProcessed: 12450, | |
| jobsFailed: 23, | |
| scratchUsedGB: usedGB, | |
| }, | |
| ], | |
| }; | |
| }), | |
| clipScorerStatus: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_READ) | |
| .query(async () => { | |
| const locks = await this.clipScorer.getLocks(); | |
| const scratch = await this.clipScorer.getScratchStorage(); | |
| const usedGB = scratch.dirs.reduce((sum, d) => sum + d.bytes, 0) / (1024 * 1024 * 1024); | |
| return { | |
| status: locks.error ? "down" : "healthy", | |
| uptimeSeconds: 86400, | |
| jobsProcessed: 12450, | |
| jobsFailed: 23, | |
| avgLatencyMs: 145.5, | |
| queueDepth: 0, | |
| scoringAxes: [ | |
| { name: "Visual Relevance", weight: 0.4, enabled: true }, | |
| { name: "Audio Clarity", weight: 0.3, enabled: true }, | |
| { name: "Semantic Match", weight: 0.2, enabled: true }, | |
| { name: "Loudness Norm", weight: 0.1, enabled: false }, | |
| ], | |
| locks: locks.locks, | |
| storage: { | |
| usedGB, | |
| totalGB: 100, | |
| utilization: Math.round((usedGB / 100) * 100), | |
| }, | |
| }; | |
| }), | |
| }), | |
| users: (0, trpc_init_1.router)({ | |
| list: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_READ) | |
| .input(cursorListSchema.extend({ | |
| search: zod_1.z.string().max(200).optional(), | |
| role: zod_1.z.string().optional(), | |
| suspended: zod_1.z.boolean().optional(), | |
| })) | |
| .query(async ({ input }) => this.users.listUsers(input)), | |
| get: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_READ) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid() })) | |
| .query(async ({ input }) => this.users.getUser(input.userId)), | |
| suspend: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_SUSPEND) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid(), reason: zod_1.z.string().max(1000).optional().nullable() })) | |
| .mutation(async ({ input, ctx }) => this.users.suspendUser(input.userId, input.reason ?? null, ctx.userId)), | |
| reactivate: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_SUSPEND) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid() })) | |
| .mutation(async ({ input, ctx }) => this.users.reactivateUser(input.userId, ctx.userId)), | |
| revokeSessions: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_REVOKE_SESSIONS) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid(), exceptToken: zod_1.z.string().optional() })) | |
| .mutation(async ({ input, ctx }) => this.users.revokeSessions(input.userId, ctx.userId, input.exceptToken)), | |
| impersonate: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_IMPERSONATE) | |
| .input(zod_1.z.object({ | |
| userId: zod_1.z.string().uuid(), | |
| reason: zod_1.z.string().max(1000).optional(), | |
| ttlMinutes: zod_1.z.number().int().min(5).max(480).optional().default(60), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.users.impersonate(input.userId, ctx.userId, input.reason, input.ttlMinutes)), | |
| grantAdmin: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_GRANT_ADMIN) | |
| .input(zod_1.z.object({ | |
| userId: zod_1.z.string().uuid(), | |
| role: zod_1.z.nativeEnum(shared_types_1.AdminRole), | |
| permissions: zod_1.z.array(zod_1.z.string()).optional().nullable(), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.users.grantAdmin(input.userId, input.role, input.permissions ?? null, ctx.userId)), | |
| revokeAdmin: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_GRANT_ADMIN) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid() })) | |
| .mutation(async ({ input, ctx }) => this.users.revokeAdmin(input.userId, ctx.userId)), | |
| deleteUser: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_DELETE) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid(), anonymize: zod_1.z.boolean().optional().default(true) })) | |
| .mutation(async ({ input, ctx }) => this.users.deleteUser(input.userId, ctx.userId, input.anonymize)), | |
| addNote: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.USERS_NOTES) | |
| .input(zod_1.z.object({ userId: zod_1.z.string().uuid(), body: zod_1.z.string().min(1).max(5000) })) | |
| .mutation(async ({ input, ctx }) => this.users.addUserNote(input.userId, input.body, ctx.userId)), | |
| }), | |
| workspaces: (0, trpc_init_1.router)({ | |
| list: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_READ) | |
| .input(cursorListSchema.extend({ | |
| search: zod_1.z.string().max(200).optional(), | |
| suspended: zod_1.z.boolean().optional(), | |
| })) | |
| .query(async ({ input }) => this.workspaces.listWorkspaces(input)), | |
| get: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_READ) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid() })) | |
| .query(async ({ input }) => this.workspaces.getWorkspace(input.workspaceId)), | |
| suspend: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_SUSPEND) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid(), reason: zod_1.z.string().max(1000).optional().nullable() })) | |
| .mutation(async ({ input, ctx }) => this.workspaces.suspendWorkspace(input.workspaceId, input.reason ?? null, ctx.userId)), | |
| reactivate: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_SUSPEND) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid() })) | |
| .mutation(async ({ input, ctx }) => this.workspaces.reactivateWorkspace(input.workspaceId, ctx.userId)), | |
| overridePlan: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_PLAN) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid(), planId: zod_1.z.string().min(1) })) | |
| .mutation(async ({ input, ctx }) => this.workspaces.overridePlan(input.workspaceId, input.planId, ctx.userId)), | |
| setCredits: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_CREDITS) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid(), credits: zod_1.z.number() })) | |
| .mutation(async ({ input, ctx }) => this.workspaces.setCredits(input.workspaceId, input.credits, ctx.userId)), | |
| transferOwner: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_TRANSFER_OWNER) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid(), newOwnerUserId: zod_1.z.string().uuid() })) | |
| .mutation(async ({ input, ctx }) => this.workspaces.transferOwner(input.workspaceId, input.newOwnerUserId, ctx.userId)), | |
| addNote: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.WORKSPACES_NOTES) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid(), body: zod_1.z.string().min(1).max(5000) })) | |
| .mutation(async ({ input, ctx }) => this.workspaces.addWorkspaceNote(input.workspaceId, input.body, ctx.userId)), | |
| }), | |
| billing: (0, trpc_init_1.router)({ | |
| listSubscriptions: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.BILLING_READ) | |
| .query(async () => this.billing.listSubscriptions()), | |
| getWallet: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.BILLING_READ) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid() })) | |
| .query(async ({ input }) => this.billing.getWallet(input.workspaceId)), | |
| listWallets: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.BILLING_READ) | |
| .query(async () => this.billing.listWallets()), | |
| listTransactions: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.BILLING_READ) | |
| .input(zod_1.z.object({ walletId: zod_1.z.string().uuid(), limit: zod_1.z.number().int().min(1).max(200).optional().default(50) })) | |
| .query(async ({ input }) => this.billing.listTransactions(input.walletId, input.limit)), | |
| refund: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.BILLING_REFUND) | |
| .input(zod_1.z.object({ | |
| workspaceId: zod_1.z.string().uuid(), | |
| amount: zod_1.z.number().positive(), | |
| reference: zod_1.z.string().min(1), | |
| description: zod_1.z.string().max(1000).optional().nullable(), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.billing.refund(input.workspaceId, input.amount, input.reference, input.description ?? null, ctx.userId)), | |
| planOverride: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.BILLING_PLAN_OVERRIDE) | |
| .input(zod_1.z.object({ workspaceId: zod_1.z.string().uuid(), planId: zod_1.z.string().min(1) })) | |
| .mutation(async ({ input, ctx }) => this.billing.planOverride(input.workspaceId, input.planId, ctx.userId)), | |
| }), | |
| moderation: (0, trpc_init_1.router)({ | |
| listReports: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.MODERATION_READ) | |
| .input(cursorListSchema.extend({ | |
| status: zod_1.z.string().optional(), | |
| category: zod_1.z.string().optional(), | |
| targetType: zod_1.z.string().optional(), | |
| })) | |
| .query(async ({ input }) => this.moderation.listAbuseReports(input)), | |
| getReport: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.MODERATION_READ) | |
| .input(zod_1.z.object({ reportId: zod_1.z.string().uuid() })) | |
| .query(async ({ input }) => this.moderation.getAbuseReport(input.reportId)), | |
| resolve: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.MODERATION_RESOLVE) | |
| .input(zod_1.z.object({ | |
| reportId: zod_1.z.string().uuid(), | |
| resolution: zod_1.z.string().min(1).max(2000), | |
| status: zod_1.z.string().optional(), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.moderation.resolveReport(input.reportId, input.resolution, ctx.userId, input.status)), | |
| takedown: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.MODERATION_TAKEDOWN) | |
| .input(zod_1.z.object({ reportId: zod_1.z.string().uuid(), reason: zod_1.z.string().max(1000).optional() })) | |
| .mutation(async ({ input, ctx }) => this.moderation.takedown(input.reportId, ctx.userId, input.reason)), | |
| }), | |
| settings: (0, trpc_init_1.router)({ | |
| list: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SETTINGS_READ) | |
| .query(async () => this.settings.listSettings()), | |
| get: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SETTINGS_READ) | |
| .input(zod_1.z.object({ key: zod_1.z.string().min(1) })) | |
| .query(async ({ input }) => this.settings.getSetting(input.key)), | |
| upsert: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SETTINGS_WRITE) | |
| .input(zod_1.z.object({ | |
| key: zod_1.z.string().min(1), | |
| value: zod_1.z.unknown(), | |
| description: zod_1.z.string().max(1000).optional().nullable(), | |
| category: zod_1.z.string().min(1), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.settings.upsertSetting(input.key, input.value, input.description ?? null, input.category, ctx.userId)), | |
| delete: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SETTINGS_WRITE) | |
| .input(zod_1.z.object({ key: zod_1.z.string().min(1) })) | |
| .mutation(async ({ input, ctx }) => this.settings.deleteSetting(input.key, ctx.userId)), | |
| }), | |
| flags: (0, trpc_init_1.router)({ | |
| list: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.FLAGS_READ) | |
| .query(async () => this.settings.listFlags()), | |
| isEnabled: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.FLAGS_READ) | |
| .input(zod_1.z.object({ key: zod_1.z.string().min(1), workspaceId: zod_1.z.string().uuid().optional() })) | |
| .query(async ({ input }) => this.settings.isFlagEnabled(input.key, input.workspaceId)), | |
| upsert: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.FLAGS_WRITE) | |
| .input(zod_1.z.object({ | |
| key: zod_1.z.string().min(1), | |
| enabled: zod_1.z.boolean(), | |
| rolloutPercentage: zod_1.z.number().int().min(0).max(100), | |
| allowlistWorkspaceIds: zod_1.z.array(zod_1.z.string().uuid()).optional().default([]), | |
| description: zod_1.z.string().max(1000).optional().nullable(), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.settings.upsertFlag(input.key, input.enabled, input.rolloutPercentage, input.allowlistWorkspaceIds, input.description ?? null, ctx.userId)), | |
| delete: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.FLAGS_WRITE) | |
| .input(zod_1.z.object({ key: zod_1.z.string().min(1) })) | |
| .mutation(async ({ input, ctx }) => this.settings.deleteFlag(input.key, ctx.userId)), | |
| }), | |
| audit: (0, trpc_init_1.router)({ | |
| list: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.AUDIT_READ) | |
| .input(cursorListSchema.extend({ | |
| action: zod_1.z.string().optional(), | |
| entityType: zod_1.z.string().optional(), | |
| userId: zod_1.z.string().uuid().optional(), | |
| workspaceId: zod_1.z.string().uuid().optional(), | |
| startDate: zod_1.z.string().optional(), | |
| endDate: zod_1.z.string().optional(), | |
| search: zod_1.z.string().max(200).optional(), | |
| })) | |
| .query(async ({ input }) => this.audit.list(input)), | |
| verify: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.AUDIT_READ) | |
| .query(async () => this.audit.verify()), | |
| stats: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.AUDIT_READ) | |
| .query(async () => this.audit.stats()), | |
| export: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.AUDIT_EXPORT) | |
| .input(zod_1.z.object({ startDate: zod_1.z.string().optional(), endDate: zod_1.z.string().optional() })) | |
| .query(async ({ input, ctx }) => this.audit.export(input, ctx.userId)), | |
| getEntry: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.AUDIT_READ) | |
| .input(zod_1.z.object({ entryId: zod_1.z.string().uuid() })) | |
| .query(async ({ input }) => this.audit.getEntry(input.entryId)), | |
| }), | |
| comms: (0, trpc_init_1.router)({ | |
| list: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.ANNOUNCEMENTS_READ) | |
| .query(async () => this.comms.listAnnouncements()), | |
| create: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.ANNOUNCEMENTS_WRITE) | |
| .input(zod_1.z.object({ | |
| title: zod_1.z.string().min(1).max(200), | |
| body: zod_1.z.string().min(1).max(10_000), | |
| audience: zod_1.z.unknown(), | |
| severity: zod_1.z.string().min(1), | |
| status: zod_1.z.string().min(1), | |
| publishedAt: zod_1.z.string().datetime().optional().nullable(), | |
| expiresAt: zod_1.z.string().datetime().optional().nullable(), | |
| })) | |
| .mutation(async ({ input, ctx }) => this.comms.createAnnouncement(input.title, input.body, input.audience, input.severity, input.status, input.publishedAt ? new Date(input.publishedAt) : null, input.expiresAt ? new Date(input.expiresAt) : null, ctx.userId)), | |
| update: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.ANNOUNCEMENTS_WRITE) | |
| .input(zod_1.z.object({ | |
| id: zod_1.z.string().uuid(), | |
| title: zod_1.z.string().min(1).max(200).optional(), | |
| body: zod_1.z.string().min(1).max(10_000).optional(), | |
| audience: zod_1.z.unknown().optional(), | |
| severity: zod_1.z.string().min(1).optional(), | |
| status: zod_1.z.string().min(1).optional(), | |
| publishedAt: zod_1.z.string().datetime().optional().nullable(), | |
| expiresAt: zod_1.z.string().datetime().optional().nullable(), | |
| })) | |
| .mutation(async ({ input, ctx }) => { | |
| const { id, ...patch } = input; | |
| return this.comms.updateAnnouncement(id, patch, ctx.userId); | |
| }), | |
| archive: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.ANNOUNCEMENTS_WRITE) | |
| .input(zod_1.z.object({ id: zod_1.z.string().uuid() })) | |
| .mutation(async ({ input, ctx }) => this.comms.archiveAnnouncement(input.id, ctx.userId)), | |
| }), | |
| supervision: (0, trpc_init_1.router)({ | |
| run: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SUPERVISION_RUN) | |
| .input(zod_1.z.object({ kind: zod_1.z.string().optional() })) | |
| .query(async ({ input, ctx }) => this.supervision.runSupervision(input.kind ?? "other", ctx.userId)), | |
| listRuns: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SUPERVISION_READ) | |
| .query(async () => this.supervision.listRuns()), | |
| listFindings: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SUPERVISION_READ) | |
| .input(zod_1.z.object({ runId: zod_1.z.string().uuid().optional(), status: zod_1.z.string().optional() })) | |
| .query(async ({ input }) => this.supervision.listFindings(input.runId, input.status)), | |
| acknowledge: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SUPERVISION_RUN) | |
| .input(zod_1.z.object({ findingId: zod_1.z.string().uuid(), assignedToId: zod_1.z.string().uuid().optional() })) | |
| .mutation(async ({ input, ctx }) => this.supervision.acknowledgeFinding(input.findingId, input.assignedToId ?? ctx.userId)), | |
| resolve: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.SUPERVISION_RUN) | |
| .input(zod_1.z.object({ findingId: zod_1.z.string().uuid() })) | |
| .mutation(async ({ input }) => this.supervision.resolveFinding(input.findingId)), | |
| }), | |
| operations: (0, trpc_init_1.router)({ | |
| queueHealth: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_READ) | |
| .query(async () => this.operations.getQueueHealth()), | |
| queueJobs: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_QUEUES) | |
| .input(zod_1.z.object({ | |
| queue: zod_1.z.string(), | |
| type: zod_1.z.enum(["waiting", "active", "failed", "completed", "delayed"]), | |
| limit: zod_1.z.number().int().min(1).max(200).optional().default(50), | |
| })) | |
| .query(async ({ input }) => this.operations.getQueueJobs(input.queue, input.type, input.limit)), | |
| retryJob: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_RETRY_JOBS) | |
| .input(zod_1.z.object({ queue: zod_1.z.string(), jobId: zod_1.z.string() })) | |
| .mutation(async ({ input, ctx }) => this.operations.retryJob(input.queue, input.jobId, ctx.userId)), | |
| purgeFailed: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_PURGE_JOBS) | |
| .input(zod_1.z.object({ queue: zod_1.z.string() })) | |
| .mutation(async ({ input, ctx }) => this.operations.purgeFailedJobs(input.queue, ctx.userId)), | |
| getLocks: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_LOCKS) | |
| .input(zod_1.z.object({ pattern: zod_1.z.string().optional().default("lock:clip:*"), limit: zod_1.z.number().int().min(1).max(1000).optional().default(100) })) | |
| .query(async ({ input }) => this.operations.getLocks(input.pattern, input.limit)), | |
| releaseLock: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_LOCKS) | |
| .input(zod_1.z.object({ key: zod_1.z.string() })) | |
| .mutation(async ({ input, ctx }) => this.operations.releaseLock(input.key, ctx.userId)), | |
| systemHealth: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_HEALTH) | |
| .query(async () => this.operations.getSystemHealth()), | |
| setMaintenanceMode: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_MAINTENANCE) | |
| .input(zod_1.z.object({ enabled: zod_1.z.boolean() })) | |
| .mutation(async ({ input, ctx }) => this.operations.setMaintenanceMode(input.enabled, ctx.userId)), | |
| flushCache: (0, trpc_init_1.adminPermissionProcedure)(shared_types_1.AdminPermission.OPS_CACHE) | |
| .input(zod_1.z.object({ pattern: zod_1.z.string().optional().default("*") })) | |
| .mutation(async ({ input, ctx }) => this.operations.flushCache(input.pattern, ctx.userId)), | |
| }), | |
| me: trpc_init_1.adminProcedure | |
| .query(async ({ ctx }) => { | |
| const context = await this.adminAuth.getAdminContext(ctx.userId); | |
| if (!context) | |
| return null; | |
| return { | |
| userId: context.userId, | |
| isAdmin: context.isAdmin, | |
| role: context.role, | |
| permissions: [...context.permissions], | |
| suspended: context.suspended, | |
| }; | |
| }), | |
| }); | |
| } | |
| }; | |
| exports.AdminRouter = AdminRouter; | |
| exports.AdminRouter = AdminRouter = AdminRouter_1 = __decorate([ | |
| (0, common_1.Injectable)(), | |
| __metadata("design:paramtypes", [admin_realtime_service_1.AdminRealtimeService, | |
| admin_clip_scorer_service_1.AdminClipScorerService, | |
| admin_auth_service_1.AdminAuthService, | |
| admin_users_service_1.AdminUsersService, | |
| admin_workspaces_service_1.AdminWorkspacesService, | |
| admin_billing_service_1.AdminBillingService, | |
| admin_moderation_service_1.AdminModerationService, | |
| admin_operations_service_1.AdminOperationsService, | |
| admin_settings_service_1.AdminSettingsService, | |
| admin_audit_service_1.AdminAuditService, | |
| admin_comms_service_1.AdminCommsService, | |
| admin_supervision_service_1.AdminSupervisionService]) | |
| ], AdminRouter); | |
| //# sourceMappingURL=admin.router.js.map |