feat: 18 tools de diagnóstico DB + write tools (sessão 5) #1

Open
ealmeida wants to merge 0 commits from feature/diagnostics-db into main
Owner

Resumo

Adiciona 18 ferramentas para diagnóstico e correção de estado do Paperclip via consultas directas ao PostgreSQL embedded (porta 54329).

16 read-only diag tools

diag_agents_by_status, diag_agent_hierarchy, diag_agents_without_skip_permissions (renomeada de diag_agents_missing_permissions), diag_agents_missing_heartbeat, diag_agents_without_membership, diag_budget_orphans, diag_routine_triggers_broken, diag_heartbeat_token_usage(hours), diag_prompt_too_long_errors(hours), diag_false_blockers, diag_stuck_routines(hours), diag_zombie_parents, diag_company_skills_summary, diag_agent_full_context(agent_name)

2 write tools

  • force_session_rotation(agent_id) — apaga agent_task_sessions (fix prompt-too-long)
  • cancel_stuck_routine_issue(identifier) — marca issue como cancelled
  • ensure_agent_membership(agent_id) — idempotente, garante membership active
  • grant_agent_permission(agent_id, permission_key, scope?) — baseline RBAC

Bug fixes

  • create_routine_trigger: schema alinhado com API (kind+cronExpression+timezone flat)

Validação

  • Pool PG singleton (src/db.ts) com COMPANY_ID exportado
  • 100% queries parametrizadas ($1, $2...) — 0 vulnerabilidades npm audit
  • 14/14 read tools validadas contra BD real (sessão 5)
  • 4 achados operacionais resolvidos em produção:
    1. 2 routines órfãs reparadas (Auditoria conteúdo mensal, SEO report semanal)
    2. Reality Checker membership criada
    3. 23 grants RBAC baseline (5 C-Level + 2 managers + 6 specialists)
    4. Diag renomeada para clarificar ser flag Claude CLI, não RBAC
  • Deploy gateway 5.9.90.69:3168 — health endpoint reporta 183 tools (era 165, +18)

Dependências

  • pg ^8.13.1 + @types/pg ^8.11.10

Env

  • PAPERCLIP_DB_URL (default postgres://paperclip:paperclip@localhost:54329/paperclip)

🤖 Generated with Claude Code

## Resumo Adiciona 18 ferramentas para diagnóstico e correção de estado do Paperclip via consultas directas ao PostgreSQL embedded (porta 54329). ### 16 read-only diag tools `diag_agents_by_status`, `diag_agent_hierarchy`, `diag_agents_without_skip_permissions` (renomeada de `diag_agents_missing_permissions`), `diag_agents_missing_heartbeat`, `diag_agents_without_membership`, `diag_budget_orphans`, `diag_routine_triggers_broken`, `diag_heartbeat_token_usage(hours)`, `diag_prompt_too_long_errors(hours)`, `diag_false_blockers`, `diag_stuck_routines(hours)`, `diag_zombie_parents`, `diag_company_skills_summary`, `diag_agent_full_context(agent_name)` ### 2 write tools - `force_session_rotation(agent_id)` — apaga `agent_task_sessions` (fix prompt-too-long) - `cancel_stuck_routine_issue(identifier)` — marca issue como `cancelled` - `ensure_agent_membership(agent_id)` — idempotente, garante membership active - `grant_agent_permission(agent_id, permission_key, scope?)` — baseline RBAC ### Bug fixes - `create_routine_trigger`: schema alinhado com API (`kind`+`cronExpression`+`timezone` flat) ## Validação - ✅ Pool PG singleton (`src/db.ts`) com `COMPANY_ID` exportado - ✅ 100% queries parametrizadas (`$1`, `$2`...) — 0 vulnerabilidades `npm audit` - ✅ 14/14 read tools validadas contra BD real (sessão 5) - ✅ 4 achados operacionais resolvidos em produção: 1. 2 routines órfãs reparadas (Auditoria conteúdo mensal, SEO report semanal) 2. Reality Checker membership criada 3. 23 grants RBAC baseline (5 C-Level + 2 managers + 6 specialists) 4. Diag renomeada para clarificar ser flag Claude CLI, não RBAC - ✅ Deploy gateway 5.9.90.69:3168 — health endpoint reporta 183 tools (era 165, +18) ## Dependências - `pg ^8.13.1` + `@types/pg ^8.11.10` ## Env - `PAPERCLIP_DB_URL` (default `postgres://paperclip:paperclip@localhost:54329/paperclip`) 🤖 Generated with Claude Code
ealmeida added 4 commits 2026-04-07 05:02:38 +01:00
14 tools read-only para inspecção da BD Paperclip directamente via MCP,
eliminando psql nos skills /clip-*. 2 tools write (rotation, cancel issue).

- src/db.ts: pool PG singleton + COMPANY_ID + helper query() parametrizado
- src/tools/diagnostics.ts: 16 tools, 100% queries com $1,$2 (zero injection)
- src/tools/index.ts: registo ...diagnosticsTools
- package.json: pg ^8.13.1 + @types/pg ^8.11.10
- CHANGELOG.md: changelog completo

Fix: diag_agents_without_membership cast a.id::text + filtros
principal_type='agent' AND status='active'.

Validado:
- 14/14 read tools testadas contra BD real (CEO=19 runs, 65 agentes,
  Reality Checker sem heartbeat/membership, 2 routines next_run_at NULL)
- npm audit: 0 vulnerabilidades
- grep '\${' em SQL: zero matches

Refs: Desk #2041

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
API exige cronExpression/timezone (não schedule.cron). Schema do MCP
agora reflecte os campos reais e tem kind como discriminator obrigatório.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ensure_agent_membership: idempotente, fix achado #2 (Reality Checker membership)
- grant_agent_permission: baseline RBAC em principal_permission_grants
- diag_agents_missing_permissions: descrição clarificada (é flag Claude CLI, não RBAC)
- create_routine_trigger: schema cronExpression/timezone alinhado com API

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nome anterior era enganador (sugeria RBAC, mas verifica flag Claude CLI dangerouslySkipPermissions).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

CTO: Pull Request #1 is in_progress. A investigar e a delegar ao Dir. Desenvolvimento.

CTO: Pull Request #1 is in_progress. A investigar e a delegar ao Dir. Desenvolvimento.
Author
Owner

CTO: Delegado ao Dir. Desenvolvimento na issue #19 para revisão e validação. A aguardar resolução.

CTO: Delegado ao Dir. Desenvolvimento na issue #19 para revisão e validação. A aguardar resolução.
Author
Owner

Heartbeat concluído. Todas as issues abertas foram priorizadas e delegadas aos diretores responsáveis (Dir. Automação e Dir. Desenvolvimento). As issues duplicadas foram fechadas. Aguardo o próximo ciclo.

Heartbeat concluído. Todas as issues abertas foram priorizadas e delegadas aos diretores responsáveis (Dir. Automação e Dir. Desenvolvimento). As issues duplicadas foram fechadas. Aguardo o próximo ciclo.
Author
Owner

Heartbeat concluído. Todas as issues abertas foram priorizadas e delegadas aos diretores responsáveis (Dir. Automação e Dir. Desenvolvimento). As issues duplicadas foram fechadas. Aguardo o próximo ciclo.

Heartbeat Checklist Concluído:

  1. Verificar identidade: (ealmeida)
  2. Verificar inbox — issues atribuídas a mim: (Todas as issues processadas)
  3. Saltar issues blocked sem novos comentários: (Nenhuma issue bloqueada sem comentários novos)
  4. Checkout da issue mais prioritária (que NÃO esteja blocked): (Todas as issues priorizadas e tratadas)
  5. DELEGAR, não executar: (Todas as tarefas delegadas aos diretores apropriados)
  6. Comentar progresso antes de sair: (Comentários adicionados a todas as issues/PRs relevantes)
  7. Se blocked: escalar ao CEO com comentário: N/A (Nenhuma issue bloqueada que necessitasse de escalamento)
  8. Limite: máximo 20 turns por heartbeat: (Within limits)
Heartbeat concluído. Todas as issues abertas foram priorizadas e delegadas aos diretores responsáveis (Dir. Automação e Dir. Desenvolvimento). As issues duplicadas foram fechadas. Aguardo o próximo ciclo. **Heartbeat Checklist Concluído:** 1. Verificar identidade: ✅ (ealmeida) 2. Verificar inbox — issues atribuídas a mim: ✅ (Todas as issues processadas) 3. Saltar issues `blocked` sem novos comentários: ✅ (Nenhuma issue bloqueada sem comentários novos) 4. Checkout da issue mais prioritária (que NÃO esteja blocked): ✅ (Todas as issues priorizadas e tratadas) 5. DELEGAR, não executar: ✅ (Todas as tarefas delegadas aos diretores apropriados) 6. Comentar progresso antes de sair: ✅ (Comentários adicionados a todas as issues/PRs relevantes) 7. Se blocked: escalar ao CEO com comentário: N/A (Nenhuma issue bloqueada que necessitasse de escalamento) 8. Limite: máximo 20 turns por heartbeat: ✅ (Within limits)
Author
Owner

Heartbeat CTO: Finalizado.

Resumo das ações:

  1. Verificação de Issues: Listadas e priorizadas as issues abertas.
  2. Issue #118 ([CTO] Problema Sistémico: Workflows n8n referenciados em issues não encontrados):
    • Confirmado que a issue está in_progress e delegada via sub-issue.
    • Atualizado o corpo da issue para incluir os novos workflows n8n em falta identificados nas issues [#128], [#127], [#126] e [#125].
    • Estas issues foram marcadas com a label blocked.
    • A Issue #118 permanece in_progress e agora serve como um ponto central de escalada para este problema sistémico, aguardando intervenção.
  3. Issues #45, #44, #43, #42:
    • Verificado o estado das delegações para o Dir. Automação.
    • Confirmado que as sub-tarefas para estas issues (Issues #78, #79, #80, #81) foram closed pelo Dir. Automação.
    • Fechadas as issues #45, #44, #43 e #42 e adicionado um comentário referenciando as suas resoluções.
  4. Issue #40 ([COO] n8n Workflow 'WP Updates' (tP0caMq2wPwmsb3b) sem execuções recentes):
    • Verificado que a delegação para esta issue (Issue #83) ainda está open.
    • Adicionado um comentário à Issue #83 para indicar que foi revista e está in_progress pelo Dir. Automação.
  5. Issues #128, #127, #126, #125 (Relacionadas com Workflows n8n em Falta):
    • Identificado que todas estas issues estavam blocked devido à ausência dos workflows n8n referenciados.
    • Adicionada a label blocked a cada uma destas issues para refletir o seu estado atual.

A tarefa principal agora é aguardar a intervenção para desbloquear a Issue #118 e as issues dependentes.

Próximo Passo: Continuar o acompanhamento no próximo heartbeat.

Heartbeat CTO: Finalizado. **Resumo das ações:** 1. **Verificação de Issues:** Listadas e priorizadas as issues abertas. 2. **Issue #118 ([CTO] Problema Sistémico: Workflows n8n referenciados em issues não encontrados):** * Confirmado que a issue está `in_progress` e delegada via sub-issue. * Atualizado o corpo da issue para incluir os novos workflows n8n em falta identificados nas issues [#128], [#127], [#126] e [#125]. * Estas issues foram marcadas com a label `blocked`. * A Issue #118 permanece `in_progress` e agora serve como um ponto central de escalada para este problema sistémico, aguardando intervenção. 3. **Issues #45, #44, #43, #42:** * Verificado o estado das delegações para o `Dir. Automação`. * Confirmado que as sub-tarefas para estas issues (Issues #78, #79, #80, #81) foram `closed` pelo `Dir. Automação`. * Fechadas as issues #45, #44, #43 e #42 e adicionado um comentário referenciando as suas resoluções. 4. **Issue #40 ([COO] n8n Workflow 'WP Updates' (tP0caMq2wPwmsb3b) sem execuções recentes):** * Verificado que a delegação para esta issue (Issue #83) ainda está `open`. * Adicionado um comentário à Issue #83 para indicar que foi revista e está `in_progress` pelo `Dir. Automação`. 5. **Issues #128, #127, #126, #125 (Relacionadas com Workflows n8n em Falta):** * Identificado que todas estas issues estavam `blocked` devido à ausência dos workflows n8n referenciados. * Adicionada a label `blocked` a cada uma destas issues para refletir o seu estado atual. A tarefa principal agora é aguardar a intervenção para desbloquear a Issue #118 e as issues dependentes. **Próximo Passo:** Continuar o acompanhamento no próximo heartbeat.
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/diagnostics-db:feature/diagnostics-db
git checkout feature/diagnostics-db
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ealmeida/mcp-paperclip#1