common-qa-mcp 0.1.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/LICENSE +21 -0
- package/README.md +96 -0
- package/dist/adapters/factory.d.ts +15 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +18 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/remoteMcp/adapter.d.ts +92 -0
- package/dist/adapters/remoteMcp/adapter.d.ts.map +1 -0
- package/dist/adapters/remoteMcp/adapter.js +219 -0
- package/dist/adapters/remoteMcp/adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +77 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/walnut/actionTypes.d.ts +16 -0
- package/dist/adapters/walnut/actionTypes.d.ts.map +1 -0
- package/dist/adapters/walnut/actionTypes.js +141 -0
- package/dist/adapters/walnut/actionTypes.js.map +1 -0
- package/dist/adapters/walnut/mapper.d.ts +34 -0
- package/dist/adapters/walnut/mapper.d.ts.map +1 -0
- package/dist/adapters/walnut/mapper.js +228 -0
- package/dist/adapters/walnut/mapper.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +36 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +81 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +211 -0
- package/dist/config.js.map +1 -0
- package/dist/connection.d.ts +101 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +190 -0
- package/dist/connection.js.map +1 -0
- package/dist/domain/types.d.ts +279 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +2 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/domain/validate.d.ts +3 -0
- package/dist/domain/validate.d.ts.map +1 -0
- package/dist/domain/validate.js +29 -0
- package/dist/domain/validate.js.map +1 -0
- package/dist/drafts/store.d.ts +62 -0
- package/dist/drafts/store.d.ts.map +1 -0
- package/dist/drafts/store.js +119 -0
- package/dist/drafts/store.js.map +1 -0
- package/dist/httpMain.d.ts +3 -0
- package/dist/httpMain.d.ts.map +1 -0
- package/dist/httpMain.js +22 -0
- package/dist/httpMain.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/initAgents.d.ts +2 -0
- package/dist/initAgents.d.ts.map +1 -0
- package/dist/initAgents.js +178 -0
- package/dist/initAgents.js.map +1 -0
- package/dist/log.d.ts +14 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +14 -0
- package/dist/log.js.map +1 -0
- package/dist/mcpResult.d.ts +20 -0
- package/dist/mcpResult.d.ts.map +1 -0
- package/dist/mcpResult.js +8 -0
- package/dist/mcpResult.js.map +1 -0
- package/dist/mount.d.ts +12 -0
- package/dist/mount.d.ts.map +1 -0
- package/dist/mount.js +126 -0
- package/dist/mount.js.map +1 -0
- package/dist/projectStore.d.ts +5 -0
- package/dist/projectStore.d.ts.map +1 -0
- package/dist/projectStore.js +60 -0
- package/dist/projectStore.js.map +1 -0
- package/dist/requestConnection.d.ts +20 -0
- package/dist/requestConnection.d.ts.map +1 -0
- package/dist/requestConnection.js +44 -0
- package/dist/requestConnection.js.map +1 -0
- package/dist/serve.d.ts +10 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +37 -0
- package/dist/serve.js.map +1 -0
- package/dist/server.d.ts +29 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +76 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/connection.tools.d.ts +16 -0
- package/dist/tools/connection.tools.d.ts.map +1 -0
- package/dist/tools/connection.tools.js +106 -0
- package/dist/tools/connection.tools.js.map +1 -0
- package/dist/tools/discovery.tools.d.ts +16 -0
- package/dist/tools/discovery.tools.d.ts.map +1 -0
- package/dist/tools/discovery.tools.js +369 -0
- package/dist/tools/discovery.tools.js.map +1 -0
- package/dist/tools/markdown.d.ts +13 -0
- package/dist/tools/markdown.d.ts.map +1 -0
- package/dist/tools/markdown.js +65 -0
- package/dist/tools/markdown.js.map +1 -0
- package/dist/tools/recording.tools.d.ts +16 -0
- package/dist/tools/recording.tools.d.ts.map +1 -0
- package/dist/tools/recording.tools.js +378 -0
- package/dist/tools/recording.tools.js.map +1 -0
- package/dist/tools/run.tools.d.ts +13 -0
- package/dist/tools/run.tools.d.ts.map +1 -0
- package/dist/tools/run.tools.js +230 -0
- package/dist/tools/run.tools.js.map +1 -0
- package/dist/tools/schemas.d.ts +560 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +112 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/testcase.tools.d.ts +50 -0
- package/dist/tools/testcase.tools.d.ts.map +1 -0
- package/dist/tools/testcase.tools.js +384 -0
- package/dist/tools/testcase.tools.js.map +1 -0
- package/dist/vendor/actionSignatures.d.ts +117 -0
- package/dist/vendor/actionSignatures.d.ts.map +1 -0
- package/dist/vendor/actionSignatures.js +420 -0
- package/dist/vendor/actionSignatures.js.map +1 -0
- package/dist/vendor/logger.d.ts +38 -0
- package/dist/vendor/logger.d.ts.map +1 -0
- package/dist/vendor/logger.js +174 -0
- package/dist/vendor/logger.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple logger utility for Walnut Agent
|
|
3
|
+
* Logs to console AND to a file for easy review.
|
|
4
|
+
*
|
|
5
|
+
* Log file location (in order of priority):
|
|
6
|
+
* 1. WALNUT_LOG_FILE env var (absolute or relative path)
|
|
7
|
+
* 2. Default: ./logs/walnut-agent.log (relative to process.cwd())
|
|
8
|
+
*
|
|
9
|
+
* The log file is created automatically. Logs are appended on each run.
|
|
10
|
+
*/
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
// --- Credential redaction (module-level singleton) ---
|
|
14
|
+
let _credentialValues = new Set();
|
|
15
|
+
/**
|
|
16
|
+
* Register credential values that should be redacted from all log output.
|
|
17
|
+
* Call this after extracting credentials from tool calls.
|
|
18
|
+
*/
|
|
19
|
+
export function setCredentialValues(values) {
|
|
20
|
+
_credentialValues = values;
|
|
21
|
+
}
|
|
22
|
+
/** Replace any tracked credential values with ***REDACTED*** in a log line. */
|
|
23
|
+
function redactCredentials(line) {
|
|
24
|
+
if (_credentialValues.size === 0)
|
|
25
|
+
return line;
|
|
26
|
+
let result = line;
|
|
27
|
+
for (const cred of _credentialValues) {
|
|
28
|
+
if (cred && cred.length > 0) {
|
|
29
|
+
const escaped = cred.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
30
|
+
result = result.replace(new RegExp(escaped, 'g'), '***REDACTED***');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
// --- File logging setup (singleton) ---
|
|
36
|
+
let logFilePath = null;
|
|
37
|
+
let logFileReady = false;
|
|
38
|
+
function ensureLogFile() {
|
|
39
|
+
if (logFileReady)
|
|
40
|
+
return logFilePath;
|
|
41
|
+
logFileReady = true;
|
|
42
|
+
try {
|
|
43
|
+
const envPath = process.env['WALNUT_LOG_FILE'];
|
|
44
|
+
logFilePath = envPath || path.join(process.cwd(), 'logs', 'walnut-agent.log');
|
|
45
|
+
// Ensure directory exists
|
|
46
|
+
const dir = path.dirname(logFilePath);
|
|
47
|
+
if (!fs.existsSync(dir)) {
|
|
48
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
// Write a session separator on startup
|
|
51
|
+
const separator = `\n${'='.repeat(80)}\n Walnut Agent Log — Session started at ${new Date().toISOString()}\n${'='.repeat(80)}\n\n`;
|
|
52
|
+
fs.appendFileSync(logFilePath, separator, 'utf8');
|
|
53
|
+
return logFilePath;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// If file logging fails (e.g., permissions), fall back to console-only
|
|
57
|
+
logFilePath = null;
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function writeToFile(line) {
|
|
62
|
+
const filePath = ensureLogFile();
|
|
63
|
+
if (!filePath)
|
|
64
|
+
return;
|
|
65
|
+
try {
|
|
66
|
+
fs.appendFileSync(filePath, line + '\n', 'utf8');
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Silently ignore file write errors — console logging still works
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export function createLogger(namespace) {
|
|
73
|
+
const timestamp = () => new Date().toISOString();
|
|
74
|
+
// Format arguments for better logging
|
|
75
|
+
const formatArgs = (...args) => {
|
|
76
|
+
return args.map(arg => {
|
|
77
|
+
if (arg instanceof Error) {
|
|
78
|
+
return `${arg.message}\n${arg.stack}`;
|
|
79
|
+
}
|
|
80
|
+
if (typeof arg === 'object') {
|
|
81
|
+
try {
|
|
82
|
+
return JSON.stringify(arg, null, 2);
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
return String(arg);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return arg;
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
const formatLine = (level, message, ...args) => {
|
|
92
|
+
const parts = [message, ...formatArgs(...args)];
|
|
93
|
+
return `[${timestamp()}] [${namespace}] ${level}: ${parts.join(' ')}`;
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
info: (message, ...args) => {
|
|
97
|
+
const line = redactCredentials(formatLine('INFO', message, ...args));
|
|
98
|
+
console.log(line);
|
|
99
|
+
writeToFile(line);
|
|
100
|
+
},
|
|
101
|
+
error: (message, ...args) => {
|
|
102
|
+
const line = redactCredentials(formatLine('ERROR', message, ...args));
|
|
103
|
+
console.error(line);
|
|
104
|
+
writeToFile(line);
|
|
105
|
+
},
|
|
106
|
+
warn: (message, ...args) => {
|
|
107
|
+
const line = redactCredentials(formatLine('WARN', message, ...args));
|
|
108
|
+
console.warn(line);
|
|
109
|
+
writeToFile(line);
|
|
110
|
+
},
|
|
111
|
+
debug: (message, ...args) => {
|
|
112
|
+
if (process.env['DEBUG']) {
|
|
113
|
+
const line = redactCredentials(formatLine('DEBUG', message, ...args));
|
|
114
|
+
console.debug(line);
|
|
115
|
+
writeToFile(line);
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Returns the path to the current log file (or null if file logging is disabled) */
|
|
121
|
+
export function getLogFilePath() {
|
|
122
|
+
return ensureLogFile();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Current byte size of the log file (0 if file logging is off). Snapshot this at
|
|
126
|
+
* execution start, then pass it to readLogSince() at completion to capture exactly
|
|
127
|
+
* the verbose lines written during that execution — used to ship cloud-runner
|
|
128
|
+
* per-execution debug logs to S3 (local desktop already keeps the same file on disk).
|
|
129
|
+
*/
|
|
130
|
+
export function currentLogOffset() {
|
|
131
|
+
const filePath = ensureLogFile();
|
|
132
|
+
if (!filePath)
|
|
133
|
+
return 0;
|
|
134
|
+
try {
|
|
135
|
+
return fs.statSync(filePath).size;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Read the log file from `sinceOffset` to end, capped to the last `maxBytes` (keeps
|
|
143
|
+
* the tail — the most recent, most relevant lines — if the slice is huge). Returns
|
|
144
|
+
* '' when file logging is off or on any read error (best-effort — never throws).
|
|
145
|
+
*/
|
|
146
|
+
export function readLogSince(sinceOffset, maxBytes = 2 * 1024 * 1024) {
|
|
147
|
+
const filePath = ensureLogFile();
|
|
148
|
+
if (!filePath)
|
|
149
|
+
return '';
|
|
150
|
+
try {
|
|
151
|
+
const size = fs.statSync(filePath).size;
|
|
152
|
+
let start = Math.max(0, Math.min(sinceOffset, size));
|
|
153
|
+
let length = size - start;
|
|
154
|
+
if (length <= 0)
|
|
155
|
+
return '';
|
|
156
|
+
if (length > maxBytes) {
|
|
157
|
+
start = size - maxBytes; // keep the tail
|
|
158
|
+
length = maxBytes;
|
|
159
|
+
}
|
|
160
|
+
const fd = fs.openSync(filePath, 'r');
|
|
161
|
+
try {
|
|
162
|
+
const buf = Buffer.alloc(length);
|
|
163
|
+
fs.readSync(fd, buf, 0, length, start);
|
|
164
|
+
return buf.toString('utf8');
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
fs.closeSync(fd);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return '';
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/vendor/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "common-qa-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Common QA MCP — one product-neutral MCP that routes test-case lifecycle requests to Walnut or SimplifyQA for any AI client. Launch over stdio via npx; install the Walnut QA agent with `init-agents`.",
|
|
6
|
+
"bin": {
|
|
7
|
+
"common-qa-mcp": "dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "dist/server.js",
|
|
10
|
+
"types": "dist/server.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": "Walnut Team",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://gitlab.devopsark.com/walnut/common-mcp.git"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"mcp",
|
|
22
|
+
"model-context-protocol",
|
|
23
|
+
"qa",
|
|
24
|
+
"testing",
|
|
25
|
+
"test-automation",
|
|
26
|
+
"test-cases",
|
|
27
|
+
"walnut",
|
|
28
|
+
"simplifyqa",
|
|
29
|
+
"ai-agent"
|
|
30
|
+
],
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc",
|
|
36
|
+
"start": "node dist/cli.js",
|
|
37
|
+
"start:http": "node dist/httpMain.js",
|
|
38
|
+
"dev": "tsx src/cli.ts",
|
|
39
|
+
"dev:http": "tsx watch src/httpMain.ts",
|
|
40
|
+
"test": "jest",
|
|
41
|
+
"prepublishOnly": "npm run build"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
45
|
+
"express": "^5.1.0",
|
|
46
|
+
"zod": "^4.3.6"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/express": "^5.0.4",
|
|
50
|
+
"@types/jest": "^30.0.0",
|
|
51
|
+
"@types/node": "^20.19.42",
|
|
52
|
+
"jest": "^30.3.0",
|
|
53
|
+
"ts-jest": "^29.4.9",
|
|
54
|
+
"tsx": "^4.7.0",
|
|
55
|
+
"typescript": "^5.4.2"
|
|
56
|
+
}
|
|
57
|
+
}
|