@sfdxy/anypoint-connect 0.15.0 → 0.16.3
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 +32 -14
- package/dist/analysis/LogAnalyzer.d.ts +9 -3
- package/dist/analysis/LogAnalyzer.d.ts.map +1 -1
- package/dist/analysis/LogAnalyzer.js +28 -17
- package/dist/analysis/LogAnalyzer.js.map +1 -1
- package/dist/analysis/error-context.d.ts +2 -0
- package/dist/analysis/error-context.d.ts.map +1 -1
- package/dist/analysis/error-context.js +2 -1
- package/dist/analysis/error-context.js.map +1 -1
- package/dist/analysis/filter.d.ts +54 -0
- package/dist/analysis/filter.d.ts.map +1 -0
- package/dist/analysis/filter.js +100 -0
- package/dist/analysis/filter.js.map +1 -0
- package/dist/analysis/parser.d.ts.map +1 -1
- package/dist/analysis/parser.js +31 -14
- package/dist/analysis/parser.js.map +1 -1
- package/dist/analysis/stats.d.ts +25 -0
- package/dist/analysis/stats.d.ts.map +1 -1
- package/dist/analysis/stats.js +34 -0
- package/dist/analysis/stats.js.map +1 -1
- package/dist/analysis/summary.d.ts +51 -0
- package/dist/analysis/summary.d.ts.map +1 -0
- package/dist/analysis/summary.js +47 -0
- package/dist/analysis/summary.js.map +1 -0
- package/dist/analysis/types.d.ts +14 -0
- package/dist/analysis/types.d.ts.map +1 -1
- package/dist/api/ApiManagerApi.d.ts +53 -0
- package/dist/api/ApiManagerApi.d.ts.map +1 -1
- package/dist/api/ApiManagerApi.js +53 -2
- package/dist/api/ApiManagerApi.js.map +1 -1
- package/dist/api/CloudHub2Api.d.ts +24 -4
- package/dist/api/CloudHub2Api.d.ts.map +1 -1
- package/dist/api/CloudHub2Api.js +10 -22
- package/dist/api/CloudHub2Api.js.map +1 -1
- package/dist/api/ExchangeApi.d.ts +15 -0
- package/dist/api/ExchangeApi.d.ts.map +1 -1
- package/dist/api/ExchangeApi.js +51 -0
- package/dist/api/ExchangeApi.js.map +1 -1
- package/dist/api/LogsApi.d.ts +72 -19
- package/dist/api/LogsApi.d.ts.map +1 -1
- package/dist/api/LogsApi.js +116 -99
- package/dist/api/LogsApi.js.map +1 -1
- package/dist/api/RuntimesApi.d.ts +56 -0
- package/dist/api/RuntimesApi.d.ts.map +1 -0
- package/dist/api/RuntimesApi.js +58 -0
- package/dist/api/RuntimesApi.js.map +1 -0
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/client/AnypointClient.d.ts +2 -0
- package/dist/client/AnypointClient.d.ts.map +1 -1
- package/dist/client/AnypointClient.js +3 -0
- package/dist/client/AnypointClient.js.map +1 -1
- package/dist/client/smoke-test.d.ts +111 -0
- package/dist/client/smoke-test.d.ts.map +1 -0
- package/dist/client/smoke-test.js +275 -0
- package/dist/client/smoke-test.js.map +1 -0
- package/dist/commands/api.d.ts +1 -1
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +147 -10
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/app-change-cli.d.ts +52 -0
- package/dist/commands/app-change-cli.d.ts.map +1 -0
- package/dist/commands/app-change-cli.js +149 -0
- package/dist/commands/app-change-cli.js.map +1 -0
- package/dist/commands/apps.d.ts +1 -1
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +198 -17
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/compare.d.ts +8 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +104 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/deploy.d.ts +4 -3
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +59 -33
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -2
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +158 -17
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/runtimes.d.ts +7 -0
- package/dist/commands/runtimes.d.ts.map +1 -0
- package/dist/commands/runtimes.js +66 -0
- package/dist/commands/runtimes.js.map +1 -0
- package/dist/config/profiles.d.ts +8 -0
- package/dist/config/profiles.d.ts.map +1 -1
- package/dist/config/profiles.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/analysis.d.ts.map +1 -1
- package/dist/mcp/tools/analysis.js +74 -30
- package/dist/mcp/tools/analysis.js.map +1 -1
- package/dist/mcp/tools/anypoint-mq.d.ts.map +1 -1
- package/dist/mcp/tools/anypoint-mq.js +5 -2
- package/dist/mcp/tools/anypoint-mq.js.map +1 -1
- package/dist/mcp/tools/api-manager.d.ts +2 -1
- package/dist/mcp/tools/api-manager.d.ts.map +1 -1
- package/dist/mcp/tools/api-manager.js +127 -38
- package/dist/mcp/tools/api-manager.js.map +1 -1
- package/dist/mcp/tools/app-inputs.d.ts +92 -0
- package/dist/mcp/tools/app-inputs.d.ts.map +1 -0
- package/dist/mcp/tools/app-inputs.js +142 -0
- package/dist/mcp/tools/app-inputs.js.map +1 -0
- package/dist/mcp/tools/apps-deploy.d.ts +6 -1
- package/dist/mcp/tools/apps-deploy.d.ts.map +1 -1
- package/dist/mcp/tools/apps-deploy.js +279 -307
- package/dist/mcp/tools/apps-deploy.js.map +1 -1
- package/dist/mcp/tools/apps-lifecycle.d.ts +3 -0
- package/dist/mcp/tools/apps-lifecycle.d.ts.map +1 -1
- package/dist/mcp/tools/apps-lifecycle.js +105 -136
- package/dist/mcp/tools/apps-lifecycle.js.map +1 -1
- package/dist/mcp/tools/apps-read.d.ts +2 -1
- package/dist/mcp/tools/apps-read.d.ts.map +1 -1
- package/dist/mcp/tools/apps-read.js +177 -14
- package/dist/mcp/tools/apps-read.js.map +1 -1
- package/dist/mcp/tools/artifacts.d.ts +8 -0
- package/dist/mcp/tools/artifacts.d.ts.map +1 -0
- package/dist/mcp/tools/artifacts.js +81 -0
- package/dist/mcp/tools/artifacts.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +1 -0
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +1 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/logs.d.ts +50 -2
- package/dist/mcp/tools/logs.d.ts.map +1 -1
- package/dist/mcp/tools/logs.js +221 -38
- package/dist/mcp/tools/logs.js.map +1 -1
- package/dist/mcp/tools/shared.d.ts +27 -0
- package/dist/mcp/tools/shared.d.ts.map +1 -1
- package/dist/mcp/tools/shared.js +42 -0
- package/dist/mcp/tools/shared.js.map +1 -1
- package/dist/safety/deployment.d.ts +47 -2
- package/dist/safety/deployment.d.ts.map +1 -1
- package/dist/safety/deployment.js +148 -14
- package/dist/safety/deployment.js.map +1 -1
- package/dist/safety/paths.d.ts +29 -0
- package/dist/safety/paths.d.ts.map +1 -0
- package/dist/safety/paths.js +76 -0
- package/dist/safety/paths.js.map +1 -0
- package/dist/safety/runtime.d.ts +24 -0
- package/dist/safety/runtime.d.ts.map +1 -0
- package/dist/safety/runtime.js +59 -0
- package/dist/safety/runtime.js.map +1 -0
- package/dist/safety/secret-sources.d.ts +51 -0
- package/dist/safety/secret-sources.d.ts.map +1 -0
- package/dist/safety/secret-sources.js +124 -0
- package/dist/safety/secret-sources.js.map +1 -0
- package/dist/safety/secrets.d.ts +32 -0
- package/dist/safety/secrets.d.ts.map +1 -0
- package/dist/safety/secrets.js +91 -0
- package/dist/safety/secrets.js.map +1 -0
- package/dist/utils/errors.d.ts +2 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +5 -3
- package/dist/utils/errors.js.map +1 -1
- package/dist/workflows/app-change.d.ts +124 -0
- package/dist/workflows/app-change.d.ts.map +1 -0
- package/dist/workflows/app-change.js +305 -0
- package/dist/workflows/app-change.js.map +1 -0
- package/dist/workflows/app-state.d.ts +60 -0
- package/dist/workflows/app-state.d.ts.map +1 -0
- package/dist/workflows/app-state.js +95 -0
- package/dist/workflows/app-state.js.map +1 -0
- package/dist/workflows/artifact-compare.d.ts +134 -0
- package/dist/workflows/artifact-compare.d.ts.map +1 -0
- package/dist/workflows/artifact-compare.js +419 -0
- package/dist/workflows/artifact-compare.js.map +1 -0
- package/dist/workflows/asset-naming.d.ts +72 -0
- package/dist/workflows/asset-naming.d.ts.map +1 -0
- package/dist/workflows/asset-naming.js +116 -0
- package/dist/workflows/asset-naming.js.map +1 -0
- package/dist/workflows/jar-deployment.d.ts +76 -39
- package/dist/workflows/jar-deployment.d.ts.map +1 -1
- package/dist/workflows/jar-deployment.js +125 -64
- package/dist/workflows/jar-deployment.js.map +1 -1
- package/package.json +3 -3
package/dist/mcp/tools/logs.js
CHANGED
|
@@ -1,44 +1,162 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP Tool Registrar
|
|
3
|
-
* get_logs, download_logs
|
|
2
|
+
* MCP Tool Registrar - Log tools
|
|
3
|
+
* get_logs, download_logs, and the log fetch shared with the analysis tools
|
|
4
4
|
*/
|
|
5
|
+
import * as fs from 'node:fs';
|
|
5
6
|
import { z } from 'zod';
|
|
6
|
-
import {
|
|
7
|
+
import { MAX_PREVIOUS_SPECS, parseLogFile } from '../../api/LogsApi.js';
|
|
8
|
+
import { buildFilter, MAX_LOG_LINES, searchEntries } from '../../analysis/filter.js';
|
|
9
|
+
import { formatEntries, summarizeEntries } from '../../analysis/summary.js';
|
|
10
|
+
import { BUCKETS } from '../../analysis/stats.js';
|
|
11
|
+
import { resolveWritablePath } from '../../safety/paths.js';
|
|
12
|
+
import { mcpError, mcpText, resolveEnvironment } from './shared.js';
|
|
13
|
+
/** Default and largest `maxLines` for download_logs. */
|
|
14
|
+
export const DOWNLOAD_DEFAULT_LINES = 2000;
|
|
15
|
+
export const DOWNLOAD_MAX_LINES = 20000;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the environment and the app's log file in one place, for every log and analysis tool.
|
|
18
|
+
* Reads the desired spec's file, or the last successful spec's when the desired one is still empty.
|
|
19
|
+
*/
|
|
20
|
+
export async function fetchLogText(client, appName, environment, read = {}) {
|
|
21
|
+
const { orgId, env } = await resolveEnvironment(client, environment);
|
|
22
|
+
const { text, ...source } = await client.logs.getLogFile(orgId, env.id, appName, read);
|
|
23
|
+
return { orgId, env, text, source };
|
|
24
|
+
}
|
|
25
|
+
/** A note for responses read from the fallback spec, or undefined. */
|
|
26
|
+
export function sourceNotice(source) {
|
|
27
|
+
if (!source.fallbackFromSpecId)
|
|
28
|
+
return undefined;
|
|
29
|
+
return `The current spec ${source.fallbackFromSpecId} has no log lines yet (the app was just changed or started), so these are the logs of the last successful spec ${source.specId}. Retry in a few minutes for the new replicas.`;
|
|
30
|
+
}
|
|
31
|
+
/** Turn hoursBack or startTime/endTime into an epoch window plus ISO strings for the response. */
|
|
32
|
+
export function logWindow(input, defaultHours) {
|
|
33
|
+
if (input.hoursBack !== undefined && (input.startTime || input.endTime)) {
|
|
34
|
+
throw new Error('Pass hoursBack or startTime/endTime, not both');
|
|
35
|
+
}
|
|
36
|
+
const parse = (value, name) => {
|
|
37
|
+
const ms = Date.parse(value);
|
|
38
|
+
if (Number.isNaN(ms))
|
|
39
|
+
throw new Error(`${name} is not an ISO 8601 date: ${value}`);
|
|
40
|
+
return ms;
|
|
41
|
+
};
|
|
42
|
+
if (input.startTime || input.endTime) {
|
|
43
|
+
const startTime = input.startTime ? parse(input.startTime, 'startTime') : undefined;
|
|
44
|
+
const endTime = input.endTime ? parse(input.endTime, 'endTime') : undefined;
|
|
45
|
+
if (startTime !== undefined && endTime !== undefined && startTime > endTime) {
|
|
46
|
+
throw new Error('startTime is after endTime');
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
startTime,
|
|
50
|
+
endTime,
|
|
51
|
+
period: {
|
|
52
|
+
from: startTime !== undefined ? new Date(startTime).toISOString() : 'start of log',
|
|
53
|
+
to: endTime !== undefined ? new Date(endTime).toISOString() : 'now',
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const hours = input.hoursBack ?? defaultHours;
|
|
58
|
+
if (hours === undefined)
|
|
59
|
+
return {};
|
|
60
|
+
const now = Date.now();
|
|
61
|
+
const startTime = now - hours * 60 * 60 * 1000;
|
|
62
|
+
return { startTime, period: { from: new Date(startTime).toISOString(), to: new Date(now).toISOString() } };
|
|
63
|
+
}
|
|
64
|
+
/** Inputs shared by every tool that filters log entries. */
|
|
65
|
+
export const logFilterInputs = {
|
|
66
|
+
level: z
|
|
67
|
+
.string()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe('Minimum log level: TRACE, DEBUG, INFO, WARN, ERROR or FATAL. Entries at or above it are kept.'),
|
|
70
|
+
search: z
|
|
71
|
+
.string()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe('Text to find, case-insensitive. Matches the message, logger, thread, event ID, stack trace and JSON Logger payload of each entry, including its continuation lines.'),
|
|
74
|
+
regex: z.boolean().optional().describe('Treat search as a case-insensitive JavaScript regular expression'),
|
|
75
|
+
logger: z.string().optional().describe('Only entries whose logger name contains this text (case-insensitive)'),
|
|
76
|
+
};
|
|
77
|
+
/** Inputs for a time window: a look-back in hours, or explicit ISO bounds. */
|
|
78
|
+
export const logWindowInputs = {
|
|
79
|
+
hoursBack: z.number().positive().optional().describe('Only entries from the last N hours'),
|
|
80
|
+
startTime: z
|
|
81
|
+
.string()
|
|
82
|
+
.optional()
|
|
83
|
+
.describe('Only entries at or after this ISO 8601 time. Do not combine with hoursBack.'),
|
|
84
|
+
endTime: z
|
|
85
|
+
.string()
|
|
86
|
+
.optional()
|
|
87
|
+
.describe('Only entries at or before this ISO 8601 time. Do not combine with hoursBack.'),
|
|
88
|
+
};
|
|
89
|
+
/** Input to read the generations an update replaced, not just the current one. */
|
|
90
|
+
export const previousSpecsInput = z
|
|
91
|
+
.number()
|
|
92
|
+
.int()
|
|
93
|
+
.min(0)
|
|
94
|
+
.max(MAX_PREVIOUS_SPECS)
|
|
95
|
+
.optional()
|
|
96
|
+
.describe(`Also read this many earlier deployment specs (max ${MAX_PREVIOUS_SPECS}), merged by time. Each update starts a new spec with its own log file, so the default (0) hides the generation that ran before the last update; use 1 to see a rollout window.`);
|
|
97
|
+
/** The spec fields of a log response. */
|
|
98
|
+
function specView(source) {
|
|
99
|
+
return source.specIds ? { specId: source.specId, specIds: source.specIds } : { specId: source.specId };
|
|
100
|
+
}
|
|
101
|
+
function entryView(e) {
|
|
102
|
+
return {
|
|
103
|
+
timestamp: new Date(e.timestamp).toISOString(),
|
|
104
|
+
level: e.priority,
|
|
105
|
+
...(e.loggerName ? { logger: e.loggerName } : {}),
|
|
106
|
+
...(e.instanceId ? { replica: e.instanceId } : {}),
|
|
107
|
+
...(e.correlationId ? { correlationId: e.correlationId } : {}),
|
|
108
|
+
message: e.message,
|
|
109
|
+
...(e.stackTrace ? { stackTrace: e.stackTrace } : {}),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/** Write text to a file inside the project root, refusing to replace a file unless asked. */
|
|
113
|
+
function writeOutput(file, content, overwrite) {
|
|
114
|
+
const target = resolveWritablePath(file, { overwrite });
|
|
115
|
+
fs.writeFileSync(target, content, { encoding: 'utf-8', mode: 0o600, flag: overwrite ? 'w' : 'wx' });
|
|
116
|
+
return target;
|
|
117
|
+
}
|
|
7
118
|
export function registerLogTools(server, client) {
|
|
8
119
|
server.registerTool('get_logs', {
|
|
9
120
|
title: 'Get Application Logs',
|
|
10
|
-
description:
|
|
121
|
+
description: `Fetches the most recent log entries of a Mule application, newest first. Multi-line entries (stack traces, error reports, JSON Logger bodies) are returned whole, with the timestamp and level of the line that starts them. Returns total (all matches), returned and truncated, so a cut result is visible. Filter by level, logger, text or regex, and time window. Right after a start or change, logs come from the last successful spec until the new one has lines, and the response says so. For summaries or large exports, use download_logs.`,
|
|
11
122
|
inputSchema: {
|
|
12
123
|
appName: z.string().describe('Application name exactly as deployed'),
|
|
13
124
|
environment: z.string().describe('Environment name or ID'),
|
|
14
125
|
lines: z
|
|
15
126
|
.number()
|
|
127
|
+
.int()
|
|
128
|
+
.min(1)
|
|
129
|
+
.max(MAX_LOG_LINES)
|
|
16
130
|
.optional()
|
|
17
|
-
.describe(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
.describe('Minimum log level filter: ERROR, WARN, INFO, or DEBUG. Only entries at or above this level are returned.'),
|
|
22
|
-
search: z
|
|
23
|
-
.string()
|
|
24
|
-
.optional()
|
|
25
|
-
.describe('Text to search for in log messages (case-insensitive substring match). Use to find specific errors, correlation IDs, flow names, or keywords.'),
|
|
131
|
+
.describe(`Number of most recent matching entries to return (default: 100, max: ${MAX_LOG_LINES})`),
|
|
132
|
+
...logFilterInputs,
|
|
133
|
+
...logWindowInputs,
|
|
134
|
+
previousSpecs: previousSpecsInput,
|
|
26
135
|
},
|
|
27
136
|
annotations: { readOnlyHint: true },
|
|
28
|
-
}, async ({ appName, environment, lines, level, search }) => {
|
|
137
|
+
}, async ({ appName, environment, lines, level, search, regex, logger, hoursBack, startTime, endTime, previousSpecs, }) => {
|
|
29
138
|
try {
|
|
30
|
-
const {
|
|
31
|
-
const
|
|
32
|
-
|
|
139
|
+
const window = logWindow({ hoursBack, startTime, endTime });
|
|
140
|
+
const { text, source } = await fetchLogText(client, appName, environment, { previousSpecs });
|
|
141
|
+
const result = searchEntries(parseLogFile({ ...source, text }), {
|
|
142
|
+
limit: lines ?? 100,
|
|
33
143
|
level,
|
|
34
144
|
search,
|
|
145
|
+
regex,
|
|
146
|
+
logger,
|
|
147
|
+
startTime: window.startTime,
|
|
148
|
+
endTime: window.endTime,
|
|
149
|
+
});
|
|
150
|
+
const notice = sourceNotice(source);
|
|
151
|
+
return mcpText({
|
|
152
|
+
total: result.total,
|
|
153
|
+
returned: result.returned,
|
|
154
|
+
truncated: result.truncated,
|
|
155
|
+
...(window.period ? { period: window.period } : {}),
|
|
156
|
+
...specView(source),
|
|
157
|
+
...(notice ? { notice } : {}),
|
|
158
|
+
entries: result.entries.map(entryView),
|
|
35
159
|
});
|
|
36
|
-
const formatted = entries.map((e) => ({
|
|
37
|
-
timestamp: new Date(e.timestamp).toISOString(),
|
|
38
|
-
level: e.priority,
|
|
39
|
-
message: e.message,
|
|
40
|
-
}));
|
|
41
|
-
return mcpText({ total: entries.length, entries: formatted });
|
|
42
160
|
}
|
|
43
161
|
catch (error) {
|
|
44
162
|
return mcpError(error);
|
|
@@ -46,28 +164,93 @@ export function registerLogTools(server, client) {
|
|
|
46
164
|
});
|
|
47
165
|
server.registerTool('download_logs', {
|
|
48
166
|
title: 'Download Logs for Time Range',
|
|
49
|
-
description:
|
|
167
|
+
description: `Reads the full application log file for a time window and filters it by level, logger, text or regex. mode "lines" (default) returns matching entries oldest first as text (timestamp [LEVEL] logger - message, plus stack traces), keeping the newest maxLines entries with a truncation notice that gives the total. mode "summary" returns counts by level, by logger and by time bucket, and the top message templates, instead of lines. outputFile writes the full filtered result (every line, or the summary JSON) to a file inside the project root and returns only the path and counts. For a quick look at recent lines, use get_logs.`,
|
|
50
168
|
inputSchema: {
|
|
51
169
|
appName: z.string().describe('Application name exactly as deployed'),
|
|
52
170
|
environment: z.string().describe('Environment name or ID'),
|
|
53
171
|
hoursBack: z
|
|
54
172
|
.number()
|
|
55
|
-
.
|
|
56
|
-
|
|
173
|
+
.positive()
|
|
174
|
+
.optional()
|
|
175
|
+
.describe('How many hours of logs to read (default 24; e.g. 1 for the last hour, 168 for the last week)'),
|
|
176
|
+
startTime: logWindowInputs.startTime,
|
|
177
|
+
endTime: logWindowInputs.endTime,
|
|
178
|
+
...logFilterInputs,
|
|
179
|
+
previousSpecs: previousSpecsInput,
|
|
180
|
+
mode: z
|
|
181
|
+
.enum(['lines', 'summary'])
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('lines (default): the log text. summary: counts and top message templates only.'),
|
|
184
|
+
bucket: z
|
|
185
|
+
.enum(Object.keys(BUCKETS))
|
|
186
|
+
.optional()
|
|
187
|
+
.describe('Time bucket for the summary histogram: 5m, 15m or 1h (default 1h)'),
|
|
188
|
+
maxLines: z
|
|
189
|
+
.number()
|
|
190
|
+
.int()
|
|
191
|
+
.min(1)
|
|
192
|
+
.max(DOWNLOAD_MAX_LINES)
|
|
193
|
+
.optional()
|
|
194
|
+
.describe(`Most entries returned in lines mode (default ${DOWNLOAD_DEFAULT_LINES}, max ${DOWNLOAD_MAX_LINES}). The newest are kept. Ignored with outputFile, which writes every entry.`),
|
|
195
|
+
outputFile: z
|
|
196
|
+
.string()
|
|
197
|
+
.optional()
|
|
198
|
+
.describe('Write the full filtered result to this file, relative to the project root (must stay inside it). The response then holds only the path and counts.'),
|
|
199
|
+
overwrite: z.boolean().optional().describe('Replace outputFile if it already exists'),
|
|
57
200
|
},
|
|
58
|
-
|
|
59
|
-
|
|
201
|
+
// Not read-only: outputFile writes a local file. It never changes the platform.
|
|
202
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true },
|
|
203
|
+
}, async (input) => {
|
|
60
204
|
try {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
|
|
205
|
+
const window = logWindow(input, 24);
|
|
206
|
+
// Validate the filter before the download, so a bad regex fails fast.
|
|
207
|
+
const keep = buildFilter({ ...input, startTime: window.startTime, endTime: window.endTime });
|
|
208
|
+
if (input.outputFile)
|
|
209
|
+
resolveWritablePath(input.outputFile, { overwrite: input.overwrite });
|
|
210
|
+
const { env, text, source } = await fetchLogText(client, input.appName, input.environment, {
|
|
211
|
+
previousSpecs: input.previousSpecs,
|
|
212
|
+
});
|
|
213
|
+
const entries = parseLogFile({ ...source, text }).filter(keep);
|
|
214
|
+
const notice = sourceNotice(source);
|
|
215
|
+
const context = {
|
|
216
|
+
app: input.appName,
|
|
217
|
+
environment: env.name,
|
|
218
|
+
period: window.period,
|
|
219
|
+
...specView(source),
|
|
220
|
+
...(notice ? { notice } : {}),
|
|
221
|
+
};
|
|
222
|
+
if (input.mode === 'summary') {
|
|
223
|
+
const summary = { ...context, ...summarizeEntries(entries, { bucket: input.bucket }) };
|
|
224
|
+
if (input.outputFile) {
|
|
225
|
+
const content = JSON.stringify(summary, null, 2);
|
|
226
|
+
const path = writeOutput(input.outputFile, content, input.overwrite);
|
|
227
|
+
return mcpText({ ...context, mode: 'summary', outputFile: path, matched: entries.length });
|
|
228
|
+
}
|
|
229
|
+
return mcpText(summary);
|
|
230
|
+
}
|
|
231
|
+
if (input.outputFile) {
|
|
232
|
+
const content = formatEntries(entries);
|
|
233
|
+
const path = writeOutput(input.outputFile, content ? content + '\n' : '', input.overwrite);
|
|
234
|
+
return mcpText({
|
|
235
|
+
...context,
|
|
236
|
+
mode: 'lines',
|
|
237
|
+
outputFile: path,
|
|
238
|
+
matched: entries.length,
|
|
239
|
+
bytes: Buffer.byteLength(content),
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
if (entries.length === 0) {
|
|
243
|
+
return mcpText([notice, 'No log entries found for the specified period.'].filter(Boolean).join('\n'));
|
|
244
|
+
}
|
|
245
|
+
const maxLines = input.maxLines ?? DOWNLOAD_DEFAULT_LINES;
|
|
246
|
+
const shown = entries.slice(-maxLines);
|
|
247
|
+
const header = [];
|
|
248
|
+
if (notice)
|
|
249
|
+
header.push(`[${notice}]`);
|
|
250
|
+
if (shown.length < entries.length) {
|
|
251
|
+
header.push(`[Truncated: showing the newest ${shown.length} of ${entries.length} matching entries. Narrow with search, level, logger or a shorter window, use mode "summary", or pass outputFile to write all of them.]`);
|
|
252
|
+
}
|
|
253
|
+
return mcpText([...header, formatEntries(shown)].join('\n'));
|
|
71
254
|
}
|
|
72
255
|
catch (error) {
|
|
73
256
|
return mcpError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/mcp/tools/logs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/mcp/tools/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { AnypointClient } from '../../client/AnypointClient.js';
|
|
6
6
|
import type { Environment } from '../../api/AccessManagementApi.js';
|
|
7
|
+
import { z } from 'zod';
|
|
7
8
|
/** Resolve the default org and an environment name or ID in one step. */
|
|
8
9
|
export declare function resolveEnvironment(client: AnypointClient, environment: string): Promise<{
|
|
9
10
|
orgId: string;
|
|
@@ -47,4 +48,30 @@ export declare function dryRunPreview(preview: Record<string, unknown>): {
|
|
|
47
48
|
text: string;
|
|
48
49
|
}[];
|
|
49
50
|
};
|
|
51
|
+
/** Inputs every mutating tool accepts: preview by default, apply on confirm, and a second flag for production. */
|
|
52
|
+
export declare const writeInputs: {
|
|
53
|
+
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
54
|
+
confirmProduction: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Gate a write. Returns the response to send instead of writing (a preview, or a refusal for
|
|
58
|
+
* production without `confirmProduction`), or `null` when the caller may proceed.
|
|
59
|
+
*/
|
|
60
|
+
export declare function guardWrite(input: {
|
|
61
|
+
env: Pick<Environment, 'name' | 'isProduction'>;
|
|
62
|
+
confirm?: boolean;
|
|
63
|
+
confirmProduction?: boolean;
|
|
64
|
+
preview: Record<string, unknown>;
|
|
65
|
+
}): {
|
|
66
|
+
content: {
|
|
67
|
+
type: "text";
|
|
68
|
+
text: string;
|
|
69
|
+
}[];
|
|
70
|
+
} | {
|
|
71
|
+
content: {
|
|
72
|
+
type: "text";
|
|
73
|
+
text: string;
|
|
74
|
+
}[];
|
|
75
|
+
isError: true;
|
|
76
|
+
} | null;
|
|
50
77
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,yEAAyE;AACzE,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,WAAW,CAAA;CAAE,CAAC,CAI9C;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,SAAS,SAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAI7G;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO;;;;;;EAKtC;AAED,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO;;;;;EAGvC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAM7D;AAED,kHAAkH;AAClH,eAAO,MAAM,WAAW;;;CASvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAC9B,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;;;;;;;;;;;SA4BA"}
|
package/dist/mcp/tools/shared.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Shared MCP tool utilities
|
|
3
3
|
* Common helpers used across all MCP tool registrars
|
|
4
4
|
*/
|
|
5
|
+
import { z } from 'zod';
|
|
5
6
|
import { errorMessage } from '../../utils/errors.js';
|
|
7
|
+
import { isProductionEnv } from '../../safety/guards.js';
|
|
6
8
|
/** Resolve the default org and an environment name or ID in one step. */
|
|
7
9
|
export async function resolveEnvironment(client, environment) {
|
|
8
10
|
const orgId = await client.getDefaultOrgId();
|
|
@@ -42,4 +44,44 @@ export function dryRunPreview(preview) {
|
|
|
42
44
|
...preview,
|
|
43
45
|
});
|
|
44
46
|
}
|
|
47
|
+
/** Inputs every mutating tool accepts: preview by default, apply on confirm, and a second flag for production. */
|
|
48
|
+
export const writeInputs = {
|
|
49
|
+
confirm: z
|
|
50
|
+
.boolean()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe('Apply the change. Without it the tool returns a preview and changes nothing'),
|
|
53
|
+
confirmProduction: z
|
|
54
|
+
.boolean()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Required in addition to confirm when the target environment is production'),
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Gate a write. Returns the response to send instead of writing (a preview, or a refusal for
|
|
60
|
+
* production without `confirmProduction`), or `null` when the caller may proceed.
|
|
61
|
+
*/
|
|
62
|
+
export function guardWrite(input) {
|
|
63
|
+
const production = isProductionEnv(input.env.name, input.env.isProduction);
|
|
64
|
+
if (!input.confirm) {
|
|
65
|
+
return dryRunPreview({
|
|
66
|
+
...input.preview,
|
|
67
|
+
...(production ? { production: true, requires: 'confirm: true and confirmProduction: true' } : {}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (production && !input.confirmProduction) {
|
|
71
|
+
return {
|
|
72
|
+
content: [
|
|
73
|
+
{
|
|
74
|
+
type: 'text',
|
|
75
|
+
text: JSON.stringify({
|
|
76
|
+
refused: true,
|
|
77
|
+
message: `${input.env.name} is a production environment. Nothing was changed. Re-call with confirm: true and confirmProduction: true to apply.`,
|
|
78
|
+
...input.preview,
|
|
79
|
+
}, null, 2),
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
isError: true,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
45
87
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export interface DeploymentInput {
|
|
|
25
25
|
artifactId: string;
|
|
26
26
|
version: string;
|
|
27
27
|
runtime?: string;
|
|
28
|
+
javaVersion?: string;
|
|
29
|
+
releaseChannel?: string;
|
|
28
30
|
replicas?: number;
|
|
29
31
|
region?: string;
|
|
30
32
|
vcores?: string;
|
|
@@ -68,8 +70,51 @@ export interface RollbackTarget {
|
|
|
68
70
|
}
|
|
69
71
|
/** Resolve a rollback to a complete historical artifact ref without confusing spec IDs with artifact versions. */
|
|
70
72
|
export declare function resolveRollbackTarget(existing: CH2Deployment, specs: CH2DeploymentSpec[], toVersion?: string): RollbackTarget | null;
|
|
71
|
-
/**
|
|
72
|
-
export
|
|
73
|
+
/** A requested change to an application's properties. Values are already resolved (no file references). */
|
|
74
|
+
export interface SettingsChange {
|
|
75
|
+
properties?: Record<string, string>;
|
|
76
|
+
secureProperties?: Record<string, string>;
|
|
77
|
+
removeProperties?: string[];
|
|
78
|
+
removeSecureProperties?: string[];
|
|
79
|
+
/** Plaintext keys whose current value moves into secure properties without leaving the server. */
|
|
80
|
+
moveToSecure?: string[];
|
|
81
|
+
}
|
|
82
|
+
export interface PropertyChange {
|
|
83
|
+
key: string;
|
|
84
|
+
/** Present only for plaintext keys that do not look secret. */
|
|
85
|
+
from?: string;
|
|
86
|
+
to?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface SettingsDiff {
|
|
89
|
+
added: PropertyChange[];
|
|
90
|
+
changed: PropertyChange[];
|
|
91
|
+
removed: string[];
|
|
92
|
+
secureAdded: string[];
|
|
93
|
+
secureChanged: string[];
|
|
94
|
+
secureRemoved: string[];
|
|
95
|
+
movedToSecure: string[];
|
|
96
|
+
}
|
|
97
|
+
export interface SettingsPlan {
|
|
98
|
+
/** The complete properties service to send. The platform replaces the maps wholesale. */
|
|
99
|
+
service: ApplicationPropertiesService;
|
|
100
|
+
diff: SettingsDiff;
|
|
101
|
+
warnings: string[];
|
|
102
|
+
changed: boolean;
|
|
103
|
+
}
|
|
104
|
+
/** Read the properties service of a live deployment. */
|
|
105
|
+
export declare function currentSettings(existing: CH2Deployment): {
|
|
106
|
+
properties: Record<string, string>;
|
|
107
|
+
secureProperties: Record<string, string>;
|
|
108
|
+
};
|
|
109
|
+
export declare function isEmptySettingsChange(change: SettingsChange | undefined): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Plan a settings change against the live deployment.
|
|
112
|
+
*
|
|
113
|
+
* The platform stores secure values encrypted and returns them as `******`. Sending `******` back
|
|
114
|
+
* for a key keeps its stored value, so every untouched secure key is resent masked; that is what
|
|
115
|
+
* lets one secret change without wiping the others. Removal works because the full maps are sent.
|
|
116
|
+
*/
|
|
117
|
+
export declare function planSettingsChange(existing: CH2Deployment, change: SettingsChange): SettingsPlan;
|
|
73
118
|
/** A single field that would change between the live deployment and a proposed payload. */
|
|
74
119
|
export interface DeploymentChange {
|
|
75
120
|
field: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/safety/deployment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACR,4BAA4B,EAC5B,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EAC1B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/safety/deployment.ts"],"names":[],"mappings":"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"}
|