supermemory/apps/web/app
Dhravya 5d2b5855fe
feat(auth): AgentID sign-in button on the web login page (#1467)
## What?

Adds a "Continue with AgentID" button to the web app's login page, matching the existing Google/GitHub buttons (same `ExternalAuthButton` pattern, PostHog `login_attempt` capture, last-used badge).

- `packages/lib/auth.ts`: adds the `genericOAuthClient` plugin — generic OAuth providers sign in via `signIn.oauth2({ providerId })`, not `signIn.social`.
- `apps/web/app/(auth)/login/page.tsx`: the button, gated the same way as the other social buttons — always shown on cloud (`NEXT_PUBLIC_HOST_ID === "supermemory"`), opt-in elsewhere via `NEXT_PUBLIC_AGENTID_AUTH_ENABLED` (added to `.env.example`).

## Why?

Companion to supermemoryai/mono#2908, which registers an `agentid` generic OAuth provider (OIDC against auth.agentid.com) on the API so agents can authenticate with their AgentID identity. The consumer app talks to the same better-auth server, so it gets the same sign-in option. mono#2916 additionally auto-invites the agent's verified human owner to the agent's workspace.

Requires mono#2908 to be deployed for the button to work; until then the API rejects the unknown provider and the page shows its normal error state.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Touches authentication entry points and OAuth client configuration; risk is moderate because it extends login surface area but follows existing social sign-in patterns and is feature-flagged.
>
> **Overview**
> Adds **Continue with AgentID** on the web login page, using the same `ExternalAuthButton` flow as Google/GitHub (PostHog `login_attempt`, last-used badge, loading/error handling).
>
> The button calls **`signIn.oauth2({ providerId: "agentid" })`** instead of `signIn.social`, enabled by registering **`genericOAuthClient`** on the shared better-auth client in `packages/lib/auth.ts`.
>
> Visibility matches other social providers: shown on cloud when `NEXT_PUBLIC_HOST_ID === "supermemory"`, or elsewhere when **`NEXT_PUBLIC_AGENTID_AUTH_ENABLED`** is set (documented in `.env.example`). Depends on the API registering the `agentid` generic OAuth provider.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 90a32786a3. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2026-08-16 23:20:38 +00:00
..
(app) feat(web): support discount code checkout (#1523) 2026-08-16 13:43:53 -07:00
(auth)/login feat(auth): AgentID sign-in button on the web login page (#1467) 2026-08-16 23:20:38 +00:00
api fix(web): block IPv6 literals in OG scraper SSRF guard (#1154) 2026-07-10 18:20:43 -07:00
auth Remove paid plugin UI (#1403) 2026-08-15 18:41:46 +05:30
oauth/consent Add console logs for debugging consent page (#1129) 2026-06-16 14:46:07 -07:00
org/invite/[invitationId] feat(web): company brain — invite-accept page, space UX/visibility, org-scoped daily brief (#1112) 2026-06-22 18:12:18 +00:00
ref chore: improve the codebase with react doctor (#917) 2026-05-09 19:12:01 +00:00
slack/link feat(web): add Slack account linking confirmation (#1359) 2026-07-24 22:00:58 +00:00
upgrade-mcp chore: improve the codebase with react doctor (#917) 2026-05-09 19:12:01 +00:00
global-error.tsx fix: resolve UI accessibility, hydration, and semantic HTML issues (#520) 2025-12-07 21:31:30 -08:00
icon.png Update app favicon assets (#953) 2026-05-16 21:24:27 -07:00
layout.tsx feat(web): support discount code checkout (#1523) 2026-08-16 13:43:53 -07:00
manifest.ts Update app favicon assets (#953) 2026-05-16 21:24:27 -07:00
not-found.tsx feat: mobile responsive, lint formats, toast, render issue fix (#688) 2026-01-21 03:11:53 +00:00
opengraph-image.png New Version of Supermemory Consumer App 2025-08-16 18:50:10 -07:00