@dollhousemcp/mcp-server 2.0.20 → 2.0.21

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/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.21] - 2026-04-16
4
+
5
+ - Sanitize OAuth and PAT helper logging to restore SonarCloud security quality
6
+
3
7
  ## [2.0.20] - 2026-04-16
4
8
 
5
9
  Point release for console leader bind authority and follower registration recovery.
@@ -2,8 +2,8 @@
2
2
  * Auto-generated file - DO NOT EDIT
3
3
  * Generated at build time by scripts/generate-version.js
4
4
  */
5
- export declare const PACKAGE_VERSION = "2.0.20";
6
- export declare const BUILD_TIMESTAMP = "2026-04-16T14:53:41.093Z";
5
+ export declare const PACKAGE_VERSION = "2.0.21";
6
+ export declare const BUILD_TIMESTAMP = "2026-04-16T15:35:15.005Z";
7
7
  export declare const BUILD_TYPE: 'npm' | 'git';
8
8
  export declare const PACKAGE_NAME = "@dollhousemcp/mcp-server";
9
9
  //# sourceMappingURL=version.d.ts.map
@@ -2,8 +2,8 @@
2
2
  * Auto-generated file - DO NOT EDIT
3
3
  * Generated at build time by scripts/generate-version.js
4
4
  */
5
- export const PACKAGE_VERSION = '2.0.20';
6
- export const BUILD_TIMESTAMP = '2026-04-16T14:53:41.093Z';
5
+ export const PACKAGE_VERSION = '2.0.21';
6
+ export const BUILD_TIMESTAMP = '2026-04-16T15:35:15.005Z';
7
7
  export const BUILD_TYPE = 'npm';
8
8
  export const PACKAGE_NAME = '@dollhousemcp/mcp-server';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcyLjAuMjAnO1xuZXhwb3J0IGNvbnN0IEJVSUxEX1RJTUVTVEFNUCA9ICcyMDI2LTA0LTE2VDE0OjUzOjQxLjA5M1onO1xuZXhwb3J0IGNvbnN0IEJVSUxEX1RZUEU6ICducG0nIHwgJ2dpdCcgPSAnbnBtJztcbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUUgPSAnQGRvbGxob3VzZW1jcC9tY3Atc2VydmVyJztcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcyLjAuMjEnO1xuZXhwb3J0IGNvbnN0IEJVSUxEX1RJTUVTVEFNUCA9ICcyMDI2LTA0LTE2VDE1OjM1OjE1LjAwNVonO1xuZXhwb3J0IGNvbnN0IEJVSUxEX1RZUEU6ICducG0nIHwgJ2dpdCcgPSAnbnBtJztcbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUUgPSAnQGRvbGxob3VzZW1jcC9tY3Atc2VydmVyJztcbiJdfQ==
package/oauth-helper.mjs CHANGED
@@ -110,7 +110,7 @@ async function pollGitHub(deviceCode, clientId) {
110
110
  const data = await response.json();
111
111
  return data;
112
112
  } catch (error) {
113
- await log(`Network error polling GitHub: ${error.message}`);
113
+ await log('Network error polling GitHub');
114
114
  throw error;
115
115
  }
116
116
  }
@@ -130,8 +130,8 @@ async function storeToken(token) {
130
130
  await TokenManager.storeGitHubToken(token);
131
131
  await log('Token stored successfully using TokenManager');
132
132
  return true;
133
- } catch (error) {
134
- await log(`Failed to store token using TokenManager: ${error.message}`);
133
+ } catch {
134
+ await log('Failed to store token using TokenManager');
135
135
 
136
136
  // Fallback: Write to a temporary file for the MCP server to pick up
137
137
  try {
@@ -154,10 +154,10 @@ async function storeToken(token) {
154
154
  // Verify file permissions
155
155
  await fs.chmod(tempTokenFile, 0o600);
156
156
 
157
- await log(`Token written to fallback file with secure permissions`);
157
+ await log('Token written to fallback file with secure permissions');
158
158
  return true;
159
159
  } catch (fallbackError) {
160
- await log(`Fallback storage also failed: ${fallbackError.message}`);
160
+ await log('Fallback storage also failed');
161
161
  throw fallbackError;
162
162
  }
163
163
  }
@@ -192,14 +192,14 @@ async function writePidFile() {
192
192
  await fs.mkdir(pidDir, { recursive: true, mode: 0o700 });
193
193
  await fs.writeFile(pidFile, process.pid.toString(), { mode: 0o600 });
194
194
  await log(`PID file written: ${pidFile}`);
195
- } catch (error) {
196
- await log(`Failed to write PID file: ${error.message}`);
195
+ } catch {
196
+ await log('Failed to write PID file');
197
197
  }
198
198
  }
199
199
 
200
200
  async function main() {
201
201
  await log(`[START] OAuth helper started - PID: ${process.pid}`);
202
- await log(`[CONFIG] Device code: ${deviceCode.substring(0, 2)}****`); // More aggressive truncation
202
+ await log('[CONFIG] Device code received');
203
203
  await log(`[CONFIG] Poll interval: ${pollInterval}s, Expires in: ${expiresIn}s`);
204
204
  await log(`[CONFIG] Node version: ${process.version}`);
205
205
  await log(`[CONFIG] Platform: ${process.platform}`);
@@ -278,9 +278,9 @@ async function main() {
278
278
  process.exit(1);
279
279
 
280
280
  default:
281
- await log(`OAUTH_HELPER_276: Unknown error from GitHub: ${response.error}`);
282
- await log(`[ERROR] Error description: ${response.error_description}`);
283
- console.error(`OAUTH_UNKNOWN_RESPONSE: Unknown error '${response.error}' at line 276`);
281
+ await log('OAUTH_HELPER_276: Unknown error from GitHub during device flow polling');
282
+ await log('[ERROR] GitHub returned an unrecognized OAuth polling response');
283
+ console.error('OAUTH_UNKNOWN_RESPONSE: Unknown GitHub OAuth response at line 276');
284
284
  }
285
285
  } else if (response.access_token) {
286
286
  // Success! We got the token
@@ -309,7 +309,7 @@ async function main() {
309
309
  consecutiveErrors = 0;
310
310
  }
311
311
  } catch (error) {
312
- await log(`[ERROR] Polling error: ${error.message}`);
312
+ await log('[ERROR] Polling error');
313
313
 
314
314
  // Classify error types
315
315
  const isNetworkError = error.message && (
@@ -333,8 +333,8 @@ async function main() {
333
333
  }
334
334
  } else {
335
335
  // Non-network error, likely fatal
336
- await log(`OAUTH_HELPER_330: Non-recoverable error: ${error.message}`);
337
- console.error(`OAUTH_FATAL_ERROR: Non-recoverable error at line 330 - ${error.message}`);
336
+ await log('OAUTH_HELPER_330: Non-recoverable error');
337
+ console.error('OAUTH_FATAL_ERROR: Non-recoverable error at line 330');
338
338
  clearInterval(heartbeatInterval);
339
339
  await cleanupPidFile();
340
340
  process.exit(1);
@@ -355,9 +355,9 @@ async function main() {
355
355
  }
356
356
 
357
357
  // Run the main function
358
- main().catch(async (error) => {
359
- await log(`Fatal error: ${error.message}`);
360
- console.error('Fatal error in OAuth helper:', error);
358
+ main().catch(async () => {
359
+ await log('Fatal error');
360
+ console.error('Fatal error in OAuth helper');
361
361
  await cleanupPidFile();
362
362
  process.exit(1);
363
- });
363
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dollhousemcp/mcp-server",
3
- "version": "2.0.20",
3
+ "version": "2.0.21",
4
4
  "description": "DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.DollhouseMCP/mcp-server",
4
4
  "title": "DollhouseMCP",
5
5
  "description": "OSS to create Personas, Skills, Templates, Agents, and Memories to customize your AI experience.",
6
- "version": "2.0.20",
6
+ "version": "2.0.21",
7
7
  "homepage": "https://dollhousemcp.com",
8
8
  "repository": {
9
9
  "type": "git",
@@ -29,7 +29,7 @@
29
29
  {
30
30
  "registryType": "npm",
31
31
  "identifier": "@dollhousemcp/mcp-server",
32
- "version": "2.0.20",
32
+ "version": "2.0.21",
33
33
  "transport": {
34
34
  "type": "stdio"
35
35
  }