fg-tracker-mcp 0.9.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README.md +22 -10
- package/dist/cli.js +12 -7
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +44 -4
- package/dist/client.js +80 -11
- package/dist/client.js.map +1 -1
- package/dist/database.js +1 -1
- package/dist/database.js.map +1 -1
- package/dist/diagnostics.d.ts +18 -0
- package/dist/diagnostics.js +467 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/docs.js +22 -22
- package/dist/docs.js.map +1 -1
- package/dist/format.d.ts +68 -3
- package/dist/format.js +113 -11
- package/dist/format.js.map +1 -1
- package/dist/guide.d.ts +1 -1
- package/dist/guide.js +27 -23
- package/dist/guide.js.map +1 -1
- package/dist/infra/handover.d.ts +1 -1
- package/dist/infra/handover.js +25 -23
- package/dist/infra/handover.js.map +1 -1
- package/dist/infra/iac.js +2 -2
- package/dist/infra/iac.js.map +1 -1
- package/dist/infra/instrument.js +5 -5
- package/dist/infra/instrument.js.map +1 -1
- package/dist/infra/tools.js +45 -32
- package/dist/infra/tools.js.map +1 -1
- package/dist/inputs.d.ts +40 -0
- package/dist/inputs.js +30 -0
- package/dist/inputs.js.map +1 -0
- package/dist/journeys.d.ts +71 -0
- package/dist/journeys.js +130 -0
- package/dist/journeys.js.map +1 -0
- package/dist/links.d.ts +87 -0
- package/dist/links.js +124 -0
- package/dist/links.js.map +1 -0
- package/dist/loadtest/scenario.js +1 -1
- package/dist/loadtest/scenario.js.map +1 -1
- package/dist/loadtest/tools.js +20 -11
- package/dist/loadtest/tools.js.map +1 -1
- package/dist/schemas.d.ts +621 -0
- package/dist/schemas.js +277 -0
- package/dist/schemas.js.map +1 -0
- package/dist/server.d.ts +21 -2
- package/dist/server.js +757 -147
- package/dist/server.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# Changelog — fg-tracker-mcp
|
|
2
2
|
|
|
3
|
+
## 0.11.0
|
|
4
|
+
|
|
5
|
+
Diagnóstico sem painel (revisão de 15/10/2026, T3). Todas as ferramentas novas usam rotas de leitura com `@ReadScope()` (funcionam com token pessoal `fgt_…`). As de janela absoluta, ordenação e comparação dependem da API desta mesma entrega (CONTRATO §4 "Janelas absolutas" e "Comparação", §18); com uma API anterior elas avisam (`windowIgnored`, `filtersApplied: false`, "API ignorou sort") ou explicam o caminho alternativo, e as demais continuam funcionando.
|
|
6
|
+
|
|
7
|
+
- **Saída estruturada:** toda ferramenta de leitura declara `outputSchema` e devolve `structuredContent` validado contra ele; o texto continua o de antes (resumo + JSON). Onde o JSON era um array (`tracker_list_endpoints`, `tracker_list_releases`), o `structuredContent` é `{ items, … }`. Respostas com janela trazem `window: { from, to }`.
|
|
8
|
+
- **Evidência e links:** as ferramentas de análise devolvem `evidence[]` (`traceId`, `spanId?`, `metric`, `value`, `window`, `note?`) só com traces que a API devolveu — no detalhe do trace, a raiz, os buracos sem span, os spans de I/O mais lentos, os repetidos e os que falharam (com o serviço). `links.dashboard` e blocos `resource_link` para o painel (`FG_TRACKER_WEB_URL` ou derivado da API) e para os novos recursos `fg-tracker://trace/{traceId}` e `fg-tracker://issue/{issueId}` (`?projectId=` opcional).
|
|
9
|
+
- **Ferramentas novas** (sem alias `track_*`): `tracker_compare` (abaixo), `tracker_get_endpoint` (`/endpoints/detail`), `tracker_list_queries` (`/database`, com `env`/`service`, busca no SQL e um trace + span real da execução mais lenta de cada query), `tracker_log_stats` (`/logs/histogram` + `/logs/facets`), `tracker_list_alert_events` (`/alerts/events`, filtros por tipo, severidade, estado e janela; destinatários mascarados) e `tracker_list_environments` (`/release-environments` + ambientes e serviços do overview).
|
|
10
|
+
- `tracker_search_logs` aceita `from`/`to` ISO 8601 (até 31 dias, validado antes da chamada).
|
|
11
|
+
- **Janelas absolutas:** `tracker_get_overview`, `tracker_list_endpoints`, `tracker_get_endpoint`, `tracker_list_traces`, `tracker_list_queries` e `tracker_list_providers` aceitam `from`/`to` e conferem a janela que a API aplicou (cabeçalho `x-fg-tracker-window`).
|
|
12
|
+
- **`tracker_compare`** (`GET …/compare`): duas janelas ou duas releases — latência total e por rota, decomposição do tempo por execução por tipo de span e spans que mais cresceram, com `evidence`. Cada lado declara `coverage` de spans brutos (retenção); sem eles a latência vem dos rollups e `decomposition` é `null`.
|
|
13
|
+
- `tracker_list_traces`: `sort: "duration"`, `rootKind: "browser"` e `hasSpan: { kind?, service?, status?, name? }` (traces com algum span — inclusive filho ou de outro serviço — que case).
|
|
14
|
+
- `tracker_get_monitor`: `from`/`to`, horário esperado e atraso (`delayMs`) de cada execução de job e `schedule.overdueMs`.
|
|
15
|
+
- **M01:** `tracker_endpoint_history` não esconde mais o período recente: `points` é amostrado em 48 pontos com o primeiro e o último (antes, os 25 mais antigos), `markers` traz os 25 deploys mais recentes; aceita `service`/`env`. Todas as séries passam a incluir o último ponto na amostragem.
|
|
16
|
+
- **M02:** `tracker_verify_ingest` procura qualquer raiz (`rootKind=all`): projeto só de jobs ou de navegador não recebe mais "NENHUM trace".
|
|
17
|
+
- **M03:** dicas de erro por tipo de credencial: 401 com token pessoal (crie outro), 401 com sessão (prefira um token de leitura), 403 `TOKEN_SCOPE_INSUFFICIENT` (o token é somente leitura) distinto de 403 por falta de acesso ao projeto.
|
|
18
|
+
- **M04:** `apiKey` vazia (token de leitura) é tratada como ausente: o guia usa o placeholder e explica onde copiar a chave, e `tracker_list_projects` diz que a chave não foi devolvida.
|
|
19
|
+
- **M05:** `infra_plan_handover` deixa de se declarar somente leitura (faz POST numa rota de sessão).
|
|
20
|
+
- **Segurança:** `FG_TRACKER_READ_ONLY=1` registra só as ferramentas com `readOnlyHint: true`; `tracker_status` mostra o tipo de credencial (token pessoal ou sessão), a validade, o modo somente leitura e avisa quando é sessão. A documentação recomenda `fgt_` + `FG_TRACKER_READ_ONLY=1`.
|
|
21
|
+
- **Prompts das cinco jornadas:** `investigar-regressao-p95`, `investigar-query-lenta`, `investigar-job-atrasado`, `investigar-erro-distribuido` (API → serviço) e `confirmar-correcao`, com a sequência de ferramentas (≤ 6 chamadas), o critério de parada e a regra de citar a evidência.
|
|
22
|
+
- Aliases `track_*`: continuam para os 21 nomes da 0.10, com o mesmo resultado (inclusive `structuredContent`), mas sem repetir o `outputSchema` no `tools/list`.
|
|
23
|
+
- `tools/list`: 67 ferramentas (~130 KB) no padrão; 32 (~79 KB) com `FG_TRACKER_READ_ONLY=1` e `FG_TRACKER_LEGACY_TOOL_NAMES=0` (recomendado).
|
|
24
|
+
- Testes pelo transporte MCP (cliente em memória, sem `_registeredTools`); `npm test` compila antes. E2E das jornadas contra a API real (`apps/api/test/mcp-journeys.cases.cjs`).
|
|
25
|
+
|
|
26
|
+
## 0.10.0
|
|
27
|
+
|
|
28
|
+
Reúne o que entrou na `main` desde a 0.9.1 (PRs #11, #12, #13, #15) e a renomeação para FG Tracker. Requer a API com filtros de issues por cursor (PR #12), raízes `custom` (PR #15) e ambientes de monitores e releases (PR #14); com uma API anterior, os parâmetros novos são ignorados ou geram aviso, e as ferramentas antigas continuam funcionando.
|
|
29
|
+
|
|
30
|
+
- **Ferramentas renomeadas de `track_*` para `tracker_*`** (`tracker_status`, `tracker_list_projects`…), seguindo o nome do produto, **FG Tracker**. Os nomes antigos continuam registrados como aliases obsoletos (mesmo schema e handler; a descrição aponta o nome novo): a versão seguinte os desliga por padrão e a 1.0 os remove. `FG_TRACKER_LEGACY_TOOL_NAMES=0` deixa só os nomes novos. Atualize permissões salvas (ex.: `mcp__fg-tracker__track_status` → `mcp__fg-tracker__tracker_status`).
|
|
31
|
+
- Textos, instruções do servidor, prompts e quickstart passam a dizer **FG Tracker**.
|
|
32
|
+
- **Limites de saída explícitos**: a lista principal de logs, traces, endpoints, releases, checks de um monitor e spans de um trace respeita `limit` até `FG_TRACKER_MAX_ITEMS` (default 200, teto 1000). Em logs e traces o `limit` é reduzido na requisição, para o `nextCursor` continuar válido. `tracker_list_projects` e `tracker_list_monitors` não têm `limit`: são cortadas em `FG_TRACKER_MAX_ITEMS` e trazem `total`, `returned` e `truncated`. Arrays internos continuam cortados em 25, agora com `<campo>Omitted`.
|
|
33
|
+
- **Mudanças de formato no JSON** (valem também para os aliases `track_*`):
|
|
34
|
+
- `tracker_list_projects` e `tracker_list_monitors`: `{ total, returned, truncated, items }` (antes, o array direto);
|
|
35
|
+
- `tracker_list_issues`: `{ items, nextCursor, total, counts, limit }` (antes, o array direto), também com uma API que ainda devolve array;
|
|
36
|
+
- `tracker_list_monitors`: cada item deixa de trazer `recent` (os últimos checks) e passa a trazer `lastTraceId`, `lastTraceAt` e `lastRelease`; o histórico de checks fica em `tracker_get_monitor`;
|
|
37
|
+
- `tracker_get_trace`: sai `spansOmitted` e entra `spanPage` (`total`, `matched`, `offset`, `returned`, `nextSpanOffset`), com os spans da página pedida.
|
|
38
|
+
- `tracker_get_trace`: paginação de spans (`spanOffset`/`spanLimit`, 80 por página) e filtros `kind`, `service`, `name`.
|
|
39
|
+
- `tracker_get_monitor` (novo): histórico de checks com `traceId` e `release`; `tracker_list_monitors` mostra id, ambiente e o último trace e aceita `environment`.
|
|
40
|
+
- `tracker_list_traces` aceita `release`, `userId`, `rootKind`, `service` e `env`; `tracker_search_logs` aceita `env` e `requestId`; `tracker_list_releases` aceita `limit` e `environment`.
|
|
41
|
+
- `tracker_get_overview` aceita `service`/`env` e resume os jobs (raízes `custom`); `tracker_list_endpoints` aceita `rootKind`/`service`/`env`.
|
|
42
|
+
- `tracker_list_issues`: `sort`, `type[]`, `severity[]`, `q`, `release`, `limit` (até 200) e `cursor`, com total, contagem por status, `nextCursor` e severidade máxima × última.
|
|
43
|
+
- `tracker_traffic_summary` explica janela vazia (rollup pendente, dados antes da janela ou nenhum pageview); `tracker_status` mostra a validade do token sem exibi-lo.
|
|
44
|
+
- README: configuração com o token pessoal de leitura `fgt_…` (PR #13; não cai com logout). As ferramentas que escrevem (criar projeto, registrar release, infraestrutura, testes de carga) continuam exigindo o token de sessão.
|
|
45
|
+
- `infra_plan_handover` e `infra_open_handover_pr`: a seção do README passa a se chamar "Infraestrutura controlada pelo FG Tracker"; um repositório já transferido, com o título antigo ("pelo FG Track"), não ganha uma segunda.
|
|
46
|
+
- O servidor anuncia a versão do pacote (a 0.9.1 anunciava 0.9.0).
|
|
47
|
+
|
|
3
48
|
## 0.9.1 — 2026-10-01
|
|
4
49
|
|
|
5
50
|
- Atualiza para **FG Track** os nomes de produto exibidos por ferramentas e documentação; nomes das ferramentas e transporte MCP permanecem compatíveis.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# fg-tracker-mcp
|
|
2
2
|
|
|
3
|
-
Servidor [MCP](https://modelcontextprotocol.io) (stdio) do FG
|
|
3
|
+
Servidor [MCP](https://modelcontextprotocol.io) (stdio) do FG Tracker para agentes de código (Claude Code, Cursor, Windsurf, Claude Desktop): projetos, métricas, traces, issues com commits suspeitos, releases, monitores, provedores externos, logs, slow queries, eventos de alerta e guia de instrumentação, com respostas estruturadas (`structuredContent`) e evidência verificável para diagnosticar sem o painel. Documentação completa: `docs/mcp.md` no repositório.
|
|
4
4
|
|
|
5
5
|
## Instalação
|
|
6
6
|
|
|
@@ -9,7 +9,8 @@ Claude Code:
|
|
|
9
9
|
```bash
|
|
10
10
|
claude mcp add fg-tracker \
|
|
11
11
|
-e FG_TRACKER_URL=http://localhost:4050 \
|
|
12
|
-
-e FG_TRACKER_TOKEN
|
|
12
|
+
-e FG_TRACKER_TOKEN=fgt_<seu_token_de_leitura> \
|
|
13
|
+
-e FG_TRACKER_READ_ONLY=1 \
|
|
13
14
|
-- npx -y fg-tracker-mcp
|
|
14
15
|
```
|
|
15
16
|
|
|
@@ -23,13 +24,16 @@ Cursor / Windsurf / Claude Desktop (JSON):
|
|
|
23
24
|
"args": ["-y", "fg-tracker-mcp"],
|
|
24
25
|
"env": {
|
|
25
26
|
"FG_TRACKER_URL": "http://localhost:4050",
|
|
26
|
-
"FG_TRACKER_TOKEN": "<
|
|
27
|
+
"FG_TRACKER_TOKEN": "fgt_<seu_token_de_leitura>",
|
|
28
|
+
"FG_TRACKER_READ_ONLY": "1"
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
```
|
|
32
34
|
|
|
35
|
+
Gere o token em **Conectar → Usar MCP → Gerar token de leitura para o MCP** (ou em **Conta → Tokens de acesso**). É a configuração recomendada: o token só lê, e `FG_TRACKER_READ_ONLY=1` esconde do agente as tools que escrevem. Para o agente criar projetos, registrar releases, mexer em infraestrutura ou iniciar testes de carga, use a configuração com a sessão (sem `FG_TRACKER_READ_ONLY`); `tracker_status` avisa quando a credencial é uma sessão. Detalhes em `docs/mcp.md` → Token de leitura.
|
|
36
|
+
|
|
33
37
|
Em produção, `FG_TRACKER_URL` é a URL da API mostrada no painel em **Conectar**. O endereço de produção da API é `https://tracker-api.fortground.com.br` (o antigo `track-api.fortground.com.br` continua respondendo).
|
|
34
38
|
|
|
35
39
|
## Variáveis de ambiente
|
|
@@ -37,19 +41,27 @@ Em produção, `FG_TRACKER_URL` é a URL da API mostrada no painel em **Conectar
|
|
|
37
41
|
| variável | default | uso |
|
|
38
42
|
|---|---|---|
|
|
39
43
|
| `FG_TRACKER_URL` | `http://localhost:4050` | URL base da API |
|
|
40
|
-
| `FG_TRACKER_TOKEN` | — | token de
|
|
44
|
+
| `FG_TRACKER_TOKEN` | — | `Authorization: Bearer`: token pessoal de leitura `fgt_…` (painel → Conta → Tokens de acesso; não cai com logout) ou token de sessão, necessário só para as tools que escrevem — projetos, métricas, traces, issues, logs |
|
|
41
45
|
| `FG_TRACKER_API_KEY` | — | chave de projeto (`x-fg-tracker-key`) — opcional, só ingestão |
|
|
42
46
|
| `FG_TRACKER_TIMEOUT_MS` | `15000` | timeout das chamadas HTTP |
|
|
47
|
+
| `FG_TRACKER_MAX_ITEMS` | `200` | teto de itens da lista principal de cada tool (1 a 1000) |
|
|
48
|
+
| `FG_TRACKER_READ_ONLY` | desligado | `1`: só as tools de leitura (`readOnlyHint: true`) são registradas |
|
|
49
|
+
| `FG_TRACKER_WEB_URL` | derivada da API | URL do painel nos links das respostas (`tracker-api.*` → `tracker.*`) |
|
|
50
|
+
| `FG_TRACKER_LEGACY_TOOL_NAMES` | ligado | `0` desliga os aliases obsoletos `track_*` |
|
|
43
51
|
|
|
44
52
|
Os nomes antigos `STREAD_TRACK_*` continuam lidos quando o nome novo está ausente.
|
|
45
53
|
|
|
46
54
|
## Tools, prompt e resource
|
|
47
55
|
|
|
48
|
-
|
|
56
|
+
Diagnóstico (0.11): toda tool de leitura tem `outputSchema` e devolve `structuredContent` (o texto continua igual); as de análise trazem `evidence[]` (`traceId`, `spanId?`, métrica, valor e janela) apontando para traces existentes, mais links para o painel e para os recursos `fg-tracker://trace/{traceId}` e `fg-tracker://issue/{issueId}`. Tools novas: `tracker_compare` (duas janelas ou releases: onde o tempo cresceu, com cobertura de spans brutos), `tracker_get_endpoint` (detalhe e traces mais lentos de uma rota), `tracker_list_queries` (slow queries com o trace e o span da execução mais lenta), `tracker_log_stats` (histograma e facetas de logs), `tracker_list_alert_events` (histórico de alertas, destinatários mascarados) e `tracker_list_environments`; métricas, traces e logs aceitam `from`/`to` ISO; `tracker_list_traces` ordena por duração e filtra por span filho (`hasSpan`); `tracker_get_monitor` mostra o atraso de cada execução. Prompts das jornadas: `investigar-regressao-p95`, `investigar-query-lenta`, `investigar-job-atrasado`, `investigar-erro-distribuido` e `confirmar-correcao`. Detalhes em `docs/mcp.md` → Saída estruturada e Jornadas de diagnóstico.
|
|
57
|
+
|
|
58
|
+
Tools `tracker_*` (até a 0.9, `track_*`), prompt `instrument-project` e resource `fg-tracker://docs/quickstart`. Os nomes `track_*` continuam registrados como aliases obsoletos (a versão seguinte os desliga por padrão e a 1.0 os remove); `FG_TRACKER_LEGACY_TOOL_NAMES=0` deixa só os nomes novos.
|
|
49
59
|
|
|
50
60
|
Infraestrutura AWS (0.6.0): tools `infra_*` e prompt `connect-infrastructure` — detectar contas/ambientes/regiões nas credenciais locais, conectar cada ambiente, descobrir recursos com credenciais locais (somente leitura), analisar o IaC, instrumentar, validar e gerar o PR de transferência de controle. Nenhuma tool altera recursos na AWS. Detalhes em `docs/mcp.md` → Infraestrutura.
|
|
51
61
|
|
|
52
|
-
|
|
62
|
+
Limites e navegação: as listas respeitam `limit` até `FG_TRACKER_MAX_ITEMS` e preservam o `nextCursor` da API; só arrays internos são cortados em 25 (com `<campo>Omitted`). `tracker_get_trace` pagina os spans (`spanOffset`, `spanLimit`) e filtra por `kind`, `service` e `name`; `tracker_get_monitor { projectId, monitorId | slug }` traz o histórico de checks com `traceId` e `release`; `tracker_list_traces` aceita `release`/`userId` e `tracker_search_logs` aceita `env`/`requestId`; `tracker_status` mostra quando o token expira. Detalhes em `docs/mcp.md` → Limites de saída.
|
|
63
|
+
|
|
64
|
+
Domínios permitidos (0.9.0): `tracker_update_allowed_origins { projectId, origins }` substitui as origens de navegador aceitas no CORS da ingestão (`PATCH /v1/projects/:id { allowedOrigins }`); `tracker_list_projects` mostra a lista atual — leia antes e confirme com o usuário.
|
|
53
65
|
|
|
54
66
|
Simulação de ambiente (0.8.0): prompt `create-load-test` e tools `loadtest_*` (CONTRATO.md §28.8):
|
|
55
67
|
|
|
@@ -74,13 +86,13 @@ O pacote foi renomeado de `stread-track-mcp` (última versão no npm: 0.2.0) par
|
|
|
74
86
|
| nome do servidor MCP `stread-track` | `fg-tracker` | renomeie a entrada na config do cliente quando quiser |
|
|
75
87
|
| resource `stread-track://docs/quickstart` | `fg-tracker://docs/quickstart` | a URI antiga continua registrada (mesmo conteúdo) |
|
|
76
88
|
| header `x-stread-track-key` | `x-fg-tracker-key` | a API aceita os dois |
|
|
77
|
-
|
|
|
89
|
+
| prompt `instrument-project` | inalterado | — |
|
|
78
90
|
|
|
79
91
|
Na config do cliente: troque `"stread-track": { "command": "npx", "args": ["-y", "stread-track-mcp"] }` por `"fg-tracker": { "command": "npx", "args": ["-y", "fg-tracker-mcp"] }` e renomeie as variáveis de `env`.
|
|
80
92
|
|
|
81
93
|
## Database detection (0.2.0)
|
|
82
94
|
|
|
83
|
-
`
|
|
95
|
+
`tracker_detect_databases { projectPath, serviceName }` inspects local Node project
|
|
84
96
|
manifests and imports without opening .env/credential files, following symlinks,
|
|
85
97
|
executing project scripts or reading dependencies. It returns candidate engines,
|
|
86
98
|
driver adapters, source references and an implementation guide. Multiple databases
|
|
@@ -88,8 +100,8 @@ are reported separately; a dependency alone is not proof of production use.
|
|
|
88
100
|
|
|
89
101
|
The coding agent must verify client creation sites, apply the appropriate SDK
|
|
90
102
|
adapter, preserve transactions/pool settings, and validate real `db.query` spans
|
|
91
|
-
under an HTTP request with `
|
|
92
|
-
`
|
|
103
|
+
under an HTTP request with `tracker_get_trace`. Detect before requesting
|
|
104
|
+
`tracker_instrumentation_guide { framework, databaseDriver, projectId }`.
|
|
93
105
|
|
|
94
106
|
Native adapters: pg and Postgres.js (including Drizzle). Generic adapters cover
|
|
95
107
|
synchronous, Promise and error-first callback operations; explicit completion
|
package/dist/cli.js
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* Entrada do binário `fg-tracker-mcp` (alias obsoleto: `stread-track-mcp`): sobe o servidor MCP em stdio.
|
|
4
|
-
* Env: FG_TRACKER_URL (default http://localhost:4050), FG_TRACKER_TOKEN, FG_TRACKER_API_KEY,
|
|
5
|
-
* FG_TRACKER_TIMEOUT_MS — os nomes legados STREAD_TRACK_*
|
|
4
|
+
* Env: FG_TRACKER_URL (default http://localhost:4050), FG_TRACKER_TOKEN (fgt_… ou sessão), FG_TRACKER_API_KEY,
|
|
5
|
+
* FG_TRACKER_TIMEOUT_MS, FG_TRACKER_READ_ONLY, FG_TRACKER_WEB_URL — os nomes legados STREAD_TRACK_*
|
|
6
|
+
* continuam valendo como fallback.
|
|
6
7
|
*/
|
|
7
8
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
8
9
|
import { configFromEnv, TrackClient } from './client.js';
|
|
9
|
-
import { createServer, SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
10
|
+
import { createServer, readOnlyFromEnv, SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
10
11
|
const argv = process.argv.slice(2);
|
|
11
12
|
if (argv.includes('--help') || argv.includes('-h')) {
|
|
12
13
|
process.stdout.write([
|
|
13
|
-
`${SERVER_NAME}-mcp ${SERVER_VERSION} — servidor MCP (stdio) do FG
|
|
14
|
+
`${SERVER_NAME}-mcp ${SERVER_VERSION} — servidor MCP (stdio) do FG Tracker`,
|
|
14
15
|
'',
|
|
15
16
|
'Uso: fg-tracker-mcp (sem argumentos; fala MCP JSON-RPC via stdin/stdout)',
|
|
16
17
|
' fg-tracker-mcp --version',
|
|
17
18
|
'',
|
|
18
19
|
'Variáveis de ambiente:',
|
|
19
20
|
' FG_TRACKER_URL URL da API (default http://localhost:4050)',
|
|
20
|
-
' FG_TRACKER_TOKEN token de
|
|
21
|
+
' FG_TRACKER_TOKEN token pessoal de leitura fgt_… (recomendado: painel → Conta → Tokens de acesso) ou de sessão (Authorization: Bearer)',
|
|
21
22
|
' FG_TRACKER_API_KEY chave de projeto (x-fg-tracker-key) — opcional, só ingestão',
|
|
22
23
|
' FG_TRACKER_TIMEOUT_MS timeout das chamadas HTTP (default 15000)',
|
|
24
|
+
' FG_TRACKER_READ_ONLY=1 só registra ferramentas de leitura (esconde criar projeto, releases, infraestrutura, testes de carga)',
|
|
25
|
+
' FG_TRACKER_WEB_URL URL do painel para os links (default: derivada de FG_TRACKER_URL, ex. tracker-api.* → tracker.*)',
|
|
26
|
+
' FG_TRACKER_LEGACY_TOOL_NAMES=0 não registra os aliases obsoletos track_* das ferramentas tracker_*',
|
|
23
27
|
' (os nomes antigos STREAD_TRACK_* ainda são lidos como fallback; serão removidos na 1.0)',
|
|
24
28
|
'',
|
|
25
29
|
'Instalação no Claude Code:',
|
|
26
|
-
' claude mcp add fg-tracker -e FG_TRACKER_URL=http://localhost:4050 -e FG_TRACKER_TOKEN
|
|
30
|
+
' claude mcp add fg-tracker -e FG_TRACKER_URL=http://localhost:4050 -e FG_TRACKER_TOKEN=fgt_... -e FG_TRACKER_READ_ONLY=1 -- npx -y fg-tracker-mcp',
|
|
27
31
|
'',
|
|
28
32
|
].join('\n'));
|
|
29
33
|
process.exit(0);
|
|
@@ -40,7 +44,8 @@ const invoked = process.argv[1]?.split(/[\\/]/).pop() ?? '';
|
|
|
40
44
|
if (invoked.startsWith('stread-track-')) {
|
|
41
45
|
console.error(`[fg-tracker-mcp] "${invoked}" está obsoleto: use "fg-tracker-mcp" (o alias será removido na 1.0).`);
|
|
42
46
|
}
|
|
43
|
-
|
|
47
|
+
const credential = { access_token: 'pessoal (leitura)', session: 'de sessão (lê e escreve; prefira um fgt_ de leitura)', none: 'ausente' }[client.credentialKind];
|
|
48
|
+
console.error(`[fg-tracker-mcp] API ${config.baseUrl} · token ${credential} · apiKey ${config.apiKey ? 'ok' : 'ausente'}${readOnlyFromEnv() ? ' · somente leitura' : ''}`);
|
|
44
49
|
const transport = new StdioServerTransport();
|
|
45
50
|
await server.connect(transport);
|
|
46
51
|
const shutdown = () => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,GAAG,WAAW,QAAQ,cAAc,uCAAuC;QAC3E,EAAE;QACF,uFAAuF;QACvF,+BAA+B;QAC/B,EAAE;QACF,wBAAwB;QACxB,qEAAqE;QACrE,+IAA+I;QAC/I,sFAAsF;QACtF,oEAAoE;QACpE,gIAAgI;QAChI,2HAA2H;QAC3H,uGAAuG;QACvG,2FAA2F;QAC3F,EAAE;QACF,4BAA4B;QAC5B,oJAAoJ;QACpJ,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;AAC/B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAExC,mEAAmE;AACnE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,uEAAuE,CAAC,CAAC;AACrH,CAAC;AACD,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,sDAAsD,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAClK,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,YAAY,UAAU,aAAa,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE3K,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,MAAM,QAAQ,GAAG,GAAS,EAAE;IAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cliente HTTP mínimo para a API do FG
|
|
3
|
-
* Lê `FG_TRACKER_URL`, `FG_TRACKER_TOKEN` (Bearer de
|
|
4
|
-
*
|
|
2
|
+
* Cliente HTTP mínimo para a API do FG Tracker (docs/CONTRATO.md §4, §8, §11).
|
|
3
|
+
* Lê `FG_TRACKER_URL`, `FG_TRACKER_TOKEN` (Bearer: token pessoal de leitura `fgt_…`
|
|
4
|
+
* ou token de sessão), `FG_TRACKER_API_KEY` (chave de projeto, header
|
|
5
|
+
* `x-fg-tracker-key`), `FG_TRACKER_TIMEOUT_MS` e `FG_TRACKER_WEB_URL` — com
|
|
5
6
|
* fallback para os nomes legados `STREAD_TRACK_*` (`stread-track-mcp` ≤ 0.3).
|
|
6
7
|
*/
|
|
7
8
|
/** API local do monorepo. Em produção a API é `https://tracker-api.fortground.com.br`. */
|
|
@@ -18,6 +19,8 @@ export interface TrackClientConfig {
|
|
|
18
19
|
token?: string;
|
|
19
20
|
apiKey?: string;
|
|
20
21
|
timeoutMs?: number;
|
|
22
|
+
/** URL do painel, para links (`FG_TRACKER_WEB_URL`; default derivado de `baseUrl`). */
|
|
23
|
+
webUrl?: string;
|
|
21
24
|
}
|
|
22
25
|
export type QueryValue = string | number | boolean | undefined | null;
|
|
23
26
|
export declare class TrackApiError extends Error {
|
|
@@ -29,20 +32,53 @@ export declare class TrackApiError extends Error {
|
|
|
29
32
|
describe(): string;
|
|
30
33
|
}
|
|
31
34
|
export declare function configFromEnv(env?: NodeJS.ProcessEnv): TrackClientConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Painel que acompanha a API: `tracker-api.<domínio>` → `tracker.<domínio>` (o alias antigo
|
|
37
|
+
* `track-api` também), `localhost:4050` → `localhost:3050`. Sem regra conhecida, `null`:
|
|
38
|
+
* as ferramentas deixam de mandar links do painel, nunca inventam um.
|
|
39
|
+
*/
|
|
40
|
+
export declare function webUrlFor(baseUrl: string): string | null;
|
|
41
|
+
/** Cabeçalho com a janela absoluta (`from`/`to`) que a API aplicou (CONTRATO.md §4). */
|
|
42
|
+
export declare const WINDOW_HEADER = "x-fg-tracker-window";
|
|
43
|
+
/** Cabeçalho com os parâmetros extras que a rota aplicou (ex.: `traces-sort,traces-has-span`). */
|
|
44
|
+
export declare const CAPABILITIES_HEADER = "x-fg-tracker-capabilities";
|
|
45
|
+
/** Prefixo dos tokens pessoais de leitura (CONTRATO.md §8.1). */
|
|
46
|
+
export declare const ACCESS_TOKEN_PREFIX = "fgt_";
|
|
47
|
+
/** Tipo da credencial de `FG_TRACKER_TOKEN`, pelo prefixo (sem chamar a API). */
|
|
48
|
+
export type CredentialKind = 'access_token' | 'session' | 'none';
|
|
32
49
|
export declare class TrackClient {
|
|
33
50
|
readonly config: TrackClientConfig;
|
|
34
51
|
constructor(config: TrackClientConfig);
|
|
35
52
|
get baseUrl(): string;
|
|
36
53
|
get hasToken(): boolean;
|
|
54
|
+
/** `FG_TRACKER_TOKEN` é um token pessoal de leitura (não uma sessão). */
|
|
55
|
+
get hasAccessToken(): boolean;
|
|
56
|
+
get credentialKind(): CredentialKind;
|
|
57
|
+
/** Painel para links (`FG_TRACKER_WEB_URL` ou derivado da API); `null` se desconhecido. */
|
|
58
|
+
get webUrl(): string | null;
|
|
37
59
|
get hasApiKey(): boolean;
|
|
38
|
-
/** Headers de autenticação: Bearer (sessão) e/ou chave de projeto. */
|
|
60
|
+
/** Headers de autenticação: Bearer (token pessoal ou sessão) e/ou chave de projeto. */
|
|
39
61
|
private authHeaders;
|
|
40
62
|
request<T = unknown>(method: 'GET' | 'POST' | 'PATCH' | 'DELETE', path: string, options?: {
|
|
41
63
|
query?: Record<string, QueryValue>;
|
|
42
64
|
body?: unknown;
|
|
43
65
|
headers?: Record<string, string>;
|
|
66
|
+
onResponse?: (res: Response) => void;
|
|
44
67
|
}): Promise<T>;
|
|
45
68
|
get<T = unknown>(path: string, query?: Record<string, QueryValue>): Promise<T>;
|
|
69
|
+
/**
|
|
70
|
+
* GET de uma leitura com janela: devolve também a janela absoluta que a API confirmou no
|
|
71
|
+
* cabeçalho `x-fg-tracker-window` (`null` = a API usou `range`, ou é anterior a from/to e os
|
|
72
|
+
* ignorou).
|
|
73
|
+
*/
|
|
74
|
+
getWindowed<T = unknown>(path: string, query?: Record<string, QueryValue>): Promise<{
|
|
75
|
+
body: T;
|
|
76
|
+
window: {
|
|
77
|
+
from: string;
|
|
78
|
+
to: string;
|
|
79
|
+
} | null;
|
|
80
|
+
capabilities: Set<string>;
|
|
81
|
+
}>;
|
|
46
82
|
post<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
47
83
|
patch<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
48
84
|
}
|
|
@@ -77,6 +113,10 @@ export interface TracesResponse {
|
|
|
77
113
|
items: Array<{
|
|
78
114
|
traceId: string;
|
|
79
115
|
name: string;
|
|
116
|
+
/** Kind, serviço e ambiente da raiz que representa o trace (APIs anteriores não mandam). */
|
|
117
|
+
kind?: string;
|
|
118
|
+
service?: string | null;
|
|
119
|
+
environment?: string | null;
|
|
80
120
|
method: string | null;
|
|
81
121
|
statusCode: number | null;
|
|
82
122
|
startedAt: string;
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cliente HTTP mínimo para a API do FG
|
|
3
|
-
* Lê `FG_TRACKER_URL`, `FG_TRACKER_TOKEN` (Bearer de
|
|
4
|
-
*
|
|
2
|
+
* Cliente HTTP mínimo para a API do FG Tracker (docs/CONTRATO.md §4, §8, §11).
|
|
3
|
+
* Lê `FG_TRACKER_URL`, `FG_TRACKER_TOKEN` (Bearer: token pessoal de leitura `fgt_…`
|
|
4
|
+
* ou token de sessão), `FG_TRACKER_API_KEY` (chave de projeto, header
|
|
5
|
+
* `x-fg-tracker-key`), `FG_TRACKER_TIMEOUT_MS` e `FG_TRACKER_WEB_URL` — com
|
|
5
6
|
* fallback para os nomes legados `STREAD_TRACK_*` (`stread-track-mcp` ≤ 0.3).
|
|
6
7
|
*/
|
|
7
8
|
/** API local do monorepo. Em produção a API é `https://tracker-api.fortground.com.br`. */
|
|
@@ -37,7 +38,27 @@ export function configFromEnv(env = process.env) {
|
|
|
37
38
|
const apiKey = readEnv('API_KEY', env);
|
|
38
39
|
const timeoutRaw = Number(readEnv('TIMEOUT_MS', env));
|
|
39
40
|
const timeoutMs = Number.isFinite(timeoutRaw) && timeoutRaw > 0 ? timeoutRaw : 15_000;
|
|
40
|
-
|
|
41
|
+
const webUrl = readEnv('WEB_URL', env)?.replace(/\/+$/, '');
|
|
42
|
+
return { baseUrl, token, apiKey, timeoutMs, ...(webUrl ? { webUrl } : {}) };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Painel que acompanha a API: `tracker-api.<domínio>` → `tracker.<domínio>` (o alias antigo
|
|
46
|
+
* `track-api` também), `localhost:4050` → `localhost:3050`. Sem regra conhecida, `null`:
|
|
47
|
+
* as ferramentas deixam de mandar links do painel, nunca inventam um.
|
|
48
|
+
*/
|
|
49
|
+
export function webUrlFor(baseUrl) {
|
|
50
|
+
let url;
|
|
51
|
+
try {
|
|
52
|
+
url = new URL(baseUrl);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
if (/^track(?:er)?-api\./.test(url.hostname))
|
|
58
|
+
return `${url.protocol}//${url.hostname.replace(/^track(?:er)?-api\./, 'tracker.')}`;
|
|
59
|
+
if ((url.hostname === 'localhost' || url.hostname === '127.0.0.1') && url.port === '4050')
|
|
60
|
+
return `${url.protocol}//${url.hostname}:3050`;
|
|
61
|
+
return null;
|
|
41
62
|
}
|
|
42
63
|
function buildQuery(query) {
|
|
43
64
|
if (!query)
|
|
@@ -59,6 +80,16 @@ function isConnectionError(err) {
|
|
|
59
80
|
const msg = err instanceof Error ? err.message : String(err);
|
|
60
81
|
return /fetch failed|ECONNREFUSED|network/i.test(msg);
|
|
61
82
|
}
|
|
83
|
+
/** Cabeçalho com a janela absoluta (`from`/`to`) que a API aplicou (CONTRATO.md §4). */
|
|
84
|
+
export const WINDOW_HEADER = 'x-fg-tracker-window';
|
|
85
|
+
/** Cabeçalho com os parâmetros extras que a rota aplicou (ex.: `traces-sort,traces-has-span`). */
|
|
86
|
+
export const CAPABILITIES_HEADER = 'x-fg-tracker-capabilities';
|
|
87
|
+
/** Prefixo dos tokens pessoais de leitura (CONTRATO.md §8.1). */
|
|
88
|
+
export const ACCESS_TOKEN_PREFIX = 'fgt_';
|
|
89
|
+
function extractCode(body) {
|
|
90
|
+
const code = body && typeof body === 'object' ? body.code : undefined;
|
|
91
|
+
return typeof code === 'string' ? code : undefined;
|
|
92
|
+
}
|
|
62
93
|
function extractMessage(body, fallback) {
|
|
63
94
|
if (body && typeof body === 'object') {
|
|
64
95
|
const m = body.message;
|
|
@@ -82,10 +113,21 @@ export class TrackClient {
|
|
|
82
113
|
get hasToken() {
|
|
83
114
|
return Boolean(this.config.token);
|
|
84
115
|
}
|
|
116
|
+
/** `FG_TRACKER_TOKEN` é um token pessoal de leitura (não uma sessão). */
|
|
117
|
+
get hasAccessToken() {
|
|
118
|
+
return Boolean(this.config.token?.startsWith(ACCESS_TOKEN_PREFIX));
|
|
119
|
+
}
|
|
120
|
+
get credentialKind() {
|
|
121
|
+
return this.hasAccessToken ? 'access_token' : this.config.token ? 'session' : 'none';
|
|
122
|
+
}
|
|
123
|
+
/** Painel para links (`FG_TRACKER_WEB_URL` ou derivado da API); `null` se desconhecido. */
|
|
124
|
+
get webUrl() {
|
|
125
|
+
return this.config.webUrl ?? webUrlFor(this.config.baseUrl);
|
|
126
|
+
}
|
|
85
127
|
get hasApiKey() {
|
|
86
128
|
return Boolean(this.config.apiKey);
|
|
87
129
|
}
|
|
88
|
-
/** Headers de autenticação: Bearer (sessão) e/ou chave de projeto. */
|
|
130
|
+
/** Headers de autenticação: Bearer (token pessoal ou sessão) e/ou chave de projeto. */
|
|
89
131
|
authHeaders(extra) {
|
|
90
132
|
const headers = { accept: 'application/json', ...extra };
|
|
91
133
|
if (this.config.token)
|
|
@@ -108,7 +150,7 @@ export class TrackClient {
|
|
|
108
150
|
}
|
|
109
151
|
catch (err) {
|
|
110
152
|
if (isConnectionError(err)) {
|
|
111
|
-
throw new TrackApiError(`API do FG
|
|
153
|
+
throw new TrackApiError(`API do FG Tracker não está no ar em ${this.config.baseUrl} (conexão recusada).`, undefined, path, 'suba a API com `pnpm dev:api` no monorepo do FG Tracker ou ajuste FG_TRACKER_URL.');
|
|
112
154
|
}
|
|
113
155
|
const msg = err instanceof Error ? err.message : String(err);
|
|
114
156
|
if (/abort|timeout/i.test(msg)) {
|
|
@@ -126,16 +168,24 @@ export class TrackClient {
|
|
|
126
168
|
body = text;
|
|
127
169
|
}
|
|
128
170
|
}
|
|
129
|
-
if (res.ok)
|
|
171
|
+
if (res.ok) {
|
|
172
|
+
options.onResponse?.(res);
|
|
130
173
|
return body;
|
|
174
|
+
}
|
|
131
175
|
const message = extractMessage(body, `${res.status} ${res.statusText}`);
|
|
132
176
|
switch (res.status) {
|
|
133
177
|
case 401:
|
|
134
|
-
throw new TrackApiError(`Não autenticado (401) em ${method} ${path}: ${message}`, 401, path, this.
|
|
135
|
-
? 'o FG_TRACKER_TOKEN expirou ou
|
|
136
|
-
:
|
|
178
|
+
throw new TrackApiError(`Não autenticado (401) em ${method} ${path}: ${message}`, 401, path, this.hasAccessToken
|
|
179
|
+
? 'o token pessoal do FG_TRACKER_TOKEN expirou, foi revogado ou a conta está inativa — crie outro no painel (Conta → Tokens de acesso) e atualize FG_TRACKER_TOKEN.'
|
|
180
|
+
: this.config.token
|
|
181
|
+
? 'a sessão do FG_TRACKER_TOKEN expirou ou foi encerrada — crie um token de leitura no painel (Conta → Tokens de acesso), que não cai com logout, e defina FG_TRACKER_TOKEN com ele.'
|
|
182
|
+
: 'defina FG_TRACKER_TOKEN com um token de leitura do FG Tracker (painel → Conta → Tokens de acesso, `fgt_…`). Para ingestão use FG_TRACKER_API_KEY.');
|
|
137
183
|
case 403:
|
|
138
|
-
throw new TrackApiError(`Sem permissão (403) em ${method} ${path}: ${message}`, 403, path,
|
|
184
|
+
throw new TrackApiError(`Sem permissão (403) em ${method} ${path}: ${message}`, 403, path, extractCode(body) === 'TOKEN_SCOPE_INSUFFICIENT'
|
|
185
|
+
? 'o FG_TRACKER_TOKEN é um token pessoal somente leitura e esta operação altera dados ou lê dados que o token não cobre. Faça a operação pelo painel ou configure o MCP com uma sessão (painel → Conectar → Usar MCP → Copiar configuração com minha sessão).'
|
|
186
|
+
: this.hasAccessToken
|
|
187
|
+
? 'o usuário do token não é membro ativo deste projeto, ou o token foi restrito a outros projetos (Conta → Tokens de acesso).'
|
|
188
|
+
: 'o usuário do FG_TRACKER_TOKEN não é membro deste projeto. Peça a um owner/admin para convidá-lo em /members.');
|
|
139
189
|
case 404:
|
|
140
190
|
throw new TrackApiError(`Não encontrado (404) em ${method} ${path}: ${message}`, 404, path);
|
|
141
191
|
case 400:
|
|
@@ -147,6 +197,25 @@ export class TrackClient {
|
|
|
147
197
|
get(path, query) {
|
|
148
198
|
return this.request('GET', path, { query });
|
|
149
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* GET de uma leitura com janela: devolve também a janela absoluta que a API confirmou no
|
|
202
|
+
* cabeçalho `x-fg-tracker-window` (`null` = a API usou `range`, ou é anterior a from/to e os
|
|
203
|
+
* ignorou).
|
|
204
|
+
*/
|
|
205
|
+
async getWindowed(path, query) {
|
|
206
|
+
let window = null;
|
|
207
|
+
let capabilities = new Set();
|
|
208
|
+
const body = await this.request('GET', path, {
|
|
209
|
+
query,
|
|
210
|
+
onResponse: (res) => {
|
|
211
|
+
const [from, to] = (res.headers.get(WINDOW_HEADER) ?? '').split('/');
|
|
212
|
+
if (from && to)
|
|
213
|
+
window = { from, to };
|
|
214
|
+
capabilities = new Set((res.headers.get(CAPABILITIES_HEADER) ?? '').split(',').map((item) => item.trim()).filter(Boolean));
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
return { body, window, capabilities };
|
|
218
|
+
}
|
|
150
219
|
post(path, body) {
|
|
151
220
|
return this.request('POST', path, { body });
|
|
152
221
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/database.js
CHANGED
|
@@ -114,6 +114,6 @@ export function databaseGuide(driver, serviceName) {
|
|
|
114
114
|
snippet = `const result = tracker.traceDatabaseSync(\n { system: '${system}', operation: 'query', statement: 'select * from tracks where id = ?' },\n () => statement.get(id),\n);`;
|
|
115
115
|
else
|
|
116
116
|
snippet = `const result = await tracker.traceDatabase(\n { system: '${system}', operation: 'repository.operation' },\n () => clientOperation(), // await the real operation; consume cursor/stream here if applicable\n);\n// For callback drivers: await a Promise settled by the operation's final callback.\n// For sync drivers: traceDatabaseSync preserves a synchronous result and throws.`;
|
|
117
|
-
return `# Database instrumentation: ${driver}\n\nInstall fg-tracker-sdk@^0.4.0 (formerly stread-track-sdk). Reuse the request tracker (${serviceName}); do not create a second tracker for the database.\n\n\`\`\`ts\n${snippet}\n\`\`\`\n\nUse the existing connection settings, pool sizes and transaction boundaries. Generic adapters support any engine when the operation completion is supplied explicitly; they do not auto-understand every driver. Bind values, result rows, documents, connection strings and credentials must never be exported. SQL spans use normalized statements; non-SQL operations use static names. Do not instrument both ORM and driver for the same operation.\n\nImplement these changes at the actual client/repository initialization sites, not merely in an unused example file. Run a real request, use
|
|
117
|
+
return `# Database instrumentation: ${driver}\n\nInstall fg-tracker-sdk@^0.4.0 (formerly stread-track-sdk). Reuse the request tracker (${serviceName}); do not create a second tracker for the database.\n\n\`\`\`ts\n${snippet}\n\`\`\`\n\nUse the existing connection settings, pool sizes and transaction boundaries. Generic adapters support any engine when the operation completion is supplied explicitly; they do not auto-understand every driver. Bind values, result rows, documents, connection strings and credentials must never be exported. SQL spans use normalized statements; non-SQL operations use static names. Do not instrument both ORM and driver for the same operation.\n\nImplement these changes at the actual client/repository initialization sites, not merely in an unused example file. Run a real request, use tracker_get_trace and verify db.query spans share its traceId and have parentSpanId. Verify rollback, errors and parallel requests. Logs-only frontends must not create a tracker. Confirm completion only after the runtime exports the linked query spans.\n`;
|
|
118
118
|
}
|
|
119
119
|
//# sourceMappingURL=database.js.map
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ferramentas de diagnóstico da 0.11 (docs/mcp.md, "Jornadas de diagnóstico") sobre rotas de
|
|
3
|
+
* leitura que a API já tinha (todas cobertas pelo modelo Somente leitura do token pessoal `fgt_…`):
|
|
4
|
+
* detalhe de endpoint, slow queries, estatística de logs, eventos de alerta e ambientes, mais os
|
|
5
|
+
* recursos `fg-tracker://trace/{traceId}` e `fg-tracker://issue/{issueId}`.
|
|
6
|
+
*
|
|
7
|
+
* Ferramentas novas não ganham alias `track_*` (só as que existiam na 0.10).
|
|
8
|
+
*/
|
|
9
|
+
import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
10
|
+
import { type TrackClient } from './client.js';
|
|
11
|
+
/**
|
|
12
|
+
* Destinatário de uma entrega de alerta sem o dado pessoal: e-mail vira `a***@dominio`,
|
|
13
|
+
* telefone os 4 últimos dígitos, URL só o host. O agente vê para onde o alerta foi, não quem é.
|
|
14
|
+
*/
|
|
15
|
+
export declare function maskRecipient(to: string | undefined): string | null;
|
|
16
|
+
export declare function registerDiagnosticTools(server: McpServer, client: TrackClient, options: {
|
|
17
|
+
maxItems: number;
|
|
18
|
+
}): void;
|