@structured-world/gitlab-mcp 4.5.0 → 5.2.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/README.md +18 -0
- package/dist/config.js +23 -23
- package/dist/config.js.map +1 -1
- package/dist/entities/core/index.d.ts +5 -5
- package/dist/entities/core/index.js +1 -1
- package/dist/entities/core/registry.d.ts +1 -1
- package/dist/entities/core/registry.js +149 -149
- package/dist/entities/core/registry.js.map +1 -1
- package/dist/entities/core/schema-readonly.d.ts +1 -1
- package/dist/entities/core/schema-readonly.js +132 -132
- package/dist/entities/core/schema-readonly.js.map +1 -1
- package/dist/entities/core/schema.d.ts +1 -1
- package/dist/entities/core/schema.js +59 -59
- package/dist/entities/files/index.d.ts +5 -5
- package/dist/entities/files/index.js +1 -1
- package/dist/entities/files/registry.d.ts +1 -1
- package/dist/entities/files/registry.js +32 -32
- package/dist/entities/files/registry.js.map +1 -1
- package/dist/entities/files/schema-readonly.d.ts +1 -1
- package/dist/entities/files/schema-readonly.js +10 -10
- package/dist/entities/files/schema.d.ts +1 -1
- package/dist/entities/files/schema.js +19 -19
- package/dist/entities/index.d.ts +10 -10
- package/dist/entities/labels/index.d.ts +5 -5
- package/dist/entities/labels/index.js +1 -1
- package/dist/entities/labels/registry.d.ts +1 -1
- package/dist/entities/labels/registry.js +31 -31
- package/dist/entities/labels/registry.js.map +1 -1
- package/dist/entities/labels/schema-readonly.d.ts +1 -1
- package/dist/entities/labels/schema-readonly.js +7 -7
- package/dist/entities/labels/schema.d.ts +1 -1
- package/dist/entities/labels/schema.js +11 -11
- package/dist/entities/milestones/index.d.ts +5 -5
- package/dist/entities/milestones/index.js +1 -1
- package/dist/entities/milestones/registry.d.ts +1 -1
- package/dist/entities/milestones/registry.js +49 -49
- package/dist/entities/milestones/registry.js.map +1 -1
- package/dist/entities/milestones/schema-readonly.d.ts +2 -2
- package/dist/entities/milestones/schema-readonly.js +11 -11
- package/dist/entities/milestones/schema.d.ts +1 -1
- package/dist/entities/milestones/schema.js +18 -18
- package/dist/entities/milestones/schema.js.map +1 -1
- package/dist/entities/mrs/index.d.ts +5 -5
- package/dist/entities/mrs/index.js +1 -1
- package/dist/entities/mrs/registry.d.ts +1 -1
- package/dist/entities/mrs/registry.js +118 -118
- package/dist/entities/mrs/registry.js.map +1 -1
- package/dist/entities/mrs/schema-readonly.d.ts +1 -1
- package/dist/entities/mrs/schema-readonly.js +47 -47
- package/dist/entities/mrs/schema-readonly.js.map +1 -1
- package/dist/entities/mrs/schema.d.ts +1 -1
- package/dist/entities/mrs/schema.js +86 -86
- package/dist/entities/mrs/schema.js.map +1 -1
- package/dist/entities/pipelines/index.d.ts +5 -5
- package/dist/entities/pipelines/index.js +1 -1
- package/dist/entities/pipelines/registry.d.ts +1 -1
- package/dist/entities/pipelines/registry.js +58 -58
- package/dist/entities/pipelines/registry.js.map +1 -1
- package/dist/entities/pipelines/schema-readonly.d.ts +1 -1
- package/dist/entities/pipelines/schema-readonly.js +65 -65
- package/dist/entities/pipelines/schema.d.ts +1 -1
- package/dist/entities/pipelines/schema.js +15 -15
- package/dist/entities/shared.d.ts +1 -1
- package/dist/entities/shared.js +7 -7
- package/dist/entities/utils.d.ts +1 -1
- package/dist/entities/utils.js +5 -5
- package/dist/entities/utils.js.map +1 -1
- package/dist/entities/variables/index.d.ts +5 -5
- package/dist/entities/variables/index.js +1 -1
- package/dist/entities/variables/registry.d.ts +1 -1
- package/dist/entities/variables/registry.js +29 -29
- package/dist/entities/variables/registry.js.map +1 -1
- package/dist/entities/variables/schema-readonly.d.ts +1 -1
- package/dist/entities/variables/schema-readonly.js +4 -4
- package/dist/entities/variables/schema.d.ts +1 -1
- package/dist/entities/variables/schema.js +32 -32
- package/dist/entities/variables/schema.js.map +1 -1
- package/dist/entities/wiki/index.d.ts +5 -5
- package/dist/entities/wiki/index.js +1 -1
- package/dist/entities/wiki/registry.d.ts +1 -1
- package/dist/entities/wiki/registry.js +26 -26
- package/dist/entities/wiki/registry.js.map +1 -1
- package/dist/entities/wiki/schema-readonly.d.ts +1 -1
- package/dist/entities/wiki/schema-readonly.js +4 -4
- package/dist/entities/wiki/schema.d.ts +1 -1
- package/dist/entities/wiki/schema.js +11 -11
- package/dist/entities/workitems/index.d.ts +5 -5
- package/dist/entities/workitems/index.js +1 -1
- package/dist/entities/workitems/registry.d.ts +1 -1
- package/dist/entities/workitems/registry.js +55 -55
- package/dist/entities/workitems/registry.js.map +1 -1
- package/dist/entities/workitems/schema-readonly.d.ts +1 -1
- package/dist/entities/workitems/schema-readonly.js +25 -25
- package/dist/entities/workitems/schema-readonly.js.map +1 -1
- package/dist/entities/workitems/schema.d.ts +1 -1
- package/dist/entities/workitems/schema.js +11 -11
- package/dist/graphql/DynamicWorkItemsQuery.d.ts +2 -2
- package/dist/graphql/DynamicWorkItemsQuery.js +47 -47
- package/dist/graphql/DynamicWorkItemsQuery.js.map +1 -1
- package/dist/graphql/client.d.ts +1 -1
- package/dist/graphql/client.js +4 -4
- package/dist/graphql/client.js.map +1 -1
- package/dist/graphql/index.d.ts +2 -2
- package/dist/graphql/workItems.d.ts +33 -33
- package/dist/graphql/workItems.js +29 -29
- package/dist/handlers.d.ts +1 -1
- package/dist/handlers.js +20 -20
- package/dist/handlers.js.map +1 -1
- package/dist/http-client.js +3 -3
- package/dist/logger.js +4 -4
- package/dist/registry-manager.d.ts +1 -1
- package/dist/registry-manager.js +27 -27
- package/dist/server.d.ts +1 -1
- package/dist/server.js +46 -46
- package/dist/services/ConnectionManager.d.ts +4 -4
- package/dist/services/ConnectionManager.js +13 -13
- package/dist/services/GitLabVersionDetector.d.ts +2 -2
- package/dist/services/GitLabVersionDetector.js +41 -41
- package/dist/services/GitLabVersionDetector.js.map +1 -1
- package/dist/services/SchemaIntrospector.d.ts +1 -1
- package/dist/services/SchemaIntrospector.js +42 -42
- package/dist/services/SchemaIntrospector.js.map +1 -1
- package/dist/services/ToolAvailability.d.ts +2 -2
- package/dist/services/ToolAvailability.js +279 -279
- package/dist/services/ToolAvailability.js.map +1 -1
- package/dist/services/WidgetAvailability.d.ts +3 -3
- package/dist/services/WidgetAvailability.js +32 -32
- package/dist/structured-world-gitlab-mcp-5.2.0.tgz +0 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types.js +4 -4
- package/dist/utils/fetch.d.ts +4 -4
- package/dist/utils/fetch.js +15 -15
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/idConversion.js +33 -33
- package/dist/utils/idConversion.js.map +1 -1
- package/dist/utils/namespace.d.ts +2 -2
- package/dist/utils/namespace.js +13 -13
- package/dist/utils/smart-user-search.d.ts +1 -1
- package/dist/utils/smart-user-search.js +10 -10
- package/package.json +1 -1
- package/dist/structured-world-gitlab-mcp-4.5.0.tgz +0 -0
package/dist/types.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransportMode = void 0;
|
|
4
4
|
const TransportModeObj = {
|
|
5
|
-
STDIO:
|
|
6
|
-
SSE:
|
|
7
|
-
STREAMABLE_HTTP:
|
|
8
|
-
DUAL:
|
|
5
|
+
STDIO: "stdio",
|
|
6
|
+
SSE: "sse",
|
|
7
|
+
STREAMABLE_HTTP: "streamable-http",
|
|
8
|
+
DUAL: "dual",
|
|
9
9
|
};
|
|
10
10
|
exports.TransportMode = TransportModeObj;
|
|
11
11
|
//# sourceMappingURL=types.js.map
|
package/dist/utils/fetch.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as https from
|
|
2
|
-
import { HttpProxyAgent } from
|
|
3
|
-
import { HttpsProxyAgent } from
|
|
4
|
-
import { SocksProxyAgent } from
|
|
1
|
+
import * as https from "https";
|
|
2
|
+
import { HttpProxyAgent } from "http-proxy-agent";
|
|
3
|
+
import { HttpsProxyAgent } from "https-proxy-agent";
|
|
4
|
+
import { SocksProxyAgent } from "socks-proxy-agent";
|
|
5
5
|
export declare const DEFAULT_HEADERS: Record<string, string>;
|
|
6
6
|
export declare function createFetchOptions(): RequestInit & {
|
|
7
7
|
agent?: HttpProxyAgent<string> | HttpsProxyAgent<string> | SocksProxyAgent | https.Agent;
|
package/dist/utils/fetch.js
CHANGED
|
@@ -48,12 +48,12 @@ function loadCookieHeader() {
|
|
|
48
48
|
return null;
|
|
49
49
|
}
|
|
50
50
|
try {
|
|
51
|
-
const cookieString = fs.readFileSync(config_1.GITLAB_AUTH_COOKIE_PATH,
|
|
51
|
+
const cookieString = fs.readFileSync(config_1.GITLAB_AUTH_COOKIE_PATH, "utf-8");
|
|
52
52
|
const cookies = [];
|
|
53
|
-
cookieString.split(
|
|
53
|
+
cookieString.split("\n").forEach(line => {
|
|
54
54
|
const trimmed = line.trim();
|
|
55
|
-
if (trimmed && !trimmed.startsWith(
|
|
56
|
-
const parts = trimmed.split(
|
|
55
|
+
if (trimmed && !trimmed.startsWith("#")) {
|
|
56
|
+
const parts = trimmed.split("\t");
|
|
57
57
|
if (parts.length >= 7) {
|
|
58
58
|
const name = parts[5];
|
|
59
59
|
const value = parts[6];
|
|
@@ -61,10 +61,10 @@ function loadCookieHeader() {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
});
|
|
64
|
-
return cookies.length > 0 ? cookies.join(
|
|
64
|
+
return cookies.length > 0 ? cookies.join("; ") : null;
|
|
65
65
|
}
|
|
66
66
|
catch (error) {
|
|
67
|
-
logger_1.logger.warn({ err: error },
|
|
67
|
+
logger_1.logger.warn({ err: error }, "Failed to load GitLab authentication cookies");
|
|
68
68
|
return null;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -73,10 +73,10 @@ function getProxyAgent() {
|
|
|
73
73
|
if (!proxyUrl) {
|
|
74
74
|
return undefined;
|
|
75
75
|
}
|
|
76
|
-
if (proxyUrl.startsWith(
|
|
76
|
+
if (proxyUrl.startsWith("socks4://") || proxyUrl.startsWith("socks5://")) {
|
|
77
77
|
return new socks_proxy_agent_1.SocksProxyAgent(proxyUrl);
|
|
78
78
|
}
|
|
79
|
-
else if (proxyUrl.startsWith(
|
|
79
|
+
else if (proxyUrl.startsWith("https://")) {
|
|
80
80
|
return new https_proxy_agent_1.HttpsProxyAgent(proxyUrl);
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
@@ -98,9 +98,9 @@ function loadCACertificate() {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
exports.DEFAULT_HEADERS = {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
Accept:
|
|
101
|
+
"User-Agent": "GitLab MCP Server",
|
|
102
|
+
"Content-Type": "application/json",
|
|
103
|
+
Accept: "application/json",
|
|
104
104
|
};
|
|
105
105
|
if (config_1.GITLAB_TOKEN) {
|
|
106
106
|
exports.DEFAULT_HEADERS.Authorization = `Bearer ${config_1.GITLAB_TOKEN}`;
|
|
@@ -112,16 +112,16 @@ function createFetchOptions() {
|
|
|
112
112
|
options.agent = proxyAgent;
|
|
113
113
|
logger_1.logger.info(`Using proxy: ${config_1.HTTPS_PROXY ?? config_1.HTTP_PROXY}`);
|
|
114
114
|
}
|
|
115
|
-
if (config_1.SKIP_TLS_VERIFY || config_1.NODE_TLS_REJECT_UNAUTHORIZED ===
|
|
115
|
+
if (config_1.SKIP_TLS_VERIFY || config_1.NODE_TLS_REJECT_UNAUTHORIZED === "0") {
|
|
116
116
|
const agent = new https.Agent({
|
|
117
117
|
rejectUnauthorized: false,
|
|
118
118
|
});
|
|
119
119
|
options.agent = agent;
|
|
120
120
|
if (config_1.SKIP_TLS_VERIFY) {
|
|
121
|
-
logger_1.logger.warn(
|
|
121
|
+
logger_1.logger.warn("TLS certificate verification disabled via SKIP_TLS_VERIFY");
|
|
122
122
|
}
|
|
123
|
-
if (config_1.NODE_TLS_REJECT_UNAUTHORIZED ===
|
|
124
|
-
logger_1.logger.warn(
|
|
123
|
+
if (config_1.NODE_TLS_REJECT_UNAUTHORIZED === "0") {
|
|
124
|
+
logger_1.logger.warn("TLS certificate verification disabled via NODE_TLS_REJECT_UNAUTHORIZED");
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
const ca = loadCACertificate();
|
package/dist/utils/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwGA,gDAwCC;AASD,sCAiCC;AA1LD,6CAA+B;AAC/B,uCAAyB;AACzB,uDAAkD;AAClD,yDAAoD;AACpD,yDAAoD;AACpD,sCAAmC;AACnC,sCAQmB;AAKnB,SAAS,gBAAgB;IACvB,IAAI,CAAC,gCAAuB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,gCAAuB,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,56 +8,56 @@ exports.cleanGidsFromObject = cleanGidsFromObject;
|
|
|
8
8
|
exports.cleanWorkItemResponse = cleanWorkItemResponse;
|
|
9
9
|
exports.convertTypeNamesToGids = convertTypeNamesToGids;
|
|
10
10
|
const GID_PREFIXES = {
|
|
11
|
-
WorkItem:
|
|
12
|
-
User:
|
|
13
|
-
Project:
|
|
14
|
-
Group:
|
|
15
|
-
Label:
|
|
16
|
-
Milestone:
|
|
17
|
-
MergeRequest:
|
|
18
|
-
Pipeline:
|
|
19
|
-
Job:
|
|
20
|
-
Variable:
|
|
21
|
-
Wiki:
|
|
22
|
-
Note:
|
|
23
|
-
Discussion:
|
|
11
|
+
WorkItem: "gid://gitlab/WorkItem/",
|
|
12
|
+
User: "gid://gitlab/User/",
|
|
13
|
+
Project: "gid://gitlab/Project/",
|
|
14
|
+
Group: "gid://gitlab/Group/",
|
|
15
|
+
Label: "gid://gitlab/ProjectLabel/",
|
|
16
|
+
Milestone: "gid://gitlab/Milestone/",
|
|
17
|
+
MergeRequest: "gid://gitlab/MergeRequest/",
|
|
18
|
+
Pipeline: "gid://gitlab/Ci::Pipeline/",
|
|
19
|
+
Job: "gid://gitlab/Ci::Build/",
|
|
20
|
+
Variable: "gid://gitlab/Ci::Variable/",
|
|
21
|
+
Wiki: "gid://gitlab/Wiki/",
|
|
22
|
+
Note: "gid://gitlab/Note/",
|
|
23
|
+
Discussion: "gid://gitlab/Discussion/",
|
|
24
24
|
};
|
|
25
25
|
function extractSimpleId(gid) {
|
|
26
|
-
if (!gid || typeof gid !==
|
|
26
|
+
if (!gid || typeof gid !== "string") {
|
|
27
27
|
return gid;
|
|
28
28
|
}
|
|
29
|
-
if (gid.startsWith(
|
|
30
|
-
const parts = gid.split(
|
|
29
|
+
if (gid.startsWith("gid://gitlab/")) {
|
|
30
|
+
const parts = gid.split("/");
|
|
31
31
|
return parts[parts.length - 1];
|
|
32
32
|
}
|
|
33
33
|
return gid;
|
|
34
34
|
}
|
|
35
35
|
function toGid(id, entityType) {
|
|
36
|
-
if (id.startsWith(
|
|
36
|
+
if (id.startsWith("gid://gitlab/")) {
|
|
37
37
|
return id;
|
|
38
38
|
}
|
|
39
39
|
return GID_PREFIXES[entityType] + id;
|
|
40
40
|
}
|
|
41
41
|
function toGids(ids, entityType) {
|
|
42
|
-
return ids.map(
|
|
42
|
+
return ids.map(id => toGid(id, entityType));
|
|
43
43
|
}
|
|
44
44
|
function extractSimpleIds(gids) {
|
|
45
|
-
return gids.map(
|
|
45
|
+
return gids.map(gid => extractSimpleId(gid));
|
|
46
46
|
}
|
|
47
47
|
function cleanGidsFromObject(obj) {
|
|
48
|
-
if (!obj || typeof obj !==
|
|
48
|
+
if (!obj || typeof obj !== "object") {
|
|
49
49
|
return obj;
|
|
50
50
|
}
|
|
51
51
|
if (Array.isArray(obj)) {
|
|
52
|
-
const cleanedArray = obj.map(
|
|
52
|
+
const cleanedArray = obj.map(item => cleanGidsFromObject(item));
|
|
53
53
|
return cleanedArray;
|
|
54
54
|
}
|
|
55
55
|
const cleaned = {};
|
|
56
56
|
for (const [key, value] of Object.entries(obj)) {
|
|
57
|
-
if (typeof value ===
|
|
57
|
+
if (typeof value === "string" && value.startsWith("gid://gitlab/")) {
|
|
58
58
|
cleaned[key] = extractSimpleId(value);
|
|
59
59
|
}
|
|
60
|
-
else if (typeof value ===
|
|
60
|
+
else if (typeof value === "object" && value !== null) {
|
|
61
61
|
cleaned[key] = cleanGidsFromObject(value);
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
@@ -74,7 +74,7 @@ function cleanWorkItemResponse(workItem) {
|
|
|
74
74
|
id: extractSimpleId(workItem.id),
|
|
75
75
|
};
|
|
76
76
|
if (workItem.workItemType) {
|
|
77
|
-
if (typeof workItem.workItemType ===
|
|
77
|
+
if (typeof workItem.workItemType === "string") {
|
|
78
78
|
result.workItemType = workItem.workItemType;
|
|
79
79
|
}
|
|
80
80
|
else if (workItem.workItemType.name) {
|
|
@@ -90,31 +90,31 @@ function cleanWorkItemResponse(workItem) {
|
|
|
90
90
|
if (workItem.widgets) {
|
|
91
91
|
result.widgets = workItem.widgets.map((widget) => {
|
|
92
92
|
const cleanedWidget = { ...widget };
|
|
93
|
-
if (widget.type ===
|
|
93
|
+
if (widget.type === "ASSIGNEES" && widget.assignees?.nodes) {
|
|
94
94
|
cleanedWidget.assignees = {
|
|
95
95
|
...widget.assignees,
|
|
96
|
-
nodes: widget.assignees.nodes.map(
|
|
96
|
+
nodes: widget.assignees.nodes.map(assignee => ({
|
|
97
97
|
...assignee,
|
|
98
98
|
id: extractSimpleId(assignee.id),
|
|
99
99
|
})),
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
-
if (widget.type ===
|
|
102
|
+
if (widget.type === "LABELS" && widget.labels?.nodes) {
|
|
103
103
|
cleanedWidget.labels = {
|
|
104
104
|
...widget.labels,
|
|
105
|
-
nodes: widget.labels.nodes.map(
|
|
105
|
+
nodes: widget.labels.nodes.map(label => ({
|
|
106
106
|
...label,
|
|
107
107
|
id: extractSimpleId(label.id),
|
|
108
108
|
})),
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
|
-
if (widget.type ===
|
|
111
|
+
if (widget.type === "MILESTONE" && widget.milestone?.id) {
|
|
112
112
|
cleanedWidget.milestone = {
|
|
113
113
|
...widget.milestone,
|
|
114
114
|
id: extractSimpleId(widget.milestone.id),
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
-
if (widget.type ===
|
|
117
|
+
if (widget.type === "HIERARCHY" && widget.parent?.id) {
|
|
118
118
|
cleanedWidget.parent = {
|
|
119
119
|
...widget.parent,
|
|
120
120
|
id: extractSimpleId(widget.parent.id),
|
|
@@ -132,16 +132,16 @@ async function convertTypeNamesToGids(typeNames, namespacePath, getWorkItemTypes
|
|
|
132
132
|
const workItemTypes = await getWorkItemTypes(namespacePath);
|
|
133
133
|
const resolvedTypes = [];
|
|
134
134
|
for (const typeName of typeNames) {
|
|
135
|
-
const workItemTypeObj = workItemTypes.find(
|
|
135
|
+
const workItemTypeObj = workItemTypes.find(t => t.name.toUpperCase() === typeName.toUpperCase());
|
|
136
136
|
if (workItemTypeObj) {
|
|
137
137
|
resolvedTypes.push(workItemTypeObj.id);
|
|
138
138
|
}
|
|
139
139
|
else {
|
|
140
|
-
console.warn(`Work item type "${typeName}" not found in namespace "${namespacePath}". Available types: ${workItemTypes.map(
|
|
140
|
+
console.warn(`Work item type "${typeName}" not found in namespace "${namespacePath}". Available types: ${workItemTypes.map(t => t.name).join(", ")}`);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
if (resolvedTypes.length === 0) {
|
|
144
|
-
console.warn(
|
|
144
|
+
console.warn("No valid work item types found for filtering. Using no type filter.");
|
|
145
145
|
return [];
|
|
146
146
|
}
|
|
147
147
|
return resolvedTypes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idConversion.js","sourceRoot":"","sources":["../../src/utils/idConversion.ts"],"names":[],"mappings":";;AAwEA,0CASC;AAQD,sBAMC;AAQD,wBAEC;AAOD,4CAEC;AAOD,kDAuBC;AAOD,sDA0EC;AASD,wDAkCC;AA3ND,MAAM,YAAY,GAAG;IACnB,QAAQ,EAAE,wBAAwB;IAClC,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,qBAAqB;IAC5B,KAAK,EAAE,4BAA4B;IACnC,SAAS,EAAE,yBAAyB;IACpC,YAAY,EAAE,4BAA4B;IAC1C,QAAQ,EAAE,4BAA4B;IACtC,GAAG,EAAE,yBAAyB;IAC9B,QAAQ,EAAE,4BAA4B;IACtC,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,oBAAoB;IAC1B,UAAU,EAAE,0BAA0B;CAC9B,CAAC;AASX,SAAgB,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAQD,SAAgB,KAAK,CAAC,EAAU,EAAE,UAAsB;IAEtD,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACvC,CAAC;AAQD,SAAgB,MAAM,CAAC,GAAa,EAAE,UAAsB;IAC1D,OAAO,GAAG,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"idConversion.js","sourceRoot":"","sources":["../../src/utils/idConversion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare function isLikelyProjectPath(namespacePath: string): boolean;
|
|
2
|
-
export declare function detectNamespaceType(namespacePath: string): Promise<
|
|
2
|
+
export declare function detectNamespaceType(namespacePath: string): Promise<"project" | "group">;
|
|
3
3
|
export declare function resolveNamespaceForAPI(namespacePath: string): Promise<{
|
|
4
|
-
entityType:
|
|
4
|
+
entityType: "projects" | "groups";
|
|
5
5
|
encodedPath: string;
|
|
6
6
|
}>;
|
package/dist/utils/namespace.js
CHANGED
|
@@ -5,31 +5,31 @@ exports.detectNamespaceType = detectNamespaceType;
|
|
|
5
5
|
exports.resolveNamespaceForAPI = resolveNamespaceForAPI;
|
|
6
6
|
const fetch_1 = require("./fetch");
|
|
7
7
|
function isLikelyProjectPath(namespacePath) {
|
|
8
|
-
return namespacePath.includes(
|
|
8
|
+
return namespacePath.includes("/");
|
|
9
9
|
}
|
|
10
10
|
async function detectNamespaceType(namespacePath) {
|
|
11
11
|
if (isLikelyProjectPath(namespacePath)) {
|
|
12
|
-
const isProject = await verifyNamespaceType(namespacePath,
|
|
12
|
+
const isProject = await verifyNamespaceType(namespacePath, "project");
|
|
13
13
|
if (isProject)
|
|
14
|
-
return
|
|
15
|
-
const isGroup = await verifyNamespaceType(namespacePath,
|
|
14
|
+
return "project";
|
|
15
|
+
const isGroup = await verifyNamespaceType(namespacePath, "group");
|
|
16
16
|
if (isGroup)
|
|
17
|
-
return
|
|
18
|
-
return
|
|
17
|
+
return "group";
|
|
18
|
+
return "project";
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
|
-
const isGroup = await verifyNamespaceType(namespacePath,
|
|
21
|
+
const isGroup = await verifyNamespaceType(namespacePath, "group");
|
|
22
22
|
if (isGroup)
|
|
23
|
-
return
|
|
24
|
-
const isProject = await verifyNamespaceType(namespacePath,
|
|
23
|
+
return "group";
|
|
24
|
+
const isProject = await verifyNamespaceType(namespacePath, "project");
|
|
25
25
|
if (isProject)
|
|
26
|
-
return
|
|
27
|
-
return
|
|
26
|
+
return "project";
|
|
27
|
+
return "group";
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
async function verifyNamespaceType(namespacePath, type) {
|
|
31
31
|
try {
|
|
32
|
-
const entityType = type ===
|
|
32
|
+
const entityType = type === "project" ? "projects" : "groups";
|
|
33
33
|
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/${entityType}/${encodeURIComponent(namespacePath)}`;
|
|
34
34
|
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
35
35
|
headers: {
|
|
@@ -45,7 +45,7 @@ async function verifyNamespaceType(namespacePath, type) {
|
|
|
45
45
|
async function resolveNamespaceForAPI(namespacePath) {
|
|
46
46
|
const namespaceType = await detectNamespaceType(namespacePath);
|
|
47
47
|
return {
|
|
48
|
-
entityType: namespaceType ===
|
|
48
|
+
entityType: namespaceType === "project" ? "projects" : "groups",
|
|
49
49
|
encodedPath: encodeURIComponent(namespacePath),
|
|
50
50
|
};
|
|
51
51
|
}
|
|
@@ -16,7 +16,7 @@ function analyzeQuery(query) {
|
|
|
16
16
|
const trimmedQuery = query.trim();
|
|
17
17
|
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmedQuery)) {
|
|
18
18
|
return {
|
|
19
|
-
type:
|
|
19
|
+
type: "email",
|
|
20
20
|
hasTransliteration: false,
|
|
21
21
|
originalQuery: trimmedQuery,
|
|
22
22
|
};
|
|
@@ -24,7 +24,7 @@ function analyzeQuery(query) {
|
|
|
24
24
|
if (trimmedQuery.length >= 3 && trimmedQuery.length <= 30 && !/\s/.test(trimmedQuery)) {
|
|
25
25
|
const hasTransliterationNeeded = hasNonLatin(trimmedQuery);
|
|
26
26
|
return {
|
|
27
|
-
type:
|
|
27
|
+
type: "username",
|
|
28
28
|
hasTransliteration: hasTransliterationNeeded,
|
|
29
29
|
originalQuery: trimmedQuery,
|
|
30
30
|
transliteratedQuery: hasTransliterationNeeded ? transliterateText(trimmedQuery) : undefined,
|
|
@@ -32,7 +32,7 @@ function analyzeQuery(query) {
|
|
|
32
32
|
}
|
|
33
33
|
const hasTransliterationNeeded = hasNonLatin(trimmedQuery);
|
|
34
34
|
return {
|
|
35
|
-
type:
|
|
35
|
+
type: "name",
|
|
36
36
|
hasTransliteration: hasTransliterationNeeded,
|
|
37
37
|
originalQuery: trimmedQuery,
|
|
38
38
|
transliteratedQuery: hasTransliterationNeeded ? transliterateText(trimmedQuery) : undefined,
|
|
@@ -69,13 +69,13 @@ async function smartUserSearch(query, additionalParams = {}) {
|
|
|
69
69
|
let totalApiCalls = 0;
|
|
70
70
|
let targetParams;
|
|
71
71
|
switch (pattern.type) {
|
|
72
|
-
case
|
|
72
|
+
case "email":
|
|
73
73
|
targetParams = { public_email: pattern.originalQuery, ...additionalParams };
|
|
74
74
|
break;
|
|
75
|
-
case
|
|
75
|
+
case "username":
|
|
76
76
|
targetParams = { username: pattern.originalQuery, ...additionalParams };
|
|
77
77
|
break;
|
|
78
|
-
case
|
|
78
|
+
case "name":
|
|
79
79
|
targetParams = { search: pattern.originalQuery, ...additionalParams };
|
|
80
80
|
break;
|
|
81
81
|
}
|
|
@@ -98,12 +98,12 @@ async function smartUserSearch(query, additionalParams = {}) {
|
|
|
98
98
|
},
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
if (pattern.type !==
|
|
101
|
+
if (pattern.type !== "name") {
|
|
102
102
|
const broadParams = { search: pattern.originalQuery, ...additionalParams };
|
|
103
103
|
users = await callUsersAPI(broadParams);
|
|
104
104
|
totalApiCalls++;
|
|
105
105
|
searchPhases.push({
|
|
106
|
-
phase:
|
|
106
|
+
phase: "broad-search",
|
|
107
107
|
params: broadParams,
|
|
108
108
|
resultCount: users.length,
|
|
109
109
|
});
|
|
@@ -124,14 +124,14 @@ async function smartUserSearch(query, additionalParams = {}) {
|
|
|
124
124
|
users = await callUsersAPI(translitParams);
|
|
125
125
|
totalApiCalls++;
|
|
126
126
|
searchPhases.push({
|
|
127
|
-
phase:
|
|
127
|
+
phase: "transliteration",
|
|
128
128
|
params: translitParams,
|
|
129
129
|
resultCount: users.length,
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
catch (error) {
|
|
134
|
-
console.error(
|
|
134
|
+
console.error("Smart user search error:", error);
|
|
135
135
|
}
|
|
136
136
|
return {
|
|
137
137
|
users,
|
package/package.json
CHANGED
|
Binary file
|