Skip to content

[FEAT] CLI: adapter de sessão Claude Code + parser anônimo + hook SessionEnd #67

@trentas

Description

@trentas

Parte do épico #65. Bloqueada por #66 (ADR).

User story

Como dev, eu quero que a CLI capture o uso das minhas sessões de agente e envie apenas agregados anônimos, para que a org veja adoção/esforço de IA por repo sem que meus prompts, código ou identidade saiam da minha máquina.

Acceptance criteria

  • Hook SessionEnd registrado (iris agent enable) recebe session_id, transcript_path, cwd via stdin
  • Parser lê somente: message.usage.{input_tokens,output_tokens,cache_read_input_tokens,cache_creation_input_tokens}, message.model, timestamp, contagem de content[].type=="tool_use", isSidechain + arquivos agent-*.jsonl
  • Parser nunca acessa content[].text, .thinking, content[].input, nem linhas type=="user"/attachment (auditável no diff)
  • Identidade descartada na borda; repo derivado de cwd/git remote; timestamp reduzido a period (dia) + duration_bucket
  • Payload anônimo conforme contrato do épico; teste com transcript real cobrindo soma de tokens e contagem de tools

Scope / non-goals

Dentro: adapter Claude Code, hook, parser, strip, dedup-key rotativo opcional. Fora: adapter Codex (follow-up — formato a confirmar em transcript real); endpoint de ingestão (#68).

Se encaixa em qual estágio?

Stage 3 (prep) — bloqueada pelo ADR (#66).

Implementation notes

Parser de referência (~30 linhas) já validado contra transcript real em ~/.claude/projects/. Constante USAGE_FIELDS + loop que pula tudo que não é assistant. Padrão "adapter" (uma parse_session por agente).

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