fg-tracker-mcp 0.10.0 → 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.
@@ -0,0 +1,277 @@
1
+ /**
2
+ * `outputSchema` das ferramentas de leitura (docs/mcp.md, "Saída estruturada").
3
+ *
4
+ * - O que vem da API passa por `loose` (`additionalProperties` livre): um campo novo da API
5
+ * não quebra a validação de um cliente MCP antigo. Os campos tipados aqui são os que as
6
+ * ferramentas e os prompts usam; os vindos da API são opcionais quando uma API anterior
7
+ * pode não mandá-los.
8
+ * - O que o MCP monta (janela, evidência, links) é estrito.
9
+ */
10
+ import { z } from 'zod';
11
+ export const loose = z.looseObject;
12
+ /** Janela de tempo absoluta (ISO 8601) a que um número se refere. */
13
+ export const windowSchema = z.object({ from: z.string(), to: z.string() });
14
+ /**
15
+ * Evidência verificável de uma conclusão: um trace (e span) existente, a métrica e o valor
16
+ * observados e a janela. Abra com tracker_get_trace { traceId } (filtre por `spanId` com o
17
+ * nome do span) ou pelo recurso fg-tracker://trace/{traceId}.
18
+ */
19
+ export const evidenceSchema = z.object({
20
+ traceId: z.string(),
21
+ spanId: z.string().optional(),
22
+ metric: z.string(),
23
+ value: z.union([z.number(), z.string()]),
24
+ window: windowSchema,
25
+ note: z.string().optional(),
26
+ });
27
+ /** Mais relevantes primeiro; o texto da ferramenta resume as primeiras. */
28
+ export const evidenceField = z.array(evidenceSchema);
29
+ /** `dashboard: null` quando a URL do painel é desconhecida (defina FG_TRACKER_WEB_URL). */
30
+ export const linksField = z.object({ dashboard: z.string().nullable(), resource: z.string().optional() });
31
+ const num = z.number();
32
+ const optNum = z.number().nullable().optional();
33
+ const optStr = z.string().nullable().optional();
34
+ const strList = z.array(z.string());
35
+ /** Filtros aplicados (variam por ferramenta: traces também têm sort e hasSpan). */
36
+ const filtersField = loose({ rootKind: z.string().optional(), service: z.string().optional(), env: z.string().optional() });
37
+ const traceItem = loose({ traceId: z.string(), name: z.string(), durationMs: num, startedAt: z.string() });
38
+ /* ---------------- núcleo ---------------- */
39
+ export const statusOutput = loose({
40
+ api: loose({ url: z.string(), status: z.string() }),
41
+ credential: z.object({
42
+ kind: z.enum(['access_token', 'session', 'none']).describe('access_token = token pessoal fgt_… (somente leitura, recomendado); session = sessão do painel (lê e escreve)'),
43
+ type: z.string().nullable(),
44
+ name: z.string().nullable(),
45
+ scope: z.string().nullable(),
46
+ projects: z.union([z.literal('all'), z.number()]).nullable(),
47
+ expiresAt: z.string().nullable(),
48
+ expired: z.boolean().nullable(),
49
+ warning: z.string().nullable(),
50
+ }),
51
+ apiKeyConfigured: z.boolean(),
52
+ readOnlyMode: z.boolean(),
53
+ maxItems: num,
54
+ projects: loose({ total: num.nullable(), items: z.array(z.object({ id: z.string(), name: z.string() })), error: z.string().optional() }),
55
+ ai: loose({ enabled: z.boolean() }).nullable(),
56
+ });
57
+ export const projectsOutput = loose({
58
+ total: num,
59
+ returned: num,
60
+ truncated: z.boolean(),
61
+ items: z.array(loose({ id: z.string(), name: z.string(), slug: z.string().optional(), apiKey: z.string().optional() })),
62
+ });
63
+ export const overviewOutput = loose({
64
+ window: windowSchema,
65
+ range: z.string().optional(),
66
+ requests: num.optional(),
67
+ errorRate: num.optional(),
68
+ p50Ms: num.optional(),
69
+ p95Ms: num.optional(),
70
+ p99Ms: num.optional(),
71
+ openIssues: num.optional(),
72
+ jobs: loose({}).optional(),
73
+ services: strList.optional(),
74
+ environments: strList.optional(),
75
+ });
76
+ export const endpointsOutput = loose({
77
+ window: windowSchema,
78
+ filters: filtersField,
79
+ total: num,
80
+ returned: num,
81
+ items: z.array(loose({ name: z.string(), requests: num.optional(), p95Ms: num.optional(), errorRate: num.optional() })),
82
+ });
83
+ export const issuesOutput = loose({
84
+ items: z.array(loose({ id: z.string(), sampleTraceId: optStr })),
85
+ nextCursor: z.string().nullable(),
86
+ total: num,
87
+ evidence: evidenceField,
88
+ });
89
+ export const tracesOutput = loose({
90
+ window: windowSchema,
91
+ filters: filtersField,
92
+ items: z.array(traceItem),
93
+ nextCursor: z.string().nullable(),
94
+ evidence: evidenceField,
95
+ });
96
+ export const traceOutput = loose({
97
+ traceId: z.string(),
98
+ name: z.string().optional(),
99
+ durationMs: num.optional(),
100
+ statusCode: optNum,
101
+ spanPage: loose({ total: num, nextSpanOffset: num.nullable() }),
102
+ spans: z.array(loose({})),
103
+ evidence: evidenceField,
104
+ links: linksField,
105
+ });
106
+ export const logsOutput = loose({
107
+ window: windowSchema,
108
+ items: z.array(loose({ ts: z.string(), message: z.string() })),
109
+ nextCursor: z.string().nullable(),
110
+ });
111
+ export const guideOutput = loose({
112
+ framework: z.string(),
113
+ projectId: z.string().nullable(),
114
+ serviceName: z.string().nullable(),
115
+ apiKeyIncluded: z.boolean(),
116
+ databaseDriver: z.string().nullable(),
117
+ markdown: z.string(),
118
+ });
119
+ export const verifyIngestOutput = loose({
120
+ window: windowSchema,
121
+ spans: z.object({ ok: z.boolean(), lastTrace: traceItem.nullable() }),
122
+ logs: z.object({ ok: z.boolean(), available: z.boolean(), last: loose({ ts: z.string() }).nullable(), error: z.string().nullable() }),
123
+ verdict: z.enum(['ok', 'nothing']),
124
+ evidence: evidenceField,
125
+ });
126
+ export const issueOutput = loose({
127
+ id: z.string().optional(),
128
+ title: z.string().optional(),
129
+ type: z.string().optional(),
130
+ count: num.optional(),
131
+ evidence: evidenceField,
132
+ links: linksField,
133
+ });
134
+ export const releasesOutput = loose({
135
+ version: z.string().nullable(),
136
+ items: z.array(loose({ version: z.string() })).optional(),
137
+ detail: loose({}).optional(),
138
+ });
139
+ export const historyOutput = loose({
140
+ name: z.string().optional(),
141
+ days: num.optional(),
142
+ bucketHours: num.optional(),
143
+ points: z.array(loose({ ts: z.string() })).optional(),
144
+ markers: z.array(loose({ version: z.string(), at: z.string() })).optional(),
145
+ filters: z.object({ service: z.string().optional(), env: z.string().optional() }),
146
+ filtersApplied: z.boolean().describe('false = a API não filtra o histórico por service/env (os números misturam todos)'),
147
+ });
148
+ export const providersOutput = loose({
149
+ window: windowSchema,
150
+ totalRequests: num.optional(),
151
+ errorRate: num.optional(),
152
+ items: z.array(loose({ host: z.string() })),
153
+ });
154
+ export const trafficOutput = loose({
155
+ window: z.object({ fromDay: z.string(), toDay: z.string() }),
156
+ empty: z.boolean(),
157
+ totals: loose({}).optional(),
158
+ lastRollupAt: z.string().nullable().optional(),
159
+ notes: strList,
160
+ });
161
+ export const monitorsOutput = loose({
162
+ total: num,
163
+ returned: num,
164
+ truncated: z.boolean(),
165
+ items: z.array(loose({ id: z.string(), name: z.string(), slug: z.string(), status: z.string() })),
166
+ });
167
+ export const monitorOutput = loose({
168
+ id: z.string(),
169
+ name: z.string().optional(),
170
+ status: z.string().optional(),
171
+ checks: z.array(loose({ at: z.string(), status: z.string() })),
172
+ evidence: evidenceField,
173
+ });
174
+ export const detectDatabasesOutput = loose({
175
+ databases: z.array(loose({ package: z.string() })),
176
+ guide: z.string(),
177
+ });
178
+ /* ---------------- diagnóstico (0.11) ---------------- */
179
+ export const endpointOutput = loose({
180
+ window: windowSchema,
181
+ filters: filtersField,
182
+ name: z.string(),
183
+ requests: num.optional(),
184
+ errorRate: num.optional(),
185
+ p50Ms: num.optional(),
186
+ p95Ms: num.optional(),
187
+ p99Ms: num.optional(),
188
+ slowestTraces: z.array(loose({ traceId: z.string(), durationMs: num })).optional(),
189
+ evidence: evidenceField,
190
+ links: linksField,
191
+ });
192
+ export const queriesOutput = loose({
193
+ window: windowSchema,
194
+ filters: z.object({ service: z.string().optional(), env: z.string().optional(), search: z.string().optional() }),
195
+ filtersApplied: z.boolean().describe('false = a API ignorou service/env: os números misturam ambientes e serviços'),
196
+ totalQueries: num.optional(),
197
+ totalMs: num.optional(),
198
+ avgMs: num.optional(),
199
+ total: num,
200
+ items: z.array(loose({ name: z.string(), count: num, p95Ms: num })),
201
+ environments: strList.optional(),
202
+ evidence: evidenceField,
203
+ links: linksField,
204
+ });
205
+ export const logStatsOutput = loose({
206
+ window: windowSchema,
207
+ totals: z.object({ error: num, warn: num, info: num, debug: num, all: num }),
208
+ histogram: z.array(loose({ ts: z.string() })),
209
+ facets: loose({ services: z.array(loose({ name: z.string(), count: num })), envs: z.array(loose({ name: z.string(), count: num })) }),
210
+ });
211
+ export const alertEventsOutput = loose({
212
+ window: windowSchema.nullable(),
213
+ filters: z.object({ type: strList.optional(), severity: strList.optional(), state: z.string().optional() }),
214
+ items: z.array(loose({
215
+ id: z.string(),
216
+ type: z.string(),
217
+ severity: z.string(),
218
+ firedAt: z.string(),
219
+ state: z.enum(['firing', 'resolved']).nullable(),
220
+ })),
221
+ scanned: num,
222
+ nextCursor: z.string().nullable(),
223
+ evidence: evidenceField,
224
+ });
225
+ export const environmentsOutput = loose({
226
+ window: windowSchema,
227
+ environments: z.array(z.object({
228
+ name: z.string(),
229
+ versions: num.nullable(),
230
+ lastSeen: z.string().nullable(),
231
+ inTelemetry: z.boolean(),
232
+ })),
233
+ services: strList,
234
+ });
235
+ /* ---------------- infra e testes de carga (ferramentas locais/de leitura) ---------------- */
236
+ export const reportOutput = loose({
237
+ report: z.string(),
238
+ });
239
+ export const infraEnvironmentsOutput = loose({
240
+ accounts: z.array(loose({ accountId: z.string(), environment: z.string().nullable(), regionsInUse: strList })),
241
+ skipped: z.array(loose({ reason: z.string() })),
242
+ profilesFound: strList,
243
+ });
244
+ export const routesOutput = loose({
245
+ format: z.enum(['text', 'json']),
246
+ report: z.string().optional(),
247
+ scan: loose({ root: z.string(), routes: z.array(loose({})) }).optional(),
248
+ });
249
+ export const scenariosOutput = loose({
250
+ total: num,
251
+ items: z.array(loose({})),
252
+ });
253
+ export const planOutput = loose({
254
+ preset: z.string(),
255
+ plan: loose({}),
256
+ warnings: strList,
257
+ });
258
+ const compareSide = loose({
259
+ mode: z.enum(['window', 'release']),
260
+ release: z.string().nullable(),
261
+ from: z.string(),
262
+ to: z.string(),
263
+ coverage: z.enum(['full', 'partial', 'none']).describe('Spans brutos na janela (retenção): sem eles, não há decomposição'),
264
+ source: z.enum(['raw', 'rollup', 'none']),
265
+ totals: loose({ p95Ms: num }).nullable(),
266
+ });
267
+ export const compareOutput = loose({
268
+ a: compareSide,
269
+ b: compareSide,
270
+ delta: loose({ p95Ms: num }).nullable(),
271
+ routes: z.array(loose({ name: z.string() })),
272
+ decomposition: loose({ delta: loose({ db: num, httpClient: num, custom: num, gap: num }) }).nullable(),
273
+ topSpans: z.array(loose({ kind: z.string(), name: z.string(), deltaMs: num })).nullable(),
274
+ evidence: evidenceField,
275
+ notes: strList,
276
+ });
277
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,16 +1,18 @@
1
1
  /**
2
- * Servidor MCP do FG Tracker (docs/CONTRATO.md §12): tools, prompt e resource.
2
+ * Servidor MCP do FG Tracker (docs/CONTRATO.md §12, docs/mcp.md): tools, prompts e resources.
3
3
  * O transporte (stdio) é conectado em `cli.ts`.
4
4
  */
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import { TrackClient } from './client.js';
7
7
  import { type ToolText } from './format.js';
8
8
  export declare const SERVER_NAME = "fg-tracker";
9
- export declare const SERVER_VERSION = "0.10.0";
9
+ export declare const SERVER_VERSION = "0.11.0";
10
10
  export interface CreateServerOptions {
11
11
  client?: TrackClient;
12
12
  /** Registra também os nomes antigos `track_*` (default: `FG_TRACKER_LEGACY_TOOL_NAMES`, ligado se ausente). */
13
13
  legacyToolNames?: boolean;
14
+ /** Só registra ferramentas com `readOnlyHint: true` (default: `FG_TRACKER_READ_ONLY`, desligado se ausente). */
15
+ readOnly?: boolean;
14
16
  }
15
17
  /** Prefixo das ferramentas próprias do FG Tracker (`infra_*` e `loadtest_*` têm o seu). */
16
18
  export declare const TOOL_PREFIX = "tracker_";
@@ -19,6 +21,13 @@ export declare const TOOL_PREFIX = "tracker_";
19
21
  * registrados como aliases, para clientes com permissões ou prompts salvos com eles; saem na 1.0.
20
22
  */
21
23
  export declare const LEGACY_TOOL_PREFIX = "track_";
24
+ /**
25
+ * Ferramentas que já existiam com o nome `track_*` (0.10.0) e por isso ganham o alias.
26
+ * Ferramentas novas não ganham: não há permissão nem prompt salvo com um nome que nunca existiu.
27
+ */
28
+ export declare const LEGACY_ALIASED_TOOLS: ReadonlySet<string>;
22
29
  export declare function legacyToolNamesFromEnv(env?: NodeJS.ProcessEnv): boolean;
30
+ /** `FG_TRACKER_READ_ONLY=1` (ou true/on/yes): só as ferramentas de leitura ficam visíveis. */
31
+ export declare function readOnlyFromEnv(env?: NodeJS.ProcessEnv): boolean;
23
32
  export declare function createServer(options?: CreateServerOptions): McpServer;
24
33
  export type { ToolText };