Skip to content

fix(portal): show OAuth/Claude.ai assistants in the connected list#165

Merged
BrunooMoniz merged 1 commit into
mainfrom
fix/oauth-assistants-list
Jun 20, 2026
Merged

fix(portal): show OAuth/Claude.ai assistants in the connected list#165
BrunooMoniz merged 1 commit into
mainfrom
fix/oauth-assistants-list

Conversation

@BrunooMoniz

Copy link
Copy Markdown
Owner

ENG-3

A lista de assistentes do portal lia so account_api_tokens. Conexoes via OAuth do Claude.ai (e o operator bearer 'Claude Code') nunca criam linha la, entao o assistente MAIS usado ficava invisivel — embora toda busca dele seja gravada em ai_search_log com client='Claude.ai'.

Fix

listMcpTokens (src/portal/mcp-tokens.ts) faz UNION de:

  • (a) bearer tokens do portal (last_used_at derivado do log, revocable=true);
  • (b) clients DISTINCT de ai_search_log sem token (created_at=MIN(ts), last_used_at=MAX(ts), revocable=false), excluindo os que ja batem com o label de um token. Ordenado por uso recente, isolado por account_id.

Front: McpTokenSummary ganha revocable?; AssistantsCard (/inicio) mostra 'via OAuth' em vez de revogar pros nao-revogaveis; ContaTokensCard ('Tokens MCP') filtra pra revogaveis.

Aceite

  • src/portal/__tests__/mcp-tokens.test.ts: Claude.ai OAuth aparece, revocable por tipo, nao-duplicacao, escopo por conta, client NULL ignorado, ordenacao.
  • Backend npm run build limpo + npm test = 1484 pass / 0 fail.
  • Web typecheck + lint OK + 255 vitest pass.
  • Validar no portal apos deploy (Claude.ai na lista de Assistentes conectados).

Generated with Claude Code

A lista de assistentes do portal lia só account_api_tokens. Conexões via
OAuth do Claude.ai (e o operator bearer "Claude Code") nunca criam linha
nessa tabela, então o assistente MAIS usado ficava invisível — embora toda
busca dele seja gravada em ai_search_log com client='Claude.ai'.

Fix em listMcpTokens (src/portal/mcp-tokens.ts): UNION de duas fontes —
(a) os bearer tokens do portal (last_used_at derivado do log, como antes,
revocable=true) e (b) os clients DISTINCT vistos em ai_search_log que NÃO
têm token (created_at=MIN(ts), last_used_at=MAX(ts), revocable=false),
excluindo os que já batem com o label de um token (sem duplicar). Ordenado
por uso mais recente. Isolado por account_id (nunca cruza contas).

Front: McpTokenSummary ganha `revocable?`; AssistantsCard (/inicio) mostra
"via OAuth" em vez do botão revogar pros não-revogáveis; ContaTokensCard
("Tokens MCP") filtra pra revocable (segue só sobre tokens reais).

Teste: src/portal/__tests__/mcp-tokens.test.ts cobre Claude.ai OAuth
aparecendo, revocable por tipo, não-duplicação, escopo por conta, client
NULL ignorado e ordenação. Backend build + 1484 testes verdes; web
typecheck + lint + 255 vitest verdes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@BrunooMoniz BrunooMoniz merged commit 1404b3e into main Jun 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant