[Story-1164] Audit Log UI — Humans + Agents pages, snapshot renderers, scope filters

Story 1164Epic None90 files · +9580/−2170

PR #293 · pramaan-io/pramaan-app · merged 2026-06-10

Why this matters

When a human and a robot share a badge, the record is already on the wrong side of the bench.

A legal audit log that never confuses a person with a machine.

Ship it — and the agent's filing is now a lawyer's filing.

The fix — One record, two reels — humans and agents never share a badge, and every entry carries its own typed snapshot.

How it flows

sequenceDiagram
  autonumber
  participant browser as Editor (browser)
  participant proxy as Production gate
  participant server as Sound stage (server)
  browser->>proxy: GET /api/internal/audit/human
  proxy->>server: forward with auth
  server-->>proxy: raw events
  proxy->>proxy: validate auditEventListResponseSchema
  proxy->>browser: typed events
  browser->>browser: useInfiniteQuery — next reel

Files changed (90)

File±
docs/walkthroughs/story-1164-walkthrough.html+331
messages/en.json+127
messages/hi.json+127
openapi/app-api.json ★+2194
src/app/[locale]/(workspace)/settings/audit/agents/page.tsx+12
src/app/[locale]/(workspace)/settings/audit/layout.tsx+26
src/app/[locale]/(workspace)/settings/audit/log/actions.ts+0 −44
src/app/[locale]/(workspace)/settings/audit/log/page.tsx+8 −43
src/app/api/internal/audit/agent/route.ts+4
src/app/api/internal/audit/human/route.ts+4
src/app/api/internal/matters/route.ts+26
src/components/settings/audit-log/actor-avatar.stories.tsx+0 −50
src/components/settings/audit-log/actor-avatar.tsx+0 −38
src/components/settings/audit-log/actor-badge.tsx+51
src/components/settings/audit-log/audit-day-group.tsx+41
src/components/settings/audit-log/audit-diff-table.tsx+56
src/components/settings/audit-log/audit-entry.tsx+95
src/components/settings/audit-log/audit-event-list.tsx+0 −77
src/components/settings/audit-log/audit-event-row.stories.tsx+0 −196
src/components/settings/audit-log/audit-event-row.tsx+0 −40
src/components/settings/audit-log/audit-facts.tsx+32
src/components/settings/audit-log/audit-filter-chips.stories.tsx+0 −68
src/components/settings/audit-log/audit-filter-chips.tsx+0 −207
src/components/settings/audit-log/audit-filters.tsx+103
src/components/settings/audit-log/audit-log-content.tsx+0 −135
src/components/settings/audit-log/audit-log-page.stories.tsx+0 −131
src/components/settings/audit-log/audit-log-view.tsx+101
src/components/settings/audit-log/audit-snapshot.tsx+121
src/components/settings/audit-log/audit-tabs.tsx+34
src/components/settings/audit-log/use-audit-feed.ts+70
src/gen/client/appDocumentAuditTimeline.ts+68
src/gen/client/appFilingAuditTimeline.ts+68
src/gen/client/appListAgentAudit.ts+59
src/gen/client/appListHumanAudit.ts+59
src/gen/client/appMatterAuditTimeline.ts+66
src/gen/client/appProceedingAuditTimeline.ts+71
src/gen/client/appSubjectAuditTimeline.ts+68
src/gen/client/index.ts+7
src/gen/hooks/index.ts+56
src/gen/hooks/useAppDocumentAuditTimeline.ts+152
src/gen/hooks/useAppDocumentAuditTimelineSuspense.ts+150
src/gen/hooks/useAppFilingAuditTimeline.ts+145
src/gen/hooks/useAppFilingAuditTimelineSuspense.ts+147
src/gen/hooks/useAppListAgentAudit.ts+123
src/gen/hooks/useAppListAgentAuditSuspense.ts+121
src/gen/hooks/useAppListHumanAudit.ts+123
src/gen/hooks/useAppListHumanAuditSuspense.ts+121
src/gen/hooks/useAppMatterAuditTimeline.ts+133
src/gen/hooks/useAppMatterAuditTimelineSuspense.ts+136
src/gen/hooks/useAppProceedingAuditTimeline.ts+158
src/gen/hooks/useAppProceedingAuditTimelineSuspense.ts+160
src/gen/hooks/useAppSubjectAuditTimeline.ts+145
src/gen/hooks/useAppSubjectAuditTimelineSuspense.ts+147
src/gen/index.ts ★+238
src/gen/schemas/auditEventListResponse.json+177
src/gen/schemas/auditEventView.json+135
src/gen/types/AppDocumentAuditTimeline.ts+117
src/gen/types/AppFilingAuditTimeline.ts+117
src/gen/types/AppListAgentAudit.ts+109
src/gen/types/AppListHumanAudit.ts+109
src/gen/types/AppMatterAuditTimeline.ts+113
src/gen/types/AppProceedingAuditTimeline.ts+118
src/gen/types/AppSubjectAuditTimeline.ts+117
src/gen/types/AuditEventListResponse.ts+22
src/gen/types/AuditEventView.ts+113
src/gen/types/index.ts+91
src/gen/zod/appDocumentAuditTimelineSchema.ts+146
src/gen/zod/appFilingAuditTimelineSchema.ts+146
src/gen/zod/appListAgentAuditSchema.ts+145
src/gen/zod/appListHumanAuditSchema.ts+145
src/gen/zod/appMatterAuditTimelineSchema.ts+145
src/gen/zod/appProceedingAuditTimelineSchema.ts+146
src/gen/zod/appSubjectAuditTimelineSchema.ts+146
src/gen/zod/auditEventListResponseSchema.ts+33
src/gen/zod/auditEventViewSchema.ts+118
src/gen/zod/index.ts+84
src/lib/audit-emit.ts+4 −4
src/lib/audit-log/adapter.ts+0 −167
src/lib/audit-log/format.ts+0 −145
src/lib/audit-log/gateway.ts+0 −56
src/lib/audit-log/mocks.ts+0 −241
src/lib/audit-log/types.ts+0 −140
src/lib/audit/gateway.ts+71
src/lib/audit/presentation.ts ★+297
src/lib/audit/route-helper.ts+32
src/lib/kubb-client.ts+15
tests/unit/audit-gateway.test.ts+89
tests/unit/audit-log-contract.test.ts+0 −268
tests/unit/lib/audit-log-format.test.ts+0 −120
tests/unit/lib/audit-presentation.test.ts+196