@fruggr/zendesk-mcp-server 3.2.0 → 3.3.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/sbom.cdx.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:b998bb6f-ce4c-50fa-a843-1dbcc6584fe3",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
7
|
"component": {
|
|
8
8
|
"type": "application",
|
|
9
|
-
"bom-ref": "pkg:npm/%40fruggr/zendesk-mcp-server@3.
|
|
9
|
+
"bom-ref": "pkg:npm/%40fruggr/zendesk-mcp-server@3.3.0",
|
|
10
10
|
"name": "@fruggr/zendesk-mcp-server",
|
|
11
|
-
"version": "3.
|
|
12
|
-
"purl": "pkg:npm/%40fruggr/zendesk-mcp-server@3.
|
|
11
|
+
"version": "3.3.0",
|
|
12
|
+
"purl": "pkg:npm/%40fruggr/zendesk-mcp-server@3.3.0"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"components": [
|
|
@@ -1011,10 +1011,10 @@
|
|
|
1011
1011
|
},
|
|
1012
1012
|
{
|
|
1013
1013
|
"type": "library",
|
|
1014
|
-
"bom-ref": "pkg:npm/mdast-util-from-markdown@2.0
|
|
1014
|
+
"bom-ref": "pkg:npm/mdast-util-from-markdown@2.1.0",
|
|
1015
1015
|
"name": "mdast-util-from-markdown",
|
|
1016
|
-
"version": "2.0
|
|
1017
|
-
"purl": "pkg:npm/mdast-util-from-markdown@2.0
|
|
1016
|
+
"version": "2.1.0",
|
|
1017
|
+
"purl": "pkg:npm/mdast-util-from-markdown@2.1.0",
|
|
1018
1018
|
"licenses": [
|
|
1019
1019
|
{
|
|
1020
1020
|
"expression": "MIT"
|
|
@@ -1059,10 +1059,10 @@
|
|
|
1059
1059
|
},
|
|
1060
1060
|
{
|
|
1061
1061
|
"type": "library",
|
|
1062
|
-
"bom-ref": "pkg:npm/mdast-util-gfm-strikethrough@2.0.
|
|
1062
|
+
"bom-ref": "pkg:npm/mdast-util-gfm-strikethrough@2.0.1",
|
|
1063
1063
|
"name": "mdast-util-gfm-strikethrough",
|
|
1064
|
-
"version": "2.0.
|
|
1065
|
-
"purl": "pkg:npm/mdast-util-gfm-strikethrough@2.0.
|
|
1064
|
+
"version": "2.0.1",
|
|
1065
|
+
"purl": "pkg:npm/mdast-util-gfm-strikethrough@2.0.1",
|
|
1066
1066
|
"licenses": [
|
|
1067
1067
|
{
|
|
1068
1068
|
"expression": "MIT"
|
|
@@ -1119,10 +1119,10 @@
|
|
|
1119
1119
|
},
|
|
1120
1120
|
{
|
|
1121
1121
|
"type": "library",
|
|
1122
|
-
"bom-ref": "pkg:npm/mdast-util-to-markdown@2.
|
|
1122
|
+
"bom-ref": "pkg:npm/mdast-util-to-markdown@2.2.0",
|
|
1123
1123
|
"name": "mdast-util-to-markdown",
|
|
1124
|
-
"version": "2.
|
|
1125
|
-
"purl": "pkg:npm/mdast-util-to-markdown@2.
|
|
1124
|
+
"version": "2.2.0",
|
|
1125
|
+
"purl": "pkg:npm/mdast-util-to-markdown@2.2.0",
|
|
1126
1126
|
"licenses": [
|
|
1127
1127
|
{
|
|
1128
1128
|
"expression": "MIT"
|
|
@@ -1621,18 +1621,6 @@
|
|
|
1621
1621
|
}
|
|
1622
1622
|
]
|
|
1623
1623
|
},
|
|
1624
|
-
{
|
|
1625
|
-
"type": "library",
|
|
1626
|
-
"bom-ref": "pkg:npm/powershell-utils@0.1.0",
|
|
1627
|
-
"name": "powershell-utils",
|
|
1628
|
-
"version": "0.1.0",
|
|
1629
|
-
"purl": "pkg:npm/powershell-utils@0.1.0",
|
|
1630
|
-
"licenses": [
|
|
1631
|
-
{
|
|
1632
|
-
"expression": "MIT"
|
|
1633
|
-
}
|
|
1634
|
-
]
|
|
1635
|
-
},
|
|
1636
1624
|
{
|
|
1637
1625
|
"type": "library",
|
|
1638
1626
|
"bom-ref": "pkg:npm/powershell-utils@0.2.1",
|
|
@@ -2115,10 +2103,10 @@
|
|
|
2115
2103
|
},
|
|
2116
2104
|
{
|
|
2117
2105
|
"type": "library",
|
|
2118
|
-
"bom-ref": "pkg:npm/wsl-utils@1.0.
|
|
2106
|
+
"bom-ref": "pkg:npm/wsl-utils@1.0.1",
|
|
2119
2107
|
"name": "wsl-utils",
|
|
2120
|
-
"version": "1.0.
|
|
2121
|
-
"purl": "pkg:npm/wsl-utils@1.0.
|
|
2108
|
+
"version": "1.0.1",
|
|
2109
|
+
"purl": "pkg:npm/wsl-utils@1.0.1",
|
|
2122
2110
|
"licenses": [
|
|
2123
2111
|
{
|
|
2124
2112
|
"expression": "MIT"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { l as getOAuthUrls, r as silentLogger } from "./index.js";
|
|
3
3
|
import { a as saveToken, c as grantCovers, d as escapeHtml, i as resolveTokenPath, l as requestedScope, o as generateCodeChallenge, r as loadToken, s as generateCodeVerifier, t as clearToken } from "./token-persistence-BeetFqPF.js";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import path from "node:path";
|
|
@@ -63,28 +63,34 @@ const isWsl = () => {
|
|
|
63
63
|
};
|
|
64
64
|
var is_wsl_default = process$1.env.__IS_WSL_TEST__ ? isWsl : isWsl();
|
|
65
65
|
//#endregion
|
|
66
|
-
//#region node_modules/.pnpm/powershell-utils@0.1
|
|
67
|
-
const execFile$
|
|
68
|
-
const powerShellPath$
|
|
69
|
-
const
|
|
70
|
-
const { powerShellPath: psPath, ...execFileOptions } = options;
|
|
71
|
-
const encodedCommand = executePowerShell$1.encodeCommand(command);
|
|
72
|
-
return execFile$3(psPath ?? powerShellPath$2(), [...executePowerShell$1.argumentsPrefix, encodedCommand], {
|
|
73
|
-
encoding: "utf8",
|
|
74
|
-
...execFileOptions
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
executePowerShell$1.argumentsPrefix = [
|
|
66
|
+
//#region node_modules/.pnpm/powershell-utils@0.2.1/node_modules/powershell-utils/index.js
|
|
67
|
+
const execFile$2 = promisify(childProcess.execFile);
|
|
68
|
+
const powerShellPath$1 = () => `${process$1.env.SYSTEMROOT || process$1.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;
|
|
69
|
+
const argumentsPrefix = [
|
|
78
70
|
"-NoProfile",
|
|
79
71
|
"-NonInteractive",
|
|
80
72
|
"-ExecutionPolicy",
|
|
81
73
|
"Bypass",
|
|
82
74
|
"-EncodedCommand"
|
|
83
75
|
];
|
|
84
|
-
|
|
85
|
-
|
|
76
|
+
const encodeCommand = (command) => Buffer.from(command, "utf16le").toString("base64");
|
|
77
|
+
const escapeArgument = (value) => `'${String(value).replaceAll(/['‘’‚‛]/g, (match) => match + match)}'`;
|
|
78
|
+
const createArguments = (command) => [...argumentsPrefix, encodeCommand(command)];
|
|
79
|
+
const createExecFileOptions = (options) => ({
|
|
80
|
+
encoding: "utf8",
|
|
81
|
+
...options,
|
|
82
|
+
shell: false
|
|
83
|
+
});
|
|
84
|
+
const executePowerShell = async (command, options = {}) => {
|
|
85
|
+
const { powerShellPath: psPath, ...execFileOptions } = options;
|
|
86
|
+
return execFile$2(psPath ?? powerShellPath$1(), createArguments(command), createExecFileOptions(execFileOptions));
|
|
87
|
+
};
|
|
88
|
+
executePowerShell.argumentsPrefix = argumentsPrefix;
|
|
89
|
+
executePowerShell.encodeCommand = encodeCommand;
|
|
90
|
+
executePowerShell.escapeArgument = escapeArgument;
|
|
91
|
+
executePowerShell.createArguments = createArguments;
|
|
86
92
|
//#endregion
|
|
87
|
-
//#region node_modules/.pnpm/wsl-utils@1.0.
|
|
93
|
+
//#region node_modules/.pnpm/wsl-utils@1.0.1/node_modules/wsl-utils/utilities.js
|
|
88
94
|
function parseMountPointFromConfig(content) {
|
|
89
95
|
for (const line of content.split("\n")) {
|
|
90
96
|
if (/^\s*#/.test(line)) continue;
|
|
@@ -94,8 +100,8 @@ function parseMountPointFromConfig(content) {
|
|
|
94
100
|
}
|
|
95
101
|
}
|
|
96
102
|
//#endregion
|
|
97
|
-
//#region node_modules/.pnpm/wsl-utils@1.0.
|
|
98
|
-
const execFile$
|
|
103
|
+
//#region node_modules/.pnpm/wsl-utils@1.0.1/node_modules/wsl-utils/index.js
|
|
104
|
+
const execFile$1 = promisify(childProcess.execFile);
|
|
99
105
|
const wslDrivesMountPoint = (() => {
|
|
100
106
|
const defaultMountPoint = "/mnt/";
|
|
101
107
|
let mountPoint;
|
|
@@ -118,12 +124,12 @@ const wslDrivesMountPoint = (() => {
|
|
|
118
124
|
const powerShellPathFromWsl = async () => {
|
|
119
125
|
return `${await wslDrivesMountPoint()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;
|
|
120
126
|
};
|
|
121
|
-
const powerShellPath
|
|
127
|
+
const powerShellPath = is_wsl_default ? powerShellPathFromWsl : powerShellPath$1;
|
|
122
128
|
let canAccessPowerShellPromise;
|
|
123
129
|
const canAccessPowerShell = async () => {
|
|
124
130
|
canAccessPowerShellPromise ??= (async () => {
|
|
125
131
|
try {
|
|
126
|
-
const psPath = await powerShellPath
|
|
132
|
+
const psPath = await powerShellPath();
|
|
127
133
|
await fs.access(psPath, constants.X_OK);
|
|
128
134
|
return true;
|
|
129
135
|
} catch {
|
|
@@ -133,60 +139,35 @@ const canAccessPowerShell = async () => {
|
|
|
133
139
|
return canAccessPowerShellPromise;
|
|
134
140
|
};
|
|
135
141
|
const wslDefaultBrowser = async () => {
|
|
136
|
-
const psPath = await powerShellPath
|
|
142
|
+
const psPath = await powerShellPath();
|
|
137
143
|
const command = String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`;
|
|
138
|
-
const { stdout } = await executePowerShell
|
|
144
|
+
const { stdout } = await executePowerShell(command, {
|
|
139
145
|
powerShellPath: psPath,
|
|
140
146
|
cwd: path.dirname(psPath)
|
|
141
147
|
});
|
|
142
148
|
return stdout.trim();
|
|
143
149
|
};
|
|
144
150
|
const isUrl = (path) => /^[a-z]+:\/\//i.test(path);
|
|
151
|
+
const convertPath = async (flag, path) => {
|
|
152
|
+
const wslpathArguments = path.startsWith("-") ? [
|
|
153
|
+
flag,
|
|
154
|
+
"--",
|
|
155
|
+
path
|
|
156
|
+
] : [flag, path];
|
|
157
|
+
try {
|
|
158
|
+
const { stdout } = await execFile$1("wslpath", wslpathArguments, { encoding: "utf8" });
|
|
159
|
+
return stdout.replace(/\r?\n$/, "") || path;
|
|
160
|
+
} catch {
|
|
161
|
+
return path;
|
|
162
|
+
}
|
|
163
|
+
};
|
|
145
164
|
const convertWslPathToWindows = async (paths) => {
|
|
146
165
|
const isBatch = Array.isArray(paths);
|
|
147
166
|
const pathArray = isBatch ? paths : [paths];
|
|
148
|
-
const
|
|
149
|
-
const pathsToConvert = [];
|
|
150
|
-
for (const [index, path] of pathArray.entries()) if (!isUrl(path)) {
|
|
151
|
-
indicesToConvert.push(index);
|
|
152
|
-
pathsToConvert.push(path);
|
|
153
|
-
}
|
|
154
|
-
const results = [...pathArray];
|
|
155
|
-
if (pathsToConvert.length > 0) try {
|
|
156
|
-
const { stdout } = await execFile$2("wslpath", ["-aw", ...pathsToConvert], { encoding: "utf8" });
|
|
157
|
-
const convertedPaths = stdout.split(/\r?\n/).filter(Boolean);
|
|
158
|
-
for (const [index, originalIndex] of indicesToConvert.entries()) results[originalIndex] = convertedPaths[index] ?? pathArray[originalIndex];
|
|
159
|
-
} catch {}
|
|
167
|
+
const results = await Promise.all(pathArray.map((path) => isUrl(path) ? path : convertPath("-aw", path)));
|
|
160
168
|
return isBatch ? results : results[0];
|
|
161
169
|
};
|
|
162
170
|
//#endregion
|
|
163
|
-
//#region node_modules/.pnpm/powershell-utils@0.2.1/node_modules/powershell-utils/index.js
|
|
164
|
-
const execFile$1 = promisify(childProcess.execFile);
|
|
165
|
-
const powerShellPath = () => `${process$1.env.SYSTEMROOT || process$1.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;
|
|
166
|
-
const argumentsPrefix = [
|
|
167
|
-
"-NoProfile",
|
|
168
|
-
"-NonInteractive",
|
|
169
|
-
"-ExecutionPolicy",
|
|
170
|
-
"Bypass",
|
|
171
|
-
"-EncodedCommand"
|
|
172
|
-
];
|
|
173
|
-
const encodeCommand = (command) => Buffer.from(command, "utf16le").toString("base64");
|
|
174
|
-
const escapeArgument = (value) => `'${String(value).replaceAll(/['‘’‚‛]/g, (match) => match + match)}'`;
|
|
175
|
-
const createArguments = (command) => [...argumentsPrefix, encodeCommand(command)];
|
|
176
|
-
const createExecFileOptions = (options) => ({
|
|
177
|
-
encoding: "utf8",
|
|
178
|
-
...options,
|
|
179
|
-
shell: false
|
|
180
|
-
});
|
|
181
|
-
const executePowerShell = async (command, options = {}) => {
|
|
182
|
-
const { powerShellPath: psPath, ...execFileOptions } = options;
|
|
183
|
-
return execFile$1(psPath ?? powerShellPath(), createArguments(command), createExecFileOptions(execFileOptions));
|
|
184
|
-
};
|
|
185
|
-
executePowerShell.argumentsPrefix = argumentsPrefix;
|
|
186
|
-
executePowerShell.encodeCommand = encodeCommand;
|
|
187
|
-
executePowerShell.escapeArgument = escapeArgument;
|
|
188
|
-
executePowerShell.createArguments = createArguments;
|
|
189
|
-
//#endregion
|
|
190
171
|
//#region node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js
|
|
191
172
|
function defineLazyProperty(object, propertyName, valueGetter) {
|
|
192
173
|
const define = (value) => Object.defineProperty(object, propertyName, {
|
|
@@ -459,7 +440,7 @@ const baseOpen = async (options) => {
|
|
|
459
440
|
if (options.newInstance) cliArguments.push("--new");
|
|
460
441
|
if (app) cliArguments.push("-a", app);
|
|
461
442
|
} else if (platform === "win32" || shouldUseWindowsInWsl) {
|
|
462
|
-
command = await powerShellPath
|
|
443
|
+
command = await powerShellPath();
|
|
463
444
|
cliArguments.push(...executePowerShell.argumentsPrefix);
|
|
464
445
|
if (!is_wsl_default) childProcessOptions.windowsVerbatimArguments = true;
|
|
465
446
|
if (is_wsl_default && options.target) options.target = await convertWslPathToWindows(options.target);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fruggr/zendesk-mcp-server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"mcpName": "io.github.fruggr/zendesk-mcp-server",
|
|
5
5
|
"description": "Deep Zendesk MCP server for your AI assistant: search, draft, update and translate Help Center articles and manage Support tickets end to end — comments, triage and image attachments.",
|
|
6
6
|
"type": "module",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"engines": {
|
|
73
73
|
"node": ">=22"
|
|
74
74
|
},
|
|
75
|
-
"packageManager": "pnpm@12.
|
|
75
|
+
"packageManager": "pnpm@12.9.1+sha512.06b055fff5cd20dc12781de173ced3310ce0951bf2ec620211a16045d5444d5c93a663210764ef29a653a610459ba0368f0e74f84d80c54723cf95aae7bc0d6d",
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@biomejs/biome": "2.5.14",
|
|
78
78
|
"@modelcontextprotocol/client": "2.2.0",
|