biaws-mcp 0.1.0 → 0.3.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/README.md CHANGED
@@ -17,8 +17,9 @@ O servidor separa os domínios:
17
17
  - `attachments_*`: envio, download, classificação e exclusão de arquivos de
18
18
  chamados, melhorias, tarefas e procedimentos.
19
19
  - `secrets_*`: consulta e registro de metadados de segredos, sem acesso aos valores.
20
- - `monitoring_templates_*` e `runtime_active_monitors_*`: administração
21
- versionada de templates e configuração de monitoramentos ativos dos runtimes.
20
+ - `monitoring_templates_*`, `runtime_active_monitors_*` e
21
+ `runtime_monitoring_results_list`: administração versionada de templates,
22
+ configuração de monitores e consulta do histórico dos runtimes.
22
23
  - `resource_collections_*` e `*_move_to_collection`: organização hierárquica
23
24
  de aplicações, regras, decisões, procedimentos, segredos, skills e servidores.
24
25
 
@@ -34,15 +35,15 @@ a URL e a credencial da instância, mas não seleciona o workspace.
34
35
 
35
36
  Por padrão, a API é buscada em `http://127.0.0.1:3100`. Para apontar para outro endereço, use uma das variáveis:
36
37
 
37
- - `ISSUE_API_URL`
38
- - `ISSUE_API_BASE_URL`
39
- - `VITE_ISSUE_API_URL`
38
+ - `BIAWS_API_URL`
39
+ - `BIAWS_API_BASE_URL`
40
+ - `VITE_BIAWS_API_URL`
40
41
 
41
- Defina obrigatoriamente `ISSUE_API_KEY`. O bootstrap open source cria uma
42
+ Defina obrigatoriamente `BIAWS_API_KEY`. O bootstrap open source cria uma
42
43
  identidade técnica e grava sua chave no `.env` local; uma chave também pode ser
43
44
  criada manualmente pela UI. O MCP a envia como `Authorization: Bearer`.
44
45
 
45
- Defina `ISSUE_WORKSPACE_ID` no bloco `env` do servidor MCP local ao projeto. O
46
+ Defina `BIAWS_WORKSPACE_ID` no bloco `env` do servidor MCP local ao projeto. O
46
47
  MCP preserva esse valor mesmo ao carregar `BIAWS_ENV_FILE` e o envia como
47
48
  `X-Biaws-Workspace-Id`; argumentos das tools não ampliam esse escopo. A chave
48
49
  precisa pertencer ao workspace — selecionar o ID não concede permissões.
@@ -65,13 +66,13 @@ O pacote público expõe o executável `biaws-mcp`. Clientes configurados pelo C
65
66
  usam uma versão fixada por meio do cache local do npm:
66
67
 
67
68
  ```bash
68
- npx --yes biaws-mcp@0.1.0
69
+ npx --yes biaws-mcp@0.3.0
69
70
  ```
70
71
 
71
72
  Também é possível instalá-lo explicitamente:
72
73
 
73
74
  ```bash
74
- npm install --global biaws-mcp@0.1.0
75
+ npm install --global biaws-mcp@0.3.0
75
76
  biaws-mcp
76
77
  ```
77
78
 
@@ -90,7 +91,7 @@ npm start
90
91
  Em um cliente MCP, configure o comando:
91
92
 
92
93
  ```bash
93
- npx --yes biaws-mcp@0.1.0
94
+ npx --yes biaws-mcp@0.3.0
94
95
  ```
95
96
 
96
97
  O fluxo recomendado é gerar a configuração completa com:
@@ -163,8 +164,20 @@ Monitoramentos ativos são configurados por referência pública ou ID do runtim
163
164
  - `runtime_active_monitors_update`;
164
165
  - `runtime_active_monitors_archive`.
165
166
 
167
+ `runtime_monitoring_results_list` consulta o histórico unificado de observações
168
+ ativas, passivas e manuais. `observedFrom` e `observedTo` aceitam uma data
169
+ `YYYY-MM-DD` ou um instante ISO 8601; datas sem horário preservam a semântica de
170
+ dia inteiro no limite final.
171
+
172
+ `runtime_monitoring_health_summary` consulta períodos extensos sem transferir
173
+ todo o histórico. A tool agrega uma série por monitoramento, preserva o pior
174
+ estado observado em cada intervalo e escolhe uma resolução compatível com
175
+ `maxPoints` (50 a 1.000). Sem intervalo explícito, resume os últimos 30 dias.
176
+ Use o resumo para tendências e `runtime_monitoring_results_list` para abrir os
177
+ eventos detalhados dos intervalos relevantes.
178
+
166
179
  As tools não aceitam `workspaceId`; o escopo vem exclusivamente de
167
- `ISSUE_WORKSPACE_ID`. Configurações REST podem referenciar segredos apenas por
180
+ `BIAWS_WORKSPACE_ID`. Configurações REST podem referenciar segredos apenas por
168
181
  identificadores públicos em `headerRefs`; valores de credenciais não pertencem
169
182
  ao MCP. Templates são permitidos somente para o provider REST. Para preparar um
170
183
  monitor antes de provisionar o executor, crie-o com `enabled: false`.
@@ -307,7 +320,7 @@ Este MCP não expõe uma ferramenta genérica de armazenamento. As escritas disp
307
320
 
308
321
  O MCP não acessa MongoDB, não executa shell, SSH, deploy ou sincronização Git e
309
322
  não recebe valores de senhas, tokens, chaves privadas, kubeconfig ou connection
310
- strings. A `ISSUE_API_KEY` é a única credencial do processo e
323
+ strings. A `BIAWS_API_KEY` é a única credencial do processo e
311
324
  é usada exclusivamente no cabeçalho HTTP.
312
325
 
313
326
  Erros da API mantêm o status e o código funcional para que o agente diferencie
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "biaws-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Servidor MCP de domínio para o Bondia Workspaces",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -34,6 +34,16 @@ function activeMonitorsPath(args, monitor = false) {
34
34
  return monitor ? `${base}/${segment(requiredId(args, "monitorId"))}` : base;
35
35
  }
36
36
 
37
+ function runtimeMonitoringTimelinePath(args) {
38
+ const runtimeReference = requiredId(args, "runtimeReference");
39
+ return `/api/monitoring/runtimes/${segment(runtimeReference)}/timeline`;
40
+ }
41
+
42
+ function runtimeMonitoringHealthSummaryPath(args) {
43
+ const runtimeReference = requiredId(args, "runtimeReference");
44
+ return `/api/monitoring/runtimes/${segment(runtimeReference)}/health-summary`;
45
+ }
46
+
37
47
  function payload(args, omitted) {
38
48
  const excluded = new Set(omitted);
39
49
  const result = Object.fromEntries(
@@ -115,6 +125,32 @@ export function listRuntimeActiveMonitors(args = {}) {
115
125
  );
116
126
  }
117
127
 
128
+ export function listRuntimeMonitoringResults(args = {}) {
129
+ return fetchJson(
130
+ runtimeMonitoringTimelinePath(args),
131
+ cleanParams({
132
+ observedFrom: args.observedFrom,
133
+ observedTo: args.observedTo,
134
+ status: args.status,
135
+ page: args.page,
136
+ limit: args.limit,
137
+ }),
138
+ );
139
+ }
140
+
141
+ export function getRuntimeMonitoringHealthSummary(args = {}) {
142
+ return fetchJson(
143
+ runtimeMonitoringHealthSummaryPath(args),
144
+ cleanParams({
145
+ observedFrom: args.observedFrom,
146
+ observedTo: args.observedTo,
147
+ status: args.status,
148
+ resolution: args.resolution,
149
+ maxPoints: args.maxPoints,
150
+ }),
151
+ );
152
+ }
153
+
118
154
  export function createRuntimeActiveMonitor(args = {}) {
119
155
  return sendJson(
120
156
  activeMonitorsPath(args),
@@ -9,8 +9,10 @@ import {
9
9
  getMonitoringTemplate,
10
10
  getMonitoringTemplateContract,
11
11
  getMonitoringTemplateUsage,
12
+ getRuntimeMonitoringHealthSummary,
12
13
  listMonitoringTemplates,
13
14
  listRuntimeActiveMonitors,
15
+ listRuntimeMonitoringResults,
14
16
  previewMonitoringTemplate,
15
17
  updateRuntimeActiveMonitor,
16
18
  validateMonitoringTemplateSample,
@@ -134,6 +136,69 @@ export const monitoringTools = [
134
136
  archiveMonitoringTemplate,
135
137
  TEMPLATE_VERSION_ID_SCHEMA,
136
138
  ),
139
+ definition(
140
+ "runtime_monitoring_results_list",
141
+ "Lista resultados históricos unificados de monitoramento de um runtime, com filtros por instante inicial, instante final e status.",
142
+ listRuntimeMonitoringResults,
143
+ schema(
144
+ {
145
+ runtimeReference: ID,
146
+ observedFrom: {
147
+ type: "string",
148
+ description:
149
+ "Data (YYYY-MM-DD) ou instante ISO 8601 inicial, inclusivo",
150
+ },
151
+ observedTo: {
152
+ type: "string",
153
+ description:
154
+ "Data (YYYY-MM-DD, incluindo o dia inteiro) ou instante ISO 8601 final, inclusivo",
155
+ },
156
+ status: {
157
+ type: "string",
158
+ enum: ["unknown", "healthy", "degraded", "unavailable", "stopped"],
159
+ },
160
+ page: { type: "integer", minimum: 1, default: 1 },
161
+ limit: { type: "integer", minimum: 1, maximum: 100, default: 50 },
162
+ },
163
+ ["runtimeReference"],
164
+ ),
165
+ ),
166
+ definition(
167
+ "runtime_monitoring_health_summary",
168
+ "Resume a evolução temporal da saúde de um runtime em séries agregadas por monitor, preservando o pior estado de cada intervalo e limitando a quantidade de pontos.",
169
+ getRuntimeMonitoringHealthSummary,
170
+ schema(
171
+ {
172
+ runtimeReference: ID,
173
+ observedFrom: {
174
+ type: "string",
175
+ description:
176
+ "Data (YYYY-MM-DD) ou instante ISO 8601 inicial; o padrão cobre 30 dias antes do limite final",
177
+ },
178
+ observedTo: {
179
+ type: "string",
180
+ description:
181
+ "Data (YYYY-MM-DD, incluindo o dia inteiro) ou instante ISO 8601 final; o padrão é o instante atual",
182
+ },
183
+ status: {
184
+ type: "string",
185
+ enum: ["unknown", "healthy", "degraded", "unavailable", "stopped"],
186
+ },
187
+ resolution: {
188
+ type: "string",
189
+ enum: ["auto", "1m", "5m", "15m", "1h", "6h", "1d", "7d", "30d"],
190
+ default: "auto",
191
+ },
192
+ maxPoints: {
193
+ type: "integer",
194
+ minimum: 50,
195
+ maximum: 1000,
196
+ default: 400,
197
+ },
198
+ },
199
+ ["runtimeReference"],
200
+ ),
201
+ ),
137
202
  definition(
138
203
  "runtime_active_monitors_list",
139
204
  "Lista os monitoramentos ativos configurados para um runtime acessível no workspace selecionado.",
package/src/httpClient.js CHANGED
@@ -9,13 +9,13 @@ const RETRYABLE_STATUSES = new Set([429, 502, 503, 504]);
9
9
 
10
10
  function readBaseUrl() {
11
11
  const explicit =
12
- process.env.ISSUE_API_URL ||
13
- process.env.ISSUE_API_BASE_URL ||
14
- process.env.VITE_ISSUE_API_URL;
12
+ process.env.BIAWS_API_URL ||
13
+ process.env.BIAWS_API_BASE_URL ||
14
+ process.env.VITE_BIAWS_API_URL;
15
15
  if (explicit) return explicit.replace(/\/$/u, "");
16
16
 
17
- const host = process.env.ISSUE_API_HOST || process.env.HOST || "127.0.0.1";
18
- const port = process.env.ISSUE_API_PORT || process.env.PORT || "3100";
17
+ const host = process.env.BIAWS_API_HOST || process.env.HOST || "127.0.0.1";
18
+ const port = process.env.BIAWS_API_PORT || process.env.PORT || "3100";
19
19
  return `http://${host}:${port}`;
20
20
  }
21
21
 
@@ -47,8 +47,8 @@ function buildUrl(path, params = {}) {
47
47
  }
48
48
 
49
49
  function authenticationHeaders() {
50
- const apiKey = String(process.env.ISSUE_API_KEY || "").trim();
51
- const workspaceId = String(process.env.ISSUE_WORKSPACE_ID || "").trim();
50
+ const apiKey = String(process.env.BIAWS_API_KEY || "").trim();
51
+ const workspaceId = String(process.env.BIAWS_WORKSPACE_ID || "").trim();
52
52
  return {
53
53
  Accept: "application/json",
54
54
  ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),
package/src/index.js CHANGED
@@ -12,7 +12,7 @@ const TOOL_DIR = path.resolve(
12
12
 
13
13
  // O workspace pertence à configuração do projeto/cliente MCP. O arquivo da
14
14
  // instância fornece URL e credencial, mas não pode mudar esse escopo.
15
- loadEnv(TOOL_DIR, { preserve: ["ISSUE_WORKSPACE_ID"] });
15
+ loadEnv(TOOL_DIR, { preserve: ["BIAWS_WORKSPACE_ID"] });
16
16
 
17
17
  function writeMessage(message) {
18
18
  process.stdout.write(`${JSON.stringify(message)}\n`);
package/src/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export const SERVER_NAME = "biaws-mcp";
2
- export const SERVER_VERSION = "0.1.0";
2
+ export const SERVER_VERSION = "0.3.0";