fg-tracker-mcp 0.10.0 → 0.12.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +19 -7
  3. package/dist/cli.js +23 -8
  4. package/dist/cli.js.map +1 -1
  5. package/dist/client.d.ts +82 -5
  6. package/dist/client.js +182 -20
  7. package/dist/client.js.map +1 -1
  8. package/dist/confirm.d.ts +15 -0
  9. package/dist/confirm.js +32 -0
  10. package/dist/confirm.js.map +1 -0
  11. package/dist/diagnostics.d.ts +18 -0
  12. package/dist/diagnostics.js +467 -0
  13. package/dist/diagnostics.js.map +1 -0
  14. package/dist/format.d.ts +25 -2
  15. package/dist/format.js +35 -8
  16. package/dist/format.js.map +1 -1
  17. package/dist/guide.js +10 -6
  18. package/dist/guide.js.map +1 -1
  19. package/dist/infra/tools.js +68 -27
  20. package/dist/infra/tools.js.map +1 -1
  21. package/dist/inputs.d.ts +40 -0
  22. package/dist/inputs.js +30 -0
  23. package/dist/inputs.js.map +1 -0
  24. package/dist/journeys.d.ts +71 -0
  25. package/dist/journeys.js +130 -0
  26. package/dist/journeys.js.map +1 -0
  27. package/dist/links.d.ts +87 -0
  28. package/dist/links.js +124 -0
  29. package/dist/links.js.map +1 -0
  30. package/dist/loadtest/scenario.d.ts +4 -4
  31. package/dist/loadtest/tools.d.ts +1 -1
  32. package/dist/loadtest/tools.js +78 -27
  33. package/dist/loadtest/tools.js.map +1 -1
  34. package/dist/permissions.d.ts +85 -0
  35. package/dist/permissions.js +216 -0
  36. package/dist/permissions.js.map +1 -0
  37. package/dist/schemas.d.ts +680 -0
  38. package/dist/schemas.js +308 -0
  39. package/dist/schemas.js.map +1 -0
  40. package/dist/server.d.ts +20 -2
  41. package/dist/server.js +495 -119
  42. package/dist/server.js.map +1 -1
  43. package/dist/writes.d.ts +35 -0
  44. package/dist/writes.js +409 -0
  45. package/dist/writes.js.map +1 -0
  46. package/package.json +2 -2
package/dist/links.js ADDED
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Janelas, evidências e links das ferramentas de diagnóstico (docs/mcp.md, "Evidências e links").
3
+ *
4
+ * - `evidence[]` aponta só para traces que a API devolveu nesta chamada: o agente pode abrir
5
+ * cada um (tracker_get_trace ou o recurso fg-tracker://trace/{traceId}) e conferir o número.
6
+ * - Links do painel só saem quando a URL do painel é conhecida (FG_TRACKER_WEB_URL ou derivada
7
+ * da API); senão `dashboard: null`.
8
+ */
9
+ import { RANGE_SECONDS } from './client.js';
10
+ import { ms } from './format.js';
11
+ /**
12
+ * Templates dos recursos. `?projectId=` é um sufixo opcional (os links que o servidor gera
13
+ * sempre o trazem); sem ele, a leitura procura o id nos projetos acessíveis.
14
+ */
15
+ export const TRACE_URI_TEMPLATE = 'fg-tracker://trace/{traceId}';
16
+ export const ISSUE_URI_TEMPLATE = 'fg-tracker://issue/{issueId}';
17
+ /** Id e `projectId` opcional de `fg-tracker://<tipo>/<id>[?projectId=…]`. */
18
+ export function parseResourceUri(uri) {
19
+ return { id: decodeURIComponent(uri.pathname.replace(/^\/+/, '')), projectId: uri.searchParams.get('projectId') ?? undefined };
20
+ }
21
+ export function traceUri(projectId, traceId) {
22
+ return `fg-tracker://trace/${encodeURIComponent(traceId)}?projectId=${encodeURIComponent(projectId)}`;
23
+ }
24
+ export function issueUri(projectId, issueId) {
25
+ return `fg-tracker://issue/${encodeURIComponent(issueId)}?projectId=${encodeURIComponent(projectId)}`;
26
+ }
27
+ /** Janela `[agora − range, agora]` como a API calcula. */
28
+ export function rangeWindow(range, now = Date.now()) {
29
+ return { from: new Date(now - RANGE_SECONDS[range] * 1000).toISOString(), to: new Date(now).toISOString() };
30
+ }
31
+ /** Maior janela absoluta aceita pela API de logs (`logs-query.service.ts`, 31 dias). */
32
+ export const LOGS_MAX_WINDOW_DAYS = 31;
33
+ /**
34
+ * Janela de uma consulta com `from`/`to` opcionais, como a API de logs calcula: sem os dois,
35
+ * `[agora − range, agora]`; só `to`, a janela `range` que termina em `to`; só `from`, de `from`
36
+ * até agora. Validada aqui para o erro sair antes da chamada.
37
+ */
38
+ export function resolveWindow(range, from, to, maxDays = LOGS_MAX_WINDOW_DAYS, now = Date.now()) {
39
+ if (!from && !to)
40
+ return rangeWindow(range, now);
41
+ const end = to ? Date.parse(to) : now;
42
+ const start = from ? Date.parse(from) : end - RANGE_SECONDS[range] * 1000;
43
+ if (end <= start)
44
+ throw new Error(`\`to\` (${to ?? 'agora'}) precisa ser depois de \`from\` (${from}).`);
45
+ if (maxDays !== null && end - start > maxDays * 86_400_000)
46
+ throw new Error(`Janela de ${Math.ceil((end - start) / 86_400_000)} dias: o máximo é ${maxDays}. Encurte from/to.`);
47
+ return { from: new Date(start).toISOString(), to: new Date(end).toISOString() };
48
+ }
49
+ export const WINDOW_IGNORED_NOTE = 'ATENÇÃO: esta API ignorou from/to (versão anterior à janela absoluta); os números são do range relativo.';
50
+ /**
51
+ * GET de uma leitura de métricas com `range` ou `from`/`to` (validados aqui, até 31 dias). A
52
+ * janela devolvida é a que a API confirmou no cabeçalho; sem a confirmação, `windowIgnored`.
53
+ */
54
+ export async function getWithWindow(client, path, query, range, from, to) {
55
+ const absolute = Boolean(from || to);
56
+ const requested = resolveWindow(range, from, to);
57
+ const res = await client.getWindowed(path, { ...query, range, ...(absolute ? requested : {}) });
58
+ if (!absolute)
59
+ return { body: res.body, window: requested, windowIgnored: false, capabilities: res.capabilities };
60
+ return { body: res.body, window: res.window ?? rangeWindow(range), windowIgnored: res.window === null, capabilities: res.capabilities };
61
+ }
62
+ /** Intervalo de um span ou trace: `[startedAt, startedAt + durationMs]`. */
63
+ export function spanWindow(startedAt, durationMs) {
64
+ const start = Date.parse(startedAt);
65
+ if (Number.isNaN(start))
66
+ return { from: startedAt, to: startedAt };
67
+ return { from: new Date(start).toISOString(), to: new Date(start + Math.max(0, durationMs)).toISOString() };
68
+ }
69
+ /** Página do painel (`/trace/?project=…&trace=…`), ou `null` sem URL do painel. */
70
+ export function dashboardUrl(client, page, params) {
71
+ const web = client.webUrl;
72
+ if (!web)
73
+ return null;
74
+ const query = new URLSearchParams(params).toString();
75
+ return `${web}/${page}/${query ? `?${query}` : ''}`;
76
+ }
77
+ function resourceLinks(links, name, description) {
78
+ const out = [];
79
+ if (links.dashboard)
80
+ out.push({ type: 'resource_link', uri: links.dashboard, name: `${name} (painel)`, description: `${description} no painel do FG Tracker`, mimeType: 'text/html' });
81
+ if (links.resource)
82
+ out.push({ type: 'resource_link', uri: links.resource, name, description: `${description} (JSON, resources/read)`, mimeType: 'application/json' });
83
+ return out;
84
+ }
85
+ export function traceLinks(client, projectId, traceId) {
86
+ const links = { dashboard: dashboardUrl(client, 'trace', { project: projectId, trace: traceId }), resource: traceUri(projectId, traceId) };
87
+ return { links, resourceLinks: resourceLinks(links, `trace ${traceId}`, 'Waterfall do trace') };
88
+ }
89
+ export function issueLinks(client, projectId, issueId) {
90
+ const links = { dashboard: dashboardUrl(client, 'issue', { project: projectId, issue: issueId }), resource: issueUri(projectId, issueId) };
91
+ return { links, resourceLinks: resourceLinks(links, `issue ${issueId}`, 'Issue') };
92
+ }
93
+ export function pageLinks(client, page, params, name) {
94
+ const links = { dashboard: dashboardUrl(client, page, params) };
95
+ return { links, resourceLinks: resourceLinks(links, name, name) };
96
+ }
97
+ /** Links `fg-tracker://trace/…` das evidências (sem repetir trace), até `max`. */
98
+ export function evidenceResourceLinks(projectId, evidence, max = 3) {
99
+ const seen = new Set();
100
+ const out = [];
101
+ for (const item of evidence) {
102
+ if (seen.has(item.traceId) || out.length >= max)
103
+ continue;
104
+ seen.add(item.traceId);
105
+ out.push({ type: 'resource_link', uri: traceUri(projectId, item.traceId), name: `trace ${item.traceId}`, description: `Evidência: ${item.metric} = ${item.value}`, mimeType: 'application/json' });
106
+ }
107
+ return out;
108
+ }
109
+ export function traceEvidence(item, metric = 'durationMs', value = item.durationMs, note) {
110
+ const label = note ?? item.name;
111
+ return { traceId: item.traceId, metric, value, window: spanWindow(item.startedAt, item.durationMs), ...(label ? { note: label } : {}) };
112
+ }
113
+ /** Os `max` traces mais lentos de uma lista, como evidência de duração. */
114
+ export function tracesEvidence(items, max = 5) {
115
+ return [...items].sort((a, b) => b.durationMs - a.durationMs).slice(0, max).map((item) => traceEvidence(item));
116
+ }
117
+ /** Resumo em texto das evidências, para clientes que só mostram o `content`. */
118
+ export function evidenceLines(evidence, max = 5) {
119
+ if (!evidence.length)
120
+ return '';
121
+ const fmt = (e) => (typeof e.value === 'number' && /ms$/i.test(e.metric) ? ms(e.value) : String(e.value));
122
+ return `\nEvidência: ${evidence.slice(0, max).map((e) => `trace ${e.traceId}${e.spanId ? ` span ${e.spanId}` : ''} (${e.metric} ${fmt(e)})`).join('; ')}${evidence.length > max ? ` (+${evidence.length - max})` : ''}`;
123
+ }
124
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAoD,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,EAAE,EAAqB,MAAM,aAAa,CAAC;AAapD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAEjE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IACvC,OAAO,EAAE,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;AACjI,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,OAAe;IACzD,OAAO,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,OAAe;IACzD,OAAO,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;AACxG,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC3D,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9G,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAe,EAAE,IAAa,EAAE,EAAW,EAAE,UAAyB,oBAAoB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACxI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1E,IAAI,GAAG,IAAI,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,OAAO,qCAAqC,IAAI,IAAI,CAAC,CAAC;IACzG,IAAI,OAAO,KAAK,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,qBAAqB,OAAO,oBAAoB,CAAC,CAAC;IAChL,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAClF,CAAC;AAWD,MAAM,CAAC,MAAM,mBAAmB,GAAG,0GAA0G,CAAC;AAE9I;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,MAAmB,EAAE,IAAY,EAAE,KAAiC,EAAE,KAAe,EAAE,IAAa,EAAE,EAAW;IACtJ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAI,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnG,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IAClH,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1I,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,UAAkB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9G,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,IAAY,EAAE,MAA8B;IAC5F,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,OAAO,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,KAAY,EAAE,IAAY,EAAE,WAAmB;IACpE,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,IAAI,KAAK,CAAC,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,0BAA0B,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IACvL,IAAI,KAAK,CAAC,QAAQ;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,yBAAyB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACvK,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,SAAiB,EAAE,OAAe;IAChF,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3I,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,oBAAoB,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,SAAiB,EAAE,OAAe;IAChF,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3I,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAmB,EAAE,IAAY,EAAE,MAA8B,EAAE,IAAY;IACvG,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IAChE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,QAAoB,EAAE,GAAG,GAAG,CAAC;IACpF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;YAAE,SAAS;QAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,cAAc,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACrM,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,MAAM,GAAG,YAAY,EAAE,QAAyB,IAAI,CAAC,UAAU,EAAE,IAAa;IAC3H,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IAChC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1I,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,KAAkB,EAAE,GAAG,GAAG,CAAC;IACxD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACjH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,QAAoB,EAAE,GAAG,GAAG,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpH,OAAO,gBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1N,CAAC"}
@@ -40,8 +40,8 @@ export declare const stepSchema: z.ZodObject<{
40
40
  GET: "GET";
41
41
  POST: "POST";
42
42
  PATCH: "PATCH";
43
- DELETE: "DELETE";
44
43
  PUT: "PUT";
44
+ DELETE: "DELETE";
45
45
  HEAD: "HEAD";
46
46
  OPTIONS: "OPTIONS";
47
47
  }>;
@@ -93,8 +93,8 @@ export declare const scenarioSchema: z.ZodObject<{
93
93
  GET: "GET";
94
94
  POST: "POST";
95
95
  PATCH: "PATCH";
96
- DELETE: "DELETE";
97
96
  PUT: "PUT";
97
+ DELETE: "DELETE";
98
98
  HEAD: "HEAD";
99
99
  OPTIONS: "OPTIONS";
100
100
  }>;
@@ -136,8 +136,8 @@ export declare const scenarioSchema: z.ZodObject<{
136
136
  GET: "GET";
137
137
  POST: "POST";
138
138
  PATCH: "PATCH";
139
- DELETE: "DELETE";
140
139
  PUT: "PUT";
140
+ DELETE: "DELETE";
141
141
  HEAD: "HEAD";
142
142
  OPTIONS: "OPTIONS";
143
143
  }>;
@@ -179,8 +179,8 @@ export declare const scenarioSchema: z.ZodObject<{
179
179
  GET: "GET";
180
180
  POST: "POST";
181
181
  PATCH: "PATCH";
182
- DELETE: "DELETE";
183
182
  PUT: "PUT";
183
+ DELETE: "DELETE";
184
184
  HEAD: "HEAD";
185
185
  OPTIONS: "OPTIONS";
186
186
  }>;
@@ -1,5 +1,5 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { type TrackClient } from '../client.js';
2
+ import type { TrackClient } from '../client.js';
3
3
  import { type LoadtestPlan, type ScenarioSummary, type ValidationIssue } from './scenario.js';
4
4
  export declare const SCENARIO_EXAMPLE: {
5
5
  version: number;
@@ -5,8 +5,9 @@
5
5
  import { stat } from 'node:fs/promises';
6
6
  import { resolve } from 'node:path';
7
7
  import { z } from 'zod';
8
- import { TrackApiError } from '../client.js';
9
- import { guard, json, text } from '../format.js';
8
+ import { DELETE_GUIDANCE, confirmSchema, refuseUnconfirmed } from '../confirm.js';
9
+ import { guard, json, structured, text } from '../format.js';
10
+ import { planOutput, routesOutput, scenariosOutput } from '../schemas.js';
10
11
  import { formatRouteScan, scanRoutes } from './routes.js';
11
12
  import { PRESETS, describePlan, planWarnings, presetPlan, validatePlan, validateScenario, } from './scenario.js';
12
13
  const projectIdSchema = z.string().uuid().describe('ID (uuid) do projeto — veja tracker_list_projects');
@@ -210,15 +211,19 @@ export function registerLoadtestTools(server, client) {
210
211
  path: z.string().optional().describe('Diretório do app/serviço (default: diretório atual)'),
211
212
  format: z.enum(['text', 'json']).default('text').describe('text (compacto) ou json (estrutura completa)'),
212
213
  },
214
+ outputSchema: routesOutput,
213
215
  annotations: { readOnlyHint: true, openWorldHint: false },
214
216
  }, async ({ path, format }) => guard(async () => {
215
217
  const scan = await scanRoutes(await resolveRoot(path));
216
- return format === 'json' ? json(scan) : text(formatRouteScan(scan));
218
+ if (format === 'json')
219
+ return { ...json(scan), structuredContent: { format, scan } };
220
+ const report = formatRouteScan(scan);
221
+ return structured({ format, report }, report, { body: null });
217
222
  }));
218
223
  server.registerTool('loadtest_create_scenario', {
219
224
  title: 'Criar roteiro de simulação (jornada)',
220
225
  description: [
221
- 'Valida o roteiro (CONTRATO §28.2) e grava no projeto (POST /v1/projects/:id/loadtest/scenarios com token de sessão; com só FG_TRACKER_API_KEY usa POST /v1/loadtest/scenarios). Em erro de validação devolve cada problema com o caminho do campo (ex.: steps[1].checks[0].in) e nada é gravado.',
226
+ 'Valida o roteiro (CONTRATO §28.2) e grava no projeto: com FG_TRACKER_TOKEN, POST /v1/projects/:id/loadtest/scenarios (token com "Testes de carga: criar e editar", owner/admin) e a recusa do token é final; só sem FG_TRACKER_TOKEN usa a chave FG_TRACKER_API_KEY (POST /v1/loadtest/scenarios), que só grava no projeto da chave. Em erro de validação devolve cada problema com o caminho do campo (ex.: steps[1].checks[0].in) e nada é gravado.',
222
227
  'Formato: { version: 1, name, baseUrl?, defaults?: { headers?, timeoutMs?, thinkTimeMs?: n | [min,max] }, variables?, setup?: Step[], steps: Step[] (≥1), teardown?: Step[] }.',
223
228
  'Step: { name, method: GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS, path (relativo ao baseUrl, aceita {{var}}), headers?, body?, extract?: [{ var, from: json|header|regex|status, path? }], checks?: [{ type: "status", in: [200] } | { type: "json", path, exists?|equals? } | { type: "bodyContains", value } | { type: "maxDurationMs", value }], thinkTimeMs?, weight?, skipIf? }.',
224
229
  'Templates: {{user.username}}, {{user.password}}, {{user.extra.*}} (usuários de teste cifrados no FG Tracker — nunca escreva senhas no roteiro), {{vu}}, {{iteration}}, {{uuid}}, {{randomInt(a,b)}}, variáveis extraídas e variables.',
@@ -237,26 +242,16 @@ export function registerLoadtestTools(server, client) {
237
242
  return { ...text(`Roteiro inválido (${result.issues.length} problema(s)) — nada foi gravado:\n${formatIssues(result.issues)}`), isError: true };
238
243
  }
239
244
  const payload = { name: result.scenario.name, ...(description ? { description } : {}), document: result.scenario, source: 'mcp' };
240
- let route = `${base(projectId)}/scenarios`;
241
- let response;
242
- if (!client.hasToken && client.hasApiKey) {
243
- route = '/v1/loadtest/scenarios';
244
- response = await client.post(route, { projectId, ...payload });
245
- }
246
- else {
247
- try {
248
- response = await client.post(route, payload);
249
- }
250
- catch (err) {
251
- if (err instanceof TrackApiError && (err.status === 401 || err.status === 403) && client.hasApiKey) {
252
- route = '/v1/loadtest/scenarios';
253
- response = await client.post(route, { projectId, ...payload });
254
- }
255
- else
256
- throw err;
257
- }
258
- }
245
+ // Com FG_TRACKER_TOKEN o Bearer decide e a recusa dele é final: nunca há segunda tentativa
246
+ // pela chave (ela burlaria as permissões do token). A chave só vale sem token.
247
+ const byKey = !client.hasToken && client.hasApiKey;
248
+ const route = byKey ? '/v1/loadtest/scenarios' : `${base(projectId)}/scenarios`;
249
+ const response = byKey ? await client.postWithKey(route, { projectId, ...payload }) : await client.post(route, payload);
259
250
  const saved = (response?.scenario ?? response);
251
+ if (byKey && saved?.projectId && saved.projectId.toLowerCase() !== projectId.toLowerCase()) {
252
+ // API anterior ao API_KEY_PROJECT_MISMATCH: gravou no projeto da chave, não no pedido.
253
+ return { ...text(`Atenção: a API gravou o roteiro (id ${saved.id ?? '?'}) no projeto da FG_TRACKER_API_KEY (${saved.projectId}), não em ${projectId}. Esta API não recusa projectId divergente; confira a chave antes de continuar.`), isError: true };
254
+ }
260
255
  return text([
261
256
  `Roteiro gravado (${route}) · id ${saved?.id ?? '?'}`,
262
257
  '',
@@ -269,16 +264,62 @@ export function registerLoadtestTools(server, client) {
269
264
  title: 'Listar roteiros de simulação',
270
265
  description: 'GET /v1/projects/:id/loadtest/scenarios: id, nome, origem (mcp|editor), passos e atualização.',
271
266
  inputSchema: { projectId: projectIdSchema },
267
+ outputSchema: scenariosOutput,
272
268
  annotations: { readOnlyHint: true, openWorldHint: true },
273
269
  }, async ({ projectId }) => guard(async () => {
274
270
  const list = asList(await client.get(`${base(projectId)}/scenarios`));
275
271
  if (list.length === 0)
276
- return text('Nenhum roteiro. Crie um com o prompt create-load-test ou `loadtest_create_scenario`.');
272
+ return structured({ total: 0, items: [] }, 'Nenhum roteiro. Crie um com o prompt create-load-test ou `loadtest_create_scenario`.', { body: null });
277
273
  const lines = list.map((s) => {
278
274
  const doc = s.document;
279
275
  return `- ${String(s.name ?? '?')} · id ${String(s.id ?? '?')} · ${String(s.source ?? '?')}${doc?.steps ? ` · ${doc.setup?.length ?? 0} setup + ${doc.steps.length} passos` : ''}${s.updatedAt ? ` · atualizado ${String(s.updatedAt)}` : ''}`;
280
276
  });
281
- return text(`${list.length} roteiro(s):\n${lines.join('\n')}`);
277
+ // O documento inteiro fica de fora: o resumo de passos basta para escolher o roteiro.
278
+ const items = list.map(({ document, ...rest }) => ({ ...rest, steps: document?.steps?.length ?? null }));
279
+ return structured({ total: list.length, items }, `${list.length} roteiro(s):\n${lines.join('\n')}`, { body: null });
280
+ }));
281
+ server.registerTool('loadtest_update_scenario', {
282
+ title: 'Editar roteiro de simulação',
283
+ description: 'Atualiza nome, descrição e/ou o documento de um roteiro (PUT /v1/projects/:id/loadtest/scenarios/:scenarioId; owner/admin). O documento é validado como em loadtest_create_scenario antes de qualquer gravação (cada problema com o caminho do campo). Execuções antigas mantêm a cópia do roteiro que usaram. Exige "Testes de carga: criar e editar".',
284
+ inputSchema: {
285
+ projectId: projectIdSchema,
286
+ scenarioId: z.string().uuid().describe('ID do roteiro (loadtest_list_scenarios)'),
287
+ name: z.string().min(1).max(200).optional(),
288
+ description: z.string().max(2000).optional(),
289
+ scenario: z.record(z.string(), z.unknown()).optional().describe('Documento completo novo do roteiro (§28.2)'),
290
+ },
291
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
292
+ }, async ({ projectId, scenarioId, name, description, scenario }) => guard(async () => {
293
+ if (name === undefined && description === undefined && scenario === undefined)
294
+ return { ...text('Informe name, description ou scenario.'), isError: true };
295
+ const body = {};
296
+ let summary = null;
297
+ if (scenario !== undefined) {
298
+ const result = validateScenario(scenario);
299
+ if (!result.ok)
300
+ return { ...text(`Roteiro inválido (${result.issues.length} problema(s)) — nada foi gravado:\n${formatIssues(result.issues)}`), isError: true };
301
+ body.document = result.scenario;
302
+ summary = result.summary;
303
+ }
304
+ if (name !== undefined)
305
+ body.name = name;
306
+ if (description !== undefined)
307
+ body.description = description;
308
+ const saved = (await client.put(`${base(projectId)}/scenarios/${scenarioId}`, body));
309
+ return text([`Roteiro "${saved.name ?? name ?? scenarioId}" atualizado${saved.updatedAt ? ` em ${saved.updatedAt}` : ''}.`, ...(summary ? ['', formatScenarioSummary(summary)] : [])].join('\n'));
310
+ }));
311
+ server.registerTool('loadtest_delete_scenario', {
312
+ title: 'Excluir roteiro de simulação',
313
+ description: `Exclui um roteiro (DELETE /v1/projects/:id/loadtest/scenarios/:scenarioId; owner/admin). Execuções antigas mantêm a cópia do documento. ${DELETE_GUIDANCE} confirm = nome do roteiro. Exige "Testes de carga: excluir".`,
314
+ inputSchema: { projectId: projectIdSchema, scenarioId: z.string().uuid().describe('ID do roteiro (loadtest_list_scenarios)'), confirm: confirmSchema },
315
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true },
316
+ }, async ({ projectId, scenarioId, confirm }) => guard(async () => {
317
+ const scenario = (await client.get(`${base(projectId)}/scenarios/${scenarioId}`));
318
+ const refused = refuseUnconfirmed(confirm, [scenario.name], `o roteiro "${scenario.name ?? scenarioId}"`);
319
+ if (refused)
320
+ return refused;
321
+ await client.delete(`${base(projectId)}/scenarios/${scenarioId}`);
322
+ return text(`Roteiro "${scenario.name ?? scenarioId}" excluído (execuções antigas mantêm a cópia).`);
282
323
  }));
283
324
  server.registerTool('loadtest_suggest_plan', {
284
325
  title: 'Sugerir plano de carga (preset k6)',
@@ -289,12 +330,13 @@ export function registerLoadtestTools(server, client) {
289
330
  targetRps: z.number().positive().optional().describe('Alvo de iterações por segundo (usa arrival-rate)'),
290
331
  duration: z.string().optional().describe('Duração total no formato k6 ("10m", "2h")'),
291
332
  },
333
+ outputSchema: planOutput,
292
334
  annotations: { readOnlyHint: true, openWorldHint: false },
293
335
  }, async ({ preset, vus, targetRps, duration }) => guard(async () => {
294
336
  const plan = presetPlan(preset, { vus, targetRps, duration });
295
337
  const shape = describePlan(plan);
296
338
  const warnings = planWarnings(plan);
297
- return json(plan, [`Plano ${preset}: ${shape.executor} · pico ${shape.peakVus} VUs${shape.peakIterationsPerSecond !== null ? ` / ${shape.peakIterationsPerSecond} it/s` : ''} · ${shape.duration}.`, ...warnings.map((w) => `Atenção: ${w}`), 'Ajuste thresholds ao SLO do produto. Na UI, "Avaliar com IA" confere o plano contra os limites da conta.'].join('\n'));
339
+ return structured({ preset, plan: plan, warnings }, [`Plano ${preset}: ${shape.executor} · pico ${shape.peakVus} VUs${shape.peakIterationsPerSecond !== null ? ` / ${shape.peakIterationsPerSecond} it/s` : ''} · ${shape.duration}.`, ...warnings.map((w) => `Atenção: ${w}`), 'Ajuste thresholds ao SLO do produto. Na UI, "Avaliar com IA" confere o plano contra os limites da conta.'].join('\n'), { body: plan });
298
340
  }));
299
341
  server.registerTool('loadtest_get_run', {
300
342
  title: 'Resultado de uma simulação',
@@ -333,7 +375,16 @@ export function registerLoadtestTools(server, client) {
333
375
  return { ...text(check.message), isError: true };
334
376
  const response = (await client.post(`${base(input.projectId)}/runs`, check.body));
335
377
  const run = (response?.run ?? response);
336
- return text([`Simulação iniciada · run ${run.id ?? '?'} · status ${run.status ?? '?'}`, check.confirmation, '', `Acompanhe na UI (Simular ambiente) ou com \`loadtest_get_run { projectId: "${input.projectId}", runId: "${run.id ?? '<runId>'}" }\`. Para parar: botão Parar na UI.`].join('\n'));
378
+ return text([`Simulação iniciada · run ${run.id ?? '?'} · status ${run.status ?? '?'}`, check.confirmation, '', `Acompanhe na UI (Simular ambiente) ou com \`loadtest_get_run { projectId: "${input.projectId}", runId: "${run.id ?? '<runId>'}" }\`. Para parar: loadtest_stop_run ou o botão Parar na UI.`].join('\n'));
379
+ }));
380
+ server.registerTool('loadtest_stop_run', {
381
+ title: 'Parar simulação',
382
+ description: 'Para uma simulação em andamento (POST /v1/projects/:id/loadtest/runs/:runId/stop; owner/admin): na fila, ela é abortada; rodando, os executores recebem abort no próximo relatório (cerca de 1 s) e o tráfego cessa. Já terminada, nada muda. Use quando o usuário pedir ou quando o ambiente sofrer. Exige "Testes de carga: executar".',
383
+ inputSchema: { projectId: projectIdSchema, runId: z.string().uuid().describe('ID do run') },
384
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
385
+ }, async ({ projectId, runId }) => guard(async () => {
386
+ const response = await client.post(`${base(projectId)}/runs/${runId}/stop`, {});
387
+ return text(formatRun(response));
337
388
  }));
338
389
  server.registerPrompt('create-load-test', {
339
390
  title: 'Criar teste de carga (Simular ambiente)',
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/loadtest/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAoB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,gBAAgB,GAKjB,MAAM,eAAe,CAAC;AAEvB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC;AAExG,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,yBAAyB;IAClC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;IACjG,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;IAC9B,KAAK,EAAE;QACL;YACE,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;YACnE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAC9D,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAClG;KACF;IACD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE;YAC9C,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAC/D,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YAC9E,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SACxB;QACD;YACE,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE;YAC9C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;SAC/E;KACF;IACD,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAyB;IACpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAwB;IAC5D,MAAM,KAAK,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrG,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,KAAK,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnJ,KAAK,CAAC,IAAI,CAAC,0CAA0C,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAChG,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAeD,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAClH,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzG,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC7K,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,KAAqI;IACvK,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO;QACL,eAAe,KAAK,CAAC,WAAW,IAAI,uCAAuC,EAAE;QAC7E,cAAc,KAAK,CAAC,OAAO,EAAE;QAC7B,cAAc,KAAK,CAAC,UAAU,eAAe,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,mCAAmC,EAAE;QACtK,eAAe,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3F,kBAAkB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,uBAAuB,0DAA0D,CAAC,CAAC,CAAC,EAAE,EAAE;QACvL,cAAc,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9G,iBAAiB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;KAC5L,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAID,mHAAmH;AACnH,MAAM,UAAU,aAAa,CAAC,KAAoB;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,8CAA8C,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;IACnI,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,KAAK,CAAC,OAAO,uBAAuB,EAAE,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IACpG,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,QAAQ,qFAAqF,EAAE,CAAC;IACxK,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE;gBACP,uGAAuG;gBACvG,iEAAiE;gBACjE,EAAE;gBACF,YAAY;gBACZ,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC9D,EAAE;gBACF,wMAAwM;aACzM,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAA4B,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;IACxJ,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC/D,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC5D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACjE,CAAC;AAwCD,MAAM,CAAC,GAAG,CAAC,CAA4B,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChI,MAAM,GAAG,GAAG,CAAC,CAA4B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1H,MAAM,IAAI,GAAG,CAAC,CAA4B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEhI,MAAM,UAAU,SAAS,CAAC,QAAiB;IACzC,MAAM,CAAC,GAAG,CAAE,QAAqC,EAAE,GAAG,IAAI,QAAQ,IAAI,EAAE,CAAY,CAAC;IACrF,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnJ,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnJ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uBAAuB,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjO,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,KAAK,CAAC,IAAI,CACR,EAAE,EACF,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAChI,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EACpF,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CACpI,CAAC;QACF,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1N,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxK,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;;QAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yDAAyD,CAAC,CAAC;IAEjF,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7K,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnN,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,2FAA2F,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,gDAAgD;AAEhD,KAAK,UAAU,WAAW,CAAC,IAAa;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,yDAAyD,CAAC,CAAC;IACnI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAuC,CAAC;IACzE,MAAM,KAAK,GAAI,KAAoC,EAAE,KAAK,CAAC;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,gBAAgB,SAAS,WAAW,CAAC;IAEzE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,8CAA8C;QACrD,WAAW,EACT,qiBAAqiB;QACviB,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAC3F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;SAC1G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACzB,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE;YACX,kSAAkS;YAClS,+KAA+K;YAC/K,mXAAmX;YACnX,uOAAuO;YACvO,YAAY,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;YAC9C,2IAA2I;SAC5I,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,SAAS,EAAE,eAAe;YAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAC3G,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SAC9F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAC7C,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,EAAE,GAAG,IAAI,CAAC,qBAAqB,MAAM,CAAC,MAAM,CAAC,MAAM,sCAAsC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClJ,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAClI,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,QAAiB,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACzC,KAAK,GAAG,wBAAwB,CAAC;YACjC,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,aAAa,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnG,KAAK,GAAG,wBAAwB,CAAC;oBACjC,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;gBACjE,CAAC;;oBAAM,MAAM,GAAG,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,CAAE,QAA0C,EAAE,QAAQ,IAAI,QAAQ,CAA2B,CAAC;QAC5G,OAAO,IAAI,CACT;YACE,oBAAoB,KAAK,UAAU,KAAK,EAAE,EAAE,IAAI,GAAG,EAAE;YACrD,EAAE;YACF,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC;YACrC,EAAE;YACF,6JAA6J;SAC9J,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EAAE,+FAA+F;QAC5G,WAAW,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;QAC3C,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACtB,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,sFAAsF,CAAC,CAAC;QAC3H,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,QAAgE,CAAC;YAC/E,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjP,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,mbAAmb;QACrb,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACrF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC3F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACxG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SACtF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC7C,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,IAAI,GAAG,UAAU,CAAC,MAAgB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,MAAM,KAAK,KAAK,CAAC,QAAQ,WAAW,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uBAAuB,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,0GAA0G,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxW,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,0RAA0R;QACvS,WAAW,EAAE;YACX,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC9C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SAC7G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,CAC7C,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE,CAAC,CAAgC,CAAC;QACvG,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,QAAQ,CAAY,CAAC;QACnD,IAAI,cAAc,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjH,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,EAAE,CAAC,CAAsB,CAAC;QACvG,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,iDAAiD;QACxD,WAAW,EACT,8eAA8e;QAChf,WAAW,EAAE;YACX,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACjF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;YACtF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACrG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;YACxH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SACnG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACxG,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CACd,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAgC,CAAC;QACjH,MAAM,GAAG,GAAG,CAAE,QAA8B,EAAE,GAAG,IAAI,QAAQ,CAAY,CAAC;QAC1E,OAAO,IAAI,CAAC,CAAC,4BAA4B,GAAG,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,8EAA8E,KAAK,CAAC,SAAS,cAAc,GAAG,CAAC,EAAE,IAAI,SAAS,uCAAuC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrS,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,kBAAkB,EAClB;QACE,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE,kSAAkS;QAC/S,UAAU,EAAE;YACV,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;YAC7H,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YAClF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACpE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;SACzH;KACF,EACD,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;KACxI,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA4E,EAAE,QAAgB;IACjI,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,gFAAgF,CAAC;IACtJ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,qHAAqH,CAAC;IAC5K,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,qIAAqI,CAAC;IACzM,OAAO,8EAA8E,QAAQ,UAAU,OAAO,2BAA2B,IAAI,aAAa,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;;EAmBzK,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;OACpC,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/loadtest/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Ferramentas por permissão do token pessoal (CONTRATO.md §8.1, docs/mcp.md "Permissões").
3
+ *
4
+ * Ao iniciar, o MCP lê `credential.scopes` em `GET /v1/auth/me` e só registra as ferramentas
5
+ * que o token permite. Isto é só o filtro de partida: a API confere token ∩ papel ∩ projetos a
6
+ * cada chamada e a recusa dela é a palavra final (inclusive se as permissões forem reduzidas
7
+ * depois de o MCP iniciar). Introspecção que falha nunca libera escrita.
8
+ */
9
+ import { type TrackClient } from './client.js';
10
+ /**
11
+ * Rótulos do catálogo da API (`apps/api/src/access-tokens/token-permissions.ts`), usados no
12
+ * `tracker_status` para dizer o que falta. O teste E2E confere que batem com o catálogo.
13
+ */
14
+ export declare const SCOPE_LABELS: Readonly<Record<string, string>>;
15
+ /** Conjunto "Somente leitura": o que os tokens anteriores às permissões (`scope: 'read'`) leem. */
16
+ export declare const READ_ONLY_SCOPES: readonly string[];
17
+ /**
18
+ * Permissões que cada ferramenta exige para funcionar (todas). Lista vazia: não chama rota que
19
+ * dependa de permissão (local, ou `GET /auth/me`). Uma ferramenta fora deste mapa não é
20
+ * registrada para token pessoal (o teste exige que todas estejam aqui).
21
+ */
22
+ export declare const TOOL_SCOPES: Readonly<Record<string, readonly string[]>>;
23
+ /** "Criar e editar" e "Excluir" trazem o "Ler" do recurso, mais os `implies` (como a API). */
24
+ export declare function normalizeScopes(values: readonly string[]): string[];
25
+ export declare function scopeLabel(scope: string): string;
26
+ /**
27
+ * - `session`: sessão do painel (ou Bearer que não é `fgt_`): todas as ferramentas; a API aplica o papel.
28
+ * - `token`: token pessoal com permissões conhecidas: só as ferramentas que elas cobrem.
29
+ * - `token-unverified`: token pessoal cuja introspecção falhou: só as de leitura (nunca libera escrita).
30
+ * - `none`: sem FG_TRACKER_TOKEN (só a chave de projeto, ou nada).
31
+ */
32
+ export type AccessMode = 'session' | 'token' | 'token-unverified' | 'none';
33
+ export interface ToolAccess {
34
+ mode: AccessMode;
35
+ /** Permissões efetivas do token (`mode: 'token'`); `null` = sem filtro por permissão. */
36
+ scopes: string[] | null;
37
+ /** Projetos do token: `null` = todos; ausente quando não é token. */
38
+ projectIds?: string[] | null;
39
+ /** Nome do token no painel (nunca o valor). */
40
+ tokenName?: string | null;
41
+ /** Quando as permissões foram lidas (ou a política decidida). */
42
+ checkedAt: string;
43
+ /** Por que a introspecção falhou (`token-unverified`). */
44
+ error?: string;
45
+ }
46
+ /** Política sem chamar a API: sessão e "sem token" pelo prefixo; `fgt_` sem introspecção não escreve. */
47
+ export declare function defaultAccess(client: TrackClient, now?: Date): ToolAccess;
48
+ interface MeCredential {
49
+ type?: string;
50
+ name?: string | null;
51
+ scope?: string | null;
52
+ scopes?: unknown;
53
+ projectIds?: unknown;
54
+ }
55
+ /** Permissões declaradas por `GET /auth/me` (API anterior às permissões: `scope: 'read'` = Somente leitura). */
56
+ export declare function scopesFromCredential(credential: MeCredential): string[];
57
+ /** Tempo máximo da introspecção ao iniciar: o cliente MCP espera o servidor responder. */
58
+ export declare const INTROSPECTION_TIMEOUT_MS = 5000;
59
+ /**
60
+ * Lê as permissões do token em `GET /v1/auth/me` (só para `fgt_…`; sessão e "sem token" não
61
+ * precisam). Qualquer falha (rede, 401, 5xx, resposta sem `credential.type: 'token'`) devolve
62
+ * `token-unverified`: as ferramentas de escrita ficam de fora até reiniciar com a API no ar.
63
+ */
64
+ export declare function resolveToolAccess(client: TrackClient, now?: () => Date): Promise<ToolAccess>;
65
+ export type HiddenReason = 'read-only-mode' | 'unverified-token' | 'missing-scope' | 'restricted-projects' | 'unknown-tool';
66
+ export interface HiddenTool {
67
+ name: string;
68
+ reason: HiddenReason;
69
+ /** Permissões que faltam (`missing-scope`). */
70
+ missing?: string[];
71
+ }
72
+ /**
73
+ * Decide se uma ferramenta entra no `tools/list`. `readOnlyHint` é a fonte do modo somente
74
+ * leitura (FG_TRACKER_READ_ONLY) e do token sem introspecção; as permissões vêm de TOOL_SCOPES.
75
+ */
76
+ export declare function toolDecision(name: string, readOnlyHint: boolean, policy: {
77
+ readOnly: boolean;
78
+ access: ToolAccess;
79
+ }): HiddenTool | null;
80
+ /** O que a política registrou e escondeu, para o `tracker_status`. */
81
+ export interface RegistrationReport {
82
+ registered: string[];
83
+ hidden: HiddenTool[];
84
+ }
85
+ export {};