@almanak/mcp-server 0.1.13 → 0.1.15
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/client.d.ts +12 -3
- package/dist/client.js +8 -8
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.js +26 -6
- package/dist/index.js.map +1 -1
- package/dist/testing/__tests__/controller-client.test.d.ts +9 -0
- package/dist/testing/__tests__/controller-client.test.js +151 -0
- package/dist/testing/__tests__/controller-client.test.js.map +1 -0
- package/dist/testing/__tests__/runner.test.d.ts +11 -0
- package/dist/testing/__tests__/runner.test.js +126 -0
- package/dist/testing/__tests__/runner.test.js.map +1 -0
- package/dist/testing/controller-client.d.ts +40 -0
- package/dist/testing/controller-client.js +109 -0
- package/dist/testing/controller-client.js.map +1 -0
- package/dist/testing/runner.d.ts +60 -0
- package/dist/testing/runner.js +472 -0
- package/dist/testing/runner.js.map +1 -0
- package/dist/tools.d.ts +12 -1
- package/dist/tools.js +130 -28
- package/dist/tools.js.map +1 -1
- package/package.json +3 -2
package/dist/client.d.ts
CHANGED
|
@@ -24,13 +24,22 @@ export declare class PlatformClient {
|
|
|
24
24
|
config_overrides?: Record<string, unknown>;
|
|
25
25
|
}): Promise<any>;
|
|
26
26
|
getAgentState(agentId: string): Promise<any>;
|
|
27
|
-
pauseAgent(agentId: string): Promise<any>;
|
|
28
|
-
resumeAgent(agentId: string): Promise<any>;
|
|
29
27
|
stopAgent(agentId: string): Promise<any>;
|
|
30
28
|
emergencyStopAgent(agentId: string): Promise<any>;
|
|
31
29
|
terminateAgent(agentId: string): Promise<any>;
|
|
32
30
|
restartAgent(agentId: string): Promise<any>;
|
|
33
|
-
|
|
31
|
+
previewRedeployAgent(body: {
|
|
32
|
+
agentId: string;
|
|
33
|
+
github_ref?: string;
|
|
34
|
+
github_ref_type?: 'branch' | 'tag' | 'commit';
|
|
35
|
+
config_json?: Record<string, unknown>;
|
|
36
|
+
}): Promise<any>;
|
|
37
|
+
redeployAgent(body: {
|
|
38
|
+
agentId: string;
|
|
39
|
+
github_ref?: string;
|
|
40
|
+
github_ref_type?: 'branch' | 'tag' | 'commit';
|
|
41
|
+
config_json?: Record<string, unknown>;
|
|
42
|
+
}): Promise<any>;
|
|
34
43
|
closeAgent(agentId: string): Promise<any>;
|
|
35
44
|
getAgentLogs(body: {
|
|
36
45
|
agentId: string;
|
package/dist/client.js
CHANGED
|
@@ -58,12 +58,9 @@ class PlatformClient {
|
|
|
58
58
|
async getAgentState(agentId) {
|
|
59
59
|
return this.request({ method: 'GET', path: `/v2/agent/${this.seg(agentId)}/state` });
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
async resumeAgent(agentId) {
|
|
65
|
-
return this.request({ method: 'POST', path: '/v2/agent/resume', body: { agentId } });
|
|
66
|
-
}
|
|
61
|
+
// VIB-4281: pauseAgent / resumeAgent retired. /v2/agent/pause and
|
|
62
|
+
// /v2/agent/resume return 410 Gone. Use stopAgent (teardown) / terminateAgent
|
|
63
|
+
// (kill pod, leave positions) / restartAgent for the equivalent flows.
|
|
67
64
|
async stopAgent(agentId) {
|
|
68
65
|
return this.request({ method: 'POST', path: '/v2/agent/stop', body: { agentId } });
|
|
69
66
|
}
|
|
@@ -76,8 +73,11 @@ class PlatformClient {
|
|
|
76
73
|
async restartAgent(agentId) {
|
|
77
74
|
return this.request({ method: 'POST', path: '/v2/agent/restart', body: { agentId } });
|
|
78
75
|
}
|
|
79
|
-
async
|
|
80
|
-
return this.request({ method: 'POST', path: '/v2/agent/redeploy', body
|
|
76
|
+
async previewRedeployAgent(body) {
|
|
77
|
+
return this.request({ method: 'POST', path: '/v2/agent/redeploy/preview', body });
|
|
78
|
+
}
|
|
79
|
+
async redeployAgent(body) {
|
|
80
|
+
return this.request({ method: 'POST', path: '/v2/agent/redeploy', body });
|
|
81
81
|
}
|
|
82
82
|
async closeAgent(agentId) {
|
|
83
83
|
return this.request({ method: 'POST', path: '/v2/agent/close', body: { agentId } });
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,16 +12,21 @@
|
|
|
12
12
|
* wallets - Wallet listing, positions, role verification
|
|
13
13
|
* strategies - Strategy linking, validation, metadata
|
|
14
14
|
* edge - Edge signals and opportunities (planned)
|
|
15
|
+
* testing - run_test: orchestrate the SDK test ladder via the
|
|
16
|
+
* test-controller sidecar (localhost)
|
|
15
17
|
* all - All available tools (default)
|
|
16
18
|
*
|
|
17
19
|
* Configuration via environment variables:
|
|
18
|
-
* ALMANAK_PLATFORM_URL
|
|
19
|
-
* ALMANAK_PLATFORM_TOKEN
|
|
20
|
-
* ALMANAK_REQUEST_TIMEOUT
|
|
20
|
+
* ALMANAK_PLATFORM_URL - Platform backend URL (default: https://api.almanak.co/v1/api)
|
|
21
|
+
* ALMANAK_PLATFORM_TOKEN - Bearer token for authentication (required)
|
|
22
|
+
* ALMANAK_REQUEST_TIMEOUT - Request timeout in ms (default: 30000)
|
|
23
|
+
* ALMANAK_TEST_CONTROLLER_URL - Test-controller sidecar URL (default: http://127.0.0.1:9100)
|
|
24
|
+
* ALMANAK_TEST_CONTROLLER_TIMEOUT - Test-controller request timeout in ms (default: 120000)
|
|
21
25
|
*
|
|
22
26
|
* Examples:
|
|
23
27
|
* almanak-platform-mcp # all tools
|
|
24
28
|
* almanak-platform-mcp --mode agents,wallets # deploy/manage agents
|
|
25
29
|
* almanak-platform-mcp --mode strategies # browse and link repos
|
|
30
|
+
* almanak-platform-mcp --mode testing # run_test against test-controller
|
|
26
31
|
*/
|
|
27
32
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -13,23 +13,29 @@
|
|
|
13
13
|
* wallets - Wallet listing, positions, role verification
|
|
14
14
|
* strategies - Strategy linking, validation, metadata
|
|
15
15
|
* edge - Edge signals and opportunities (planned)
|
|
16
|
+
* testing - run_test: orchestrate the SDK test ladder via the
|
|
17
|
+
* test-controller sidecar (localhost)
|
|
16
18
|
* all - All available tools (default)
|
|
17
19
|
*
|
|
18
20
|
* Configuration via environment variables:
|
|
19
|
-
* ALMANAK_PLATFORM_URL
|
|
20
|
-
* ALMANAK_PLATFORM_TOKEN
|
|
21
|
-
* ALMANAK_REQUEST_TIMEOUT
|
|
21
|
+
* ALMANAK_PLATFORM_URL - Platform backend URL (default: https://api.almanak.co/v1/api)
|
|
22
|
+
* ALMANAK_PLATFORM_TOKEN - Bearer token for authentication (required)
|
|
23
|
+
* ALMANAK_REQUEST_TIMEOUT - Request timeout in ms (default: 30000)
|
|
24
|
+
* ALMANAK_TEST_CONTROLLER_URL - Test-controller sidecar URL (default: http://127.0.0.1:9100)
|
|
25
|
+
* ALMANAK_TEST_CONTROLLER_TIMEOUT - Test-controller request timeout in ms (default: 120000)
|
|
22
26
|
*
|
|
23
27
|
* Examples:
|
|
24
28
|
* almanak-platform-mcp # all tools
|
|
25
29
|
* almanak-platform-mcp --mode agents,wallets # deploy/manage agents
|
|
26
30
|
* almanak-platform-mcp --mode strategies # browse and link repos
|
|
31
|
+
* almanak-platform-mcp --mode testing # run_test against test-controller
|
|
27
32
|
*/
|
|
28
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
34
|
const server_1 = require("./server");
|
|
30
35
|
const client_1 = require("./client");
|
|
31
36
|
const tools_1 = require("./tools");
|
|
32
|
-
const
|
|
37
|
+
const controller_client_1 = require("./testing/controller-client");
|
|
38
|
+
const VALID_MODES = new Set(['agents', 'wallets', 'strategies', 'edge', 'testing', 'all']);
|
|
33
39
|
function log(msg) {
|
|
34
40
|
process.stderr.write(`[almanak-mcp] ${msg}\n`);
|
|
35
41
|
}
|
|
@@ -50,7 +56,7 @@ function parseModes(args) {
|
|
|
50
56
|
return modes.length > 0 ? modes : ['all'];
|
|
51
57
|
}
|
|
52
58
|
function main() {
|
|
53
|
-
var _a, _b, _c;
|
|
59
|
+
var _a, _b, _c, _d, _e;
|
|
54
60
|
const modes = parseModes(process.argv.slice(2));
|
|
55
61
|
const baseUrl = (_a = process.env.ALMANAK_PLATFORM_URL) !== null && _a !== void 0 ? _a : 'https://api.almanak.co/v1/api';
|
|
56
62
|
const token = process.env.ALMANAK_PLATFORM_TOKEN;
|
|
@@ -60,8 +66,22 @@ function main() {
|
|
|
60
66
|
process.exit(1);
|
|
61
67
|
}
|
|
62
68
|
const disabledTools = ((_c = process.env.ALMANAK_DISABLED_TOOLS) !== null && _c !== void 0 ? _c : '').split(',').map((s) => s.trim()).filter(Boolean);
|
|
69
|
+
// Wire the test-controller client only when the ``testing`` mode is requested.
|
|
70
|
+
// Idle controllers cost nothing to construct but the env-var noise + log lines
|
|
71
|
+
// are confusing when the mode isn't in play.
|
|
72
|
+
const testingEnabled = modes.includes('testing') || modes.includes('all');
|
|
73
|
+
let testController = null;
|
|
74
|
+
if (testingEnabled) {
|
|
75
|
+
const controllerUrl = (_d = process.env.ALMANAK_TEST_CONTROLLER_URL) !== null && _d !== void 0 ? _d : 'http://127.0.0.1:9100';
|
|
76
|
+
const controllerTimeout = parseInt((_e = process.env.ALMANAK_TEST_CONTROLLER_TIMEOUT) !== null && _e !== void 0 ? _e : '120000', 10);
|
|
77
|
+
testController = new controller_client_1.TestControllerClient({
|
|
78
|
+
baseUrl: controllerUrl,
|
|
79
|
+
timeoutMs: controllerTimeout,
|
|
80
|
+
});
|
|
81
|
+
log(`Test controller: ${controllerUrl} (timeout ${controllerTimeout}ms)`);
|
|
82
|
+
}
|
|
63
83
|
const client = new client_1.PlatformClient({ baseUrl, token, timeout });
|
|
64
|
-
const handler = new tools_1.PlatformToolHandler(client, { modes, disabledTools });
|
|
84
|
+
const handler = new tools_1.PlatformToolHandler(client, { modes, disabledTools, testController });
|
|
65
85
|
const server = new server_1.McpStdioServer(handler);
|
|
66
86
|
const modeLabel = modes.includes('all') ? 'all' : modes.join(',');
|
|
67
87
|
log(`Starting MCP server (${handler.listTools().length} tools, mode: ${modeLabel})`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for the test-controller HTTP client.
|
|
3
|
+
*
|
|
4
|
+
* Spins up a tiny ``node:http`` server bound to an ephemeral port so the
|
|
5
|
+
* client's request/response handling is exercised against real sockets
|
|
6
|
+
* (no mocking the transport layer). Keeps the package zero-dep — the
|
|
7
|
+
* production controller-client uses only Node stdlib too.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for the test-controller HTTP client.
|
|
4
|
+
*
|
|
5
|
+
* Spins up a tiny ``node:http`` server bound to an ephemeral port so the
|
|
6
|
+
* client's request/response handling is exercised against real sockets
|
|
7
|
+
* (no mocking the transport layer). Keeps the package zero-dep — the
|
|
8
|
+
* production controller-client uses only Node stdlib too.
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
44
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
|
+
};
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
48
|
+
const http = __importStar(require("node:http"));
|
|
49
|
+
const node_test_1 = require("node:test");
|
|
50
|
+
const controller_client_1 = require("../controller-client");
|
|
51
|
+
let server;
|
|
52
|
+
let port;
|
|
53
|
+
let currentHandler = { status: 200, body: { ok: true } };
|
|
54
|
+
let lastRequest = null;
|
|
55
|
+
(0, node_test_1.before)(async () => {
|
|
56
|
+
server = http.createServer((req, res) => {
|
|
57
|
+
let chunks = [];
|
|
58
|
+
req.on('data', (c) => chunks.push(c));
|
|
59
|
+
req.on('end', () => {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
lastRequest = {
|
|
62
|
+
method: (_a = req.method) !== null && _a !== void 0 ? _a : '',
|
|
63
|
+
path: (_b = req.url) !== null && _b !== void 0 ? _b : '',
|
|
64
|
+
body: Buffer.concat(chunks).toString('utf-8'),
|
|
65
|
+
};
|
|
66
|
+
const send = () => {
|
|
67
|
+
res.writeHead(currentHandler.status, { 'Content-Type': 'application/json' });
|
|
68
|
+
res.end(JSON.stringify(currentHandler.body));
|
|
69
|
+
};
|
|
70
|
+
if (currentHandler.delayMs && currentHandler.delayMs > 0) {
|
|
71
|
+
setTimeout(send, currentHandler.delayMs);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
send();
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
await new Promise((resolve) => server.listen(0, '127.0.0.1', () => resolve()));
|
|
79
|
+
const addr = server.address();
|
|
80
|
+
if (addr === null || typeof addr === 'string')
|
|
81
|
+
throw new Error('server.address() returned unexpected value');
|
|
82
|
+
port = addr.port;
|
|
83
|
+
});
|
|
84
|
+
(0, node_test_1.after)(async () => {
|
|
85
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
86
|
+
});
|
|
87
|
+
function client(timeoutMs = 5000) {
|
|
88
|
+
return new controller_client_1.TestControllerClient({ baseUrl: `http://127.0.0.1:${port}`, timeoutMs });
|
|
89
|
+
}
|
|
90
|
+
(0, node_test_1.describe)('TestControllerClient', () => {
|
|
91
|
+
(0, node_test_1.test)('GET /health parses JSON response', async () => {
|
|
92
|
+
currentHandler = { status: 200, body: { ok: true } };
|
|
93
|
+
const result = await client().health();
|
|
94
|
+
strict_1.default.deepEqual(result, { ok: true });
|
|
95
|
+
strict_1.default.equal(lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.method, 'GET');
|
|
96
|
+
strict_1.default.equal(lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.path, '/health');
|
|
97
|
+
});
|
|
98
|
+
(0, node_test_1.test)('POST /start_gateway sends body and parses port back', async () => {
|
|
99
|
+
var _a;
|
|
100
|
+
currentHandler = { status: 200, body: { port: 54321, started_at_unix: 1234.5 } };
|
|
101
|
+
const result = await client().startGateway('/tmp/workspace');
|
|
102
|
+
strict_1.default.equal(result.port, 54321);
|
|
103
|
+
strict_1.default.equal(result.started_at_unix, 1234.5);
|
|
104
|
+
strict_1.default.equal(lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.method, 'POST');
|
|
105
|
+
strict_1.default.equal(lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.path, '/start_gateway');
|
|
106
|
+
strict_1.default.deepEqual(JSON.parse((_a = lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.body) !== null && _a !== void 0 ? _a : '{}'), { workspace_path: '/tmp/workspace' });
|
|
107
|
+
});
|
|
108
|
+
(0, node_test_1.test)('POST /stop_gateway returns stopped+shutdown_ms', async () => {
|
|
109
|
+
currentHandler = { status: 200, body: { stopped: true, shutdown_ms: 1234.5 } };
|
|
110
|
+
const result = await client().stopGateway();
|
|
111
|
+
strict_1.default.equal(result.stopped, true);
|
|
112
|
+
strict_1.default.equal(result.shutdown_ms, 1234.5);
|
|
113
|
+
});
|
|
114
|
+
(0, node_test_1.test)('non-2xx status raises with body detail in message', async () => {
|
|
115
|
+
currentHandler = { status: 409, body: { detail: 'gateway already running' } };
|
|
116
|
+
await strict_1.default.rejects(client().startGateway('/tmp/x'), /409/);
|
|
117
|
+
await strict_1.default.rejects(client().startGateway('/tmp/x'), /gateway already running/);
|
|
118
|
+
});
|
|
119
|
+
(0, node_test_1.test)('500 with no parsable detail still produces an informative error', async () => {
|
|
120
|
+
currentHandler = { status: 500, body: { error: 'internal kaboom' } };
|
|
121
|
+
await strict_1.default.rejects(client().startGateway('/tmp/x'), /500/);
|
|
122
|
+
});
|
|
123
|
+
(0, node_test_1.test)('request timeout surfaces a clear error', async () => {
|
|
124
|
+
// Server delays 200ms; client times out after 50ms.
|
|
125
|
+
currentHandler = { status: 200, body: { ok: true }, delayMs: 200 };
|
|
126
|
+
await strict_1.default.rejects(client(50).health(), /timed out after 50ms/);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
(0, node_test_1.describe)('TestControllerClient — invalid responses', () => {
|
|
130
|
+
(0, node_test_1.test)('non-JSON response surfaces as a parse error', async () => {
|
|
131
|
+
// Override the handler for one call: write raw HTML instead of JSON.
|
|
132
|
+
const localServer = http.createServer((_req, res) => {
|
|
133
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
134
|
+
res.end('<html>not json</html>');
|
|
135
|
+
});
|
|
136
|
+
await new Promise((resolve) => localServer.listen(0, '127.0.0.1', () => resolve()));
|
|
137
|
+
try {
|
|
138
|
+
const addr = localServer.address();
|
|
139
|
+
if (addr === null || typeof addr === 'string')
|
|
140
|
+
throw new Error('bad addr');
|
|
141
|
+
const c = new controller_client_1.TestControllerClient({ baseUrl: `http://127.0.0.1:${addr.port}`, timeoutMs: 5000 });
|
|
142
|
+
await strict_1.default.rejects(c.health(), /non-JSON/);
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
// Always close the server, even if the assertion above fails. Without
|
|
146
|
+
// this the test leaks a listening socket on assertion failure.
|
|
147
|
+
await new Promise((resolve) => localServer.close(() => resolve()));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=controller-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-client.test.js","sourceRoot":"","sources":["../../../src/testing/__tests__/controller-client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for the MCP test-runner.
|
|
3
|
+
*
|
|
4
|
+
* Run via ``node --test`` on the compiled JS — keeps the package zero-dep
|
|
5
|
+
* (no jest/vitest/etc.). Covers the helpers and the runTestLadder
|
|
6
|
+
* fail-fast + path-validation branches that the reviewers flagged in
|
|
7
|
+
* platform PR #668. The on-chain ``smoke``/``lifecycle`` steps need a real
|
|
8
|
+
* test-controller running (smoke-tested separately), so we don't drive
|
|
9
|
+
* them here.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for the MCP test-runner.
|
|
4
|
+
*
|
|
5
|
+
* Run via ``node --test`` on the compiled JS — keeps the package zero-dep
|
|
6
|
+
* (no jest/vitest/etc.). Covers the helpers and the runTestLadder
|
|
7
|
+
* fail-fast + path-validation branches that the reviewers flagged in
|
|
8
|
+
* platform PR #668. The on-chain ``smoke``/``lifecycle`` steps need a real
|
|
9
|
+
* test-controller running (smoke-tested separately), so we don't drive
|
|
10
|
+
* them here.
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
17
|
+
const node_fs_1 = require("node:fs");
|
|
18
|
+
const node_os_1 = require("node:os");
|
|
19
|
+
const node_path_1 = require("node:path");
|
|
20
|
+
const node_test_1 = require("node:test");
|
|
21
|
+
const runner_1 = require("../runner");
|
|
22
|
+
// Build a minimal workspace dir: strategy.py + config.json present, no tests/.
|
|
23
|
+
function makeWorkspace() {
|
|
24
|
+
const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'mcp-runner-test-'));
|
|
25
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'strategy.py'), '# placeholder\n');
|
|
26
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'config.json'), JSON.stringify({ chain: 'base' }));
|
|
27
|
+
return dir;
|
|
28
|
+
}
|
|
29
|
+
// Controller stub that doesn't actually talk to anything. Tests that reach
|
|
30
|
+
// the gateway-spawn path can replace these to either succeed or fail.
|
|
31
|
+
function stubController() {
|
|
32
|
+
return {
|
|
33
|
+
startGateway: async () => {
|
|
34
|
+
throw new Error('controller stub: startGateway should not be reached in fail-fast paths');
|
|
35
|
+
},
|
|
36
|
+
stopGateway: async () => ({ stopped: false, shutdown_ms: null }),
|
|
37
|
+
health: async () => ({ ok: true }),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
(0, node_test_1.describe)('tail', () => {
|
|
41
|
+
(0, node_test_1.test)('returns input unchanged when below limit', () => {
|
|
42
|
+
strict_1.default.equal((0, runner_1.tail)('hello'), 'hello');
|
|
43
|
+
});
|
|
44
|
+
(0, node_test_1.test)('returns empty string for empty input', () => {
|
|
45
|
+
strict_1.default.equal((0, runner_1.tail)(''), '');
|
|
46
|
+
});
|
|
47
|
+
(0, node_test_1.test)('truncates from the start when over char limit', () => {
|
|
48
|
+
const s = 'x'.repeat(10000);
|
|
49
|
+
const result = (0, runner_1.tail)(s, 100);
|
|
50
|
+
// Result includes the "truncated" marker + the last 100 chars.
|
|
51
|
+
strict_1.default.ok(result.includes('chars truncated'));
|
|
52
|
+
strict_1.default.ok(result.endsWith('x'.repeat(100)));
|
|
53
|
+
});
|
|
54
|
+
(0, node_test_1.test)('preserves the tail chars exactly at the boundary', () => {
|
|
55
|
+
const s = 'abcdefghij' + 'z'.repeat(50);
|
|
56
|
+
const result = (0, runner_1.tail)(s, 50);
|
|
57
|
+
// The trailing 50 chars must be intact.
|
|
58
|
+
strict_1.default.ok(result.endsWith('z'.repeat(50)));
|
|
59
|
+
});
|
|
60
|
+
(0, node_test_1.test)('does not corrupt multi-byte UTF-8 at the slice boundary', () => {
|
|
61
|
+
// 4-byte emoji at the boundary — Buffer-byte-slice would break this.
|
|
62
|
+
const s = 'a'.repeat(100) + '🚀' + 'b'.repeat(100);
|
|
63
|
+
const result = (0, runner_1.tail)(s, 102);
|
|
64
|
+
// The emoji + trailing b's land intact, no replacement chars.
|
|
65
|
+
strict_1.default.ok(result.endsWith('🚀' + 'b'.repeat(100)));
|
|
66
|
+
strict_1.default.ok(!result.includes('�'));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
(0, node_test_1.describe)('extractLastJsonObject', () => {
|
|
70
|
+
(0, node_test_1.test)('returns null on empty input', () => {
|
|
71
|
+
strict_1.default.equal((0, runner_1.extractLastJsonObject)(''), null);
|
|
72
|
+
});
|
|
73
|
+
(0, node_test_1.test)('returns null when no JSON object found', () => {
|
|
74
|
+
strict_1.default.equal((0, runner_1.extractLastJsonObject)('plain log line\nanother line\n'), null);
|
|
75
|
+
});
|
|
76
|
+
(0, node_test_1.test)('extracts a simple trailing JSON object', () => {
|
|
77
|
+
const text = 'setup line 1\nsetup line 2\n{"all_passed": true, "steps": 3}\n';
|
|
78
|
+
const result = (0, runner_1.extractLastJsonObject)(text);
|
|
79
|
+
strict_1.default.deepEqual(result, { all_passed: true, steps: 3 });
|
|
80
|
+
});
|
|
81
|
+
(0, node_test_1.test)('picks the LAST top-level object when multiple appear', () => {
|
|
82
|
+
const text = '{"old": 1}\nsome chatter\n{"new": 2}\n';
|
|
83
|
+
const result = (0, runner_1.extractLastJsonObject)(text);
|
|
84
|
+
strict_1.default.deepEqual(result, { new: 2 });
|
|
85
|
+
});
|
|
86
|
+
(0, node_test_1.test)('handles braces inside string fields without choking', () => {
|
|
87
|
+
const text = 'header\n{"message": "got { brace } in string", "ok": true}\n';
|
|
88
|
+
const result = (0, runner_1.extractLastJsonObject)(text);
|
|
89
|
+
strict_1.default.deepEqual(result, { message: 'got { brace } in string', ok: true });
|
|
90
|
+
});
|
|
91
|
+
(0, node_test_1.test)('returns null when the only top-level object is malformed', () => {
|
|
92
|
+
// Open-brace at line start but unclosed → decoder fails, returns null.
|
|
93
|
+
strict_1.default.equal((0, runner_1.extractLastJsonObject)('{not valid json'), null);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
(0, node_test_1.describe)('runTestLadder — input validation', () => {
|
|
97
|
+
(0, node_test_1.test)('throws on non-existent workspace_path', async () => {
|
|
98
|
+
await strict_1.default.rejects((0, runner_1.runTestLadder)({ workspacePath: '/nonexistent/path/12345' }, stubController()), /workspace_path is not a directory/);
|
|
99
|
+
});
|
|
100
|
+
(0, node_test_1.test)('throws when workspace is missing strategy.py', async () => {
|
|
101
|
+
const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'mcp-runner-no-strategy-'));
|
|
102
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'config.json'), '{}');
|
|
103
|
+
await strict_1.default.rejects((0, runner_1.runTestLadder)({ workspacePath: dir }, stubController()), /workspace missing strategy\.py/);
|
|
104
|
+
});
|
|
105
|
+
(0, node_test_1.test)('throws when workspace is missing config.json', async () => {
|
|
106
|
+
const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'mcp-runner-no-config-'));
|
|
107
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'strategy.py'), '');
|
|
108
|
+
await strict_1.default.rejects((0, runner_1.runTestLadder)({ workspacePath: dir }, stubController()), /workspace missing config\.json/);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
(0, node_test_1.describe)('runTestLadder — log_path validation', () => {
|
|
112
|
+
(0, node_test_1.test)('rejects absolute path outside workspace', async () => {
|
|
113
|
+
const ws = makeWorkspace();
|
|
114
|
+
await strict_1.default.rejects((0, runner_1.runTestLadder)({ workspacePath: ws, logPath: '/etc/passwd' }, stubController()), /log_path must be inside workspace_path/);
|
|
115
|
+
});
|
|
116
|
+
(0, node_test_1.test)('rejects relative path with .. traversal escaping workspace', async () => {
|
|
117
|
+
const ws = makeWorkspace();
|
|
118
|
+
await strict_1.default.rejects((0, runner_1.runTestLadder)({ workspacePath: ws, logPath: '../../etc/passwd' }, stubController()), /log_path must be inside workspace_path/);
|
|
119
|
+
});
|
|
120
|
+
(0, node_test_1.test)('rejects parent-dir absolute path', async () => {
|
|
121
|
+
const ws = makeWorkspace();
|
|
122
|
+
// Build a path that resolves outside but doesn't use the literal '..' prefix
|
|
123
|
+
await strict_1.default.rejects((0, runner_1.runTestLadder)({ workspacePath: ws, logPath: '/tmp/somewhere-else.log' }, stubController()), /log_path must be inside workspace_path/);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=runner.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../../src/testing/__tests__/runner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin HTTP client for the test-controller sidecar.
|
|
3
|
+
*
|
|
4
|
+
* The controller is a Python sidecar (see `almanak/test_controller/__main__.py`
|
|
5
|
+
* in the SDK repo) that lives in its own Cloud Run container, holds the
|
|
6
|
+
* privileged RPC env, and exposes ``/start_gateway`` + ``/stop_gateway`` over
|
|
7
|
+
* localhost. The MCP `run_test` tool talks to it from the worker container to
|
|
8
|
+
* spin up a fresh per-test gateway, run the SDK ladder, then tear it down.
|
|
9
|
+
*
|
|
10
|
+
* No external HTTP dep — uses Node's stdlib so this package stays zero-dep.
|
|
11
|
+
*/
|
|
12
|
+
export interface TestControllerConfig {
|
|
13
|
+
/** Base URL of the controller (default: ``http://127.0.0.1:9100``). */
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
/**
|
|
16
|
+
* Hard ceiling on each request. The controller's ``/start_gateway`` is the
|
|
17
|
+
* only one that blocks for a meaningful time (~5-10s warm, up to 60s cold);
|
|
18
|
+
* everything else is sub-second. 120s headroom covers worst-case cold-fork.
|
|
19
|
+
*/
|
|
20
|
+
timeoutMs: number;
|
|
21
|
+
}
|
|
22
|
+
export interface StartGatewayResponse {
|
|
23
|
+
port: number;
|
|
24
|
+
started_at_unix: number;
|
|
25
|
+
}
|
|
26
|
+
export interface StopGatewayResponse {
|
|
27
|
+
stopped: boolean;
|
|
28
|
+
shutdown_ms: number | null;
|
|
29
|
+
}
|
|
30
|
+
export declare class TestControllerClient {
|
|
31
|
+
private baseUrl;
|
|
32
|
+
private timeoutMs;
|
|
33
|
+
constructor(config: TestControllerConfig);
|
|
34
|
+
health(): Promise<{
|
|
35
|
+
ok: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
startGateway(workspacePath: string): Promise<StartGatewayResponse>;
|
|
38
|
+
stopGateway(): Promise<StopGatewayResponse>;
|
|
39
|
+
private request;
|
|
40
|
+
}
|