proofscan 0.9.2 → 0.10.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.
Files changed (43) hide show
  1. package/dist/cli.js +6 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/index.d.ts +2 -0
  4. package/dist/commands/index.d.ts.map +1 -1
  5. package/dist/commands/index.js +4 -0
  6. package/dist/commands/index.js.map +1 -1
  7. package/dist/commands/log.d.ts +10 -0
  8. package/dist/commands/log.d.ts.map +1 -0
  9. package/dist/commands/log.js +126 -0
  10. package/dist/commands/log.js.map +1 -0
  11. package/dist/commands/proxy.d.ts +12 -0
  12. package/dist/commands/proxy.d.ts.map +1 -0
  13. package/dist/commands/proxy.js +220 -0
  14. package/dist/commands/proxy.js.map +1 -0
  15. package/dist/proxy/index.d.ts +10 -0
  16. package/dist/proxy/index.d.ts.map +1 -0
  17. package/dist/proxy/index.js +10 -0
  18. package/dist/proxy/index.js.map +1 -0
  19. package/dist/proxy/logger.d.ts +110 -0
  20. package/dist/proxy/logger.d.ts.map +1 -0
  21. package/dist/proxy/logger.js +248 -0
  22. package/dist/proxy/logger.js.map +1 -0
  23. package/dist/proxy/mcp-server.d.ts +101 -0
  24. package/dist/proxy/mcp-server.d.ts.map +1 -0
  25. package/dist/proxy/mcp-server.js +391 -0
  26. package/dist/proxy/mcp-server.js.map +1 -0
  27. package/dist/proxy/request-router.d.ts +26 -0
  28. package/dist/proxy/request-router.d.ts.map +1 -0
  29. package/dist/proxy/request-router.js +90 -0
  30. package/dist/proxy/request-router.js.map +1 -0
  31. package/dist/proxy/runtime-state.d.ts +131 -0
  32. package/dist/proxy/runtime-state.d.ts.map +1 -0
  33. package/dist/proxy/runtime-state.js +241 -0
  34. package/dist/proxy/runtime-state.js.map +1 -0
  35. package/dist/proxy/tool-aggregator.d.ts +46 -0
  36. package/dist/proxy/tool-aggregator.d.ts.map +1 -0
  37. package/dist/proxy/tool-aggregator.js +112 -0
  38. package/dist/proxy/tool-aggregator.js.map +1 -0
  39. package/dist/proxy/types.d.ts +117 -0
  40. package/dist/proxy/types.d.ts.map +1 -0
  41. package/dist/proxy/types.js +21 -0
  42. package/dist/proxy/types.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Proxy Logger Module (Phase 5.0+)
3
+ *
4
+ * Structured logging to stderr only (stdout reserved for JSON-RPC).
5
+ * Includes ring buffer for CLI log viewing.
6
+ *
7
+ * Log levels:
8
+ * - ERROR: Always output (red)
9
+ * - WARN: Always output (yellow)
10
+ * - INFO: Only when verbose mode enabled (no color)
11
+ */
12
+ import { appendFile, readFile, writeFile } from 'fs/promises';
13
+ import { existsSync } from 'fs';
14
+ const COLORS = {
15
+ WARN: '\x1b[33m',
16
+ ERROR: '\x1b[31m',
17
+ RESET: '\x1b[0m',
18
+ };
19
+ export { COLORS as LOG_COLORS };
20
+ /** Global verbose flag - set by proxy command */
21
+ let verboseMode = false;
22
+ /** Global ring buffer instance */
23
+ let ringBuffer = null;
24
+ /**
25
+ * Log Ring Buffer
26
+ *
27
+ * Appends logs to JSONL file with automatic rotation.
28
+ * Oldest entries are discarded when maxLines is exceeded.
29
+ */
30
+ export class LogRingBuffer {
31
+ config;
32
+ lineCount = 0;
33
+ pendingWrites = Promise.resolve();
34
+ constructor(config) {
35
+ this.config = config;
36
+ // Initialize line count asynchronously
37
+ this.initLineCount().catch(() => {
38
+ // Ignore initialization errors
39
+ });
40
+ }
41
+ /**
42
+ * Initialize line count from existing file
43
+ */
44
+ async initLineCount() {
45
+ if (!existsSync(this.config.logPath)) {
46
+ this.lineCount = 0;
47
+ return;
48
+ }
49
+ try {
50
+ const content = await readFile(this.config.logPath, 'utf-8');
51
+ this.lineCount = content.split('\n').filter((line) => line.trim()).length;
52
+ }
53
+ catch {
54
+ this.lineCount = 0;
55
+ }
56
+ }
57
+ /**
58
+ * Append a log entry
59
+ */
60
+ async append(entry) {
61
+ const line = JSON.stringify(entry) + '\n';
62
+ // Chain writes to avoid race conditions
63
+ this.pendingWrites = this.pendingWrites.then(async () => {
64
+ try {
65
+ await appendFile(this.config.logPath, line, 'utf-8');
66
+ this.lineCount++;
67
+ // Check if rotation needed
68
+ if (this.lineCount > this.config.maxLines) {
69
+ await this.rotate();
70
+ }
71
+ // Notify count change
72
+ if (this.config.onCountChange) {
73
+ this.config.onCountChange(this.lineCount);
74
+ }
75
+ }
76
+ catch {
77
+ // Silently ignore write errors
78
+ }
79
+ });
80
+ await this.pendingWrites;
81
+ }
82
+ /**
83
+ * Read last N entries
84
+ */
85
+ async tail(n, filter) {
86
+ if (!existsSync(this.config.logPath)) {
87
+ return [];
88
+ }
89
+ try {
90
+ const content = await readFile(this.config.logPath, 'utf-8');
91
+ const lines = content.split('\n').filter((line) => line.trim());
92
+ let entries = [];
93
+ for (const line of lines) {
94
+ try {
95
+ const entry = JSON.parse(line);
96
+ // Apply level filter if specified
97
+ if (filter?.level) {
98
+ const filterLevel = filter.level.toUpperCase();
99
+ const levelPriority = {
100
+ INFO: 0,
101
+ WARN: 1,
102
+ ERROR: 2,
103
+ };
104
+ const entryPriority = levelPriority[entry.level] ?? 0;
105
+ const filterPriority = levelPriority[filterLevel] ?? 0;
106
+ if (entryPriority < filterPriority) {
107
+ continue;
108
+ }
109
+ }
110
+ entries.push(entry);
111
+ }
112
+ catch {
113
+ // Skip malformed lines
114
+ }
115
+ }
116
+ // Return last N entries
117
+ return entries.slice(-n);
118
+ }
119
+ catch {
120
+ return [];
121
+ }
122
+ }
123
+ /**
124
+ * Get current line count
125
+ */
126
+ getCount() {
127
+ return this.lineCount;
128
+ }
129
+ /**
130
+ * Rotate buffer (remove oldest entries when over limit)
131
+ */
132
+ async rotate() {
133
+ try {
134
+ const content = await readFile(this.config.logPath, 'utf-8');
135
+ const lines = content.split('\n').filter((line) => line.trim());
136
+ // Keep only the newest maxLines/2 lines (aggressive rotation)
137
+ const keepCount = Math.floor(this.config.maxLines / 2);
138
+ const newLines = lines.slice(-keepCount);
139
+ await writeFile(this.config.logPath, newLines.join('\n') + '\n', 'utf-8');
140
+ this.lineCount = newLines.length;
141
+ }
142
+ catch {
143
+ // Ignore rotation errors
144
+ }
145
+ }
146
+ /**
147
+ * Clear the log file
148
+ */
149
+ async clear() {
150
+ try {
151
+ await writeFile(this.config.logPath, '', 'utf-8');
152
+ this.lineCount = 0;
153
+ }
154
+ catch {
155
+ // Ignore clear errors
156
+ }
157
+ }
158
+ }
159
+ /**
160
+ * Initialize ring buffer (called on proxy start)
161
+ */
162
+ export function initializeRingBuffer(config) {
163
+ ringBuffer = new LogRingBuffer(config);
164
+ }
165
+ /**
166
+ * Get the current ring buffer instance
167
+ */
168
+ export function getRingBuffer() {
169
+ return ringBuffer;
170
+ }
171
+ /**
172
+ * Get current time in HH:MM:SS.mmm format
173
+ */
174
+ function now() {
175
+ return new Date().toISOString().slice(11, 23);
176
+ }
177
+ /**
178
+ * Internal log function
179
+ */
180
+ function log(level, msg, category) {
181
+ // INFO is only shown in verbose mode
182
+ if (level === 'INFO' && !verboseMode) {
183
+ // Still write to ring buffer even if not shown on stderr
184
+ writeToRingBuffer(level, msg, category);
185
+ return;
186
+ }
187
+ const timestamp = now();
188
+ const categoryStr = category ? `[${category}] ` : '';
189
+ const prefix = `[${timestamp}] [${level}] ${categoryStr}`;
190
+ if (level === 'INFO') {
191
+ // INFO: no color
192
+ process.stderr.write(prefix + msg + '\n');
193
+ }
194
+ else {
195
+ // WARN/ERROR: with color
196
+ const color = COLORS[level];
197
+ process.stderr.write(color + prefix + msg + COLORS.RESET + '\n');
198
+ }
199
+ // Write to ring buffer
200
+ writeToRingBuffer(level, msg, category);
201
+ }
202
+ /**
203
+ * Write to ring buffer if initialized
204
+ */
205
+ function writeToRingBuffer(level, message, category) {
206
+ if (ringBuffer) {
207
+ ringBuffer
208
+ .append({
209
+ ts: new Date().toISOString(),
210
+ level,
211
+ category,
212
+ message,
213
+ })
214
+ .catch(() => {
215
+ // Silently ignore buffer write errors
216
+ });
217
+ }
218
+ }
219
+ /**
220
+ * Set verbose mode (enables INFO logs)
221
+ */
222
+ export function setVerbose(enabled) {
223
+ verboseMode = enabled;
224
+ }
225
+ /**
226
+ * Check if verbose mode is enabled
227
+ */
228
+ export function isVerbose() {
229
+ return verboseMode;
230
+ }
231
+ /**
232
+ * Logger instance with optional category support
233
+ */
234
+ export const logger = {
235
+ /**
236
+ * Info level - only shown when verbose mode is enabled
237
+ */
238
+ info: (msg, category) => log('INFO', msg, category),
239
+ /**
240
+ * Warning level - always shown (yellow)
241
+ */
242
+ warn: (msg, category) => log('WARN', msg, category),
243
+ /**
244
+ * Error level - always shown (red)
245
+ */
246
+ error: (msg, category) => log('ERROR', msg, category),
247
+ };
248
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/proxy/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * MCP Proxy Server (Phase 5.0+)
3
+ *
4
+ * A stdio-based MCP server that aggregates tools from multiple backend
5
+ * connectors and routes requests accordingly.
6
+ *
7
+ * Supported methods:
8
+ * - initialize
9
+ * - notifications/initialized
10
+ * - tools/list
11
+ * - tools/call
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ import { type ProxyOptions } from './types.js';
15
+ /**
16
+ * MCP Proxy Server
17
+ *
18
+ * Reads JSON-RPC from stdin, writes responses to stdout.
19
+ * All logging goes to stderr.
20
+ */
21
+ export declare class McpProxyServer extends EventEmitter {
22
+ private readonly options;
23
+ private readonly aggregator;
24
+ private readonly router;
25
+ private readonly stateManager;
26
+ private buffer;
27
+ private initialized;
28
+ private running;
29
+ /** Current client info (extracted from initialize) */
30
+ private currentClient;
31
+ constructor(options: ProxyOptions);
32
+ /**
33
+ * Start the proxy server
34
+ *
35
+ * Begins reading from stdin and processing JSON-RPC messages.
36
+ */
37
+ start(): Promise<void>;
38
+ /**
39
+ * Build connector summaries for status display
40
+ */
41
+ private buildConnectorSummaries;
42
+ /**
43
+ * Stop the proxy server
44
+ */
45
+ stop(): void;
46
+ /**
47
+ * Handle incoming data from stdin
48
+ */
49
+ private handleData;
50
+ /**
51
+ * Handle stdin end
52
+ */
53
+ private handleEnd;
54
+ /**
55
+ * Handle stdin error
56
+ */
57
+ private handleError;
58
+ /**
59
+ * Process buffered data and extract complete JSON-RPC messages
60
+ *
61
+ * Messages are newline-delimited JSON.
62
+ */
63
+ private processBuffer;
64
+ /**
65
+ * Process a single JSON-RPC message
66
+ */
67
+ private processMessage;
68
+ /**
69
+ * Handle a JSON-RPC request (requires response)
70
+ */
71
+ private handleRequest;
72
+ /**
73
+ * Handle a JSON-RPC notification (no response)
74
+ */
75
+ private handleNotification;
76
+ /**
77
+ * Handle initialize request
78
+ */
79
+ private handleInitialize;
80
+ /**
81
+ * Handle tools/list request
82
+ */
83
+ private handleToolsList;
84
+ /**
85
+ * Handle tools/call request
86
+ */
87
+ private handleToolsCall;
88
+ /**
89
+ * Send a JSON-RPC response with result
90
+ */
91
+ private sendResult;
92
+ /**
93
+ * Send a JSON-RPC error response
94
+ */
95
+ private sendError;
96
+ /**
97
+ * Send a message to stdout
98
+ */
99
+ private send;
100
+ }
101
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/proxy/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAStC,OAAO,EAEL,KAAK,YAAY,EASlB,MAAM,YAAY,CAAC;AAYpB;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IAExB,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAGL;gBAEJ,OAAO,EAAE,YAAY;IAQjC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC5B;;OAEG;YACW,uBAAuB;IAyBrC;;OAEG;IACH,IAAI,IAAI,IAAI;IAuBZ;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;YACW,cAAc;IA+C5B;;OAEG;YACW,aAAa;IA6B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;YACW,gBAAgB;IAyC9B;;OAEG;YACW,eAAe;IAyB7B;;OAEG;YACW,eAAe;IAsC7B;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;IACH,OAAO,CAAC,IAAI;CAIb"}