@aweave/cli-shared 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/dist/helpers/content.d.ts +11 -0
- package/dist/helpers/content.js +35 -0
- package/dist/helpers/content.js.map +1 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.js +10 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/output.d.ts +8 -0
- package/dist/helpers/output.js +38 -0
- package/dist/helpers/output.js.map +1 -0
- package/dist/http/client.d.ts +27 -0
- package/dist/http/client.js +104 -0
- package/dist/http/client.js.map +1 -0
- package/dist/http/index.d.ts +1 -0
- package/dist/http/index.js +7 -0
- package/dist/http/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/pagination.d.ts +9 -0
- package/dist/mcp/pagination.js +16 -0
- package/dist/mcp/pagination.js.map +1 -0
- package/dist/mcp/response.d.ts +66 -0
- package/dist/mcp/response.js +113 -0
- package/dist/mcp/response.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +19 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/pm2.d.ts +6 -0
- package/dist/services/pm2.js +78 -0
- package/dist/services/pm2.js.map +1 -0
- package/dist/services/process-manager.d.ts +37 -0
- package/dist/services/process-manager.js +260 -0
- package/dist/services/process-manager.js.map +1 -0
- package/package.json +19 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MCPResponse } from '../mcp/response';
|
|
2
|
+
export interface ContentInput {
|
|
3
|
+
file?: string;
|
|
4
|
+
content?: string;
|
|
5
|
+
stdin?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ContentResult {
|
|
8
|
+
content?: string;
|
|
9
|
+
error?: MCPResponse;
|
|
10
|
+
}
|
|
11
|
+
export declare function readContent(opts: ContentInput): Promise<ContentResult>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readContent = readContent;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const output_1 = require("./output");
|
|
6
|
+
async function readContent(opts) {
|
|
7
|
+
const sources = [opts.file, opts.content, opts.stdin].filter(Boolean).length;
|
|
8
|
+
if (sources === 0) {
|
|
9
|
+
return {
|
|
10
|
+
error: (0, output_1.errorResponse)('INVALID_INPUT', 'No content provided', 'Use --file, --content, or --stdin to provide content'),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
if (sources > 1) {
|
|
14
|
+
return {
|
|
15
|
+
error: (0, output_1.errorResponse)('INVALID_INPUT', 'Multiple content sources provided', 'Use only one of --file, --content, or --stdin'),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (opts.stdin) {
|
|
19
|
+
const chunks = [];
|
|
20
|
+
for await (const chunk of process.stdin) {
|
|
21
|
+
chunks.push(chunk);
|
|
22
|
+
}
|
|
23
|
+
return { content: Buffer.concat(chunks).toString('utf-8') };
|
|
24
|
+
}
|
|
25
|
+
if (opts.file) {
|
|
26
|
+
if (!(0, fs_1.existsSync)(opts.file)) {
|
|
27
|
+
return {
|
|
28
|
+
error: (0, output_1.errorResponse)('FILE_NOT_FOUND', `File not found: ${opts.file}`, 'Check the file path and try again'),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return { content: (0, fs_1.readFileSync)(opts.file, 'utf-8') };
|
|
32
|
+
}
|
|
33
|
+
return { content: opts.content ?? '' };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/helpers/content.ts"],"names":[],"mappings":";;AA4BA,kCA6CC;AAlED,2BAA8C;AAG9C,qCAAyC;AAkBlC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAE7E,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,KAAK,EAAE,IAAA,sBAAa,EAClB,eAAe,EACf,qBAAqB,EACrB,sDAAsD,CACvD;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,IAAA,sBAAa,EAClB,eAAe,EACf,mCAAmC,EACnC,+CAA+C,CAChD;SACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,KAAK,EAAE,IAAA,sBAAa,EAClB,gBAAgB,EAChB,mBAAmB,IAAI,CAAC,IAAI,EAAE,EAC9B,mCAAmC,CACpC;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAA,iBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.output = exports.handleServerError = exports.errorResponse = exports.readContent = void 0;
|
|
4
|
+
var content_1 = require("./content");
|
|
5
|
+
Object.defineProperty(exports, "readContent", { enumerable: true, get: function () { return content_1.readContent; } });
|
|
6
|
+
var output_1 = require("./output");
|
|
7
|
+
Object.defineProperty(exports, "errorResponse", { enumerable: true, get: function () { return output_1.errorResponse; } });
|
|
8
|
+
Object.defineProperty(exports, "handleServerError", { enumerable: true, get: function () { return output_1.handleServerError; } });
|
|
9
|
+
Object.defineProperty(exports, "output", { enumerable: true, get: function () { return output_1.output; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+E;AAA/B,sGAAA,WAAW,OAAA;AAC3D,mCAAoE;AAA3D,uGAAA,aAAa,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,gGAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MCPResponse } from '../mcp/response';
|
|
2
|
+
export declare function output(response: MCPResponse, format: string, readableContent?: boolean): void;
|
|
3
|
+
export declare function errorResponse(code: string, message: string, suggestion?: string): MCPResponse;
|
|
4
|
+
export declare function handleServerError(e: {
|
|
5
|
+
code: string;
|
|
6
|
+
message: string;
|
|
7
|
+
suggestion?: string;
|
|
8
|
+
}, format: string): never;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.output = output;
|
|
4
|
+
exports.errorResponse = errorResponse;
|
|
5
|
+
exports.handleServerError = handleServerError;
|
|
6
|
+
const response_1 = require("../mcp/response");
|
|
7
|
+
function output(response, format, readableContent = false) {
|
|
8
|
+
if (format === 'markdown') {
|
|
9
|
+
console.log(response.toMarkdown());
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
let json = response.toJSON();
|
|
13
|
+
if (readableContent) {
|
|
14
|
+
json = json.replace(/\\n/g, '\n').replace(/\\t/g, '\t');
|
|
15
|
+
}
|
|
16
|
+
console.log(json);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function errorResponse(code, message, suggestion) {
|
|
20
|
+
return new response_1.MCPResponse({
|
|
21
|
+
success: false,
|
|
22
|
+
error: new response_1.MCPError({ code, message, suggestion }),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function handleServerError(e, format) {
|
|
26
|
+
const exitCode = {
|
|
27
|
+
NOT_FOUND: 2,
|
|
28
|
+
DEBATE_NOT_FOUND: 2,
|
|
29
|
+
ARGUMENT_NOT_FOUND: 2,
|
|
30
|
+
INVALID_INPUT: 4,
|
|
31
|
+
ACTION_NOT_ALLOWED: 5,
|
|
32
|
+
AUTH_FAILED: 6,
|
|
33
|
+
FORBIDDEN: 6,
|
|
34
|
+
};
|
|
35
|
+
output(errorResponse(e.code, e.message, e.suggestion), format);
|
|
36
|
+
process.exit(exitCode[e.code] ?? 3);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/helpers/output.ts"],"names":[],"mappings":";;AAiBA,wBAgBC;AAKD,sCASC;AAKD,8CAgBC;AA9DD,8CAAwD;AAWxD,SAAgB,MAAM,CACpB,QAAqB,EACrB,MAAc,EACd,eAAe,GAAG,KAAK;IAEvB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,eAAe,EAAE,CAAC;YAGpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAKD,SAAgB,aAAa,CAC3B,IAAY,EACZ,OAAe,EACf,UAAmB;IAEnB,OAAO,IAAI,sBAAW,CAAC;QACrB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI,mBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACnD,CAAC,CAAC;AACL,CAAC;AAKD,SAAgB,iBAAiB,CAC/B,CAAyD,EACzD,MAAc;IAEd,MAAM,QAAQ,GAA2B;QACvC,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;QACrB,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare class HTTPClientError extends Error {
|
|
2
|
+
code: string;
|
|
3
|
+
suggestion?: string;
|
|
4
|
+
constructor(code: string, message: string, suggestion?: string);
|
|
5
|
+
}
|
|
6
|
+
export interface HTTPClientOptions {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
auth?: {
|
|
9
|
+
username: string;
|
|
10
|
+
password: string;
|
|
11
|
+
};
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class HTTPClient {
|
|
16
|
+
private baseUrl;
|
|
17
|
+
private headers;
|
|
18
|
+
private timeout;
|
|
19
|
+
constructor(options: HTTPClientOptions);
|
|
20
|
+
get(path: string, params?: Record<string, string>): Promise<Record<string, unknown>>;
|
|
21
|
+
post(path: string, body?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
22
|
+
put(path: string, body?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
23
|
+
delete(path: string): Promise<Record<string, unknown>>;
|
|
24
|
+
getUrl(absoluteUrl: string): Promise<Record<string, unknown>>;
|
|
25
|
+
private buildUrl;
|
|
26
|
+
private request;
|
|
27
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HTTPClient = exports.HTTPClientError = void 0;
|
|
4
|
+
class HTTPClientError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
suggestion;
|
|
7
|
+
constructor(code, message, suggestion) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'HTTPClientError';
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.suggestion = suggestion;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.HTTPClientError = HTTPClientError;
|
|
15
|
+
class HTTPClient {
|
|
16
|
+
baseUrl;
|
|
17
|
+
headers;
|
|
18
|
+
timeout;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, '');
|
|
21
|
+
this.headers = { 'Content-Type': 'application/json', ...options.headers };
|
|
22
|
+
this.timeout = options.timeout ?? 30_000;
|
|
23
|
+
if (options.auth) {
|
|
24
|
+
const encoded = Buffer.from(`${options.auth.username}:${options.auth.password}`).toString('base64');
|
|
25
|
+
this.headers['Authorization'] = `Basic ${encoded}`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async get(path, params) {
|
|
29
|
+
const url = this.buildUrl(path, params);
|
|
30
|
+
return this.request(url, { method: 'GET' });
|
|
31
|
+
}
|
|
32
|
+
async post(path, body) {
|
|
33
|
+
const url = this.buildUrl(path);
|
|
34
|
+
return this.request(url, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async put(path, body) {
|
|
40
|
+
const url = this.buildUrl(path);
|
|
41
|
+
return this.request(url, {
|
|
42
|
+
method: 'PUT',
|
|
43
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async delete(path) {
|
|
47
|
+
const url = this.buildUrl(path);
|
|
48
|
+
return this.request(url, { method: 'DELETE' });
|
|
49
|
+
}
|
|
50
|
+
async getUrl(absoluteUrl) {
|
|
51
|
+
return this.request(absoluteUrl, { method: 'GET' });
|
|
52
|
+
}
|
|
53
|
+
buildUrl(path, params) {
|
|
54
|
+
const url = path.startsWith('http')
|
|
55
|
+
? new URL(path)
|
|
56
|
+
: new URL(this.baseUrl + path);
|
|
57
|
+
if (params) {
|
|
58
|
+
for (const [k, v] of Object.entries(params)) {
|
|
59
|
+
url.searchParams.set(k, v);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return url.toString();
|
|
63
|
+
}
|
|
64
|
+
async request(url, init) {
|
|
65
|
+
const controller = new AbortController();
|
|
66
|
+
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
67
|
+
try {
|
|
68
|
+
const response = await fetch(url, {
|
|
69
|
+
...init,
|
|
70
|
+
headers: this.headers,
|
|
71
|
+
signal: controller.signal,
|
|
72
|
+
});
|
|
73
|
+
if (response.status === 401) {
|
|
74
|
+
throw new HTTPClientError('AUTH_FAILED', 'Authentication failed', 'Check your credentials (username/password or token)');
|
|
75
|
+
}
|
|
76
|
+
if (response.status === 403) {
|
|
77
|
+
throw new HTTPClientError('FORBIDDEN', 'Access denied', 'Check if you have the required permissions');
|
|
78
|
+
}
|
|
79
|
+
if (response.status === 404) {
|
|
80
|
+
throw new HTTPClientError('NOT_FOUND', 'Resource not found', 'Verify the resource ID/path is correct');
|
|
81
|
+
}
|
|
82
|
+
if (response.status >= 400) {
|
|
83
|
+
throw new HTTPClientError(`HTTP_${response.status}`, `Request failed: ${await response.text()}`);
|
|
84
|
+
}
|
|
85
|
+
if (response.status === 204) {
|
|
86
|
+
return {};
|
|
87
|
+
}
|
|
88
|
+
return (await response.json());
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
if (err instanceof HTTPClientError)
|
|
92
|
+
throw err;
|
|
93
|
+
if (err.name === 'AbortError') {
|
|
94
|
+
throw new HTTPClientError('TIMEOUT', `Request timed out after ${this.timeout}ms`);
|
|
95
|
+
}
|
|
96
|
+
throw new HTTPClientError('NETWORK_ERROR', `Network error: ${err.message}`);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
clearTimeout(timer);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.HTTPClient = HTTPClient;
|
|
104
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { HTTPClient, HTTPClientError, type HTTPClientOptions } from './client';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HTTPClientError = exports.HTTPClient = void 0;
|
|
4
|
+
var client_1 = require("./client");
|
|
5
|
+
Object.defineProperty(exports, "HTTPClient", { enumerable: true, get: function () { return client_1.HTTPClient; } });
|
|
6
|
+
Object.defineProperty(exports, "HTTPClientError", { enumerable: true, get: function () { return client_1.HTTPClientError; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;AAAA,mCAA+E;AAAtE,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ContentType, MCPContent, type MCPContentData, MCPError, type MCPErrorData, MCPResponse, type MCPResponseData, } from './mcp';
|
|
2
|
+
export { createPaginatedResponse } from './mcp';
|
|
3
|
+
export { HTTPClient, HTTPClientError, type HTTPClientOptions } from './http';
|
|
4
|
+
export { errorResponse, handleServerError, output } from './helpers';
|
|
5
|
+
export { type ContentInput, type ContentResult, readContent } from './helpers';
|
|
6
|
+
export { checkHealth, checkPm2Process, runCommand, startPm2, stopPm2, waitForHealthy, } from './services';
|
|
7
|
+
export { getLogFilePath, getServerStatus, readLogTail, resolveServerEntry, restartServer, type ServerState, type ServerStatus, startServer, stopServer, } from './services';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stopServer = exports.startServer = exports.restartServer = exports.resolveServerEntry = exports.readLogTail = exports.getServerStatus = exports.getLogFilePath = exports.waitForHealthy = exports.stopPm2 = exports.startPm2 = exports.runCommand = exports.checkPm2Process = exports.checkHealth = exports.readContent = exports.output = exports.handleServerError = exports.errorResponse = exports.HTTPClientError = exports.HTTPClient = exports.createPaginatedResponse = exports.MCPResponse = exports.MCPError = exports.MCPContent = exports.ContentType = void 0;
|
|
4
|
+
var mcp_1 = require("./mcp");
|
|
5
|
+
Object.defineProperty(exports, "ContentType", { enumerable: true, get: function () { return mcp_1.ContentType; } });
|
|
6
|
+
Object.defineProperty(exports, "MCPContent", { enumerable: true, get: function () { return mcp_1.MCPContent; } });
|
|
7
|
+
Object.defineProperty(exports, "MCPError", { enumerable: true, get: function () { return mcp_1.MCPError; } });
|
|
8
|
+
Object.defineProperty(exports, "MCPResponse", { enumerable: true, get: function () { return mcp_1.MCPResponse; } });
|
|
9
|
+
var mcp_2 = require("./mcp");
|
|
10
|
+
Object.defineProperty(exports, "createPaginatedResponse", { enumerable: true, get: function () { return mcp_2.createPaginatedResponse; } });
|
|
11
|
+
var http_1 = require("./http");
|
|
12
|
+
Object.defineProperty(exports, "HTTPClient", { enumerable: true, get: function () { return http_1.HTTPClient; } });
|
|
13
|
+
Object.defineProperty(exports, "HTTPClientError", { enumerable: true, get: function () { return http_1.HTTPClientError; } });
|
|
14
|
+
var helpers_1 = require("./helpers");
|
|
15
|
+
Object.defineProperty(exports, "errorResponse", { enumerable: true, get: function () { return helpers_1.errorResponse; } });
|
|
16
|
+
Object.defineProperty(exports, "handleServerError", { enumerable: true, get: function () { return helpers_1.handleServerError; } });
|
|
17
|
+
Object.defineProperty(exports, "output", { enumerable: true, get: function () { return helpers_1.output; } });
|
|
18
|
+
var helpers_2 = require("./helpers");
|
|
19
|
+
Object.defineProperty(exports, "readContent", { enumerable: true, get: function () { return helpers_2.readContent; } });
|
|
20
|
+
var services_1 = require("./services");
|
|
21
|
+
Object.defineProperty(exports, "checkHealth", { enumerable: true, get: function () { return services_1.checkHealth; } });
|
|
22
|
+
Object.defineProperty(exports, "checkPm2Process", { enumerable: true, get: function () { return services_1.checkPm2Process; } });
|
|
23
|
+
Object.defineProperty(exports, "runCommand", { enumerable: true, get: function () { return services_1.runCommand; } });
|
|
24
|
+
Object.defineProperty(exports, "startPm2", { enumerable: true, get: function () { return services_1.startPm2; } });
|
|
25
|
+
Object.defineProperty(exports, "stopPm2", { enumerable: true, get: function () { return services_1.stopPm2; } });
|
|
26
|
+
Object.defineProperty(exports, "waitForHealthy", { enumerable: true, get: function () { return services_1.waitForHealthy; } });
|
|
27
|
+
var services_2 = require("./services");
|
|
28
|
+
Object.defineProperty(exports, "getLogFilePath", { enumerable: true, get: function () { return services_2.getLogFilePath; } });
|
|
29
|
+
Object.defineProperty(exports, "getServerStatus", { enumerable: true, get: function () { return services_2.getServerStatus; } });
|
|
30
|
+
Object.defineProperty(exports, "readLogTail", { enumerable: true, get: function () { return services_2.readLogTail; } });
|
|
31
|
+
Object.defineProperty(exports, "resolveServerEntry", { enumerable: true, get: function () { return services_2.resolveServerEntry; } });
|
|
32
|
+
Object.defineProperty(exports, "restartServer", { enumerable: true, get: function () { return services_2.restartServer; } });
|
|
33
|
+
Object.defineProperty(exports, "startServer", { enumerable: true, get: function () { return services_2.startServer; } });
|
|
34
|
+
Object.defineProperty(exports, "stopServer", { enumerable: true, get: function () { return services_2.stopServer; } });
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAcA,6BAQe;AAPb,kGAAA,WAAW,OAAA;AACX,iGAAA,UAAU,OAAA;AAEV,+FAAA,QAAQ,OAAA;AAER,kGAAA,WAAW,OAAA;AAGb,6BAAgD;AAAvC,8GAAA,uBAAuB,OAAA;AAGhC,+BAA6E;AAApE,kGAAA,UAAU,OAAA;AAAE,uGAAA,eAAe,OAAA;AAGpC,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAAE,iGAAA,MAAM,OAAA;AACjD,qCAA+E;AAA/B,sGAAA,WAAW,OAAA;AAG3D,uCAOoB;AANlB,uGAAA,WAAW,OAAA;AACX,2GAAA,eAAe,OAAA;AACf,sGAAA,UAAU,OAAA;AACV,oGAAA,QAAQ,OAAA;AACR,mGAAA,OAAO,OAAA;AACP,0GAAA,cAAc,OAAA;AAIhB,uCAUoB;AATlB,0GAAA,cAAc,OAAA;AACd,2GAAA,eAAe,OAAA;AACf,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,yGAAA,aAAa,OAAA;AAGb,uGAAA,WAAW,OAAA;AACX,sGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MCPResponse = exports.MCPError = exports.MCPContent = exports.ContentType = exports.createPaginatedResponse = void 0;
|
|
4
|
+
var pagination_1 = require("./pagination");
|
|
5
|
+
Object.defineProperty(exports, "createPaginatedResponse", { enumerable: true, get: function () { return pagination_1.createPaginatedResponse; } });
|
|
6
|
+
var response_1 = require("./response");
|
|
7
|
+
Object.defineProperty(exports, "ContentType", { enumerable: true, get: function () { return response_1.ContentType; } });
|
|
8
|
+
Object.defineProperty(exports, "MCPContent", { enumerable: true, get: function () { return response_1.MCPContent; } });
|
|
9
|
+
Object.defineProperty(exports, "MCPError", { enumerable: true, get: function () { return response_1.MCPError; } });
|
|
10
|
+
Object.defineProperty(exports, "MCPResponse", { enumerable: true, get: function () { return response_1.MCPResponse; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AAA9C,qHAAA,uBAAuB,OAAA;AAChC,uCAQoB;AAPlB,uGAAA,WAAW,OAAA;AACX,sGAAA,UAAU,OAAA;AAEV,oGAAA,QAAQ,OAAA;AAER,uGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MCPContent, MCPResponse } from './response';
|
|
2
|
+
export declare function createPaginatedResponse<T>(opts: {
|
|
3
|
+
items: T[];
|
|
4
|
+
total: number | undefined;
|
|
5
|
+
hasMore: boolean;
|
|
6
|
+
nextOffset: number | undefined;
|
|
7
|
+
formatter: (item: T) => MCPContent;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
}): MCPResponse;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPaginatedResponse = createPaginatedResponse;
|
|
4
|
+
const response_1 = require("./response");
|
|
5
|
+
function createPaginatedResponse(opts) {
|
|
6
|
+
const content = opts.items.map(opts.formatter);
|
|
7
|
+
return new response_1.MCPResponse({
|
|
8
|
+
success: true,
|
|
9
|
+
content,
|
|
10
|
+
metadata: opts.metadata ?? {},
|
|
11
|
+
hasMore: opts.hasMore,
|
|
12
|
+
nextOffset: opts.nextOffset,
|
|
13
|
+
totalCount: opts.total,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/mcp/pagination.ts"],"names":[],"mappings":";;AAMA,0DAkBC;AApBD,yCAAqD;AAErD,SAAgB,uBAAuB,CAAI,IAO1C;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/C,OAAO,IAAI,sBAAW,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,KAAK;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export declare enum ContentType {
|
|
2
|
+
TEXT = "text",
|
|
3
|
+
JSON = "json"
|
|
4
|
+
}
|
|
5
|
+
export interface MCPContentData {
|
|
6
|
+
type: ContentType;
|
|
7
|
+
text?: string;
|
|
8
|
+
data?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface MCPErrorData {
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
suggestion?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface MCPResponseData {
|
|
16
|
+
success: boolean;
|
|
17
|
+
content?: MCPContentData[];
|
|
18
|
+
error?: MCPErrorData;
|
|
19
|
+
metadata?: Record<string, unknown>;
|
|
20
|
+
has_more?: boolean;
|
|
21
|
+
next_offset?: number;
|
|
22
|
+
total_count?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class MCPContent {
|
|
25
|
+
type: ContentType;
|
|
26
|
+
text?: string;
|
|
27
|
+
data?: Record<string, unknown>;
|
|
28
|
+
constructor(opts: {
|
|
29
|
+
type: ContentType;
|
|
30
|
+
text?: string;
|
|
31
|
+
data?: Record<string, unknown>;
|
|
32
|
+
});
|
|
33
|
+
toDict(): MCPContentData;
|
|
34
|
+
}
|
|
35
|
+
export declare class MCPError {
|
|
36
|
+
code: string;
|
|
37
|
+
message: string;
|
|
38
|
+
suggestion?: string;
|
|
39
|
+
constructor(opts: {
|
|
40
|
+
code: string;
|
|
41
|
+
message: string;
|
|
42
|
+
suggestion?: string;
|
|
43
|
+
});
|
|
44
|
+
toDict(): MCPErrorData;
|
|
45
|
+
}
|
|
46
|
+
export declare class MCPResponse {
|
|
47
|
+
success: boolean;
|
|
48
|
+
content: MCPContent[];
|
|
49
|
+
error?: MCPError;
|
|
50
|
+
metadata: Record<string, unknown>;
|
|
51
|
+
hasMore: boolean;
|
|
52
|
+
nextOffset?: number;
|
|
53
|
+
totalCount?: number;
|
|
54
|
+
constructor(opts: {
|
|
55
|
+
success: boolean;
|
|
56
|
+
content?: MCPContent[];
|
|
57
|
+
error?: MCPError;
|
|
58
|
+
metadata?: Record<string, unknown>;
|
|
59
|
+
hasMore?: boolean;
|
|
60
|
+
nextOffset?: number;
|
|
61
|
+
totalCount?: number;
|
|
62
|
+
});
|
|
63
|
+
toDict(): MCPResponseData;
|
|
64
|
+
toJSON(indent?: number): string;
|
|
65
|
+
toMarkdown(): string;
|
|
66
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MCPResponse = exports.MCPError = exports.MCPContent = exports.ContentType = void 0;
|
|
4
|
+
var ContentType;
|
|
5
|
+
(function (ContentType) {
|
|
6
|
+
ContentType["TEXT"] = "text";
|
|
7
|
+
ContentType["JSON"] = "json";
|
|
8
|
+
})(ContentType || (exports.ContentType = ContentType = {}));
|
|
9
|
+
class MCPContent {
|
|
10
|
+
type;
|
|
11
|
+
text;
|
|
12
|
+
data;
|
|
13
|
+
constructor(opts) {
|
|
14
|
+
this.type = opts.type;
|
|
15
|
+
this.text = opts.text;
|
|
16
|
+
this.data = opts.data;
|
|
17
|
+
}
|
|
18
|
+
toDict() {
|
|
19
|
+
const result = { type: this.type };
|
|
20
|
+
if (this.text !== undefined)
|
|
21
|
+
result.text = this.text;
|
|
22
|
+
if (this.data !== undefined)
|
|
23
|
+
result.data = this.data;
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.MCPContent = MCPContent;
|
|
28
|
+
class MCPError {
|
|
29
|
+
code;
|
|
30
|
+
message;
|
|
31
|
+
suggestion;
|
|
32
|
+
constructor(opts) {
|
|
33
|
+
this.code = opts.code;
|
|
34
|
+
this.message = opts.message;
|
|
35
|
+
this.suggestion = opts.suggestion;
|
|
36
|
+
}
|
|
37
|
+
toDict() {
|
|
38
|
+
const result = { code: this.code, message: this.message };
|
|
39
|
+
if (this.suggestion)
|
|
40
|
+
result.suggestion = this.suggestion;
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.MCPError = MCPError;
|
|
45
|
+
class MCPResponse {
|
|
46
|
+
success;
|
|
47
|
+
content;
|
|
48
|
+
error;
|
|
49
|
+
metadata;
|
|
50
|
+
hasMore;
|
|
51
|
+
nextOffset;
|
|
52
|
+
totalCount;
|
|
53
|
+
constructor(opts) {
|
|
54
|
+
this.success = opts.success;
|
|
55
|
+
this.content = opts.content ?? [];
|
|
56
|
+
this.error = opts.error;
|
|
57
|
+
this.metadata = opts.metadata ?? {};
|
|
58
|
+
this.hasMore = opts.hasMore ?? false;
|
|
59
|
+
this.nextOffset = opts.nextOffset;
|
|
60
|
+
this.totalCount = opts.totalCount;
|
|
61
|
+
}
|
|
62
|
+
toDict() {
|
|
63
|
+
const result = { success: this.success };
|
|
64
|
+
if (this.content.length > 0) {
|
|
65
|
+
result.content = this.content.map((c) => c.toDict());
|
|
66
|
+
}
|
|
67
|
+
if (this.error) {
|
|
68
|
+
result.error = this.error.toDict();
|
|
69
|
+
}
|
|
70
|
+
if (Object.keys(this.metadata).length > 0) {
|
|
71
|
+
result.metadata = this.metadata;
|
|
72
|
+
}
|
|
73
|
+
if (this.hasMore || this.totalCount !== undefined) {
|
|
74
|
+
result.has_more = this.hasMore;
|
|
75
|
+
if (this.nextOffset !== undefined)
|
|
76
|
+
result.next_offset = this.nextOffset;
|
|
77
|
+
if (this.totalCount !== undefined)
|
|
78
|
+
result.total_count = this.totalCount;
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
toJSON(indent = 2) {
|
|
83
|
+
return JSON.stringify(this.toDict(), null, indent);
|
|
84
|
+
}
|
|
85
|
+
toMarkdown() {
|
|
86
|
+
const lines = [];
|
|
87
|
+
if (!this.success && this.error) {
|
|
88
|
+
lines.push(`## ❌ Error: ${this.error.code}`);
|
|
89
|
+
lines.push(`\n${this.error.message}`);
|
|
90
|
+
if (this.error.suggestion) {
|
|
91
|
+
lines.push(`\n**Suggestion:** ${this.error.suggestion}`);
|
|
92
|
+
}
|
|
93
|
+
return lines.join('\n');
|
|
94
|
+
}
|
|
95
|
+
for (const item of this.content) {
|
|
96
|
+
if (item.type === ContentType.TEXT) {
|
|
97
|
+
lines.push(item.text ?? '');
|
|
98
|
+
}
|
|
99
|
+
else if (item.type === ContentType.JSON && item.data) {
|
|
100
|
+
lines.push(`\`\`\`json\n${JSON.stringify(item.data, null, 2)}\n\`\`\``);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (this.hasMore) {
|
|
104
|
+
const msg = this.totalCount !== undefined
|
|
105
|
+
? `Showing ${this.content.length} of ${this.totalCount} items.`
|
|
106
|
+
: `Showing ${this.content.length} items. More available.`;
|
|
107
|
+
lines.push(`\n---\n*${msg} Use --offset ${this.nextOffset} to see more.*`);
|
|
108
|
+
}
|
|
109
|
+
return lines.join('\n');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.MCPResponse = MCPResponse;
|
|
113
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/mcp/response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { checkHealth, checkPm2Process, runCommand, startPm2, stopPm2, waitForHealthy, } from './pm2';
|
|
2
|
+
export { getLogFilePath, getServerStatus, readLogTail, resolveServerEntry, restartServer, type ServerState, type ServerStatus, startServer, stopServer, } from './process-manager';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stopServer = exports.startServer = exports.restartServer = exports.resolveServerEntry = exports.readLogTail = exports.getServerStatus = exports.getLogFilePath = exports.waitForHealthy = exports.stopPm2 = exports.startPm2 = exports.runCommand = exports.checkPm2Process = exports.checkHealth = void 0;
|
|
4
|
+
var pm2_1 = require("./pm2");
|
|
5
|
+
Object.defineProperty(exports, "checkHealth", { enumerable: true, get: function () { return pm2_1.checkHealth; } });
|
|
6
|
+
Object.defineProperty(exports, "checkPm2Process", { enumerable: true, get: function () { return pm2_1.checkPm2Process; } });
|
|
7
|
+
Object.defineProperty(exports, "runCommand", { enumerable: true, get: function () { return pm2_1.runCommand; } });
|
|
8
|
+
Object.defineProperty(exports, "startPm2", { enumerable: true, get: function () { return pm2_1.startPm2; } });
|
|
9
|
+
Object.defineProperty(exports, "stopPm2", { enumerable: true, get: function () { return pm2_1.stopPm2; } });
|
|
10
|
+
Object.defineProperty(exports, "waitForHealthy", { enumerable: true, get: function () { return pm2_1.waitForHealthy; } });
|
|
11
|
+
var process_manager_1 = require("./process-manager");
|
|
12
|
+
Object.defineProperty(exports, "getLogFilePath", { enumerable: true, get: function () { return process_manager_1.getLogFilePath; } });
|
|
13
|
+
Object.defineProperty(exports, "getServerStatus", { enumerable: true, get: function () { return process_manager_1.getServerStatus; } });
|
|
14
|
+
Object.defineProperty(exports, "readLogTail", { enumerable: true, get: function () { return process_manager_1.readLogTail; } });
|
|
15
|
+
Object.defineProperty(exports, "resolveServerEntry", { enumerable: true, get: function () { return process_manager_1.resolveServerEntry; } });
|
|
16
|
+
Object.defineProperty(exports, "restartServer", { enumerable: true, get: function () { return process_manager_1.restartServer; } });
|
|
17
|
+
Object.defineProperty(exports, "startServer", { enumerable: true, get: function () { return process_manager_1.startServer; } });
|
|
18
|
+
Object.defineProperty(exports, "stopServer", { enumerable: true, get: function () { return process_manager_1.stopServer; } });
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,6BAOe;AANb,kGAAA,WAAW,OAAA;AACX,sGAAA,eAAe,OAAA;AACf,iGAAA,UAAU,OAAA;AACV,+FAAA,QAAQ,OAAA;AACR,8FAAA,OAAO,OAAA;AACP,qGAAA,cAAc,OAAA;AAIhB,qDAU2B;AATzB,iHAAA,cAAc,OAAA;AACd,kHAAA,eAAe,OAAA;AACf,8GAAA,WAAW,OAAA;AACX,qHAAA,kBAAkB,OAAA;AAClB,gHAAA,aAAa,OAAA;AAGb,8GAAA,WAAW,OAAA;AACX,6GAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function checkPm2Process(name: string): boolean;
|
|
2
|
+
export declare function checkHealth(url: string, timeout?: number): Promise<boolean>;
|
|
3
|
+
export declare function runCommand(command: string, cwd: string, timeout?: number): [boolean, string];
|
|
4
|
+
export declare function startPm2(ecosystemConfigPath: string): [boolean, string];
|
|
5
|
+
export declare function stopPm2(names: string[]): [boolean, string];
|
|
6
|
+
export declare function waitForHealthy(url: string, timeoutMs?: number, intervalMs?: number): Promise<boolean>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkPm2Process = checkPm2Process;
|
|
4
|
+
exports.checkHealth = checkHealth;
|
|
5
|
+
exports.runCommand = runCommand;
|
|
6
|
+
exports.startPm2 = startPm2;
|
|
7
|
+
exports.stopPm2 = stopPm2;
|
|
8
|
+
exports.waitForHealthy = waitForHealthy;
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const EXEC_OPTIONS = {
|
|
11
|
+
encoding: 'utf-8',
|
|
12
|
+
timeout: 30_000,
|
|
13
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
14
|
+
};
|
|
15
|
+
function checkPm2Process(name) {
|
|
16
|
+
try {
|
|
17
|
+
const stdout = (0, child_process_1.execSync)('pm2 jlist', EXEC_OPTIONS);
|
|
18
|
+
const processes = JSON.parse(stdout);
|
|
19
|
+
return processes.some((proc) => proc.name === name && proc.pm2_env?.status === 'online');
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function checkHealth(url, timeout = 2000) {
|
|
26
|
+
const controller = new AbortController();
|
|
27
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
28
|
+
try {
|
|
29
|
+
const resp = await fetch(url, { signal: controller.signal });
|
|
30
|
+
return resp.status < 500;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
clearTimeout(timer);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function runCommand(command, cwd, timeout = 180_000) {
|
|
40
|
+
try {
|
|
41
|
+
(0, child_process_1.execSync)(command, { ...EXEC_OPTIONS, cwd, timeout });
|
|
42
|
+
return [true, ''];
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
const message = err instanceof Error ? err.message : `Command failed: ${command}`;
|
|
46
|
+
return [false, message];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function startPm2(ecosystemConfigPath) {
|
|
50
|
+
try {
|
|
51
|
+
(0, child_process_1.execSync)(`pm2 start ${ecosystemConfigPath}`, EXEC_OPTIONS);
|
|
52
|
+
return [true, ''];
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
const message = err instanceof Error ? err.message : 'pm2 start failed';
|
|
56
|
+
return [false, message];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function stopPm2(names) {
|
|
60
|
+
try {
|
|
61
|
+
(0, child_process_1.execSync)(`pm2 stop ${names.join(' ')}`, EXEC_OPTIONS);
|
|
62
|
+
return [true, ''];
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
const message = err instanceof Error ? err.message : 'pm2 stop failed';
|
|
66
|
+
return [false, message];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function waitForHealthy(url, timeoutMs = 30_000, intervalMs = 1_000) {
|
|
70
|
+
const start = Date.now();
|
|
71
|
+
while (Date.now() - start < timeoutMs) {
|
|
72
|
+
if (await checkHealth(url))
|
|
73
|
+
return true;
|
|
74
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=pm2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../src/services/pm2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface ServerState {
|
|
2
|
+
pid: number;
|
|
3
|
+
port: number;
|
|
4
|
+
startedAt: string;
|
|
5
|
+
version: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ServerStatus {
|
|
8
|
+
running: boolean;
|
|
9
|
+
healthy: boolean;
|
|
10
|
+
state: ServerState | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function resolveServerEntry(): string;
|
|
13
|
+
export declare function startServer(options?: {
|
|
14
|
+
port?: number;
|
|
15
|
+
host?: string;
|
|
16
|
+
version?: string;
|
|
17
|
+
}): Promise<{
|
|
18
|
+
success: boolean;
|
|
19
|
+
message: string;
|
|
20
|
+
state?: ServerState;
|
|
21
|
+
}>;
|
|
22
|
+
export declare function stopServer(): Promise<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
message: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function getServerStatus(): Promise<ServerStatus>;
|
|
27
|
+
export declare function restartServer(options?: {
|
|
28
|
+
port?: number;
|
|
29
|
+
host?: string;
|
|
30
|
+
version?: string;
|
|
31
|
+
}): Promise<{
|
|
32
|
+
success: boolean;
|
|
33
|
+
message: string;
|
|
34
|
+
state?: ServerState;
|
|
35
|
+
}>;
|
|
36
|
+
export declare function getLogFilePath(): string;
|
|
37
|
+
export declare function readLogTail(lines?: number): Promise<string>;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveServerEntry = resolveServerEntry;
|
|
4
|
+
exports.startServer = startServer;
|
|
5
|
+
exports.stopServer = stopServer;
|
|
6
|
+
exports.getServerStatus = getServerStatus;
|
|
7
|
+
exports.restartServer = restartServer;
|
|
8
|
+
exports.getLogFilePath = getLogFilePath;
|
|
9
|
+
exports.readLogTail = readLogTail;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const os_1 = require("os");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const readline_1 = require("readline");
|
|
15
|
+
const AWEAVE_DIR = (0, path_1.join)((0, os_1.homedir)(), '.aweave');
|
|
16
|
+
const LOGS_DIR = (0, path_1.join)(AWEAVE_DIR, 'logs');
|
|
17
|
+
const STATE_FILE = (0, path_1.join)(AWEAVE_DIR, 'server.json');
|
|
18
|
+
const LOG_FILE = (0, path_1.join)(LOGS_DIR, 'server.log');
|
|
19
|
+
const DEFAULT_PORT = 3456;
|
|
20
|
+
const DEFAULT_HOST = '127.0.0.1';
|
|
21
|
+
const HEALTH_TIMEOUT_MS = 10_000;
|
|
22
|
+
const HEALTH_POLL_MS = 500;
|
|
23
|
+
const STOP_TIMEOUT_MS = 5_000;
|
|
24
|
+
function ensureDirs() {
|
|
25
|
+
(0, fs_1.mkdirSync)(AWEAVE_DIR, { recursive: true });
|
|
26
|
+
(0, fs_1.mkdirSync)(LOGS_DIR, { recursive: true });
|
|
27
|
+
}
|
|
28
|
+
function readState() {
|
|
29
|
+
try {
|
|
30
|
+
if (!(0, fs_1.existsSync)(STATE_FILE))
|
|
31
|
+
return null;
|
|
32
|
+
return JSON.parse((0, fs_1.readFileSync)(STATE_FILE, 'utf-8'));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function writeState(state) {
|
|
39
|
+
ensureDirs();
|
|
40
|
+
(0, fs_1.writeFileSync)(STATE_FILE, JSON.stringify(state, null, 2) + '\n');
|
|
41
|
+
}
|
|
42
|
+
function clearState() {
|
|
43
|
+
try {
|
|
44
|
+
if ((0, fs_1.existsSync)(STATE_FILE))
|
|
45
|
+
(0, fs_1.unlinkSync)(STATE_FILE);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function isProcessAlive(pid) {
|
|
51
|
+
try {
|
|
52
|
+
process.kill(pid, 0);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function checkHealthEndpoint(port, host = DEFAULT_HOST, timeout = 2000) {
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
62
|
+
try {
|
|
63
|
+
const resp = await fetch(`http://${host}:${port}/health`, {
|
|
64
|
+
signal: controller.signal,
|
|
65
|
+
});
|
|
66
|
+
return resp.status < 500;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
clearTimeout(timer);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function isPortInUse(port, host = DEFAULT_HOST) {
|
|
76
|
+
return checkHealthEndpoint(port, host, 1000);
|
|
77
|
+
}
|
|
78
|
+
function resolveServerEntry() {
|
|
79
|
+
try {
|
|
80
|
+
return require.resolve('@aweave/server/dist/main.js');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
const fallback = (0, path_1.join)(__dirname, '..', '..', '..', 'server', 'dist', 'main.js');
|
|
84
|
+
if ((0, fs_1.existsSync)(fallback))
|
|
85
|
+
return fallback;
|
|
86
|
+
throw new Error('Cannot find @aweave/server entry point. ' +
|
|
87
|
+
'Ensure the server package is built: cd devtools/common/server && pnpm build');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function startServer(options) {
|
|
91
|
+
const port = options?.port ?? DEFAULT_PORT;
|
|
92
|
+
const host = options?.host ?? DEFAULT_HOST;
|
|
93
|
+
const version = options?.version ?? '0.1.0';
|
|
94
|
+
ensureDirs();
|
|
95
|
+
const existingState = readState();
|
|
96
|
+
if (existingState) {
|
|
97
|
+
if (isProcessAlive(existingState.pid)) {
|
|
98
|
+
const healthy = await checkHealthEndpoint(existingState.port, host);
|
|
99
|
+
if (healthy) {
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
message: `Server already running (PID ${existingState.pid}, port ${existingState.port})`,
|
|
103
|
+
state: existingState,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
process.kill(existingState.pid, 'SIGTERM');
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
clearState();
|
|
113
|
+
}
|
|
114
|
+
if (await isPortInUse(port, host)) {
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
message: `Port ${port} is already in use. Stop the other process or use a different port.`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
let serverEntry;
|
|
121
|
+
try {
|
|
122
|
+
serverEntry = resolveServerEntry();
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
message: err instanceof Error ? err.message : 'Cannot find server entry point',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const logFd = (0, fs_1.openSync)(LOG_FILE, 'a');
|
|
131
|
+
const child = (0, child_process_1.spawn)('node', [serverEntry], {
|
|
132
|
+
detached: true,
|
|
133
|
+
stdio: ['ignore', logFd, logFd],
|
|
134
|
+
env: {
|
|
135
|
+
...process.env,
|
|
136
|
+
SERVER_PORT: String(port),
|
|
137
|
+
SERVER_HOST: host,
|
|
138
|
+
NODE_ENV: 'production',
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
child.unref();
|
|
142
|
+
const pid = child.pid;
|
|
143
|
+
if (!pid) {
|
|
144
|
+
return { success: false, message: 'Failed to spawn server process' };
|
|
145
|
+
}
|
|
146
|
+
const state = {
|
|
147
|
+
pid,
|
|
148
|
+
port,
|
|
149
|
+
startedAt: new Date().toISOString(),
|
|
150
|
+
version,
|
|
151
|
+
};
|
|
152
|
+
writeState(state);
|
|
153
|
+
const startTime = Date.now();
|
|
154
|
+
while (Date.now() - startTime < HEALTH_TIMEOUT_MS) {
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, HEALTH_POLL_MS));
|
|
156
|
+
if (!isProcessAlive(pid)) {
|
|
157
|
+
clearState();
|
|
158
|
+
return {
|
|
159
|
+
success: false,
|
|
160
|
+
message: `Server process exited unexpectedly. Check logs: ${LOG_FILE}`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (await checkHealthEndpoint(port, host)) {
|
|
164
|
+
return {
|
|
165
|
+
success: true,
|
|
166
|
+
message: `Server started (PID ${pid}, port ${port})`,
|
|
167
|
+
state,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
success: true,
|
|
173
|
+
message: `Server started (PID ${pid}, port ${port}) — health check timed out, server may still be starting`,
|
|
174
|
+
state,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async function stopServer() {
|
|
178
|
+
const state = readState();
|
|
179
|
+
if (!state) {
|
|
180
|
+
return { success: true, message: 'Server is not running (no state file)' };
|
|
181
|
+
}
|
|
182
|
+
if (!isProcessAlive(state.pid)) {
|
|
183
|
+
clearState();
|
|
184
|
+
return { success: true, message: 'Server was not running (stale state cleaned up)' };
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
process.kill(state.pid, 'SIGTERM');
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
clearState();
|
|
191
|
+
return { success: true, message: 'Server process not found (state cleaned up)' };
|
|
192
|
+
}
|
|
193
|
+
const startTime = Date.now();
|
|
194
|
+
while (Date.now() - startTime < STOP_TIMEOUT_MS) {
|
|
195
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
196
|
+
if (!isProcessAlive(state.pid)) {
|
|
197
|
+
clearState();
|
|
198
|
+
return { success: true, message: `Server stopped (was PID ${state.pid})` };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
process.kill(state.pid, 'SIGKILL');
|
|
203
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
}
|
|
207
|
+
clearState();
|
|
208
|
+
if (isProcessAlive(state.pid)) {
|
|
209
|
+
return { success: false, message: `Failed to stop server (PID ${state.pid})` };
|
|
210
|
+
}
|
|
211
|
+
return { success: true, message: `Server force-stopped (was PID ${state.pid})` };
|
|
212
|
+
}
|
|
213
|
+
async function getServerStatus() {
|
|
214
|
+
const state = readState();
|
|
215
|
+
if (!state) {
|
|
216
|
+
return { running: false, healthy: false, state: null };
|
|
217
|
+
}
|
|
218
|
+
const running = isProcessAlive(state.pid);
|
|
219
|
+
if (!running) {
|
|
220
|
+
clearState();
|
|
221
|
+
return { running: false, healthy: false, state: null };
|
|
222
|
+
}
|
|
223
|
+
const healthy = await checkHealthEndpoint(state.port);
|
|
224
|
+
return { running, healthy, state };
|
|
225
|
+
}
|
|
226
|
+
async function restartServer(options) {
|
|
227
|
+
const stopResult = await stopServer();
|
|
228
|
+
if (!stopResult.success) {
|
|
229
|
+
return { success: false, message: `Stop failed: ${stopResult.message}` };
|
|
230
|
+
}
|
|
231
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
232
|
+
return startServer(options);
|
|
233
|
+
}
|
|
234
|
+
function getLogFilePath() {
|
|
235
|
+
return LOG_FILE;
|
|
236
|
+
}
|
|
237
|
+
async function readLogTail(lines = 50) {
|
|
238
|
+
if (!(0, fs_1.existsSync)(LOG_FILE)) {
|
|
239
|
+
return '(no log file found)';
|
|
240
|
+
}
|
|
241
|
+
return new Promise((resolve) => {
|
|
242
|
+
const allLines = [];
|
|
243
|
+
const rl = (0, readline_1.createInterface)({
|
|
244
|
+
input: (0, fs_1.createReadStream)(LOG_FILE, { encoding: 'utf-8' }),
|
|
245
|
+
crlfDelay: Infinity,
|
|
246
|
+
});
|
|
247
|
+
rl.on('line', (line) => {
|
|
248
|
+
allLines.push(line);
|
|
249
|
+
if (allLines.length > lines)
|
|
250
|
+
allLines.shift();
|
|
251
|
+
});
|
|
252
|
+
rl.on('close', () => {
|
|
253
|
+
resolve(allLines.join('\n'));
|
|
254
|
+
});
|
|
255
|
+
rl.on('error', () => {
|
|
256
|
+
resolve('(error reading log file)');
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=process-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/services/process-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aweave/cli-shared",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"devDependencies": {
|
|
7
|
+
"@types/node": "^22.10.7",
|
|
8
|
+
"typescript": "^5.7.3"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"lint": "eslint .",
|
|
16
|
+
"lint:fix": "eslint . --fix",
|
|
17
|
+
"dev": "tsc --watch"
|
|
18
|
+
}
|
|
19
|
+
}
|