fg-tracker-mcp 0.9.1 → 0.10.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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog — fg-tracker-mcp
2
2
 
3
+ ## 0.10.0
4
+
5
+ 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.
6
+
7
+ - **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`).
8
+ - Textos, instruções do servidor, prompts e quickstart passam a dizer **FG Tracker**.
9
+ - **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`.
10
+ - **Mudanças de formato no JSON** (valem também para os aliases `track_*`):
11
+ - `tracker_list_projects` e `tracker_list_monitors`: `{ total, returned, truncated, items }` (antes, o array direto);
12
+ - `tracker_list_issues`: `{ items, nextCursor, total, counts, limit }` (antes, o array direto), também com uma API que ainda devolve array;
13
+ - `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`;
14
+ - `tracker_get_trace`: sai `spansOmitted` e entra `spanPage` (`total`, `matched`, `offset`, `returned`, `nextSpanOffset`), com os spans da página pedida.
15
+ - `tracker_get_trace`: paginação de spans (`spanOffset`/`spanLimit`, 80 por página) e filtros `kind`, `service`, `name`.
16
+ - `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`.
17
+ - `tracker_list_traces` aceita `release`, `userId`, `rootKind`, `service` e `env`; `tracker_search_logs` aceita `env` e `requestId`; `tracker_list_releases` aceita `limit` e `environment`.
18
+ - `tracker_get_overview` aceita `service`/`env` e resume os jobs (raízes `custom`); `tracker_list_endpoints` aceita `rootKind`/`service`/`env`.
19
+ - `tracker_list_issues`: `sort`, `type[]`, `severity[]`, `q`, `release`, `limit` (até 200) e `cursor`, com total, contagem por status, `nextCursor` e severidade máxima × última.
20
+ - `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.
21
+ - 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.
22
+ - `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.
23
+ - O servidor anuncia a versão do pacote (a 0.9.1 anunciava 0.9.0).
24
+
3
25
  ## 0.9.1 — 2026-10-01
4
26
 
5
27
  - 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 Track para agentes de código (Claude Code, Cursor, Windsurf, Claude Desktop): projetos, métricas, traces, issues com commits suspeitos, releases, monitores, provedores externos, logs e guia de instrumentação. Documentação completa: `docs/mcp.md` no repositório.
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 e guia de instrumentação. Documentação completa: `docs/mcp.md` no repositório.
4
4
 
5
5
  ## Instalação
6
6
 
@@ -9,7 +9,7 @@ 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=<token-de-sessao> \
12
+ -e FG_TRACKER_TOKEN=fgt_<seu_token_de_leitura> \
13
13
  -- npx -y fg-tracker-mcp
14
14
  ```
15
15
 
@@ -23,13 +23,15 @@ Cursor / Windsurf / Claude Desktop (JSON):
23
23
  "args": ["-y", "fg-tracker-mcp"],
24
24
  "env": {
25
25
  "FG_TRACKER_URL": "http://localhost:4050",
26
- "FG_TRACKER_TOKEN": "<token-de-sessao>"
26
+ "FG_TRACKER_TOKEN": "fgt_<seu_token_de_leitura>"
27
27
  }
28
28
  }
29
29
  }
30
30
  }
31
31
  ```
32
32
 
33
+ Gere o token em **Conectar → Usar MCP → Gerar token de leitura para o MCP** (ou em **Conta → Tokens de acesso**). Ele só lê; para o agente criar projetos, registrar releases, mexer em infraestrutura ou iniciar testes de carga, use a configuração com a sessão. Detalhes em `docs/mcp.md` → Token de leitura.
34
+
33
35
  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
36
 
35
37
  ## Variáveis de ambiente
@@ -37,19 +39,22 @@ Em produção, `FG_TRACKER_URL` é a URL da API mostrada no painel em **Conectar
37
39
  | variável | default | uso |
38
40
  |---|---|---|
39
41
  | `FG_TRACKER_URL` | `http://localhost:4050` | URL base da API |
40
- | `FG_TRACKER_TOKEN` | — | token de sessão (`Authorization: Bearer`) — projetos, métricas, traces, issues, logs |
42
+ | `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
43
  | `FG_TRACKER_API_KEY` | — | chave de projeto (`x-fg-tracker-key`) — opcional, só ingestão |
42
44
  | `FG_TRACKER_TIMEOUT_MS` | `15000` | timeout das chamadas HTTP |
45
+ | `FG_TRACKER_MAX_ITEMS` | `200` | teto de itens da lista principal de cada tool (1 a 1000) |
43
46
 
44
47
  Os nomes antigos `STREAD_TRACK_*` continuam lidos quando o nome novo está ausente.
45
48
 
46
49
  ## Tools, prompt e resource
47
50
 
48
- Tools `track_*` (nomes inalterados), prompt `instrument-project` e resource `fg-tracker://docs/quickstart`.
51
+ 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
52
 
50
53
  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
54
 
52
- Domínios permitidos (0.9.0): `track_update_allowed_origins { projectId, origins }` substitui as origens de navegador aceitas no CORS da ingestão (`PATCH /v1/projects/:id { allowedOrigins }`); `track_list_projects` mostra a lista atual — leia antes e confirme com o usuário.
55
+ 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.
56
+
57
+ 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
58
 
54
59
  Simulação de ambiente (0.8.0): prompt `create-load-test` e tools `loadtest_*` (CONTRATO.md §28.8):
55
60
 
@@ -74,13 +79,13 @@ O pacote foi renomeado de `stread-track-mcp` (última versão no npm: 0.2.0) par
74
79
  | nome do servidor MCP `stread-track` | `fg-tracker` | renomeie a entrada na config do cliente quando quiser |
75
80
  | resource `stread-track://docs/quickstart` | `fg-tracker://docs/quickstart` | a URI antiga continua registrada (mesmo conteúdo) |
76
81
  | header `x-stread-track-key` | `x-fg-tracker-key` | a API aceita os dois |
77
- | tools `track_*`, prompt `instrument-project` | inalterados | — |
82
+ | prompt `instrument-project` | inalterado | — |
78
83
 
79
84
  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
85
 
81
86
  ## Database detection (0.2.0)
82
87
 
83
- `track_detect_databases { projectPath, serviceName }` inspects local Node project
88
+ `tracker_detect_databases { projectPath, serviceName }` inspects local Node project
84
89
  manifests and imports without opening .env/credential files, following symlinks,
85
90
  executing project scripts or reading dependencies. It returns candidate engines,
86
91
  driver adapters, source references and an implementation guide. Multiple databases
@@ -88,8 +93,8 @@ are reported separately; a dependency alone is not proof of production use.
88
93
 
89
94
  The coding agent must verify client creation sites, apply the appropriate SDK
90
95
  adapter, preserve transactions/pool settings, and validate real `db.query` spans
91
- under an HTTP request with `track_get_trace`. Detect before requesting
92
- `track_instrumentation_guide { framework, databaseDriver, projectId }`.
96
+ under an HTTP request with `tracker_get_trace`. Detect before requesting
97
+ `tracker_instrumentation_guide { framework, databaseDriver, projectId }`.
93
98
 
94
99
  Native adapters: pg and Postgres.js (including Drizzle). Generic adapters cover
95
100
  synchronous, Promise and error-first callback operations; explicit completion
package/dist/cli.js CHANGED
@@ -10,7 +10,7 @@ import { createServer, SERVER_NAME, SERVER_VERSION } from './server.js';
10
10
  const argv = process.argv.slice(2);
11
11
  if (argv.includes('--help') || argv.includes('-h')) {
12
12
  process.stdout.write([
13
- `${SERVER_NAME}-mcp ${SERVER_VERSION} — servidor MCP (stdio) do FG Track`,
13
+ `${SERVER_NAME}-mcp ${SERVER_VERSION} — servidor MCP (stdio) do FG Tracker`,
14
14
  '',
15
15
  'Uso: fg-tracker-mcp (sem argumentos; fala MCP JSON-RPC via stdin/stdout)',
16
16
  ' fg-tracker-mcp --version',
@@ -20,6 +20,7 @@ if (argv.includes('--help') || argv.includes('-h')) {
20
20
  ' FG_TRACKER_TOKEN token de sessão (Authorization: Bearer) — projetos, métricas, logs',
21
21
  ' FG_TRACKER_API_KEY chave de projeto (x-fg-tracker-key) — opcional, só ingestão',
22
22
  ' FG_TRACKER_TIMEOUT_MS timeout das chamadas HTTP (default 15000)',
23
+ ' FG_TRACKER_LEGACY_TOOL_NAMES=0 não registra os aliases obsoletos track_* das ferramentas tracker_*',
23
24
  ' (os nomes antigos STREAD_TRACK_* ainda são lidos como fallback; serão removidos na 1.0)',
24
25
  '',
25
26
  'Instalação no Claude Code:',
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,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,qCAAqC;QACzE,EAAE;QACF,uFAAuF;QACvF,+BAA+B;QAC/B,EAAE;QACF,wBAAwB;QACxB,qEAAqE;QACrE,6FAA6F;QAC7F,sFAAsF;QACtF,oEAAoE;QACpE,2FAA2F;QAC3F,EAAE;QACF,4BAA4B;QAC5B,sHAAsH;QACtH,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,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,aAAa,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AAEhJ,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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,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,6FAA6F;QAC7F,sFAAsF;QACtF,oEAAoE;QACpE,uGAAuG;QACvG,2FAA2F;QAC3F,EAAE;QACF,4BAA4B;QAC5B,sHAAsH;QACtH,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,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,aAAa,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AAEhJ,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,5 +1,5 @@
1
1
  /**
2
- * Cliente HTTP mínimo para a API do FG Track (docs/CONTRATO.md §4, §8, §11).
2
+ * Cliente HTTP mínimo para a API do FG Tracker (docs/CONTRATO.md §4, §8, §11).
3
3
  * Lê `FG_TRACKER_URL`, `FG_TRACKER_TOKEN` (Bearer de sessão), `FG_TRACKER_API_KEY`
4
4
  * (chave de projeto, header `x-fg-tracker-key`) e `FG_TRACKER_TIMEOUT_MS` — com
5
5
  * fallback para os nomes legados `STREAD_TRACK_*` (`stread-track-mcp` ≤ 0.3).
@@ -77,6 +77,10 @@ export interface TracesResponse {
77
77
  items: Array<{
78
78
  traceId: string;
79
79
  name: string;
80
+ /** Kind, serviço e ambiente da raiz que representa o trace (APIs anteriores não mandam). */
81
+ kind?: string;
82
+ service?: string | null;
83
+ environment?: string | null;
80
84
  method: string | null;
81
85
  statusCode: number | null;
82
86
  startedAt: string;
package/dist/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Cliente HTTP mínimo para a API do FG Track (docs/CONTRATO.md §4, §8, §11).
2
+ * Cliente HTTP mínimo para a API do FG Tracker (docs/CONTRATO.md §4, §8, §11).
3
3
  * Lê `FG_TRACKER_URL`, `FG_TRACKER_TOKEN` (Bearer de sessão), `FG_TRACKER_API_KEY`
4
4
  * (chave de projeto, header `x-fg-tracker-key`) e `FG_TRACKER_TIMEOUT_MS` — com
5
5
  * fallback para os nomes legados `STREAD_TRACK_*` (`stread-track-mcp` ≤ 0.3).
@@ -108,7 +108,7 @@ export class TrackClient {
108
108
  }
109
109
  catch (err) {
110
110
  if (isConnectionError(err)) {
111
- throw new TrackApiError(`API do FG Track 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 Track ou ajuste FG_TRACKER_URL.');
111
+ 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
112
  }
113
113
  const msg = err instanceof Error ? err.message : String(err);
114
114
  if (/abort|timeout/i.test(msg)) {
@@ -133,7 +133,7 @@ export class TrackClient {
133
133
  case 401:
134
134
  throw new TrackApiError(`Não autenticado (401) em ${method} ${path}: ${message}`, 401, path, this.config.token
135
135
  ? 'o FG_TRACKER_TOKEN expirou ou é inválido — faça login de novo (POST /v1/auth/login) e defina FG_TRACKER_TOKEN com o novo token.'
136
- : 'defina FG_TRACKER_TOKEN com um token de sessão do FG Track (POST /v1/auth/login → `token`). Para ingestão use FG_TRACKER_API_KEY.');
136
+ : 'defina FG_TRACKER_TOKEN com um token de sessão do FG Tracker (POST /v1/auth/login → `token`). Para ingestão use FG_TRACKER_API_KEY.');
137
137
  case 403:
138
138
  throw new TrackApiError(`Sem permissão (403) em ${method} ${path}: ${message}`, 403, path, 'o usuário do FG_TRACKER_TOKEN não é membro deste projeto. Peça a um owner/admin para convidá-lo em /members.');
139
139
  case 404:
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0FAA0F;AAC1F,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAEnD,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,MAAyB,OAAO,CAAC,GAAG;IACxE,OAAO,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAC/F,CAAC;AAWD,MAAM,OAAO,aAAc,SAAQ,KAAK;IAG3B;IACA;IACA;IAJX,YACE,OAAe,EACN,MAA0B,EAC1B,IAAY,EACZ,IAAa;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,WAAM,GAAN,MAAM,CAAoB;QAC1B,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,wDAAwD;IACxD,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5E,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG;IAChE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,KAAkC;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QACpE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,KAAK,GAAI,GAAiD,EAAE,KAAK,CAAC;IACxE,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAK,GAAqC,EAAE,IAAI,CAAC;IACzE,IAAI,IAAI,IAAI,kFAAkF,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvH,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,cAAc,CAAC,IAAa,EAAE,QAAgB;IACrD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,GAAI,IAA8B,CAAC,OAAO,CAAC;QAClD,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,WAAW;IACD;IAArB,YAAqB,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAElD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,sEAAsE;IAC9D,WAAW,CAAC,KAA8B;QAChD,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,EAAE,CAAC;QACjF,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAA2C,EAC3C,IAAY,EACZ,UAAoG,EAAE;QAEtG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;QAC1G,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC7C,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,CAAC;QAED,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,aAAa,CACrB,qCAAqC,IAAI,CAAC,MAAM,CAAC,OAAO,sBAAsB,EAC9E,SAAS,EACT,IAAI,EACJ,iFAAiF,CAClF,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,aAAa,CAAC,4BAA4B,MAAM,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACpH,CAAC;YACD,MAAM,IAAI,aAAa,CAAC,mBAAmB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAY,IAAI,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,EAAE;YAAE,OAAO,IAAS,CAAC;QAE7B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,GAAG;gBACN,MAAM,IAAI,aAAa,CACrB,4BAA4B,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,EACxD,GAAG,EACH,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,KAAK;oBACf,CAAC,CAAC,iIAAiI;oBACnI,CAAC,CAAC,mIAAmI,CACxI,CAAC;YACJ,KAAK,GAAG;gBACN,MAAM,IAAI,aAAa,CACrB,0BAA0B,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,EACtD,GAAG,EACH,IAAI,EACJ,8GAA8G,CAC/G,CAAC;YACJ,KAAK,GAAG;gBACN,MAAM,IAAI,aAAa,CAAC,2BAA2B,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC9F,KAAK,GAAG;gBACN,MAAM,IAAI,aAAa,CAAC,gCAAgC,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnG;gBACE,MAAM,IAAI,aAAa,CAAC,QAAQ,GAAG,CAAC,MAAM,OAAO,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,KAAkC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAc,IAAY,EAAE,IAAc;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAc,IAAY,EAAE,IAAc;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAKD,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,KAAK,EAAE,EAAE,GAAG,EAAE;IACd,IAAI,EAAE,EAAE,GAAG,EAAE;IACb,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;IACjB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;IACnB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACtB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CACzB,CAAC"}
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 track_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`;
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
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,OAAO,GAAwD;IACnE,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACjE,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE;IACrD,0BAA0B,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;IACxE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACzD,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC7D,gBAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;IAC/D,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;IACjD,gBAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACrE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;IAClD,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;IACnD,gBAAgB,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE;IACnE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;IAChD,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;IAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;IAC9C,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;IAChD,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC7D,0BAA0B,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;IACtE,oBAAoB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;IAClE,kBAAkB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC1E,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;IACtD,eAAe,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;IAC5D,wBAAwB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE;CAC1E,CAAC;AACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AAG9G,yGAAyG;AACzG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,UAAU,IAAI,CAAC,SAAiB,EAAE,KAAa;QAClD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;YAAC,OAAO;QAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpH,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAC;gBAAC,OAAO;YAAC,CAAC;YACpD,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;iBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;IACD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpB,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,IAAI,QAAa,CAAC;YAClB,IAAI,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC1D,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC;gBACrG,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBAClC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC5G,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,wDAAwD,OAAO,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACnH,IAAI,KAA6B,CAAC;YAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC5G,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnF,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS;QACxE,YAAY,EAAE,qbAAqb,EAAE,CAAC;AAC1c,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,WAAmB;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,QAAQ,CAAC;IACzC,IAAI,OAAe,CAAC;IACpB,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,GAAG,0LAA0L,CAAC;SAC3N,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,GAAG,wLAAwL,CAAC;SACxN,IAAI,KAAK,EAAE,OAAO,KAAK,oBAAoB;QAAE,OAAO,GAAG,kEAAkE,MAAM,6SAA6S,CAAC;SAC7a,IAAI,MAAM,KAAK,gBAAgB;QAAE,OAAO,GAAG,8VAA8V,CAAC;SAC1Y,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,GAAG,iNAAiN,CAAC;SAC/Q,IAAI,KAAK,EAAE,OAAO,KAAK,cAAc;QAAE,OAAO,GAAG,2DAA2D,MAAM,0GAA0G,CAAC;;QAC7N,OAAO,GAAG,6DAA6D,MAAM,uTAAuT,CAAC;IAC1Y,OAAO,+BAA+B,MAAM,6FAA6F,WAAW,oEAAoE,OAAO,o1BAAo1B,CAAC;AACtjC,CAAC"}
package/dist/docs.js CHANGED
@@ -6,13 +6,13 @@ export const QUICKSTART_URI = 'fg-tracker://docs/quickstart';
6
6
  /** @deprecated URI do `stread-track-mcp` ≤ 0.3; ainda registrada como alias, removida na 1.0. */
7
7
  export const LEGACY_QUICKSTART_URI = 'stread-track://docs/quickstart';
8
8
  export function quickstartMarkdown(endpoint) {
9
- return `# FG Track — quickstart
9
+ return `# FG Tracker — quickstart
10
10
 
11
11
  APM leve para Node: traces (Express/NestJS/Next.js/Fastify), queries pg, chamadas HTTP de saída, logs e detecção automática de **N+1**, **loops**, **endpoints lentos** e **erros**. API em \`${endpoint}\` (Swagger em \`${endpoint}/docs\`).
12
12
 
13
13
  ## 1. Projeto e chave
14
- - \`track_list_projects\` lista os projetos do usuário do token; \`track_create_project { name }\` cria um e devolve \`apiKey\` (\`stk_...\`).
15
- - \`track_update_allowed_origins { projectId, origins }\` substitui os domínios permitidos (CORS do SDK de navegador); leia a lista atual em \`track_list_projects\` e confirme com o usuário antes.
14
+ - \`tracker_list_projects\` lista os projetos do usuário do token; \`tracker_create_project { name }\` cria um e devolve \`apiKey\` (\`stk_...\`).
15
+ - \`tracker_update_allowed_origins { projectId, origins }\` substitui os domínios permitidos (CORS do SDK de navegador); leia a lista atual em \`tracker_list_projects\` e confirme com o usuário antes.
16
16
  - A chave vai no header \`x-fg-tracker-key\` da ingestão e em \`FG_TRACKER_KEY\` no app instrumentado.
17
17
 
18
18
  ## 2. SDK (\`fg-tracker-sdk\`)
@@ -26,7 +26,7 @@ const tracker = createTracker({
26
26
  });
27
27
  app.use(tracker.express()); // Express / NestJS — PRIMEIRO middleware (continua traceparent, lê req.user.id)
28
28
  app.use(routes); app.use(tracker.expressErrorHandler()); // exceção real no span → issues por causa, não por status
29
- tracker.instrumentPg(pool); // pg only; use track_detect_databases for other drivers // pg.Pool → spans db.query
29
+ tracker.instrumentPg(pool); // pg only; use tracker_detect_databases for other drivers // pg.Pool → spans db.query
30
30
  const fetchTracked = tracker.wrapFetch(); // fetch → spans http.client
31
31
  export const GET = tracker.wrapNextRoute(async (req) => Response.json({ ok: true })); // Next.js
32
32
  await tracker.span('custom', 'send-email', async (span) => { /* ... */ });
@@ -35,7 +35,7 @@ await tracker.checkIn('backup-diario', () => runBackup(), { intervalSeconds: 864
35
35
  await tracker.shutdown(); // no SIGTERM
36
36
  \`\`\`
37
37
  No deploy: \`npx fg-tracker-release --service minha-app --previous-sha $PREV\` registra a release com commits/arquivos (commits suspeitos nas issues, comparação de latência entre versões).
38
- Use \`track_instrumentation_guide { framework, projectId }\` para o passo a passo completo por framework com a chave real.
38
+ Use \`tracker_instrumentation_guide { framework, projectId }\` para o passo a passo completo por framework com a chave real.
39
39
 
40
40
  ## 3. Logs
41
41
  \`\`\`ts
@@ -64,13 +64,13 @@ curl -X POST ${endpoint}/v1/logs -H 'content-type: application/json' -H 'x-fg-tr
64
64
  Kinds de span: \`http.server\` (raiz por request), \`db.query\` (nome = SQL normalizado), \`http.client\`, \`custom\`.
65
65
 
66
66
  ## 5. Verificar e explorar
67
- - \`track_verify_ingest { projectId }\` — confirma spans/logs recentes.
68
- - \`track_get_overview { projectId, range }\` — requests, erro, p50/p95/p99, apdex, top lentos.
69
- - \`track_list_endpoints\`, \`track_list_issues\`, \`track_list_traces\` → \`track_get_trace { traceId }\` (waterfall).
70
- - \`track_search_logs { projectId, q, service, level, range }\` — sintaxe: texto livre, \`"frase"\`, \`key=value\`, \`~substring\`.
71
- - \`track_get_issue { projectId, issueId }\` — ocorrências, usuários afetados, releases, regressões e commits/PRs suspeitos.
72
- - \`track_list_releases { projectId, version? }\`, \`track_register_release\`, \`track_endpoint_history { projectId, name, days }\` — saúde por deploy e latência por rota ao longo do tempo.
73
- - \`track_list_providers { projectId, range }\` (chamadas de saída por host) e \`track_list_monitors { projectId }\` (uptime e jobs).
67
+ - \`tracker_verify_ingest { projectId }\` — confirma spans/logs recentes.
68
+ - \`tracker_get_overview { projectId, range }\` — requests, erro, p50/p95/p99, apdex, top lentos.
69
+ - \`tracker_list_endpoints\`, \`tracker_list_issues\`, \`tracker_list_traces\` → \`tracker_get_trace { traceId }\` (waterfall, 80 spans por página: \`spanOffset\`, filtros \`kind\`/\`service\`/\`name\`).
70
+ - \`tracker_search_logs { projectId, q, service, level, env, requestId, range }\` — sintaxe: texto livre, \`"frase"\`, \`key=value\`, \`~substring\`.
71
+ - \`tracker_get_issue { projectId, issueId }\` — ocorrências, usuários afetados, releases, regressões e commits/PRs suspeitos.
72
+ - \`tracker_list_releases { projectId, version? }\`, \`tracker_register_release\`, \`tracker_endpoint_history { projectId, name, days }\` — saúde por deploy e latência por rota ao longo do tempo.
73
+ - \`tracker_list_providers { projectId, range }\` (chamadas de saída por host) e \`tracker_list_monitors { projectId }\` (uptime e jobs) → \`tracker_get_monitor { projectId, monitorId }\` (histórico de checks com o trace de cada execução).
74
74
 
75
75
  ## 6. Detectores (rodam na ingestão)
76
76
  | tipo | regra |
@@ -82,7 +82,7 @@ Kinds de span: \`http.server\` (raiz por request), \`db.query\` (nome = SQL norm
82
82
  | ERROR | raiz com status ≥ 500 ou \`error != null\` |
83
83
 
84
84
  ## 7. Infraestrutura (AWS)
85
- Prompt \`connect-infrastructure\` guia o fluxo completo: o agente detecta sozinho contas, ambientes e regiões. Nenhuma tool altera recursos na AWS; a única mudança é o stack de conexão, criado com o comando devolvido e só com confirmação do usuário. Mudanças de infra só pelo FG Track, com aprovação humana.
85
+ Prompt \`connect-infrastructure\` guia o fluxo completo: o agente detecta sozinho contas, ambientes e regiões. Nenhuma tool altera recursos na AWS; a única mudança é o stack de conexão, criado com o comando devolvido e só com confirmação do usuário. Mudanças de infra só pelo FG Tracker, com aprovação humana.
86
86
  0. \`infra_detect_environments { profiles?, includeRegions? }\` — perfis do \`~/.aws\` → conta (STS), ambiente sugerido e regiões em uso (local, somente leitura).
87
87
  1. Por ambiente: \`infra_connect_account { projectId, level: 'read'|'operate', environment?, regions?, name?, profile? }\` → template \`./fg-tracker-connection-<ambiente>.json\` + \`aws cloudformation deploy ... --profile --region\` (confirmar com o usuário antes) → \`infra_verify_connection { projectId, connectionId, profile }\`.
88
88
  2. \`infra_discover { projectId, regions?, profile? }\` — inventário com credenciais locais (Resource Explorer/Tagging API + CloudFormation) enviado como snapshot.
@@ -98,9 +98,9 @@ Ranges aceitos: \`15m|1h|6h|24h|7d|30d\`.
98
98
  export function instrumentProjectPrompt(args, endpoint) {
99
99
  const fw = args.framework ? `O usuário indicou o framework **${args.framework}**; confirme lendo o código antes de seguir.` : 'O framework NÃO foi informado: detecte-o.';
100
100
  const proj = args.projectName
101
- ? `Use (ou crie) o projeto chamado **${args.projectName}** no FG Track.`
101
+ ? `Use (ou crie) o projeto chamado **${args.projectName}** no FG Tracker.`
102
102
  : 'Nenhum nome de projeto foi informado: use o nome do pacote (`package.json#name`) ou o nome do diretório.';
103
- return `Você vai conectar o projeto de código atual ao FG Track (APM em ${endpoint}) usando as tools deste servidor MCP. Trabalhe passo a passo, mostre o que fez em cada etapa e só avance quando a anterior estiver ok.
103
+ return `Você vai conectar o projeto de código atual ao FG Tracker (APM em ${endpoint}) usando as tools deste servidor MCP. Trabalhe passo a passo, mostre o que fez em cada etapa e só avance quando a anterior estiver ok.
104
104
 
105
105
  ${fw} ${proj}
106
106
 
@@ -108,20 +108,20 @@ ${fw} ${proj}
108
108
 
109
109
  1. **Detectar framework e logger.** Leia \`package.json\` (dependências: express, @nestjs/core, next, fastify; pino, winston; pg, drizzle-orm, kysely, knex) e o ponto de entrada (\`src/main.ts\`, \`src/index.ts\`, \`app/\`). Anote: framework HTTP, logger, os drivers e os pontos de criação dos clientes, gerenciador de pacotes (lockfile) e como o app é iniciado.
110
110
 
111
- 2. **Detectar bancos.** Chame \`track_detect_databases { projectPath, serviceName }\`. Confirme os imports e pontos de criação retornados; siga o adapter de cada driver ativo. Não suponha pg.Pool para Postgres.js, Prisma ou outro driver.
111
+ 2. **Detectar bancos.** Chame \`tracker_detect_databases { projectPath, serviceName }\`. Confirme os imports e pontos de criação retornados; siga o adapter de cada driver ativo. Não suponha pg.Pool para Postgres.js, Prisma ou outro driver.
112
112
 
113
- 2b. **Checar o FG Track.** Chame \`track_status\`. Se a API estiver fora do ar ou faltar \`FG_TRACKER_TOKEN\`, pare e explique ao usuário o que configurar.
113
+ 2b. **Checar o FG Tracker.** Chame \`tracker_status\`. Se a API estiver fora do ar ou faltar \`FG_TRACKER_TOKEN\`, pare e explique ao usuário o que configurar.
114
114
 
115
- 3. **Escolher ou criar o projeto.** Chame \`track_list_projects\`. Se já existe um projeto com o nome esperado, use-o; senão \`track_create_project { name }\`. Guarde \`projectId\` e \`apiKey\`. Nunca imprima a chave em commits/logs — só em \`.env\` (confira que \`.env\` está no \`.gitignore\`; adicione a variável em \`.env.example\` sem o valor).
115
+ 3. **Escolher ou criar o projeto.** Chame \`tracker_list_projects\`. Se já existe um projeto com o nome esperado, use-o; senão \`tracker_create_project { name }\`. Guarde \`projectId\` e \`apiKey\`. Nunca imprima a chave em commits/logs — só em \`.env\` (confira que \`.env\` está no \`.gitignore\`; adicione a variável em \`.env.example\` sem o valor).
116
116
 
117
- 4. **Obter o guia.** Chame \`track_instrumentation_guide { framework, projectId }\` para o framework detectado. Se o app tem pino ou winston, chame também com \`framework: "pino"\` ou \`"winston"\`.
117
+ 4. **Obter o guia.** Chame \`tracker_instrumentation_guide { framework, projectId }\` para o framework detectado. Se o app tem pino ou winston, chame também com \`framework: "pino"\` ou \`"winston"\`.
118
118
 
119
119
  5. **Instalar o SDK.** \`pnpm add fg-tracker-sdk\` (ou npm/yarn conforme o lockfile). Se o projeto já usa \`stread-track-sdk\`, troque pelo \`fg-tracker-sdk\` (mesma API).
120
120
 
121
121
  6. **Aplicar a instrumentação** seguindo o guia, com edits mínimos e idiomáticos ao projeto:
122
122
  - criar o tracker (um por processo) com \`apiKey\` de \`process.env.FG_TRACKER_KEY\` e \`endpoint\` de \`FG_TRACKER_URL\`;
123
123
  - registrar \`tracker.express()\` como PRIMEIRO middleware (Express/Nest), \`wrapNextRoute\` nos route handlers (Next) ou o hook \`onRequest\` (Fastify);
124
- - aplicar o adapter retornado por \`track_detect_databases\` ao cliente real antes de passá-lo ao ORM; para drivers desconhecidos envolver a conclusão da operação com \`traceDatabase\` ou \`traceDatabaseSync\`;
124
+ - aplicar o adapter retornado por \`tracker_detect_databases\` ao cliente real antes de passá-lo ao ORM; para drivers desconhecidos envolver a conclusão da operação com \`traceDatabase\` ou \`traceDatabaseSync\`;
125
125
  - \`tracker.wrapFetch()\` para chamadas HTTP de saída relevantes;
126
126
  - transport de logs (pino/winston/nest) com \`createLogShipper\`;
127
127
  - \`tracker.shutdown()\` no encerramento (SIGTERM / \`onApplicationShutdown\` / \`onClose\`).
@@ -130,11 +130,11 @@ ${fw} ${proj}
130
130
 
131
131
  8. **Rodar e gerar tráfego.** Inicie o app, faça algumas requisições reais (curl nas rotas principais, inclusive uma que consulte o banco) e aguarde ~3 s.
132
132
 
133
- 9. **Verificar.** Chame \`track_verify_ingest { projectId }\`. Se chegaram spans (e logs, quando configurados), mostre um resumo com \`track_get_overview { projectId, range: "15m" }\` e \`track_list_issues\`.
133
+ 9. **Verificar.** Chame \`tracker_verify_ingest { projectId }\`. Se chegaram spans (e logs, quando configurados), mostre um resumo com \`tracker_get_overview { projectId, range: "15m" }\` e \`tracker_list_issues\`.
134
134
 
135
135
  10. **Corrigir.** Se nada chegou: confira a chave (o SDK loga "4xx" uma vez quando ela é inválida), a ordem do middleware, se o tracker foi criado antes do app subir, se o processo consegue alcançar ${endpoint} (\`curl ${endpoint}/v1/health\`) e se há \`enabled: false\`. Ajuste e repita o passo 8.
136
136
 
137
- Ao final, liste os arquivos alterados, as variáveis adicionadas e o resultado de \`track_verify_ingest\`.`;
137
+ Ao final, liste os arquivos alterados, as variáveis adicionadas e o resultado de \`tracker_verify_ingest\`.`;
138
138
  }
139
139
  // Database driver detection must precede selection of an integration adapter.
140
140
  //# sourceMappingURL=docs.js.map
package/dist/docs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAC7D,iGAAiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAEtE,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO;;gMAEuL,QAAQ,oBAAoB,QAAQ;;;;;;;;;;;oDAWhL,QAAQ;;;;;;;;;;;;;;;;;;;;;wDAqBJ,QAAQ;;;;;;;;;eASjD,QAAQ;;;;;;;;eAQR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCtB,CAAC;AACF,CAAC;AAOD,MAAM,UAAU,uBAAuB,CAAC,IAA0B,EAAE,QAAgB;IAClF,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,2CAA2C,CAAC;IAC1K,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;QAC3B,CAAC,CAAC,qCAAqC,IAAI,CAAC,WAAW,iBAAiB;QACxE,CAAC,CAAC,0GAA0G,CAAC;IAE/G,OAAO,mEAAmE,QAAQ;;EAElF,EAAE,IAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;;wFAwB4E,QAAQ;;;;;;yMAMyG,QAAQ,YAAY,QAAQ;;0GAE3H,CAAC;AAC3G,CAAC;AAED,8EAA8E"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAC7D,iGAAiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAEtE,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO;;gMAEuL,QAAQ,oBAAoB,QAAQ;;;;;;;;;;;oDAWhL,QAAQ;;;;;;;;;;;;;;;;;;;;;wDAqBJ,QAAQ;;;;;;;;;eASjD,QAAQ;;;;;;;;eAQR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCtB,CAAC;AACF,CAAC;AAOD,MAAM,UAAU,uBAAuB,CAAC,IAA0B,EAAE,QAAgB;IAClF,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,2CAA2C,CAAC;IAC1K,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;QAC3B,CAAC,CAAC,qCAAqC,IAAI,CAAC,WAAW,mBAAmB;QAC1E,CAAC,CAAC,0GAA0G,CAAC;IAE/G,OAAO,qEAAqE,QAAQ;;EAEpF,EAAE,IAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;;wFAwB4E,QAAQ;;;;;;yMAMyG,QAAQ,YAAY,QAAQ;;4GAEzH,CAAC;AAC7G,CAAC;AAED,8EAA8E"}
package/dist/format.d.ts CHANGED
@@ -7,8 +7,15 @@ export interface ToolText {
7
7
  isError?: boolean;
8
8
  }
9
9
  export declare const MAX_SERIES_POINTS = 48;
10
+ /** Arrays internos (amostras, ocorrências, checks dentro de um objeto). */
10
11
  export declare const MAX_LIST_ITEMS = 25;
11
12
  export declare const MAX_TRACE_SPANS = 80;
13
+ /** Default de FG_TRACKER_MAX_ITEMS: teto da lista principal de uma ferramenta. */
14
+ export declare const DEFAULT_MAX_ITEMS = 200;
15
+ /** Maior valor aceito em FG_TRACKER_MAX_ITEMS e nos `limit` sem teto próprio da API. */
16
+ export declare const MAX_ITEMS_CEILING = 1000;
17
+ /** Linhas de prévia no texto de uma lista longa; o JSON que segue traz todos os itens. */
18
+ export declare const PREVIEW_LINES = 25;
12
19
  export declare function text(value: string): ToolText;
13
20
  export declare function json(value: unknown, preface?: string): ToolText;
14
21
  export declare function errorResult(err: unknown): ToolText;
@@ -20,8 +27,43 @@ export declare function truncateList<T>(list: T[], max?: number): {
20
27
  items: T[];
21
28
  truncated: number;
22
29
  };
23
- /** Compacta recursivamente: `series` viram amostras, arrays longos são cortados. */
30
+ export interface MaxItemsSetting {
31
+ value: number;
32
+ /** Presente quando FG_TRACKER_MAX_ITEMS foi ignorado ou reduzido. */
33
+ warning?: string;
34
+ }
35
+ /** Teto da lista principal: FG_TRACKER_MAX_ITEMS (inteiro de 1 a 1000, default 200). */
36
+ export declare function maxItemsFromEnv(env?: NodeJS.ProcessEnv): MaxItemsSetting;
37
+ /** Limite efetivo da lista principal: o `limit` pedido, até `maxItems`. */
38
+ export declare function clampLimit(requested: number, maxItems: number): {
39
+ limit: number;
40
+ capped: boolean;
41
+ };
42
+ /** Aviso para quando `clampLimit` reduziu o pedido. */
43
+ export declare function cappedNote(requested: number, limit: number): string;
44
+ export interface ListPage {
45
+ total: number;
46
+ returned: number;
47
+ truncated: boolean;
48
+ items: unknown[];
49
+ }
50
+ /** Prévia em texto de uma lista: até PREVIEW_LINES linhas e, se cortou, onde está o resto. */
51
+ export declare function preview(lines: string[]): string;
52
+ /**
53
+ * Lista principal de uma API sem paginação: os primeiros `limit` itens (cada um
54
+ * compactado) e quanto ficou de fora. Não há cursor: para ver o resto, aumente
55
+ * `limit` ou filtre.
56
+ */
57
+ export declare function listPage(list: unknown[], limit: number): ListPage;
58
+ /**
59
+ * Compacta recursivamente: `series` viram amostras e arrays internos de um objeto
60
+ * ficam com até 25 itens (`<campo>Omitted` diz quantos saíram). Um array passado
61
+ * direto também é cortado em 25; a lista principal de uma ferramenta deve ser
62
+ * limitada antes (API ou `listPage`) e compactada item a item.
63
+ */
24
64
  export declare function compact(value: unknown, depth?: number): unknown;
25
65
  export declare function ms(value: number | null | undefined): string;
26
66
  export declare function pct(value: number | null | undefined): string;
67
+ /** Tempo até `iso` ("em 3.5 d"); no passado vira `ago`. */
68
+ export declare function until(iso: string, now?: number): string;
27
69
  export declare function ago(iso: string, now?: number): string;
package/dist/format.js CHANGED
@@ -1,17 +1,31 @@
1
1
  /**
2
- * Helpers de saída: compactação de payloads grandes (mesma regra do §7 do
3
- * contrato — séries ≤ 48 pontos, listas ≤ 25 itens, traces ≤ 80 spans) e
4
- * conversão para o formato de resultado do MCP.
2
+ * Helpers de saída: compactação de payloads grandes e conversão para o formato
3
+ * de resultado do MCP. Regras (docs/mcp.md, "Limites de saída"):
4
+ * - lista principal de uma ferramenta: respeita `limit` até FG_TRACKER_MAX_ITEMS
5
+ * (default 200, teto 1000), cortada na API (cursor) ou por `listPage`, sempre
6
+ * com metadados de truncamento;
7
+ * - arrays internos de um objeto: ≤ 25 itens, com `<campo>Omitted`;
8
+ * - séries ≤ 48 pontos; traces ≤ 80 spans por página (tracker_get_trace pagina).
5
9
  */
6
- import { TrackApiError } from './client.js';
10
+ import { TrackApiError, readEnv } from './client.js';
7
11
  export const MAX_SERIES_POINTS = 48;
12
+ /** Arrays internos (amostras, ocorrências, checks dentro de um objeto). */
8
13
  export const MAX_LIST_ITEMS = 25;
9
14
  export const MAX_TRACE_SPANS = 80;
15
+ /** Default de FG_TRACKER_MAX_ITEMS: teto da lista principal de uma ferramenta. */
16
+ export const DEFAULT_MAX_ITEMS = 200;
17
+ /** Maior valor aceito em FG_TRACKER_MAX_ITEMS e nos `limit` sem teto próprio da API. */
18
+ export const MAX_ITEMS_CEILING = 1000;
19
+ /** Linhas de prévia no texto de uma lista longa; o JSON que segue traz todos os itens. */
20
+ export const PREVIEW_LINES = 25;
21
+ /** Acima disso o JSON sai sem indentação: a mesma lista ocupa bem menos da saída do cliente MCP. */
22
+ const PRETTY_JSON_MAX_CHARS = 20_000;
10
23
  export function text(value) {
11
24
  return { content: [{ type: 'text', text: value }] };
12
25
  }
13
26
  export function json(value, preface) {
14
- const body = JSON.stringify(value, null, 2);
27
+ const pretty = JSON.stringify(value, null, 2);
28
+ const body = pretty !== undefined && pretty.length > PRETTY_JSON_MAX_CHARS ? JSON.stringify(value) : pretty;
15
29
  return text(preface ? `${preface}\n\n${body}` : body);
16
30
  }
17
31
  export function errorResult(err) {
@@ -45,7 +59,48 @@ export function truncateList(list, max = MAX_LIST_ITEMS) {
45
59
  return { items: list, truncated: 0 };
46
60
  return { items: list.slice(0, max), truncated: list.length - max };
47
61
  }
48
- /** Compacta recursivamente: `series` viram amostras, arrays longos são cortados. */
62
+ /** Teto da lista principal: FG_TRACKER_MAX_ITEMS (inteiro de 1 a 1000, default 200). */
63
+ export function maxItemsFromEnv(env = process.env) {
64
+ const raw = readEnv('MAX_ITEMS', env);
65
+ if (raw === undefined)
66
+ return { value: DEFAULT_MAX_ITEMS };
67
+ const parsed = Number(raw);
68
+ if (!/^\d+$/.test(raw) || !Number.isSafeInteger(parsed) || parsed < 1) {
69
+ return { value: DEFAULT_MAX_ITEMS, warning: `FG_TRACKER_MAX_ITEMS="${raw.slice(0, 20)}" é inválido (use um inteiro de 1 a ${MAX_ITEMS_CEILING}); usando ${DEFAULT_MAX_ITEMS}.` };
70
+ }
71
+ if (parsed > MAX_ITEMS_CEILING)
72
+ return { value: MAX_ITEMS_CEILING, warning: `FG_TRACKER_MAX_ITEMS=${parsed} passa do teto; usando ${MAX_ITEMS_CEILING}.` };
73
+ return { value: parsed };
74
+ }
75
+ /** Limite efetivo da lista principal: o `limit` pedido, até `maxItems`. */
76
+ export function clampLimit(requested, maxItems) {
77
+ return requested > maxItems ? { limit: maxItems, capped: true } : { limit: requested, capped: false };
78
+ }
79
+ /** Aviso para quando `clampLimit` reduziu o pedido. */
80
+ export function cappedNote(requested, limit) {
81
+ return requested > limit ? ` limit ${requested} reduzido para ${limit} por FG_TRACKER_MAX_ITEMS.` : '';
82
+ }
83
+ /** Prévia em texto de uma lista: até PREVIEW_LINES linhas e, se cortou, onde está o resto. */
84
+ export function preview(lines) {
85
+ if (lines.length <= PREVIEW_LINES)
86
+ return lines.join('\n');
87
+ return [...lines.slice(0, PREVIEW_LINES), `… prévia de ${PREVIEW_LINES} de ${lines.length}; todos os ${lines.length} estão no JSON abaixo.`].join('\n');
88
+ }
89
+ /**
90
+ * Lista principal de uma API sem paginação: os primeiros `limit` itens (cada um
91
+ * compactado) e quanto ficou de fora. Não há cursor: para ver o resto, aumente
92
+ * `limit` ou filtre.
93
+ */
94
+ export function listPage(list, limit) {
95
+ const items = list.slice(0, limit).map((item) => compact(item));
96
+ return { total: list.length, returned: items.length, truncated: items.length < list.length, items };
97
+ }
98
+ /**
99
+ * Compacta recursivamente: `series` viram amostras e arrays internos de um objeto
100
+ * ficam com até 25 itens (`<campo>Omitted` diz quantos saíram). Um array passado
101
+ * direto também é cortado em 25; a lista principal de uma ferramenta deve ser
102
+ * limitada antes (API ou `listPage`) e compactada item a item.
103
+ */
49
104
  export function compact(value, depth = 0) {
50
105
  if (Array.isArray(value)) {
51
106
  const { items, truncated } = truncateList(value);
@@ -69,6 +124,12 @@ export function compact(value, depth = 0) {
69
124
  else if (k === 'sparkline' && Array.isArray(v)) {
70
125
  out[k] = v; // 24 pontos, já pequeno
71
126
  }
127
+ else if (Array.isArray(v)) {
128
+ const { items, truncated } = truncateList(v);
129
+ out[k] = items.map((item) => compact(item, depth + 1));
130
+ if (truncated > 0)
131
+ out[`${k}Omitted`] = truncated;
132
+ }
72
133
  else {
73
134
  out[k] = compact(v, depth + 1);
74
135
  }
@@ -87,6 +148,20 @@ export function pct(value) {
87
148
  return '—';
88
149
  return `${(value * 100).toFixed(2)}%`;
89
150
  }
151
+ /** Tempo até `iso` ("em 3.5 d"); no passado vira `ago`. */
152
+ export function until(iso, now = Date.now()) {
153
+ const t = Date.parse(iso);
154
+ if (Number.isNaN(t))
155
+ return iso;
156
+ if (t <= now)
157
+ return ago(iso, now);
158
+ const s = Math.round((t - now) / 1000);
159
+ if (s < 3600)
160
+ return `em ${Math.max(1, Math.round(s / 60))} min`;
161
+ if (s < 86400)
162
+ return `em ${(s / 3600).toFixed(1)} h`;
163
+ return `em ${(s / 86400).toFixed(1)} d`;
164
+ }
90
165
  export function ago(iso, now = Date.now()) {
91
166
  const t = Date.parse(iso);
92
167
  if (Number.isNaN(t))
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}