@stevepic95/rabbitmq-masstransit-mcp 1.0.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +62 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/masstransit.d.ts +18 -0
  8. package/dist/masstransit.d.ts.map +1 -0
  9. package/dist/masstransit.js +203 -0
  10. package/dist/masstransit.js.map +1 -0
  11. package/dist/rabbitmq-client.d.ts +29 -0
  12. package/dist/rabbitmq-client.d.ts.map +1 -0
  13. package/dist/rabbitmq-client.js +123 -0
  14. package/dist/rabbitmq-client.js.map +1 -0
  15. package/dist/tools/connections.d.ts +4 -0
  16. package/dist/tools/connections.d.ts.map +1 -0
  17. package/dist/tools/connections.js +42 -0
  18. package/dist/tools/connections.js.map +1 -0
  19. package/dist/tools/exchanges.d.ts +4 -0
  20. package/dist/tools/exchanges.d.ts.map +1 -0
  21. package/dist/tools/exchanges.js +109 -0
  22. package/dist/tools/exchanges.js.map +1 -0
  23. package/dist/tools/masstransit.d.ts +4 -0
  24. package/dist/tools/masstransit.d.ts.map +1 -0
  25. package/dist/tools/masstransit.js +295 -0
  26. package/dist/tools/masstransit.js.map +1 -0
  27. package/dist/tools/messages.d.ts +4 -0
  28. package/dist/tools/messages.d.ts.map +1 -0
  29. package/dist/tools/messages.js +145 -0
  30. package/dist/tools/messages.js.map +1 -0
  31. package/dist/tools/overview.d.ts +4 -0
  32. package/dist/tools/overview.d.ts.map +1 -0
  33. package/dist/tools/overview.js +32 -0
  34. package/dist/tools/overview.js.map +1 -0
  35. package/dist/tools/queues.d.ts +4 -0
  36. package/dist/tools/queues.d.ts.map +1 -0
  37. package/dist/tools/queues.js +121 -0
  38. package/dist/tools/queues.js.map +1 -0
  39. package/dist/types.d.ts +195 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/package.json +47 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 StevePic95
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,176 @@
1
+ # RabbitMQ MassTransit MCP Server
2
+
3
+ An MCP (Model Context Protocol) server for RabbitMQ with **MassTransit intelligence** — error queue parsing, fault analysis, and message republishing.
4
+
5
+ Built for teams debugging async messaging issues across .NET microservices. Goes beyond basic queue management by understanding MassTransit conventions: `_error`/`_skipped` queues, the message envelope format, and fault message parsing.
6
+
7
+ ## Features
8
+
9
+ - **18 tools** for complete RabbitMQ management via Claude Code
10
+ - **MassTransit-aware**: Automatically detects and parses `_error`/`_skipped` queues, fault envelopes, and message type URNs
11
+ - **Parsed error output**: Exception types, messages, stack traces, and original payloads — not raw JSON dumps
12
+ - **Republish from error**: The killer feature — fetch faulted messages and republish them for reprocessing
13
+ - **Safe defaults**: Mutative tools disabled by default, two-step confirmation for destructive operations
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npx @stevepic95/rabbitmq-masstransit-mcp
19
+ ```
20
+
21
+ ### Claude Code Configuration
22
+
23
+ Add to your `.claude.json` under `mcpServers`:
24
+
25
+ ```json
26
+ {
27
+ "mcpServers": {
28
+ "rabbitmq": {
29
+ "command": "npx",
30
+ "args": ["-y", "@stevepic95/rabbitmq-masstransit-mcp"],
31
+ "env": {
32
+ "RABBITMQ_HOST": "your-rabbitmq-host",
33
+ "RABBITMQ_PORT": "15672",
34
+ "RABBITMQ_USERNAME": "your-username",
35
+ "RABBITMQ_PASSWORD": "your-password",
36
+ "RABBITMQ_VHOST": "/",
37
+ "RABBITMQ_SSL": "false",
38
+ "ALLOW_MUTATIVE_TOOLS": "false"
39
+ }
40
+ }
41
+ }
42
+ }
43
+ ```
44
+
45
+ For local development:
46
+
47
+ ```json
48
+ {
49
+ "mcpServers": {
50
+ "rabbitmq": {
51
+ "command": "node",
52
+ "args": ["/path/to/rabbitmq-masstransit-mcp/dist/index.js"],
53
+ "env": {
54
+ "RABBITMQ_HOST": "localhost",
55
+ "RABBITMQ_USERNAME": "guest",
56
+ "RABBITMQ_PASSWORD": "guest"
57
+ }
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ ## Configuration
64
+
65
+ | Variable | Required | Default | Description |
66
+ |----------|----------|---------|-------------|
67
+ | `RABBITMQ_HOST` | Yes | — | RabbitMQ Management API hostname |
68
+ | `RABBITMQ_PORT` | No | `15672` | Management API port |
69
+ | `RABBITMQ_USERNAME` | Yes | — | Authentication username |
70
+ | `RABBITMQ_PASSWORD` | Yes | — | Authentication password |
71
+ | `RABBITMQ_VHOST` | No | `/` | Default virtual host |
72
+ | `RABBITMQ_SSL` | No | `false` | Use HTTPS for Management API |
73
+ | `ALLOW_MUTATIVE_TOOLS` | No | `false` | Enable mutative tools (purge, delete, publish, republish, move) |
74
+
75
+ You can also enable mutative tools via CLI flag: `--allow-mutative-tools`
76
+
77
+ ## Tools
78
+
79
+ ### Read-Only (13 tools) — Always available
80
+
81
+ | Tool | Description |
82
+ |------|-------------|
83
+ | `get_overview` | Cluster stats: queue totals, connection counts, message rates |
84
+ | `list_queues` | List queues with depth, consumer count, rates. Filter by vhost, name pattern |
85
+ | `get_queue` | Detailed queue stats: depth, rates, consumers, memory, policy |
86
+ | `list_exchanges` | List exchanges. Filter by vhost, type |
87
+ | `get_exchange` | Exchange details and bindings |
88
+ | `list_bindings` | List bindings for a queue or exchange |
89
+ | `list_connections` | Active connections with client info |
90
+ | `list_consumers` | Active consumers with queue assignments |
91
+ | `peek_messages` | Browse messages without consuming (non-destructive) |
92
+ | `list_error_queues` | Find all `_error` queues with message counts |
93
+ | `list_skipped_queues` | Find all `_skipped` queues with message counts |
94
+ | `peek_errors` | Browse error queue messages with **parsed fault details** |
95
+ | `get_queue_health` | Quick health check: no consumers, growing depth, high error counts |
96
+
97
+ ### Mutative (5 tools) — Require `ALLOW_MUTATIVE_TOOLS=true`
98
+
99
+ | Tool | Description |
100
+ |------|-------------|
101
+ | `purge_queue` | Purge all messages from a queue |
102
+ | `delete_queue` | Delete a queue |
103
+ | `publish_message` | Publish a message to an exchange |
104
+ | `republish_from_error` | Republish faulted messages from `_error` queue to original exchange |
105
+ | `move_messages` | Move messages from one queue to another |
106
+
107
+ ## MassTransit Intelligence
108
+
109
+ ### Error Queue Parsing
110
+
111
+ `peek_errors` doesn't just dump raw JSON — it parses MassTransit fault envelopes into readable output:
112
+
113
+ ```
114
+ Queue: submit-order_error (3 messages)
115
+
116
+ Message 1:
117
+ Faulted: 2026-02-15T14:30:05Z
118
+ Original MessageId: 5fdc0000-426e-001c-fcf9-08d9a30339e8
119
+ Message Type: MyApp.Messages.OrderSubmitted
120
+ Exception: System.InvalidOperationException - "Order validation failed"
121
+ Stack Trace:
122
+ at MyApp.Consumers.OrderConsumer.Consume(ConsumeContext`1 context)
123
+ at MassTransit.Middleware.ConsumerMessageFilter`2.Send(...)
124
+ Original Payload: { "orderId": "abc-123", ... }
125
+ Source Host: WEBSERVER01 / OrderService (PID 12345)
126
+ ```
127
+
128
+ ### Republish from Error (Two-Step)
129
+
130
+ The highest-value tool for debugging. First call previews the messages:
131
+
132
+ ```
133
+ > republish_from_error(errorQueue: "submit-order_error", count: 3)
134
+
135
+ Preview: 3 message(s) from "submit-order_error" ready to republish:
136
+ [... parsed fault details ...]
137
+
138
+ To republish these messages, call again with confirm=true and count=3.
139
+ ```
140
+
141
+ Second call with `confirm: true` actually consumes and republishes:
142
+
143
+ ```
144
+ > republish_from_error(errorQueue: "submit-order_error", count: 3, confirm: true)
145
+
146
+ Republished 3/3 message(s) from "submit-order_error".
147
+ ```
148
+
149
+ ### Queue Health Check
150
+
151
+ Quick overview of potential issues across all queues:
152
+
153
+ ```
154
+ > get_queue_health()
155
+
156
+ ⚠ Queues with NO consumers and messages (2):
157
+ order-processing — 150 message(s)
158
+ notification-sender — 42 message(s)
159
+
160
+ ✗ Error queues with messages (3 queues, 89 total):
161
+ submit-order_error — 45 message(s)
162
+ payment-process_error — 32 message(s)
163
+ email-send_error — 12 message(s)
164
+
165
+ △ High depth queues (>1000 messages, 1):
166
+ analytics-events — 15234 message(s), 2 consumer(s)
167
+ ```
168
+
169
+ ## Requirements
170
+
171
+ - Node.js >= 18.0.0
172
+ - RabbitMQ with Management Plugin enabled (port 15672)
173
+
174
+ ## License
175
+
176
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { RabbitMQClient } from "./rabbitmq-client.js";
5
+ import { registerOverviewTools } from "./tools/overview.js";
6
+ import { registerQueueTools } from "./tools/queues.js";
7
+ import { registerExchangeTools } from "./tools/exchanges.js";
8
+ import { registerMessageTools } from "./tools/messages.js";
9
+ import { registerConnectionTools } from "./tools/connections.js";
10
+ import { registerMassTransitTools } from "./tools/masstransit.js";
11
+ function getConfig() {
12
+ const host = process.env.RABBITMQ_HOST;
13
+ if (!host) {
14
+ console.error("RABBITMQ_HOST environment variable is required");
15
+ process.exit(1);
16
+ }
17
+ const username = process.env.RABBITMQ_USERNAME;
18
+ if (!username) {
19
+ console.error("RABBITMQ_USERNAME environment variable is required");
20
+ process.exit(1);
21
+ }
22
+ const password = process.env.RABBITMQ_PASSWORD;
23
+ if (!password) {
24
+ console.error("RABBITMQ_PASSWORD environment variable is required");
25
+ process.exit(1);
26
+ }
27
+ const allowMutative = process.env.ALLOW_MUTATIVE_TOOLS === "true" ||
28
+ process.argv.includes("--allow-mutative-tools");
29
+ return {
30
+ host,
31
+ port: parseInt(process.env.RABBITMQ_PORT ?? "15672", 10),
32
+ username,
33
+ password,
34
+ vhost: process.env.RABBITMQ_VHOST ?? "/",
35
+ ssl: process.env.RABBITMQ_SSL === "true",
36
+ allowMutativeTools: allowMutative,
37
+ };
38
+ }
39
+ async function main() {
40
+ const config = getConfig();
41
+ const client = new RabbitMQClient(config);
42
+ const server = new McpServer({
43
+ name: "rabbitmq-masstransit",
44
+ version: "1.0.0",
45
+ });
46
+ // Register all tools
47
+ registerOverviewTools(server, client);
48
+ registerQueueTools(server, client, config.allowMutativeTools);
49
+ registerExchangeTools(server, client);
50
+ registerMessageTools(server, client, config.allowMutativeTools);
51
+ registerConnectionTools(server, client);
52
+ registerMassTransitTools(server, client, config.allowMutativeTools);
53
+ // Connect via stdio
54
+ const transport = new StdioServerTransport();
55
+ await server.connect(transport);
56
+ console.error(`RabbitMQ MassTransit MCP server running (${config.host}:${config.port}, vhost: ${config.vhost}, mutative tools: ${config.allowMutativeTools ? "enabled" : "disabled"})`);
57
+ }
58
+ main().catch((err) => {
59
+ console.error("Fatal error:", err);
60
+ process.exit(1);
61
+ });
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { MassTransitEnvelope, MassTransitFault, PeekedMessage } from "./types.js";
2
+ export declare function isErrorQueue(name: string): boolean;
3
+ export declare function isSkippedQueue(name: string): boolean;
4
+ export declare function getSourceQueue(errorQueueName: string): string;
5
+ /**
6
+ * Convert MassTransit message type URN to readable name.
7
+ * e.g. "urn:message:MyApp.Messages:OrderSubmitted" -> "MyApp.Messages.OrderSubmitted"
8
+ */
9
+ export declare function getMessageTypeName(urn: string): string;
10
+ export declare function parseEnvelope(payload: string): MassTransitEnvelope | null;
11
+ /**
12
+ * Parse fault info from MT-Fault-* headers that MassTransit adds
13
+ * when moving a message to the _error queue.
14
+ */
15
+ export declare function parseFaultFromHeaders(headers: Record<string, unknown>): MassTransitFault | null;
16
+ export declare function parseFault(payload: string): MassTransitFault | null;
17
+ export declare function formatFaultMessage(msg: PeekedMessage, index: number): string;
18
+ //# sourceMappingURL=masstransit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masstransit.d.ts","sourceRoot":"","sources":["../src/masstransit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,aAAa,EACd,MAAM,YAAY,CAAC;AAKpB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GACd,mBAAmB,GAAG,IAAI,CAU5B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,gBAAgB,GAAG,IAAI,CAmCzB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA0BnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAuHR"}
@@ -0,0 +1,203 @@
1
+ const ERROR_SUFFIX = "_error";
2
+ const SKIPPED_SUFFIX = "_skipped";
3
+ export function isErrorQueue(name) {
4
+ return name.endsWith(ERROR_SUFFIX);
5
+ }
6
+ export function isSkippedQueue(name) {
7
+ return name.endsWith(SKIPPED_SUFFIX);
8
+ }
9
+ export function getSourceQueue(errorQueueName) {
10
+ if (errorQueueName.endsWith(ERROR_SUFFIX)) {
11
+ return errorQueueName.slice(0, -ERROR_SUFFIX.length);
12
+ }
13
+ if (errorQueueName.endsWith(SKIPPED_SUFFIX)) {
14
+ return errorQueueName.slice(0, -SKIPPED_SUFFIX.length);
15
+ }
16
+ return errorQueueName;
17
+ }
18
+ /**
19
+ * Convert MassTransit message type URN to readable name.
20
+ * e.g. "urn:message:MyApp.Messages:OrderSubmitted" -> "MyApp.Messages.OrderSubmitted"
21
+ */
22
+ export function getMessageTypeName(urn) {
23
+ if (!urn.startsWith("urn:message:"))
24
+ return urn;
25
+ return urn.slice("urn:message:".length).replace(/:/g, ".");
26
+ }
27
+ export function parseEnvelope(payload) {
28
+ try {
29
+ const parsed = JSON.parse(payload);
30
+ if (parsed && (parsed.messageType || parsed.messageId || parsed.message)) {
31
+ return parsed;
32
+ }
33
+ return null;
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ /**
40
+ * Parse fault info from MT-Fault-* headers that MassTransit adds
41
+ * when moving a message to the _error queue.
42
+ */
43
+ export function parseFaultFromHeaders(headers) {
44
+ const reason = headers["MT-Reason"];
45
+ const exceptionType = headers["MT-Fault-ExceptionType"];
46
+ const faultMessage = headers["MT-Fault-Message"];
47
+ if (!reason && !exceptionType)
48
+ return null;
49
+ return {
50
+ faultedMessageId: undefined,
51
+ timestamp: headers["MT-Fault-Timestamp"],
52
+ consumerType: headers["MT-Fault-ConsumerType"],
53
+ inputAddress: headers["MT-Fault-InputAddress"],
54
+ messageType: headers["MT-Fault-MessageType"],
55
+ retryCount: headers["MT-Fault-RetryCount"],
56
+ reason: reason,
57
+ exceptions: exceptionType
58
+ ? [
59
+ {
60
+ exceptionType,
61
+ message: faultMessage,
62
+ stackTrace: headers["MT-Fault-StackTrace"],
63
+ },
64
+ ]
65
+ : undefined,
66
+ host: {
67
+ machineName: headers["MT-Host-MachineName"],
68
+ processName: headers["MT-Host-ProcessName"],
69
+ processId: headers["MT-Host-ProcessId"],
70
+ assembly: headers["MT-Host-Assembly"],
71
+ assemblyVersion: headers["MT-Host-AssemblyVersion"],
72
+ frameworkVersion: headers["MT-Host-FrameworkVersion"],
73
+ massTransitVersion: headers["MT-Host-MassTransitVersion"],
74
+ operatingSystemVersion: headers["MT-Host-OperatingSystemVersion"],
75
+ },
76
+ };
77
+ }
78
+ export function parseFault(payload) {
79
+ try {
80
+ const envelope = JSON.parse(payload);
81
+ if (!envelope.message)
82
+ return null;
83
+ const msg = envelope.message;
84
+ // MassTransit Fault<T> messages have an exceptions array in the message payload
85
+ if (msg.exceptions &&
86
+ Array.isArray(msg.exceptions) &&
87
+ msg.exceptions.length > 0) {
88
+ return {
89
+ faultId: msg.faultId,
90
+ faultedMessageId: msg.faultedMessageId,
91
+ timestamp: envelope.sentTime ?? msg.timestamp,
92
+ exceptions: msg.exceptions,
93
+ message: msg.message,
94
+ host: envelope.host,
95
+ };
96
+ }
97
+ return null;
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ }
103
+ export function formatFaultMessage(msg, index) {
104
+ const headers = msg.properties.headers ?? {};
105
+ const headerFault = parseFaultFromHeaders(headers);
106
+ const bodyFault = parseFault(msg.payload);
107
+ const envelope = parseEnvelope(msg.payload);
108
+ // Prefer header-based fault info (this is where MassTransit puts it on _error queues)
109
+ if (headerFault) {
110
+ const ex = headerFault.exceptions?.[0];
111
+ const messageType = headerFault.messageType ?? (envelope?.messageType
112
+ ? envelope.messageType.map(getMessageTypeName).join(", ")
113
+ : "unknown");
114
+ const host = headerFault.host;
115
+ const hostInfo = host
116
+ ? `${host.machineName ?? "unknown"} / ${host.processName ?? "unknown"} (PID ${host.processId ?? "?"})`
117
+ : "unknown";
118
+ const lines = [
119
+ `Message ${index + 1}:`,
120
+ ` Faulted: ${headerFault.timestamp ?? "unknown"}`,
121
+ ` Reason: ${headerFault.reason ?? "fault"}`,
122
+ ` Message Type: ${messageType}`,
123
+ ];
124
+ if (headerFault.consumerType) {
125
+ lines.push(` Consumer: ${headerFault.consumerType}`);
126
+ }
127
+ if (ex) {
128
+ lines.push(` Exception: ${ex.exceptionType ?? "unknown"} - "${ex.message ?? "unknown"}"`);
129
+ }
130
+ if (headerFault.retryCount !== undefined) {
131
+ lines.push(` Retry Count: ${headerFault.retryCount}`);
132
+ }
133
+ if (ex?.stackTrace) {
134
+ const stackLines = ex.stackTrace.split("\n").slice(0, 8);
135
+ lines.push(` Stack Trace:\n${stackLines.map((l) => ` ${l.trim()}`).join("\n")}`);
136
+ }
137
+ // Show the original message payload from the body
138
+ if (envelope?.message) {
139
+ const payloadStr = JSON.stringify(envelope.message, null, 2);
140
+ const truncated = payloadStr.length > 500
141
+ ? payloadStr.slice(0, 500) + "\n ... (truncated)"
142
+ : payloadStr;
143
+ lines.push(` Original Payload: ${truncated}`);
144
+ }
145
+ lines.push(` Source Host: ${hostInfo}`);
146
+ if (host?.assembly && host?.assemblyVersion) {
147
+ lines.push(` Assembly: ${host.assembly} v${host.assemblyVersion} (.NET ${host.frameworkVersion ?? "?"})`);
148
+ }
149
+ return lines.join("\n");
150
+ }
151
+ // Fallback: body-based Fault<T> envelope parsing
152
+ if (bodyFault) {
153
+ const ex = bodyFault.exceptions?.[0];
154
+ const messageTypes = envelope?.messageType
155
+ ? envelope.messageType.map(getMessageTypeName)
156
+ : [];
157
+ const host = bodyFault.host;
158
+ const hostInfo = host
159
+ ? `${host.machineName ?? "unknown"} / ${host.processName ?? "unknown"} (PID ${host.processId ?? "?"})`
160
+ : "unknown";
161
+ const lines = [
162
+ `Message ${index + 1}:`,
163
+ ` Faulted: ${bodyFault.timestamp ?? "unknown"}`,
164
+ ` Original MessageId: ${bodyFault.faultedMessageId ?? "unknown"}`,
165
+ ` Message Type: ${messageTypes.length > 0 ? messageTypes.join(", ") : "unknown"}`,
166
+ ` Exception: ${ex?.exceptionType ?? "unknown"} - "${ex?.message ?? "unknown"}"`,
167
+ ];
168
+ if (ex?.stackTrace) {
169
+ const stackLines = ex.stackTrace.split("\n").slice(0, 8);
170
+ lines.push(` Stack Trace:\n${stackLines.map((l) => ` ${l.trim()}`).join("\n")}`);
171
+ }
172
+ if (bodyFault.message) {
173
+ const payloadStr = JSON.stringify(bodyFault.message, null, 2);
174
+ const truncated = payloadStr.length > 500
175
+ ? payloadStr.slice(0, 500) + "\n ... (truncated)"
176
+ : payloadStr;
177
+ lines.push(` Original Payload: ${truncated}`);
178
+ }
179
+ lines.push(` Source Host: ${hostInfo}`);
180
+ return lines.join("\n");
181
+ }
182
+ // Fallback: plain MassTransit envelope (no fault info found)
183
+ if (envelope) {
184
+ const messageTypes = envelope.messageType
185
+ ? envelope.messageType.map(getMessageTypeName)
186
+ : [];
187
+ return [
188
+ `Message ${index + 1}:`,
189
+ ` MessageId: ${envelope.messageId ?? "unknown"}`,
190
+ ` Sent: ${envelope.sentTime ?? "unknown"}`,
191
+ ` Message Type: ${messageTypes.length > 0 ? messageTypes.join(", ") : "unknown"}`,
192
+ ` Payload: ${JSON.stringify(envelope.message ?? {}, null, 2).slice(0, 500)}`,
193
+ ].join("\n");
194
+ }
195
+ // Raw message fallback
196
+ return [
197
+ `Message ${index + 1}:`,
198
+ ` Exchange: ${msg.exchange}`,
199
+ ` Routing Key: ${msg.routing_key}`,
200
+ ` Payload: ${msg.payload.slice(0, 500)}`,
201
+ ].join("\n");
202
+ }
203
+ //# sourceMappingURL=masstransit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masstransit.js","sourceRoot":"","sources":["../src/masstransit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { RabbitMQConfig, QueueInfo, ExchangeInfo, BindingInfo, ConnectionInfo, ConsumerInfo, OverviewInfo, PeekedMessage } from "./types.js";
2
+ export declare class RabbitMQClient {
3
+ private config;
4
+ private baseUrl;
5
+ private authHeader;
6
+ constructor(config: RabbitMQConfig);
7
+ private encodeVhost;
8
+ private request;
9
+ private get;
10
+ private post;
11
+ private del;
12
+ getOverview(): Promise<OverviewInfo>;
13
+ listQueues(vhost?: string): Promise<QueueInfo[]>;
14
+ getQueue(name: string, vhost?: string): Promise<QueueInfo>;
15
+ purgeQueue(name: string, vhost?: string): Promise<void>;
16
+ deleteQueue(name: string, vhost?: string): Promise<void>;
17
+ listExchanges(vhost?: string): Promise<ExchangeInfo[]>;
18
+ getExchange(name: string, vhost?: string): Promise<ExchangeInfo>;
19
+ listBindingsForQueue(queue: string, vhost?: string): Promise<BindingInfo[]>;
20
+ listBindingsForExchange(exchange: string, type: "source" | "destination", vhost?: string): Promise<BindingInfo[]>;
21
+ listConnections(): Promise<ConnectionInfo[]>;
22
+ listConsumers(vhost?: string): Promise<ConsumerInfo[]>;
23
+ peekMessages(queue: string, count?: number, vhost?: string, ackMode?: string): Promise<PeekedMessage[]>;
24
+ publishMessage(exchange: string, routingKey: string, payload: string, properties?: Record<string, unknown>, vhost?: string): Promise<{
25
+ routed: boolean;
26
+ }>;
27
+ consumeMessages(queue: string, count?: number, vhost?: string): Promise<PeekedMessage[]>;
28
+ }
29
+ //# sourceMappingURL=rabbitmq-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rabbitmq-client.d.ts","sourceRoot":"","sources":["../src/rabbitmq-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IAIb,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEP,MAAM,EAAE,cAAc;IAQ1C,OAAO,CAAC,WAAW;YAKL,OAAO;YA+BP,GAAG;YAIH,IAAI;YAIJ,GAAG;IAKX,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAKpC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAShD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAStD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOhE,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAMnB,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GAAG,aAAa,EAC9B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAOnB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI5C,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUtD,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,MAA2B,GACnC,OAAO,CAAC,aAAa,EAAE,CAAC;IAYrB,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACxC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAgBzB,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,EAAE,CAAC;CAW5B"}