Skip to content

[FEAT] CLI: adapter de sessão Codex — parser anônimo (mesmo contrato do Claude Code) #89

@trentas

Description

@trentas

Follow-up do épico #65. Estende a telemetria de uso para o Codex, reusando todo o pipe já construído (#67/#68/#86/#69).

User story

Como liderança de eng, eu quero que o uso do Codex também seja capturado e enviado como agregados anônimos, para que as views de uso de IA (#69) cubram todos os agentes da org, não só o Claude Code.

Acceptance criteria

  • Adapter iris/agent/codex.py com parse_session(transcript_path) -> ParsedSession, espelhando o contrato do claude_code.py
  • Allow-list de campos auditável (só usage/model/timestamp/tool-count), confirmada contra um transcript real do Codex
  • agent="codex" no UsageRecord; reusa recorder/spool/flush e o endpoint /api/ingest/usage sem mudança de schema
  • Hook de fim-de-sessão equivalente registrado (se o Codex expõe um; senão, documentar a alternativa)
  • Teste com transcript real cobrindo soma de tokens e contagem de tools (dedup se o formato exigir)

Scope / non-goals

Dentro: adapter Codex, parser, wiring no recorder/hook. Fora: mudanças no endpoint (#68) ou UI (#69) — o contrato iris.agent_usage.v1 já acomoda múltiplos agentes via o campo agent.

Se encaixa em qual estágio?

Stage 3 — extensão do épico #65, já destravado pelo ADR (#66).

Implementation notes

O formato do transcript do Codex precisa ser confirmado num arquivo real antes de codar (a dedup por message.id do Claude Code pode não se aplicar). Seguir o mesmo princípio: identidade morre na borda, só agregados (repo, dia, modelo) sobem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    pythonPull requests that update python codetype: featureNova funcionalidade

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions