This is an automated email from the ASF dual-hosted git repository.
lahirujayathilake pushed a change to branch nexus-portal
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git
from aecc2b034 Enhance the AMIE baseline scenario with
request_account_create packets and varied user roles
add 6ecaa1036 Add web portal for allocations, projects, AMIE dashboards,
and audit traces
No new revisions were added by this update.
Summary of changes:
web/.env.example | 22 +
web/.gitignore | 27 +
web/CLAUDE.md | 122 +
web/README.md | 17 +
web/biome.json | 76 +
web/components.json | 25 +
web/design-tokens/colors.css | 200 +
web/design-tokens/radii.css | 11 +
web/design-tokens/spacing.css | 15 +
web/design-tokens/tokens.json | 116 +
web/design-tokens/typography.css | 27 +
web/next.config.ts | 23 +
web/package.json | 75 +
web/playwright.config.ts | 37 +
web/playwright.live.config.ts | 23 +
web/pnpm-lock.yaml | 6453 ++++++++++++++++++++
web/postcss.config.mjs | 7 +
web/scripts/gen-api.mts | 57 +
web/src/app/(auth)/sign-in/SignInForm.tsx | 77 +
web/src/app/(auth)/sign-in/page.tsx | 29 +
web/src/app/(portal)/admin/amie/AmieNav.tsx | 40 +
web/src/app/(portal)/admin/amie/PermissionGate.tsx | 13 +
.../admin/amie/failed/FailedQueueContainer.tsx | 120 +
web/src/app/(portal)/admin/amie/failed/page.tsx | 18 +
web/src/app/(portal)/admin/amie/layout.tsx | 6 +
.../admin/amie/packets/PacketInboxContainer.tsx | 253 +
.../app/(portal)/admin/amie/packets/[id]/page.tsx | 22 +
.../app/(portal)/admin/amie/packets/loading.tsx | 10 +
web/src/app/(portal)/admin/amie/packets/page.tsx | 18 +
web/src/app/(portal)/admin/amie/page.tsx | 6 +
.../amie/reconcile/ReconciliationContainer.tsx | 60 +
web/src/app/(portal)/admin/amie/reconcile/page.tsx | 18 +
.../admin/amie/replies/ReplyTrackerContainer.tsx | 39 +
web/src/app/(portal)/admin/amie/replies/page.tsx | 18 +
.../app/(portal)/admin/traces/PermissionGate.tsx | 13 +
.../app/(portal)/admin/traces/[traceId]/page.tsx | 15 +
web/src/app/(portal)/admin/traces/layout.tsx | 6 +
web/src/app/(portal)/admin/traces/page.tsx | 10 +
.../allocations/AllocationsListContainer.tsx | 47 +
.../app/(portal)/allocations/PermissionGate.tsx | 13 +
.../(portal)/allocations/[allocationId]/layout.tsx | 17 +
.../(portal)/allocations/[allocationId]/page.tsx | 8 +
web/src/app/(portal)/allocations/layout.tsx | 6 +
web/src/app/(portal)/allocations/page.tsx | 5 +
.../ChangeRequestQueueContainer.tsx | 17 +
.../(portal)/change-requests/PermissionGate.tsx | 13 +
.../change-requests/[changeRequestId]/layout.tsx | 20 +
.../change-requests/[changeRequestId]/page.tsx | 8 +
web/src/app/(portal)/change-requests/layout.tsx | 6 +
web/src/app/(portal)/change-requests/page.tsx | 5 +
web/src/app/(portal)/layout.tsx | 10 +
web/src/app/(portal)/page.tsx | 10 +
web/src/app/(portal)/projects/PermissionGate.tsx | 13 +
.../(portal)/projects/ProjectsListContainer.tsx | 57 +
.../app/(portal)/projects/[projectId]/layout.tsx | 15 +
web/src/app/(portal)/projects/[projectId]/page.tsx | 8 +
web/src/app/(portal)/projects/layout.tsx | 6 +
web/src/app/(portal)/projects/page.tsx | 5 +
web/src/app/api/auth/[...nextauth]/route.ts | 4 +
web/src/app/api/v1/[...path]/route.ts | 81 +
web/src/app/globals.css | 151 +
web/src/app/layout.tsx | 44 +
web/src/app/no-access/page.tsx | 19 +
.../connectors/amie/__fixtures__/events.json | 147 +
.../connectors/amie/__fixtures__/packets.json | 74 +
.../connectors/amie/__fixtures__/replies.json | 47 +
.../connectors/amie/__fixtures__/stats.json | 21 +
.../amie/__tests__/PacketEventsTable.test.tsx | 70 +
.../amie/__tests__/PacketStatusBadge.test.tsx | 28 +
.../amie/__tests__/PacketsTrendChart.test.tsx | 25 +
.../features/connectors/amie/__tests__/api.test.ts | 199 +
.../connectors/amie/__tests__/query-keys.test.ts | 29 +
.../connectors/amie/__tests__/schemas.test.ts | 129 +
.../connectors/amie/__tests__/utils.test.ts | 49 +
web/src/features/connectors/amie/api.ts | 124 +
.../connectors/amie/components/FailedQueue.tsx | 223 +
.../amie/components/PacketDetailDrawer.tsx | 308 +
.../amie/components/PacketEventsTable.tsx | 77 +
.../amie/components/PacketInboxTable.tsx | 317 +
.../connectors/amie/components/PacketRawJson.tsx | 24 +
.../amie/components/PacketStatusBadge.tsx | 62 +
.../amie/components/PacketsTrendChart.tsx | 71 +
.../amie/components/ReconciliationQueue.tsx | 152 +
.../connectors/amie/components/ReplyTracker.tsx | 129 +
web/src/features/connectors/amie/queries.ts | 140 +
web/src/features/connectors/amie/schemas.ts | 103 +
web/src/features/connectors/amie/types.ts | 108 +
web/src/features/connectors/amie/utils.ts | 18 +
.../core/allocations/__fixtures__/allocations.json | 42 +
.../allocations/__fixtures__/change-requests.json | 44 +
.../core/allocations/__fixtures__/events.json | 52 +
.../core/allocations/__fixtures__/members.json | 75 +
.../core/allocations/__fixtures__/resources.json | 33 +
.../allocations/__tests__/AllocationsList.test.tsx | 60 +
.../core/allocations/__tests__/api.test.ts | 208 +
.../core/allocations/__tests__/queries.test.ts | 62 +
.../core/allocations/__tests__/schemas.test.ts | 198 +
web/src/features/core/allocations/api.ts | 180 +
.../allocations/components/AddMemberDialog.tsx | 115 +
.../components/AllocationChangeRequestsTab.tsx | 125 +
.../allocations/components/AllocationDetail.tsx | 76 +
.../components/AllocationDetailHeader.tsx | 52 +
.../components/AllocationMembersTab.tsx | 196 +
.../components/AllocationOverviewTab.tsx | 79 +
.../allocations/components/AllocationUsageTab.tsx | 68 +
.../allocations/components/AllocationsList.tsx | 180 +
.../components/ChangeRequestApproverQueue.tsx | 247 +
.../allocations/components/ChangeRequestDetail.tsx | 163 +
.../components/ChangeRequestSubmitDrawer.tsx | 191 +
.../allocations/components/MemberEditDialog.tsx | 121 +
web/src/features/core/allocations/queries.ts | 190 +
web/src/features/core/allocations/schemas.ts | 162 +
web/src/features/core/allocations/types.ts | 25 +
.../core/audit/__fixtures__/audit-events.json | 27 +
.../features/core/audit/__fixtures__/sources.json | 3 +
.../core/audit/__fixtures__/trace.amie.failed.json | 42 +
.../audit/__fixtures__/trace.amie.success.json | 40 +
.../core/audit/__fixtures__/trace.http.json | 26 +
.../core/audit/__fixtures__/trace.in-progress.json | 16 +
.../core/audit/__fixtures__/traces.list.json | 52 +
.../audit/__tests__/LastTraceProvider.test.tsx | 48 +
.../core/audit/__tests__/TraceFilterStrip.test.tsx | 87 +
.../core/audit/__tests__/TraceOverviewTab.test.tsx | 82 +
.../core/audit/__tests__/TraceRawTab.test.tsx | 91 +
.../core/audit/__tests__/TraceTable.test.tsx | 179 +
.../core/audit/__tests__/TraceTreeRow.test.tsx | 117 +
.../core/audit/__tests__/ViewTraceLink.test.tsx | 116 +
web/src/features/core/audit/__tests__/api.test.ts | 143 +
.../audit/__tests__/primitives/CopyValue.test.tsx | 47 +
.../audit/__tests__/primitives/SourcePill.test.tsx | 22 +
.../audit/__tests__/primitives/StatusPill.test.tsx | 38 +
.../core/audit/__tests__/query-keys.test.ts | 39 +
.../features/core/audit/__tests__/schemas.test.ts | 90 +
.../core/audit/__tests__/traceListUrlState.test.ts | 178 +
.../features/core/audit/__tests__/utils.test.ts | 327 +
web/src/features/core/audit/api.ts | 187 +
.../core/audit/components/LastTraceProvider.tsx | 26 +
.../core/audit/components/TraceDetailDrawer.tsx | 397 ++
.../core/audit/components/TraceFilterStrip.tsx | 227 +
.../audit/components/TraceLinkedEntitiesTab.tsx | 276 +
.../core/audit/components/TraceListContainer.tsx | 241 +
.../core/audit/components/TraceOverviewTab.tsx | 152 +
.../features/core/audit/components/TraceRawTab.tsx | 130 +
.../core/audit/components/TraceSpanDetailPanel.tsx | 172 +
.../features/core/audit/components/TraceTable.tsx | 272 +
.../core/audit/components/TraceTreeRow.tsx | 223 +
.../core/audit/components/TraceTreeTab.tsx | 494 ++
.../core/audit/components/ViewTraceLink.tsx | 78 +
.../core/audit/components/primitives/CopyValue.tsx | 68 +
.../audit/components/primitives/SourcePill.tsx | 34 +
.../audit/components/primitives/StatusPill.tsx | 104 +
.../core/audit/components/traceListUrlState.ts | 143 +
web/src/features/core/audit/queries.ts | 93 +
web/src/features/core/audit/schemas.ts | 146 +
web/src/features/core/audit/types.ts | 46 +
web/src/features/core/audit/utils.ts | 254 +
.../core/identity/__tests__/queries.test.ts | 10 +
.../core/identity/__tests__/schemas.test.ts | 23 +
.../core/identity/__tests__/usePrivileges.test.tsx | 34 +
web/src/features/core/identity/api.ts | 20 +
web/src/features/core/identity/queries.ts | 41 +
web/src/features/core/identity/schemas.ts | 27 +
web/src/features/core/identity/types.ts | 11 +
.../core/projects/__fixtures__/members.json | 74 +
.../core/projects/__fixtures__/projects.json | 29 +
.../core/projects/__tests__/ProjectsList.test.tsx | 59 +
.../features/core/projects/__tests__/api.test.ts | 143 +
.../core/projects/__tests__/queries.test.ts | 21 +
.../core/projects/__tests__/schemas.test.ts | 107 +
web/src/features/core/projects/api.ts | 86 +
.../projects/components/ProjectAllocationsTab.tsx | 95 +
.../core/projects/components/ProjectDetail.tsx | 60 +
.../projects/components/ProjectDetailHeader.tsx | 39 +
.../core/projects/components/ProjectMembersTab.tsx | 243 +
.../projects/components/ProjectOverviewTab.tsx | 45 +
.../core/projects/components/ProjectsList.tsx | 159 +
web/src/features/core/projects/queries.ts | 111 +
web/src/features/core/projects/schemas.ts | 99 +
web/src/features/core/projects/types.ts | 9 +
web/src/generated/amie/client.gen.ts | 16 +
web/src/generated/amie/client/client.gen.ts | 277 +
web/src/generated/amie/client/index.ts | 27 +
web/src/generated/amie/client/types.gen.ts | 218 +
web/src/generated/amie/client/utils.gen.ts | 316 +
web/src/generated/amie/core/auth.gen.ts | 48 +
web/src/generated/amie/core/bodySerializer.gen.ts | 82 +
web/src/generated/amie/core/params.gen.ts | 171 +
web/src/generated/amie/core/pathSerializer.gen.ts | 171 +
.../generated/amie/core/queryKeySerializer.gen.ts | 117 +
.../generated/amie/core/serverSentEvents.gen.ts | 242 +
web/src/generated/amie/core/types.gen.ts | 110 +
web/src/generated/amie/core/utils.gen.ts | 140 +
web/src/generated/amie/index.ts | 4 +
web/src/generated/amie/sdk.gen.ts | 28 +
web/src/generated/amie/types.gen.ts | 62 +
web/src/generated/amie/zod.gen.ts | 25 +
web/src/generated/core/client.gen.ts | 16 +
web/src/generated/core/client/client.gen.ts | 277 +
web/src/generated/core/client/index.ts | 27 +
web/src/generated/core/client/types.gen.ts | 218 +
web/src/generated/core/client/utils.gen.ts | 316 +
web/src/generated/core/core/auth.gen.ts | 48 +
web/src/generated/core/core/bodySerializer.gen.ts | 82 +
web/src/generated/core/core/params.gen.ts | 171 +
web/src/generated/core/core/pathSerializer.gen.ts | 171 +
.../generated/core/core/queryKeySerializer.gen.ts | 117 +
.../generated/core/core/serverSentEvents.gen.ts | 242 +
web/src/generated/core/core/types.gen.ts | 110 +
web/src/generated/core/core/utils.gen.ts | 140 +
web/src/generated/core/index.ts | 4 +
web/src/generated/core/sdk.gen.ts | 1056 ++++
web/src/generated/core/types.gen.ts | 3809 ++++++++++++
web/src/generated/core/zod.gen.ts | 1308 ++++
web/src/lib/env.ts | 66 +
web/src/lib/utils.ts | 6 +
web/src/mocks/browser.ts | 4 +
web/src/mocks/handlers.ts | 16 +
web/src/mocks/handlers/allocations.ts | 230 +
web/src/mocks/handlers/amie.ts | 161 +
web/src/mocks/handlers/healthz.ts | 5 +
web/src/mocks/handlers/privileges.ts | 10 +
web/src/mocks/handlers/projects.ts | 129 +
web/src/mocks/handlers/traces.ts | 84 +
web/src/mocks/node.ts | 4 +
web/src/shared/__tests__/tokens.test.ts | 35 +
web/src/shared/api/__tests__/client.test.ts | 39 +
web/src/shared/api/client.ts | 75 +
web/src/shared/api/domain.ts | 5 +
web/src/shared/api/last-trace-id.ts | 20 +
web/src/shared/auth/__tests__/auth.test.ts | 37 +
web/src/shared/auth/auth.ts | 92 +
web/src/shared/auth/devLevels.ts | 26 +
web/src/shared/auth/next-auth.d.ts | 11 +
web/src/shared/auth/session.ts | 13 +
web/src/shared/casl/AbilityProvider.tsx | 21 +
web/src/shared/casl/Can.tsx | 3 +
web/src/shared/casl/__tests__/abilities.test.ts | 107 +
web/src/shared/casl/abilities.ts | 33 +
.../src/shared/charts/.gitkeep | 0
web/src/shared/charts/BurnDownBar.tsx | 37 +
web/src/shared/charts/ComplianceMatrix.tsx | 134 +
web/src/shared/charts/ForecastBar.tsx | 114 +
web/src/shared/charts/Sparkline.tsx | 34 +
web/src/shared/charts/StackedAreaUsage.tsx | 74 +
.../charts/__tests__/ComplianceMatrix.test.tsx | 91 +
.../shared/charts/__tests__/ForecastBar.test.tsx | 52 +
.../charts/__tests__/StackedAreaUsage.test.tsx | 29 +
.../src/shared/hooks/.gitkeep | 0
.../shared/hooks/__tests__/useUrlGroupBy.test.tsx | 50 +
.../shared/hooks/__tests__/useUrlRange.test.tsx | 121 +
web/src/shared/hooks/useDebounce.ts | 12 +
web/src/shared/hooks/useShallowSearchParams.ts | 50 +
web/src/shared/hooks/useUrlGroupBy.ts | 37 +
web/src/shared/hooks/useUrlRange.ts | 89 +
.../src/shared/icons/.gitkeep | 0
web/src/shared/layout/Breadcrumbs.tsx | 68 +
web/src/shared/layout/PortalLayout.tsx | 23 +
web/src/shared/layout/Sidebar.tsx | 74 +
web/src/shared/layout/Topbar.tsx | 56 +
web/src/shared/layout/UserPill.tsx | 51 +
web/src/shared/layout/nav.ts | 55 +
web/src/shared/layout/useNavHistory.ts | 51 +
web/src/shared/providers/MswProvider.tsx | 30 +
web/src/shared/providers/Providers.tsx | 38 +
web/src/shared/providers/QueryProvider.tsx | 22 +
web/src/shared/ui/Breadcrumbs.tsx | 57 +
web/src/shared/ui/DataTable.tsx | 335 +
web/src/shared/ui/DateRangePicker.tsx | 175 +
web/src/shared/ui/EmptyState.tsx | 30 +
web/src/shared/ui/EnableToggle.tsx | 198 +
web/src/shared/ui/ErrorState.tsx | 40 +
web/src/shared/ui/GroupByChip.tsx | 83 +
web/src/shared/ui/KpiCard.tsx | 172 +
web/src/shared/ui/LastSyncedBadge.tsx | 74 +
web/src/shared/ui/Loading.tsx | 54 +
web/src/shared/ui/MetaRow.tsx | 78 +
web/src/shared/ui/ProjectAutocomplete.tsx | 162 +
web/src/shared/ui/SideDrawer.tsx | 77 +
web/src/shared/ui/StatCard.tsx | 72 +
web/src/shared/ui/StatCardRow.tsx | 23 +
web/src/shared/ui/StatusBadge.tsx | 74 +
web/src/shared/ui/TabsRouter.tsx | 108 +
web/src/shared/ui/UsageBar.tsx | 103 +
.../shared/ui/__tests__/DateRangePicker.test.tsx | 82 +
web/src/shared/ui/__tests__/EnableToggle.test.tsx | 63 +
web/src/shared/ui/__tests__/GroupByChip.test.tsx | 67 +
web/src/shared/ui/__tests__/KpiCard.test.tsx | 55 +
.../shared/ui/__tests__/LastSyncedBadge.test.tsx | 60 +
web/src/shared/ui/__tests__/MetaRow.test.tsx | 47 +
web/src/shared/ui/__tests__/StatCard.test.tsx | 43 +
web/src/shared/ui/__tests__/StatCardRow.test.tsx | 46 +
web/src/shared/ui/__tests__/StatusBadge.test.tsx | 52 +
web/src/shared/ui/__tests__/TabsRouter.test.tsx | 62 +
web/src/shared/ui/__tests__/UsageBar.test.tsx | 49 +
web/src/shared/ui/avatar.tsx | 93 +
web/src/shared/ui/badge.tsx | 49 +
web/src/shared/ui/button.tsx | 66 +
web/src/shared/ui/card.tsx | 92 +
web/src/shared/ui/dialog.tsx | 138 +
web/src/shared/ui/drawer.tsx | 120 +
web/src/shared/ui/dropdown-menu.tsx | 258 +
web/src/shared/ui/input.tsx | 20 +
web/src/shared/ui/label.tsx | 20 +
web/src/shared/ui/select.tsx | 190 +
web/src/shared/ui/separator.tsx | 21 +
web/src/shared/ui/skeleton.tsx | 13 +
web/src/shared/ui/sonner.tsx | 45 +
web/src/shared/ui/table.tsx | 89 +
web/src/shared/ui/tabs.tsx | 75 +
web/src/shared/ui/tooltip.tsx | 54 +
web/tests/admin-amie-detail.e2e.ts | 52 +
web/tests/admin-amie-list.e2e.ts | 49 +
web/tests/admin-traces-detail.e2e.ts | 111 +
web/tests/admin-traces-list.e2e.ts | 70 +
web/tests/allocation-members-edit.e2e.ts | 40 +
web/tests/allocations-detail.e2e.ts | 37 +
web/tests/allocations-list.e2e.ts | 34 +
web/tests/amie-cross-link.e2e.ts | 21 +
web/tests/baseline-live.spec.ts | 170 +
web/tests/change-requests-approve.e2e.ts | 26 +
web/tests/change-requests-submit.e2e.ts | 28 +
web/tests/closeout-live-walk.spec.ts | 62 +
web/tests/fixtures/auth.ts | 11 +
web/tests/projects-detail.e2e.ts | 31 +
web/tests/projects-list.e2e.ts | 36 +
web/tsconfig.json | 36 +
web/vitest.config.ts | 28 +
web/vitest.server-only-stub.ts | 1 +
web/vitest.setup.ts | 1 +
329 files changed, 38966 insertions(+)
create mode 100644 web/.env.example
create mode 100644 web/.gitignore
create mode 100644 web/CLAUDE.md
create mode 100644 web/README.md
create mode 100644 web/biome.json
create mode 100644 web/components.json
create mode 100644 web/design-tokens/colors.css
create mode 100644 web/design-tokens/radii.css
create mode 100644 web/design-tokens/spacing.css
create mode 100644 web/design-tokens/tokens.json
create mode 100644 web/design-tokens/typography.css
create mode 100644 web/next.config.ts
create mode 100644 web/package.json
create mode 100644 web/playwright.config.ts
create mode 100644 web/playwright.live.config.ts
create mode 100644 web/pnpm-lock.yaml
create mode 100644 web/postcss.config.mjs
create mode 100644 web/scripts/gen-api.mts
create mode 100644 web/src/app/(auth)/sign-in/SignInForm.tsx
create mode 100644 web/src/app/(auth)/sign-in/page.tsx
create mode 100644 web/src/app/(portal)/admin/amie/AmieNav.tsx
create mode 100644 web/src/app/(portal)/admin/amie/PermissionGate.tsx
create mode 100644
web/src/app/(portal)/admin/amie/failed/FailedQueueContainer.tsx
create mode 100644 web/src/app/(portal)/admin/amie/failed/page.tsx
create mode 100644 web/src/app/(portal)/admin/amie/layout.tsx
create mode 100644
web/src/app/(portal)/admin/amie/packets/PacketInboxContainer.tsx
create mode 100644 web/src/app/(portal)/admin/amie/packets/[id]/page.tsx
create mode 100644 web/src/app/(portal)/admin/amie/packets/loading.tsx
create mode 100644 web/src/app/(portal)/admin/amie/packets/page.tsx
create mode 100644 web/src/app/(portal)/admin/amie/page.tsx
create mode 100644
web/src/app/(portal)/admin/amie/reconcile/ReconciliationContainer.tsx
create mode 100644 web/src/app/(portal)/admin/amie/reconcile/page.tsx
create mode 100644
web/src/app/(portal)/admin/amie/replies/ReplyTrackerContainer.tsx
create mode 100644 web/src/app/(portal)/admin/amie/replies/page.tsx
create mode 100644 web/src/app/(portal)/admin/traces/PermissionGate.tsx
create mode 100644 web/src/app/(portal)/admin/traces/[traceId]/page.tsx
create mode 100644 web/src/app/(portal)/admin/traces/layout.tsx
create mode 100644 web/src/app/(portal)/admin/traces/page.tsx
create mode 100644
web/src/app/(portal)/allocations/AllocationsListContainer.tsx
create mode 100644 web/src/app/(portal)/allocations/PermissionGate.tsx
create mode 100644 web/src/app/(portal)/allocations/[allocationId]/layout.tsx
create mode 100644 web/src/app/(portal)/allocations/[allocationId]/page.tsx
create mode 100644 web/src/app/(portal)/allocations/layout.tsx
create mode 100644 web/src/app/(portal)/allocations/page.tsx
create mode 100644
web/src/app/(portal)/change-requests/ChangeRequestQueueContainer.tsx
create mode 100644 web/src/app/(portal)/change-requests/PermissionGate.tsx
create mode 100644
web/src/app/(portal)/change-requests/[changeRequestId]/layout.tsx
create mode 100644
web/src/app/(portal)/change-requests/[changeRequestId]/page.tsx
create mode 100644 web/src/app/(portal)/change-requests/layout.tsx
create mode 100644 web/src/app/(portal)/change-requests/page.tsx
create mode 100644 web/src/app/(portal)/layout.tsx
create mode 100644 web/src/app/(portal)/page.tsx
create mode 100644 web/src/app/(portal)/projects/PermissionGate.tsx
create mode 100644 web/src/app/(portal)/projects/ProjectsListContainer.tsx
create mode 100644 web/src/app/(portal)/projects/[projectId]/layout.tsx
create mode 100644 web/src/app/(portal)/projects/[projectId]/page.tsx
create mode 100644 web/src/app/(portal)/projects/layout.tsx
create mode 100644 web/src/app/(portal)/projects/page.tsx
create mode 100644 web/src/app/api/auth/[...nextauth]/route.ts
create mode 100644 web/src/app/api/v1/[...path]/route.ts
create mode 100644 web/src/app/globals.css
create mode 100644 web/src/app/layout.tsx
create mode 100644 web/src/app/no-access/page.tsx
create mode 100644 web/src/features/connectors/amie/__fixtures__/events.json
create mode 100644 web/src/features/connectors/amie/__fixtures__/packets.json
create mode 100644 web/src/features/connectors/amie/__fixtures__/replies.json
create mode 100644 web/src/features/connectors/amie/__fixtures__/stats.json
create mode 100644
web/src/features/connectors/amie/__tests__/PacketEventsTable.test.tsx
create mode 100644
web/src/features/connectors/amie/__tests__/PacketStatusBadge.test.tsx
create mode 100644
web/src/features/connectors/amie/__tests__/PacketsTrendChart.test.tsx
create mode 100644 web/src/features/connectors/amie/__tests__/api.test.ts
create mode 100644
web/src/features/connectors/amie/__tests__/query-keys.test.ts
create mode 100644 web/src/features/connectors/amie/__tests__/schemas.test.ts
create mode 100644 web/src/features/connectors/amie/__tests__/utils.test.ts
create mode 100644 web/src/features/connectors/amie/api.ts
create mode 100644 web/src/features/connectors/amie/components/FailedQueue.tsx
create mode 100644
web/src/features/connectors/amie/components/PacketDetailDrawer.tsx
create mode 100644
web/src/features/connectors/amie/components/PacketEventsTable.tsx
create mode 100644
web/src/features/connectors/amie/components/PacketInboxTable.tsx
create mode 100644
web/src/features/connectors/amie/components/PacketRawJson.tsx
create mode 100644
web/src/features/connectors/amie/components/PacketStatusBadge.tsx
create mode 100644
web/src/features/connectors/amie/components/PacketsTrendChart.tsx
create mode 100644
web/src/features/connectors/amie/components/ReconciliationQueue.tsx
create mode 100644 web/src/features/connectors/amie/components/ReplyTracker.tsx
create mode 100644 web/src/features/connectors/amie/queries.ts
create mode 100644 web/src/features/connectors/amie/schemas.ts
create mode 100644 web/src/features/connectors/amie/types.ts
create mode 100644 web/src/features/connectors/amie/utils.ts
create mode 100644
web/src/features/core/allocations/__fixtures__/allocations.json
create mode 100644
web/src/features/core/allocations/__fixtures__/change-requests.json
create mode 100644 web/src/features/core/allocations/__fixtures__/events.json
create mode 100644 web/src/features/core/allocations/__fixtures__/members.json
create mode 100644
web/src/features/core/allocations/__fixtures__/resources.json
create mode 100644
web/src/features/core/allocations/__tests__/AllocationsList.test.tsx
create mode 100644 web/src/features/core/allocations/__tests__/api.test.ts
create mode 100644 web/src/features/core/allocations/__tests__/queries.test.ts
create mode 100644 web/src/features/core/allocations/__tests__/schemas.test.ts
create mode 100644 web/src/features/core/allocations/api.ts
create mode 100644
web/src/features/core/allocations/components/AddMemberDialog.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationChangeRequestsTab.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationDetail.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationDetailHeader.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationMembersTab.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationOverviewTab.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationUsageTab.tsx
create mode 100644
web/src/features/core/allocations/components/AllocationsList.tsx
create mode 100644
web/src/features/core/allocations/components/ChangeRequestApproverQueue.tsx
create mode 100644
web/src/features/core/allocations/components/ChangeRequestDetail.tsx
create mode 100644
web/src/features/core/allocations/components/ChangeRequestSubmitDrawer.tsx
create mode 100644
web/src/features/core/allocations/components/MemberEditDialog.tsx
create mode 100644 web/src/features/core/allocations/queries.ts
create mode 100644 web/src/features/core/allocations/schemas.ts
create mode 100644 web/src/features/core/allocations/types.ts
create mode 100644 web/src/features/core/audit/__fixtures__/audit-events.json
create mode 100644 web/src/features/core/audit/__fixtures__/sources.json
create mode 100644
web/src/features/core/audit/__fixtures__/trace.amie.failed.json
create mode 100644
web/src/features/core/audit/__fixtures__/trace.amie.success.json
create mode 100644 web/src/features/core/audit/__fixtures__/trace.http.json
create mode 100644
web/src/features/core/audit/__fixtures__/trace.in-progress.json
create mode 100644 web/src/features/core/audit/__fixtures__/traces.list.json
create mode 100644
web/src/features/core/audit/__tests__/LastTraceProvider.test.tsx
create mode 100644
web/src/features/core/audit/__tests__/TraceFilterStrip.test.tsx
create mode 100644
web/src/features/core/audit/__tests__/TraceOverviewTab.test.tsx
create mode 100644 web/src/features/core/audit/__tests__/TraceRawTab.test.tsx
create mode 100644 web/src/features/core/audit/__tests__/TraceTable.test.tsx
create mode 100644 web/src/features/core/audit/__tests__/TraceTreeRow.test.tsx
create mode 100644 web/src/features/core/audit/__tests__/ViewTraceLink.test.tsx
create mode 100644 web/src/features/core/audit/__tests__/api.test.ts
create mode 100644
web/src/features/core/audit/__tests__/primitives/CopyValue.test.tsx
create mode 100644
web/src/features/core/audit/__tests__/primitives/SourcePill.test.tsx
create mode 100644
web/src/features/core/audit/__tests__/primitives/StatusPill.test.tsx
create mode 100644 web/src/features/core/audit/__tests__/query-keys.test.ts
create mode 100644 web/src/features/core/audit/__tests__/schemas.test.ts
create mode 100644
web/src/features/core/audit/__tests__/traceListUrlState.test.ts
create mode 100644 web/src/features/core/audit/__tests__/utils.test.ts
create mode 100644 web/src/features/core/audit/api.ts
create mode 100644 web/src/features/core/audit/components/LastTraceProvider.tsx
create mode 100644 web/src/features/core/audit/components/TraceDetailDrawer.tsx
create mode 100644 web/src/features/core/audit/components/TraceFilterStrip.tsx
create mode 100644
web/src/features/core/audit/components/TraceLinkedEntitiesTab.tsx
create mode 100644
web/src/features/core/audit/components/TraceListContainer.tsx
create mode 100644 web/src/features/core/audit/components/TraceOverviewTab.tsx
create mode 100644 web/src/features/core/audit/components/TraceRawTab.tsx
create mode 100644
web/src/features/core/audit/components/TraceSpanDetailPanel.tsx
create mode 100644 web/src/features/core/audit/components/TraceTable.tsx
create mode 100644 web/src/features/core/audit/components/TraceTreeRow.tsx
create mode 100644 web/src/features/core/audit/components/TraceTreeTab.tsx
create mode 100644 web/src/features/core/audit/components/ViewTraceLink.tsx
create mode 100644
web/src/features/core/audit/components/primitives/CopyValue.tsx
create mode 100644
web/src/features/core/audit/components/primitives/SourcePill.tsx
create mode 100644
web/src/features/core/audit/components/primitives/StatusPill.tsx
create mode 100644 web/src/features/core/audit/components/traceListUrlState.ts
create mode 100644 web/src/features/core/audit/queries.ts
create mode 100644 web/src/features/core/audit/schemas.ts
create mode 100644 web/src/features/core/audit/types.ts
create mode 100644 web/src/features/core/audit/utils.ts
create mode 100644 web/src/features/core/identity/__tests__/queries.test.ts
create mode 100644 web/src/features/core/identity/__tests__/schemas.test.ts
create mode 100644
web/src/features/core/identity/__tests__/usePrivileges.test.tsx
create mode 100644 web/src/features/core/identity/api.ts
create mode 100644 web/src/features/core/identity/queries.ts
create mode 100644 web/src/features/core/identity/schemas.ts
create mode 100644 web/src/features/core/identity/types.ts
create mode 100644 web/src/features/core/projects/__fixtures__/members.json
create mode 100644 web/src/features/core/projects/__fixtures__/projects.json
create mode 100644
web/src/features/core/projects/__tests__/ProjectsList.test.tsx
create mode 100644 web/src/features/core/projects/__tests__/api.test.ts
create mode 100644 web/src/features/core/projects/__tests__/queries.test.ts
create mode 100644 web/src/features/core/projects/__tests__/schemas.test.ts
create mode 100644 web/src/features/core/projects/api.ts
create mode 100644
web/src/features/core/projects/components/ProjectAllocationsTab.tsx
create mode 100644 web/src/features/core/projects/components/ProjectDetail.tsx
create mode 100644
web/src/features/core/projects/components/ProjectDetailHeader.tsx
create mode 100644
web/src/features/core/projects/components/ProjectMembersTab.tsx
create mode 100644
web/src/features/core/projects/components/ProjectOverviewTab.tsx
create mode 100644 web/src/features/core/projects/components/ProjectsList.tsx
create mode 100644 web/src/features/core/projects/queries.ts
create mode 100644 web/src/features/core/projects/schemas.ts
create mode 100644 web/src/features/core/projects/types.ts
create mode 100644 web/src/generated/amie/client.gen.ts
create mode 100644 web/src/generated/amie/client/client.gen.ts
create mode 100644 web/src/generated/amie/client/index.ts
create mode 100644 web/src/generated/amie/client/types.gen.ts
create mode 100644 web/src/generated/amie/client/utils.gen.ts
create mode 100644 web/src/generated/amie/core/auth.gen.ts
create mode 100644 web/src/generated/amie/core/bodySerializer.gen.ts
create mode 100644 web/src/generated/amie/core/params.gen.ts
create mode 100644 web/src/generated/amie/core/pathSerializer.gen.ts
create mode 100644 web/src/generated/amie/core/queryKeySerializer.gen.ts
create mode 100644 web/src/generated/amie/core/serverSentEvents.gen.ts
create mode 100644 web/src/generated/amie/core/types.gen.ts
create mode 100644 web/src/generated/amie/core/utils.gen.ts
create mode 100644 web/src/generated/amie/index.ts
create mode 100644 web/src/generated/amie/sdk.gen.ts
create mode 100644 web/src/generated/amie/types.gen.ts
create mode 100644 web/src/generated/amie/zod.gen.ts
create mode 100644 web/src/generated/core/client.gen.ts
create mode 100644 web/src/generated/core/client/client.gen.ts
create mode 100644 web/src/generated/core/client/index.ts
create mode 100644 web/src/generated/core/client/types.gen.ts
create mode 100644 web/src/generated/core/client/utils.gen.ts
create mode 100644 web/src/generated/core/core/auth.gen.ts
create mode 100644 web/src/generated/core/core/bodySerializer.gen.ts
create mode 100644 web/src/generated/core/core/params.gen.ts
create mode 100644 web/src/generated/core/core/pathSerializer.gen.ts
create mode 100644 web/src/generated/core/core/queryKeySerializer.gen.ts
create mode 100644 web/src/generated/core/core/serverSentEvents.gen.ts
create mode 100644 web/src/generated/core/core/types.gen.ts
create mode 100644 web/src/generated/core/core/utils.gen.ts
create mode 100644 web/src/generated/core/index.ts
create mode 100644 web/src/generated/core/sdk.gen.ts
create mode 100644 web/src/generated/core/types.gen.ts
create mode 100644 web/src/generated/core/zod.gen.ts
create mode 100644 web/src/lib/env.ts
create mode 100644 web/src/lib/utils.ts
create mode 100644 web/src/mocks/browser.ts
create mode 100644 web/src/mocks/handlers.ts
create mode 100644 web/src/mocks/handlers/allocations.ts
create mode 100644 web/src/mocks/handlers/amie.ts
create mode 100644 web/src/mocks/handlers/healthz.ts
create mode 100644 web/src/mocks/handlers/privileges.ts
create mode 100644 web/src/mocks/handlers/projects.ts
create mode 100644 web/src/mocks/handlers/traces.ts
create mode 100644 web/src/mocks/node.ts
create mode 100644 web/src/shared/__tests__/tokens.test.ts
create mode 100644 web/src/shared/api/__tests__/client.test.ts
create mode 100644 web/src/shared/api/client.ts
create mode 100644 web/src/shared/api/domain.ts
create mode 100644 web/src/shared/api/last-trace-id.ts
create mode 100644 web/src/shared/auth/__tests__/auth.test.ts
create mode 100644 web/src/shared/auth/auth.ts
create mode 100644 web/src/shared/auth/devLevels.ts
create mode 100644 web/src/shared/auth/next-auth.d.ts
create mode 100644 web/src/shared/auth/session.ts
create mode 100644 web/src/shared/casl/AbilityProvider.tsx
create mode 100644 web/src/shared/casl/Can.tsx
create mode 100644 web/src/shared/casl/__tests__/abilities.test.ts
create mode 100644 web/src/shared/casl/abilities.ts
copy extensions/CILogon-SSH-PAM/test/data/template_wrong.json =>
web/src/shared/charts/.gitkeep (100%)
create mode 100644 web/src/shared/charts/BurnDownBar.tsx
create mode 100644 web/src/shared/charts/ComplianceMatrix.tsx
create mode 100644 web/src/shared/charts/ForecastBar.tsx
create mode 100644 web/src/shared/charts/Sparkline.tsx
create mode 100644 web/src/shared/charts/StackedAreaUsage.tsx
create mode 100644 web/src/shared/charts/__tests__/ComplianceMatrix.test.tsx
create mode 100644 web/src/shared/charts/__tests__/ForecastBar.test.tsx
create mode 100644 web/src/shared/charts/__tests__/StackedAreaUsage.test.tsx
copy extensions/CILogon-SSH-PAM/test/data/template_wrong.json =>
web/src/shared/hooks/.gitkeep (100%)
create mode 100644 web/src/shared/hooks/__tests__/useUrlGroupBy.test.tsx
create mode 100644 web/src/shared/hooks/__tests__/useUrlRange.test.tsx
create mode 100644 web/src/shared/hooks/useDebounce.ts
create mode 100644 web/src/shared/hooks/useShallowSearchParams.ts
create mode 100644 web/src/shared/hooks/useUrlGroupBy.ts
create mode 100644 web/src/shared/hooks/useUrlRange.ts
copy extensions/CILogon-SSH-PAM/test/data/template_wrong.json =>
web/src/shared/icons/.gitkeep (100%)
create mode 100644 web/src/shared/layout/Breadcrumbs.tsx
create mode 100644 web/src/shared/layout/PortalLayout.tsx
create mode 100644 web/src/shared/layout/Sidebar.tsx
create mode 100644 web/src/shared/layout/Topbar.tsx
create mode 100644 web/src/shared/layout/UserPill.tsx
create mode 100644 web/src/shared/layout/nav.ts
create mode 100644 web/src/shared/layout/useNavHistory.ts
create mode 100644 web/src/shared/providers/MswProvider.tsx
create mode 100644 web/src/shared/providers/Providers.tsx
create mode 100644 web/src/shared/providers/QueryProvider.tsx
create mode 100644 web/src/shared/ui/Breadcrumbs.tsx
create mode 100644 web/src/shared/ui/DataTable.tsx
create mode 100644 web/src/shared/ui/DateRangePicker.tsx
create mode 100644 web/src/shared/ui/EmptyState.tsx
create mode 100644 web/src/shared/ui/EnableToggle.tsx
create mode 100644 web/src/shared/ui/ErrorState.tsx
create mode 100644 web/src/shared/ui/GroupByChip.tsx
create mode 100644 web/src/shared/ui/KpiCard.tsx
create mode 100644 web/src/shared/ui/LastSyncedBadge.tsx
create mode 100644 web/src/shared/ui/Loading.tsx
create mode 100644 web/src/shared/ui/MetaRow.tsx
create mode 100644 web/src/shared/ui/ProjectAutocomplete.tsx
create mode 100644 web/src/shared/ui/SideDrawer.tsx
create mode 100644 web/src/shared/ui/StatCard.tsx
create mode 100644 web/src/shared/ui/StatCardRow.tsx
create mode 100644 web/src/shared/ui/StatusBadge.tsx
create mode 100644 web/src/shared/ui/TabsRouter.tsx
create mode 100644 web/src/shared/ui/UsageBar.tsx
create mode 100644 web/src/shared/ui/__tests__/DateRangePicker.test.tsx
create mode 100644 web/src/shared/ui/__tests__/EnableToggle.test.tsx
create mode 100644 web/src/shared/ui/__tests__/GroupByChip.test.tsx
create mode 100644 web/src/shared/ui/__tests__/KpiCard.test.tsx
create mode 100644 web/src/shared/ui/__tests__/LastSyncedBadge.test.tsx
create mode 100644 web/src/shared/ui/__tests__/MetaRow.test.tsx
create mode 100644 web/src/shared/ui/__tests__/StatCard.test.tsx
create mode 100644 web/src/shared/ui/__tests__/StatCardRow.test.tsx
create mode 100644 web/src/shared/ui/__tests__/StatusBadge.test.tsx
create mode 100644 web/src/shared/ui/__tests__/TabsRouter.test.tsx
create mode 100644 web/src/shared/ui/__tests__/UsageBar.test.tsx
create mode 100644 web/src/shared/ui/avatar.tsx
create mode 100644 web/src/shared/ui/badge.tsx
create mode 100644 web/src/shared/ui/button.tsx
create mode 100644 web/src/shared/ui/card.tsx
create mode 100644 web/src/shared/ui/dialog.tsx
create mode 100644 web/src/shared/ui/drawer.tsx
create mode 100644 web/src/shared/ui/dropdown-menu.tsx
create mode 100644 web/src/shared/ui/input.tsx
create mode 100644 web/src/shared/ui/label.tsx
create mode 100644 web/src/shared/ui/select.tsx
create mode 100644 web/src/shared/ui/separator.tsx
create mode 100644 web/src/shared/ui/skeleton.tsx
create mode 100644 web/src/shared/ui/sonner.tsx
create mode 100644 web/src/shared/ui/table.tsx
create mode 100644 web/src/shared/ui/tabs.tsx
create mode 100644 web/src/shared/ui/tooltip.tsx
create mode 100644 web/tests/admin-amie-detail.e2e.ts
create mode 100644 web/tests/admin-amie-list.e2e.ts
create mode 100644 web/tests/admin-traces-detail.e2e.ts
create mode 100644 web/tests/admin-traces-list.e2e.ts
create mode 100644 web/tests/allocation-members-edit.e2e.ts
create mode 100644 web/tests/allocations-detail.e2e.ts
create mode 100644 web/tests/allocations-list.e2e.ts
create mode 100644 web/tests/amie-cross-link.e2e.ts
create mode 100644 web/tests/baseline-live.spec.ts
create mode 100644 web/tests/change-requests-approve.e2e.ts
create mode 100644 web/tests/change-requests-submit.e2e.ts
create mode 100644 web/tests/closeout-live-walk.spec.ts
create mode 100644 web/tests/fixtures/auth.ts
create mode 100644 web/tests/projects-detail.e2e.ts
create mode 100644 web/tests/projects-list.e2e.ts
create mode 100644 web/tsconfig.json
create mode 100644 web/vitest.config.ts
create mode 100644 web/vitest.server-only-stub.ts
create mode 100644 web/vitest.setup.ts