@sonoma-security/mcp-gateway 0.1.0 → 0.1.1
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/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +174 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/gateway.test.d.ts +2 -0
- package/dist/__tests__/gateway.test.d.ts.map +1 -0
- package/dist/__tests__/gateway.test.js +174 -0
- package/dist/__tests__/gateway.test.js.map +1 -0
- package/dist/auth/client.d.ts +7 -2
- package/dist/auth/client.d.ts.map +1 -1
- package/dist/auth/client.js +76 -6
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/storage.js +1 -1
- package/dist/auth/storage.js.map +1 -1
- package/dist/cli.js +134 -46
- package/dist/cli.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/gateway.d.ts +5 -0
- package/dist/gateway.d.ts.map +1 -1
- package/dist/gateway.js +90 -6
- package/dist/gateway.js.map +1 -1
- package/dist/sonoma-client.d.ts +19 -0
- package/dist/sonoma-client.d.ts.map +1 -1
- package/dist/sonoma-client.js +89 -8
- package/dist/sonoma-client.js.map +1 -1
- package/package.json +1 -2
package/dist/sonoma-client.js
CHANGED
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
* Sonoma API client for telemetry and policy
|
|
3
3
|
*
|
|
4
4
|
* Uses OAuth tokens from the auth module for authentication.
|
|
5
|
+
* Implements disk-backed queue for telemetry to prevent data loss.
|
|
5
6
|
*/
|
|
6
|
-
import { hostname } from "node:os";
|
|
7
|
+
import { hostname, homedir } from "node:os";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { existsSync, appendFileSync, readFileSync, writeFileSync, statSync, unlinkSync, mkdirSync, } from "node:fs";
|
|
7
10
|
import { getAccessToken, getStoredDeviceId } from "./auth";
|
|
11
|
+
// Queue configuration
|
|
12
|
+
const SONOMA_DIR = join(homedir(), ".sonoma");
|
|
13
|
+
const QUEUE_FILE = join(SONOMA_DIR, "telemetry-queue.jsonl");
|
|
14
|
+
const MAX_MEMORY_QUEUE = 1000;
|
|
15
|
+
const MAX_QUEUE_FILE_SIZE = 50 * 1024 * 1024; // 50MB
|
|
8
16
|
export class SonomaClient {
|
|
9
17
|
endpoint;
|
|
10
18
|
hostname;
|
|
@@ -65,22 +73,89 @@ export class SonomaClient {
|
|
|
65
73
|
this.flushInterval = null;
|
|
66
74
|
}
|
|
67
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Ensure the .sonoma directory exists
|
|
78
|
+
*/
|
|
79
|
+
ensureSonomaDir() {
|
|
80
|
+
if (!existsSync(SONOMA_DIR)) {
|
|
81
|
+
mkdirSync(SONOMA_DIR, { recursive: true, mode: 0o700 });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Spill events to disk when memory queue is full
|
|
86
|
+
*/
|
|
87
|
+
spillToDisk(events) {
|
|
88
|
+
this.ensureSonomaDir();
|
|
89
|
+
// Check file size before appending
|
|
90
|
+
if (existsSync(QUEUE_FILE)) {
|
|
91
|
+
const stats = statSync(QUEUE_FILE);
|
|
92
|
+
if (stats.size >= MAX_QUEUE_FILE_SIZE) {
|
|
93
|
+
this.log("Queue file at max size, dropping oldest events");
|
|
94
|
+
// Truncate file to make room (drop first half of events)
|
|
95
|
+
const lines = readFileSync(QUEUE_FILE, "utf-8").split("\n").filter(Boolean);
|
|
96
|
+
const keepLines = lines.slice(Math.floor(lines.length / 2));
|
|
97
|
+
writeFileSync(QUEUE_FILE, keepLines.join("\n") + "\n", { mode: 0o600 });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Append events as JSONL
|
|
101
|
+
const jsonl = events.map((e) => JSON.stringify(e)).join("\n") + "\n";
|
|
102
|
+
appendFileSync(QUEUE_FILE, jsonl, { mode: 0o600 });
|
|
103
|
+
this.log(`Spilled ${events.length} events to disk`);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Load events from disk queue
|
|
107
|
+
*/
|
|
108
|
+
loadFromDisk() {
|
|
109
|
+
if (!existsSync(QUEUE_FILE)) {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const content = readFileSync(QUEUE_FILE, "utf-8");
|
|
114
|
+
const events = content
|
|
115
|
+
.split("\n")
|
|
116
|
+
.filter(Boolean)
|
|
117
|
+
.map((line) => JSON.parse(line));
|
|
118
|
+
return events;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.log("Failed to read queue file:", error);
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Clear the disk queue
|
|
127
|
+
*/
|
|
128
|
+
clearDiskQueue() {
|
|
129
|
+
if (existsSync(QUEUE_FILE)) {
|
|
130
|
+
unlinkSync(QUEUE_FILE);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
68
133
|
/**
|
|
69
134
|
* Queue an event for telemetry
|
|
135
|
+
* Spills to disk when memory queue exceeds limit
|
|
70
136
|
*/
|
|
71
137
|
queueEvent(event) {
|
|
72
138
|
this.pendingEvents.push(event);
|
|
73
139
|
this.log(`Queued event: ${event.serverName}.${event.toolName}`);
|
|
140
|
+
// Spill to disk if memory queue is full
|
|
141
|
+
if (this.pendingEvents.length >= MAX_MEMORY_QUEUE) {
|
|
142
|
+
const toSpill = this.pendingEvents.splice(0, Math.floor(MAX_MEMORY_QUEUE / 2));
|
|
143
|
+
this.spillToDisk(toSpill);
|
|
144
|
+
}
|
|
74
145
|
}
|
|
75
146
|
/**
|
|
76
147
|
* Flush all pending events to Sonoma
|
|
148
|
+
* Reads from disk queue first (FIFO), then memory queue
|
|
77
149
|
*/
|
|
78
150
|
async flushTelemetry() {
|
|
79
|
-
|
|
151
|
+
// Load disk queue first (older events)
|
|
152
|
+
const diskEvents = this.loadFromDisk();
|
|
153
|
+
const memoryEvents = [...this.pendingEvents];
|
|
154
|
+
this.pendingEvents = [];
|
|
155
|
+
const allEvents = [...diskEvents, ...memoryEvents];
|
|
156
|
+
if (allEvents.length === 0) {
|
|
80
157
|
return;
|
|
81
158
|
}
|
|
82
|
-
const events = [...this.pendingEvents];
|
|
83
|
-
this.pendingEvents = [];
|
|
84
159
|
try {
|
|
85
160
|
const token = await this.getToken();
|
|
86
161
|
const response = await fetch(`${this.endpoint}/api/mcp-visibility/telemetry`, {
|
|
@@ -92,7 +167,7 @@ export class SonomaClient {
|
|
|
92
167
|
body: JSON.stringify({
|
|
93
168
|
hostname: this.hostname,
|
|
94
169
|
deviceId: this.deviceId,
|
|
95
|
-
events:
|
|
170
|
+
events: allEvents.map((e) => ({
|
|
96
171
|
serverName: e.serverName,
|
|
97
172
|
toolName: e.toolName,
|
|
98
173
|
timestamp: e.timestamp,
|
|
@@ -107,11 +182,17 @@ export class SonomaClient {
|
|
|
107
182
|
const text = await response.text();
|
|
108
183
|
throw new Error(`Telemetry failed: ${response.status} ${text}`);
|
|
109
184
|
}
|
|
110
|
-
|
|
185
|
+
// Success - clear disk queue
|
|
186
|
+
this.clearDiskQueue();
|
|
187
|
+
this.log(`Flushed ${allEvents.length} events to Sonoma (${diskEvents.length} from disk, ${memoryEvents.length} from memory)`);
|
|
111
188
|
}
|
|
112
189
|
catch (error) {
|
|
113
|
-
// Re-queue events on failure
|
|
114
|
-
this.pendingEvents.unshift(...
|
|
190
|
+
// Re-queue memory events on failure (disk events stay on disk)
|
|
191
|
+
this.pendingEvents.unshift(...memoryEvents);
|
|
192
|
+
// Spill disk events back if they were loaded
|
|
193
|
+
if (diskEvents.length > 0) {
|
|
194
|
+
this.spillToDisk(diskEvents);
|
|
195
|
+
}
|
|
115
196
|
throw error;
|
|
116
197
|
}
|
|
117
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sonoma-client.js","sourceRoot":"","sources":["../src/sonoma-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sonoma-client.js","sourceRoot":"","sources":["../src/sonoma-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sonoma-security/mcp-gateway",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Local MCP gateway for tool-level visibility and enforcement",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
"dist",
|
|
27
|
-
"!dist/__tests__",
|
|
28
27
|
"README.md"
|
|
29
28
|
],
|
|
30
29
|
"scripts": {
|