postgresai 0.12.0-beta.6 → 0.14.0-dev.7
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/README.md +91 -2
- package/bin/postgres-ai.ts +552 -37
- package/dist/bin/postgres-ai.js +503 -26
- package/dist/bin/postgres-ai.js.map +1 -1
- package/dist/lib/init.d.ts +61 -0
- package/dist/lib/init.d.ts.map +1 -0
- package/dist/lib/init.js +359 -0
- package/dist/lib/init.js.map +1 -0
- package/dist/lib/issues.d.ts +69 -1
- package/dist/lib/issues.d.ts.map +1 -1
- package/dist/lib/issues.js +232 -1
- package/dist/lib/issues.js.map +1 -1
- package/dist/lib/mcp-server.d.ts.map +1 -1
- package/dist/lib/mcp-server.js +69 -15
- package/dist/lib/mcp-server.js.map +1 -1
- package/dist/package.json +3 -2
- package/lib/init.ts +404 -0
- package/lib/issues.ts +325 -3
- package/lib/mcp-server.ts +75 -17
- package/package.json +3 -2
- package/test/init.integration.test.cjs +269 -0
- package/test/init.test.cjs +69 -0
package/dist/lib/issues.js
CHANGED
|
@@ -34,6 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.fetchIssues = fetchIssues;
|
|
37
|
+
exports.fetchIssueComments = fetchIssueComments;
|
|
38
|
+
exports.fetchIssue = fetchIssue;
|
|
39
|
+
exports.createIssueComment = createIssueComment;
|
|
37
40
|
const https = __importStar(require("https"));
|
|
38
41
|
const url_1 = require("url");
|
|
39
42
|
const util_1 = require("./util");
|
|
@@ -44,6 +47,7 @@ async function fetchIssues(params) {
|
|
|
44
47
|
}
|
|
45
48
|
const base = (0, util_1.normalizeBaseUrl)(apiBaseUrl);
|
|
46
49
|
const url = new url_1.URL(`${base}/issues`);
|
|
50
|
+
url.searchParams.set("select", "id,title,status,created_at");
|
|
47
51
|
const headers = {
|
|
48
52
|
"access-token": apiKey,
|
|
49
53
|
"Prefer": "return=representation",
|
|
@@ -80,7 +84,7 @@ async function fetchIssues(params) {
|
|
|
80
84
|
resolve(parsed);
|
|
81
85
|
}
|
|
82
86
|
catch {
|
|
83
|
-
|
|
87
|
+
reject(new Error(`Failed to parse issues response: ${data}`));
|
|
84
88
|
}
|
|
85
89
|
}
|
|
86
90
|
else {
|
|
@@ -102,4 +106,231 @@ async function fetchIssues(params) {
|
|
|
102
106
|
req.end();
|
|
103
107
|
});
|
|
104
108
|
}
|
|
109
|
+
async function fetchIssueComments(params) {
|
|
110
|
+
const { apiKey, apiBaseUrl, issueId, debug } = params;
|
|
111
|
+
if (!apiKey) {
|
|
112
|
+
throw new Error("API key is required");
|
|
113
|
+
}
|
|
114
|
+
if (!issueId) {
|
|
115
|
+
throw new Error("issueId is required");
|
|
116
|
+
}
|
|
117
|
+
const base = (0, util_1.normalizeBaseUrl)(apiBaseUrl);
|
|
118
|
+
const url = new url_1.URL(`${base}/issue_comments?issue_id=eq.${encodeURIComponent(issueId)}`);
|
|
119
|
+
const headers = {
|
|
120
|
+
"access-token": apiKey,
|
|
121
|
+
"Prefer": "return=representation",
|
|
122
|
+
"Content-Type": "application/json",
|
|
123
|
+
};
|
|
124
|
+
if (debug) {
|
|
125
|
+
const debugHeaders = { ...headers, "access-token": (0, util_1.maskSecret)(apiKey) };
|
|
126
|
+
// eslint-disable-next-line no-console
|
|
127
|
+
console.log(`Debug: Resolved API base URL: ${base}`);
|
|
128
|
+
// eslint-disable-next-line no-console
|
|
129
|
+
console.log(`Debug: GET URL: ${url.toString()}`);
|
|
130
|
+
// eslint-disable-next-line no-console
|
|
131
|
+
console.log(`Debug: Auth scheme: access-token`);
|
|
132
|
+
// eslint-disable-next-line no-console
|
|
133
|
+
console.log(`Debug: Request headers: ${JSON.stringify(debugHeaders)}`);
|
|
134
|
+
}
|
|
135
|
+
return new Promise((resolve, reject) => {
|
|
136
|
+
const req = https.request(url, {
|
|
137
|
+
method: "GET",
|
|
138
|
+
headers,
|
|
139
|
+
}, (res) => {
|
|
140
|
+
let data = "";
|
|
141
|
+
res.on("data", (chunk) => (data += chunk));
|
|
142
|
+
res.on("end", () => {
|
|
143
|
+
if (debug) {
|
|
144
|
+
// eslint-disable-next-line no-console
|
|
145
|
+
console.log(`Debug: Response status: ${res.statusCode}`);
|
|
146
|
+
// eslint-disable-next-line no-console
|
|
147
|
+
console.log(`Debug: Response headers: ${JSON.stringify(res.headers)}`);
|
|
148
|
+
}
|
|
149
|
+
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
150
|
+
try {
|
|
151
|
+
const parsed = JSON.parse(data);
|
|
152
|
+
resolve(parsed);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
reject(new Error(`Failed to parse issue comments response: ${data}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
let errMsg = `Failed to fetch issue comments: HTTP ${res.statusCode}`;
|
|
160
|
+
if (data) {
|
|
161
|
+
try {
|
|
162
|
+
const errObj = JSON.parse(data);
|
|
163
|
+
errMsg += `\n${JSON.stringify(errObj, null, 2)}`;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
errMsg += `\n${data}`;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
reject(new Error(errMsg));
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
req.on("error", (err) => reject(err));
|
|
174
|
+
req.end();
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
async function fetchIssue(params) {
|
|
178
|
+
const { apiKey, apiBaseUrl, issueId, debug } = params;
|
|
179
|
+
if (!apiKey) {
|
|
180
|
+
throw new Error("API key is required");
|
|
181
|
+
}
|
|
182
|
+
if (!issueId) {
|
|
183
|
+
throw new Error("issueId is required");
|
|
184
|
+
}
|
|
185
|
+
const base = (0, util_1.normalizeBaseUrl)(apiBaseUrl);
|
|
186
|
+
const url = new url_1.URL(`${base}/issues`);
|
|
187
|
+
url.searchParams.set("select", "id,title,description,status,created_at,author_display_name");
|
|
188
|
+
url.searchParams.set("id", `eq.${issueId}`);
|
|
189
|
+
url.searchParams.set("limit", "1");
|
|
190
|
+
const headers = {
|
|
191
|
+
"access-token": apiKey,
|
|
192
|
+
"Prefer": "return=representation",
|
|
193
|
+
"Content-Type": "application/json",
|
|
194
|
+
};
|
|
195
|
+
if (debug) {
|
|
196
|
+
const debugHeaders = { ...headers, "access-token": (0, util_1.maskSecret)(apiKey) };
|
|
197
|
+
// eslint-disable-next-line no-console
|
|
198
|
+
console.log(`Debug: Resolved API base URL: ${base}`);
|
|
199
|
+
// eslint-disable-next-line no-console
|
|
200
|
+
console.log(`Debug: GET URL: ${url.toString()}`);
|
|
201
|
+
// eslint-disable-next-line no-console
|
|
202
|
+
console.log(`Debug: Auth scheme: access-token`);
|
|
203
|
+
// eslint-disable-next-line no-console
|
|
204
|
+
console.log(`Debug: Request headers: ${JSON.stringify(debugHeaders)}`);
|
|
205
|
+
}
|
|
206
|
+
return new Promise((resolve, reject) => {
|
|
207
|
+
const req = https.request(url, {
|
|
208
|
+
method: "GET",
|
|
209
|
+
headers,
|
|
210
|
+
}, (res) => {
|
|
211
|
+
let data = "";
|
|
212
|
+
res.on("data", (chunk) => (data += chunk));
|
|
213
|
+
res.on("end", () => {
|
|
214
|
+
if (debug) {
|
|
215
|
+
// eslint-disable-next-line no-console
|
|
216
|
+
console.log(`Debug: Response status: ${res.statusCode}`);
|
|
217
|
+
// eslint-disable-next-line no-console
|
|
218
|
+
console.log(`Debug: Response headers: ${JSON.stringify(res.headers)}`);
|
|
219
|
+
}
|
|
220
|
+
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
221
|
+
try {
|
|
222
|
+
const parsed = JSON.parse(data);
|
|
223
|
+
if (Array.isArray(parsed)) {
|
|
224
|
+
resolve(parsed[0] ?? null);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
resolve(parsed);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
reject(new Error(`Failed to parse issue response: ${data}`));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
let errMsg = `Failed to fetch issue: HTTP ${res.statusCode}`;
|
|
236
|
+
if (data) {
|
|
237
|
+
try {
|
|
238
|
+
const errObj = JSON.parse(data);
|
|
239
|
+
errMsg += `\n${JSON.stringify(errObj, null, 2)}`;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
errMsg += `\n${data}`;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
reject(new Error(errMsg));
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
req.on("error", (err) => reject(err));
|
|
250
|
+
req.end();
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
async function createIssueComment(params) {
|
|
254
|
+
const { apiKey, apiBaseUrl, issueId, content, parentCommentId, debug } = params;
|
|
255
|
+
if (!apiKey) {
|
|
256
|
+
throw new Error("API key is required");
|
|
257
|
+
}
|
|
258
|
+
if (!issueId) {
|
|
259
|
+
throw new Error("issueId is required");
|
|
260
|
+
}
|
|
261
|
+
if (!content) {
|
|
262
|
+
throw new Error("content is required");
|
|
263
|
+
}
|
|
264
|
+
const base = (0, util_1.normalizeBaseUrl)(apiBaseUrl);
|
|
265
|
+
const url = new url_1.URL(`${base}/rpc/issue_comment_create`);
|
|
266
|
+
const bodyObj = {
|
|
267
|
+
issue_id: issueId,
|
|
268
|
+
content: content,
|
|
269
|
+
};
|
|
270
|
+
if (parentCommentId) {
|
|
271
|
+
bodyObj.parent_comment_id = parentCommentId;
|
|
272
|
+
}
|
|
273
|
+
const body = JSON.stringify(bodyObj);
|
|
274
|
+
const headers = {
|
|
275
|
+
"access-token": apiKey,
|
|
276
|
+
"Prefer": "return=representation",
|
|
277
|
+
"Content-Type": "application/json",
|
|
278
|
+
"Content-Length": Buffer.byteLength(body).toString(),
|
|
279
|
+
};
|
|
280
|
+
if (debug) {
|
|
281
|
+
const debugHeaders = { ...headers, "access-token": (0, util_1.maskSecret)(apiKey) };
|
|
282
|
+
// eslint-disable-next-line no-console
|
|
283
|
+
console.log(`Debug: Resolved API base URL: ${base}`);
|
|
284
|
+
// eslint-disable-next-line no-console
|
|
285
|
+
console.log(`Debug: POST URL: ${url.toString()}`);
|
|
286
|
+
// eslint-disable-next-line no-console
|
|
287
|
+
console.log(`Debug: Auth scheme: access-token`);
|
|
288
|
+
// eslint-disable-next-line no-console
|
|
289
|
+
console.log(`Debug: Request headers: ${JSON.stringify(debugHeaders)}`);
|
|
290
|
+
// eslint-disable-next-line no-console
|
|
291
|
+
console.log(`Debug: Request body: ${body}`);
|
|
292
|
+
}
|
|
293
|
+
return new Promise((resolve, reject) => {
|
|
294
|
+
const req = https.request(url, {
|
|
295
|
+
method: "POST",
|
|
296
|
+
headers,
|
|
297
|
+
}, (res) => {
|
|
298
|
+
let data = "";
|
|
299
|
+
res.on("data", (chunk) => (data += chunk));
|
|
300
|
+
res.on("end", () => {
|
|
301
|
+
if (debug) {
|
|
302
|
+
// eslint-disable-next-line no-console
|
|
303
|
+
console.log(`Debug: Response status: ${res.statusCode}`);
|
|
304
|
+
// eslint-disable-next-line no-console
|
|
305
|
+
console.log(`Debug: Response headers: ${JSON.stringify(res.headers)}`);
|
|
306
|
+
}
|
|
307
|
+
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
308
|
+
try {
|
|
309
|
+
const parsed = JSON.parse(data);
|
|
310
|
+
resolve(parsed);
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
reject(new Error(`Failed to parse create comment response: ${data}`));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
let errMsg = `Failed to create issue comment: HTTP ${res.statusCode}`;
|
|
318
|
+
if (data) {
|
|
319
|
+
try {
|
|
320
|
+
const errObj = JSON.parse(data);
|
|
321
|
+
errMsg += `\n${JSON.stringify(errObj, null, 2)}`;
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
errMsg += `\n${data}`;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
reject(new Error(errMsg));
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
req.on("error", (err) => reject(err));
|
|
332
|
+
req.write(body);
|
|
333
|
+
req.end();
|
|
334
|
+
});
|
|
335
|
+
}
|
|
105
336
|
//# sourceMappingURL=issues.js.map
|
package/dist/lib/issues.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../lib/issues.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../lib/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../lib/mcp-server.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../lib/mcp-server.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0IxG"}
|
package/dist/lib/mcp-server.js
CHANGED
|
@@ -52,6 +52,14 @@ async function startMcpServer(rootOpts, extra) {
|
|
|
52
52
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
53
53
|
const { CallToolRequestSchema, ListToolsRequestSchema } = require(typesPath);
|
|
54
54
|
const server = new server_1.Server({ name: "postgresai-mcp", version: pkg.version }, { capabilities: { tools: {} } });
|
|
55
|
+
// Interpret escape sequences (e.g., \n -> newline). Input comes from JSON, but
|
|
56
|
+
// we still normalize common escapes for consistency.
|
|
57
|
+
const interpretEscapes = (str) => (str || "")
|
|
58
|
+
.replace(/\\n/g, "\n")
|
|
59
|
+
.replace(/\\t/g, "\t")
|
|
60
|
+
.replace(/\\r/g, "\r")
|
|
61
|
+
.replace(/\\"/g, '"')
|
|
62
|
+
.replace(/\\'/g, "'");
|
|
55
63
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
56
64
|
return {
|
|
57
65
|
tools: [
|
|
@@ -66,15 +74,40 @@ async function startMcpServer(rootOpts, extra) {
|
|
|
66
74
|
additionalProperties: false,
|
|
67
75
|
},
|
|
68
76
|
},
|
|
77
|
+
{
|
|
78
|
+
name: "view_issue",
|
|
79
|
+
description: "View a specific issue with its comments",
|
|
80
|
+
inputSchema: {
|
|
81
|
+
type: "object",
|
|
82
|
+
properties: {
|
|
83
|
+
issue_id: { type: "string", description: "Issue ID (UUID)" },
|
|
84
|
+
debug: { type: "boolean", description: "Enable verbose debug logs" },
|
|
85
|
+
},
|
|
86
|
+
required: ["issue_id"],
|
|
87
|
+
additionalProperties: false,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "post_issue_comment",
|
|
92
|
+
description: "Post a new comment to an issue (optionally as a reply)",
|
|
93
|
+
inputSchema: {
|
|
94
|
+
type: "object",
|
|
95
|
+
properties: {
|
|
96
|
+
issue_id: { type: "string", description: "Issue ID (UUID)" },
|
|
97
|
+
content: { type: "string", description: "Comment text (supports \\n as newline)" },
|
|
98
|
+
parent_comment_id: { type: "string", description: "Parent comment ID (UUID) for replies" },
|
|
99
|
+
debug: { type: "boolean", description: "Enable verbose debug logs" },
|
|
100
|
+
},
|
|
101
|
+
required: ["issue_id", "content"],
|
|
102
|
+
additionalProperties: false,
|
|
103
|
+
},
|
|
104
|
+
},
|
|
69
105
|
],
|
|
70
106
|
};
|
|
71
107
|
});
|
|
72
108
|
server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
73
109
|
const toolName = req.params.name;
|
|
74
110
|
const args = req.params.arguments || {};
|
|
75
|
-
if (toolName !== "list_issues") {
|
|
76
|
-
throw new Error(`Unknown tool: ${toolName}`);
|
|
77
|
-
}
|
|
78
111
|
const cfg = config.readConfig();
|
|
79
112
|
const apiKey = (rootOpts?.apiKey || process.env.PGAI_API_KEY || cfg.apiKey || "").toString();
|
|
80
113
|
const { apiBaseUrl } = (0, util_1.resolveBaseUrls)(rootOpts, cfg);
|
|
@@ -91,21 +124,42 @@ async function startMcpServer(rootOpts, extra) {
|
|
|
91
124
|
};
|
|
92
125
|
}
|
|
93
126
|
try {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
content: [
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
127
|
+
if (toolName === "list_issues") {
|
|
128
|
+
const issues = await (0, issues_1.fetchIssues)({ apiKey, apiBaseUrl, debug });
|
|
129
|
+
return { content: [{ type: "text", text: JSON.stringify(issues, null, 2) }] };
|
|
130
|
+
}
|
|
131
|
+
if (toolName === "view_issue") {
|
|
132
|
+
const issueId = String(args.issue_id || "").trim();
|
|
133
|
+
if (!issueId) {
|
|
134
|
+
return { content: [{ type: "text", text: "issue_id is required" }], isError: true };
|
|
135
|
+
}
|
|
136
|
+
const issue = await (0, issues_1.fetchIssue)({ apiKey, apiBaseUrl, issueId, debug });
|
|
137
|
+
if (!issue) {
|
|
138
|
+
return { content: [{ type: "text", text: "Issue not found" }], isError: true };
|
|
139
|
+
}
|
|
140
|
+
const comments = await (0, issues_1.fetchIssueComments)({ apiKey, apiBaseUrl, issueId, debug });
|
|
141
|
+
const combined = { issue, comments };
|
|
142
|
+
return { content: [{ type: "text", text: JSON.stringify(combined, null, 2) }] };
|
|
143
|
+
}
|
|
144
|
+
if (toolName === "post_issue_comment") {
|
|
145
|
+
const issueId = String(args.issue_id || "").trim();
|
|
146
|
+
const rawContent = String(args.content || "");
|
|
147
|
+
const parentCommentId = args.parent_comment_id ? String(args.parent_comment_id) : undefined;
|
|
148
|
+
if (!issueId) {
|
|
149
|
+
return { content: [{ type: "text", text: "issue_id is required" }], isError: true };
|
|
150
|
+
}
|
|
151
|
+
if (!rawContent) {
|
|
152
|
+
return { content: [{ type: "text", text: "content is required" }], isError: true };
|
|
153
|
+
}
|
|
154
|
+
const content = interpretEscapes(rawContent);
|
|
155
|
+
const result = await (0, issues_1.createIssueComment)({ apiKey, apiBaseUrl, issueId, content, parentCommentId, debug });
|
|
156
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
157
|
+
}
|
|
158
|
+
throw new Error(`Unknown tool: ${toolName}`);
|
|
100
159
|
}
|
|
101
160
|
catch (err) {
|
|
102
161
|
const message = err instanceof Error ? err.message : String(err);
|
|
103
|
-
return {
|
|
104
|
-
content: [
|
|
105
|
-
{ type: "text", text: message },
|
|
106
|
-
],
|
|
107
|
-
isError: true,
|
|
108
|
-
};
|
|
162
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
109
163
|
}
|
|
110
164
|
});
|
|
111
165
|
const transport = new StdioServerTransport();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../lib/mcp-server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../lib/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postgresai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0-dev.7",
|
|
4
4
|
"description": "postgres_ai CLI (Node.js)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"private": false,
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"build": "tsc",
|
|
26
26
|
"prepare": "npm run build",
|
|
27
27
|
"start": "node ./dist/bin/postgres-ai.js --help",
|
|
28
|
-
"dev": "tsc --watch"
|
|
28
|
+
"dev": "tsc --watch",
|
|
29
|
+
"test": "npm run build && node --test test/*.test.cjs"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
32
|
"@modelcontextprotocol/sdk": "^1.20.2",
|