Files
zpan/src/lib/rpc.ts
T
agent-kanban[bot] 88916f4f03 feat: add agent oauth consent management UI (#541)
* feat: add agent oauth consent management UI

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth consent edge paths

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* fix: route agent oauth consent through rpc

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth consent rpc on workers

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth grant-use middleware

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

---------

Co-authored-by: Iris Tan <iris-tan@mails.agent-kanban.dev>
2026-07-29 16:52:17 -04:00

96 lines
4.5 KiB
TypeScript

import type {
AdminAuditRoute,
AdminInviteCodesRoute,
AdminOverviewRoute,
AdminQuotasRoute,
AdminSiteInvitationsRoute,
AdminStatsRoute,
AdminTeamsRoute,
AgentApiKeysRoute,
AgentOAuthGrantsRoute,
AnnouncementsRoute,
AuthedSharesRoute,
AuthProvidersRoute,
BackgroundJobsRoute,
BrandingAdminRoute,
CloudStoreRoute,
ConfigzRoute,
DownloaderSelfRoute,
DownloadersRoute,
DownloadTasksRoute,
EmailConfigRoute,
EventsRoute,
IhostConfigRoute,
IhostRoute,
ImageDomainProviderRoute,
LicensingAdminRoute,
LicensingRoute,
NotificationsRoute,
ObjectsRoute,
PublicSharesRoute,
PublicSiteInvitationsRoute,
PublicTeamsRoute,
SiteSettingsRoute,
StoragesRoute,
StorageUsageRoute,
SystemRoute,
TeamsRoute,
TrashRoute,
UserQuotasRoute,
UsersRoute,
} from '@server/app'
import { hc } from 'hono/client'
const opts = { init: { credentials: 'include' as RequestCredentials } }
const absoluteUrlBase = (path: string) => {
const origin = typeof window === 'undefined' ? 'http://localhost' : window.location.origin
return new URL(path, origin).toString()
}
export const objects = hc<ObjectsRoute>('/api/objects', opts)
export const downloadTasksApi = hc<DownloadTasksRoute>('/api/downloads/tasks', opts)
export const downloaderSelfApi = hc<DownloaderSelfRoute>('/api/downloads/downloaders', opts)
export const trash = hc<TrashRoute>('/api/trash', opts)
export const agentApiKeysApi = hc<AgentApiKeysRoute>('/api/workspaces', opts)
export const agentOAuthGrantsApi = hc<AgentOAuthGrantsRoute>('/api', opts)
export const storages = hc<StoragesRoute>('/api/site/storages', opts)
export const storageUsageApi = hc<StorageUsageRoute>('/api/storage', opts)
export const adminDownloadersApi = hc<DownloadersRoute>('/api/downloads/downloaders', opts)
// One users resource: self (/me/avatar), public profile (/:username), and admin management.
export const users = hc<UsersRoute>('/api/users', opts)
export const adminQuotas = hc<AdminQuotasRoute>('/api/quotas', opts)
export const adminTeams = hc<AdminTeamsRoute>('/api/teams', opts)
export const userQuotas = hc<UserQuotasRoute>('/api/quotas', opts)
export const cloudStoreApi = hc<CloudStoreRoute>('/api/store', opts)
export const system = hc<SystemRoute>('/api/site', opts)
export const configzApi = hc<ConfigzRoute>('/api/configz', opts)
export const siteSettingsApi = hc<SiteSettingsRoute>('/api/site/settings', opts)
// Admin auth-provider management; public provider summaries come from configz.
export const authProviders = hc<AuthProvidersRoute>('/api/site/auth-providers', opts)
export const inviteCodes = hc<AdminInviteCodesRoute>('/api/site/invite-codes', opts)
export const adminSiteInvitations = hc<AdminSiteInvitationsRoute>('/api/site/invitations', opts)
export const emailConfig = hc<EmailConfigRoute>('/api/site/settings/email', opts)
export const imageDomainProviderApi = hc<ImageDomainProviderRoute>('/api/site/settings/image-domains', opts)
export const teamsApi = hc<TeamsRoute>('/api/teams', opts)
export const publicTeamsApi = hc<PublicTeamsRoute>('/api/teams')
export const notificationsApi = hc<NotificationsRoute>('/api/notifications', opts)
// One announcements resource (user feed + admin management, gated per-route).
export const announcementsApi = hc<AnnouncementsRoute>('/api/site/announcements', opts)
export const backgroundJobsApi = hc<BackgroundJobsRoute>('/api/background-jobs', opts)
export const eventsUrlApi = hc<EventsRoute>(absoluteUrlBase('/api/events'), opts)
// Shares are a single resource; separate clients only because Hono RPC types
// are split across two sub-apps (public vs. authed) mounted at the same path.
export const publicSharesApi = hc<PublicSharesRoute>('/api/shares', opts)
export const authedSharesApi = hc<AuthedSharesRoute>('/api/shares', opts)
export const ihostConfigApi = hc<IhostConfigRoute>('/api/image-hosting/config', opts)
export const ihostApi = hc<IhostRoute>('/api/image-hosting', opts)
export const licensingApi = hc<LicensingRoute>('/api/site/licensing', opts)
export const licensingAdminApi = hc<LicensingAdminRoute>('/api/site/licensing', opts)
export const brandingAdminApi = hc<BrandingAdminRoute>('/api/site/settings/branding', opts)
export const adminAuditApi = hc<AdminAuditRoute>('/api/site/audit-events', opts)
export const adminOverviewApi = hc<AdminOverviewRoute>('/api/site/analytics', opts)
export const siteStatsApi = hc<AdminStatsRoute>('/api/site/analytics', opts)
export const publicSiteInvitations = hc<PublicSiteInvitationsRoute>('/api/site/invitations', opts)