@cnbcool/mcp-server
Version:
CNB MCP Server. A comprehensive MCP server that provides seamless integration to the CNB's API(https://cnb.cool), offering a wide range of tools for repository management, pipelines operations and collaboration features
91 lines (90 loc) • 3.93 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.listIssues = listIssues;
exports.getIssue = getIssue;
exports.createIssue = createIssue;
exports.updateIssue = updateIssue;
exports.listIssueComments = listIssueComments;
exports.createIssueComment = createIssueComment;
exports.updateIssueComment = updateIssueComment;
exports.listIssueLabels = listIssueLabels;
exports.addIssueLabels = addIssueLabels;
exports.setIssueLabels = setIssueLabels;
exports.deleteIssueLabels = deleteIssueLabels;
exports.deleteIssueLabel = deleteIssueLabel;
const client_js_1 = __importDefault(require("./client.js"));
async function listIssues(repo, params) {
const cnbInst = client_js_1.default.getInstance();
const url = new URL(`/${repo}/-/issues`, cnbInst.baseUrl);
if (params) {
for (const [key, value] of Object.entries(params)) {
if (value === undefined)
continue;
url.searchParams.set(key, value.toString());
}
}
return cnbInst.request('GET', `${url.pathname}${url.search}`);
}
async function getIssue(repo, issueId) {
return client_js_1.default.getInstance().request('GET', `/${repo}/-/issues/${issueId}`);
}
async function createIssue(repo, params) {
const newParams = Object.entries(params).reduce((acc, [key, value]) => {
if (value === undefined)
return acc;
Object.assign(acc, { [key]: value });
return acc;
}, {});
return client_js_1.default.getInstance().request('POST', `/${repo}/-/issues`, newParams, {
header: { 'Content-Type': 'application/json' }
});
}
async function updateIssue(repo, issueId, params) {
return client_js_1.default.getInstance().request('PATCH', `/${repo}/-/issues/${issueId}`, params, {
header: { 'Content-Type': 'application/json' }
});
}
async function listIssueComments(repo, issueId, params) {
const cnbInst = client_js_1.default.getInstance();
const url = new URL(`/${repo}/-/issues/${issueId}/comments`, cnbInst.baseUrl);
if (params) {
for (const [key, value] of Object.entries(params)) {
if (value === undefined)
continue;
url.searchParams.set(key, value.toString());
}
}
return cnbInst.request('GET', `${url.pathname}${url.search}`);
}
async function createIssueComment(repo, issueId, params) {
return client_js_1.default.getInstance().request('POST', `/${repo}/-/issues/${issueId}/comments`, params, {
header: { 'Content-Type': 'application/json' }
});
}
async function updateIssueComment(repo, issueId, commentId, params) {
return client_js_1.default.getInstance().request('PATCH', `/${repo}/-/issues/${issueId}/comments/${commentId}`, params, {
header: { 'Content-Type': 'application/json' }
});
}
async function listIssueLabels(repo, issueId) {
return client_js_1.default.getInstance().request('GET', `/${repo}/-/issues/${issueId}/labels`);
}
async function addIssueLabels(repo, issueId, labels) {
return client_js_1.default.getInstance().request('POST', `/${repo}/-/issues/${issueId}/labels`, { labels }, {
header: { 'Content-Type': 'application/json' }
});
}
async function setIssueLabels(repo, issueId, labels) {
return client_js_1.default.getInstance().request('PUT', `/${repo}/-/issues/${issueId}/labels`, { labels }, {
header: { 'Content-Type': 'application/json' }
});
}
async function deleteIssueLabels(repo, issueId) {
await client_js_1.default.getInstance().request('DELETE', `/${repo}/-/issues/${issueId}/labels`);
}
async function deleteIssueLabel(repo, issueId, labelName) {
await client_js_1.default.getInstance().request('DELETE', `/${repo}/-/issues/${issueId}/labels/${encodeURIComponent(labelName)}`);
}