@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.
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.6",
4
- "serialNumber": "urn:uuid:b370c80f-c327-5c78-b90b-e161da6f00fc",
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.2.0",
9
+ "bom-ref": "pkg:npm/%40fruggr/zendesk-mcp-server@3.3.0",
10
10
  "name": "@fruggr/zendesk-mcp-server",
11
- "version": "3.2.0",
12
- "purl": "pkg:npm/%40fruggr/zendesk-mcp-server@3.2.0"
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.3",
1014
+ "bom-ref": "pkg:npm/mdast-util-from-markdown@2.1.0",
1015
1015
  "name": "mdast-util-from-markdown",
1016
- "version": "2.0.3",
1017
- "purl": "pkg:npm/mdast-util-from-markdown@2.0.3",
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.0",
1062
+ "bom-ref": "pkg:npm/mdast-util-gfm-strikethrough@2.0.1",
1063
1063
  "name": "mdast-util-gfm-strikethrough",
1064
- "version": "2.0.0",
1065
- "purl": "pkg:npm/mdast-util-gfm-strikethrough@2.0.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.1.2",
1122
+ "bom-ref": "pkg:npm/mdast-util-to-markdown@2.2.0",
1123
1123
  "name": "mdast-util-to-markdown",
1124
- "version": "2.1.2",
1125
- "purl": "pkg:npm/mdast-util-to-markdown@2.1.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.0",
2106
+ "bom-ref": "pkg:npm/wsl-utils@1.0.1",
2119
2107
  "name": "wsl-utils",
2120
- "version": "1.0.0",
2121
- "purl": "pkg:npm/wsl-utils@1.0.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 { c as getOAuthUrls, r as silentLogger } from "./index.js";
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.0/node_modules/powershell-utils/index.js
67
- const execFile$3 = promisify(childProcess.execFile);
68
- const powerShellPath$2 = () => `${process$1.env.SYSTEMROOT || process$1.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;
69
- const executePowerShell$1 = async (command, options = {}) => {
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
- executePowerShell$1.encodeCommand = (command) => Buffer.from(command, "utf16le").toString("base64");
85
- executePowerShell$1.escapeArgument = (value) => `'${String(value).replaceAll("'", "''")}'`;
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.0/node_modules/wsl-utils/utilities.js
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.0/node_modules/wsl-utils/index.js
98
- const execFile$2 = promisify(childProcess.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$1 = is_wsl_default ? powerShellPathFromWsl : powerShellPath$2;
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$1();
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$1();
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$1(command, {
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 indicesToConvert = [];
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$1();
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.2.0",
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.5.1+sha512.e3f305bc784a2bc89f5ad3b6138889470fae8d2af5f36b61216ec91c2c3d64089775f9de38aac331044ea40f245cb0d5666392dfdf65824e1907ef6a2c62de5f",
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",