@dollhousemcp/mcp-server 1.9.1 → 1.9.3
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 +69 -0
- package/README.github.md +4 -3
- package/dist/config/ConfigWizardDisplay.d.ts +64 -0
- package/dist/config/ConfigWizardDisplay.d.ts.map +1 -0
- package/dist/config/ConfigWizardDisplay.js +150 -0
- package/dist/config/WizardFirstResponse.d.ts +25 -0
- package/dist/config/WizardFirstResponse.d.ts.map +1 -0
- package/dist/config/WizardFirstResponse.js +118 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +158 -1
- package/dist/scripts/scripts/run-config-wizard.js +57 -0
- package/dist/scripts/src/config/ConfigManager.js +799 -0
- package/dist/scripts/src/config/ConfigWizard.js +368 -0
- package/dist/scripts/src/errors/SecurityError.js +47 -0
- package/dist/scripts/src/security/constants.js +28 -0
- package/dist/scripts/src/security/contentValidator.js +415 -0
- package/dist/scripts/src/security/errors.js +32 -0
- package/dist/scripts/src/security/regexValidator.js +217 -0
- package/dist/scripts/src/security/secureYamlParser.js +272 -0
- package/dist/scripts/src/security/securityMonitor.js +111 -0
- package/dist/scripts/src/security/validators/unicodeValidator.js +315 -0
- package/dist/scripts/src/utils/logger.js +288 -0
- package/dist/security/audit/SecurityAuditor.js +2 -2
- package/dist/tools/getWelcomeMessage.d.ts +41 -0
- package/dist/tools/getWelcomeMessage.d.ts.map +1 -0
- package/dist/tools/getWelcomeMessage.js +109 -0
- package/package.json +1 -1
|
@@ -250,7 +250,7 @@ export class SecurityAuditor {
|
|
|
250
250
|
const fs = require('fs');
|
|
251
251
|
const path = require('path');
|
|
252
252
|
const projectRoot = process.cwd();
|
|
253
|
-
const suppressionsPath = path.join(projectRoot, '
|
|
253
|
+
const suppressionsPath = path.join(projectRoot, 'src', 'security', 'audit', 'config', 'security-suppressions.json');
|
|
254
254
|
if (fs.existsSync(suppressionsPath)) {
|
|
255
255
|
const suppressionsContent = fs.readFileSync(suppressionsPath, 'utf-8');
|
|
256
256
|
const suppressionsData = JSON.parse(suppressionsContent);
|
|
@@ -301,4 +301,4 @@ export class SecurityAuditor {
|
|
|
301
301
|
};
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlBdWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L1NlY3VyaXR5QXVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCwyREFBMkQ7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQXNCO0lBQzVCLFFBQVEsR0FBc0IsRUFBRSxDQUFDO0lBQ2pDLFlBQVksR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUzRCxZQUFZLE1BQTJCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFP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QUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztpQkFDMUQ7YUFDRjtZQUNELFNBQVMsRUFBRTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO2dCQUNoQyxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLGNBQWMsRUFBRSxNQUFNO2FBQ3ZCO1lBQ0QsWUFBWSxFQUFFO2dCQUNaO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixNQUFNLEVBQUUsK0NBQStDO2lCQUN4RDtnQkFDRCxHQUFHLGtCQUFrQjthQUN0QjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IEF1ZGl0b3IgLSBDb3JlIG9yY2hlc3RyYXRvciBmb3Igc2VjdXJpdHkgc2Nhbm5pbmdcbiAqIEltcGxlbWVudHMgYXV0b21hdGVkIHNlY3VyaXR5IGF1ZGl0aW5nIGZvciBEb2xsaG91c2VNQ1AgKElzc3VlICM1MylcbiAqL1xuXG4vLyBpbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB0eXBlIHsgXG4gIFNlY3VyaXR5QXVkaXRDb25maWcsIFxuICBTY2FuQ29udGV4dCwgXG4gIFNjYW5SZXN1bHQsIFxuICBTZWN1cml0eUZpbmRpbmcsIFxuICBTZWN1cml0eVNjYW5uZXIsXG4gIFNldmVyaXR5TGV2ZWwgXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgQ29kZVNjYW5uZXIgfSBmcm9tICcuL3NjYW5uZXJzL0NvZGVTY2FubmVyLmpzJztcbmltcG9ydCB7IERlcGVuZGVuY3lTY2FubmVyIH0gZnJvbSAnLi9zY2FubmVycy9EZXBlbmRlbmN5U2Nhbm5lci5qcyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lcnMvQ29uZmlndXJhdGlvblNjYW5uZXIuanMnO1xuaW1wb3J0IHsgQ29uc29sZVJlcG9ydGVyIH0gZnJvbSAnLi9yZXBvcnRlcnMvQ29uc29sZVJlcG9ydGVyLmpzJztcbmltcG9ydCB7IE1hcmtkb3duUmVwb3J0ZXIgfSBmcm9tICcuL3JlcG9ydGVycy9NYXJrZG93blJlcG9ydGVyLmpzJztcbmltcG9ydCB7IEpzb25SZXBvcnRlciB9IGZyb20gJy4vcmVwb3J0ZXJzL0pzb25SZXBvcnRlci5qcyc7XG5pbXBvcnQgeyBzaG91bGRTdXBwcmVzcyB9IGZyb20gJy4vY29uZmlnL3N1cHByZXNzaW9ucy5qcyc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXIsIEVycm9yQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi91dGlscy9FcnJvckhhbmRsZXIuanMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlBdWRpdG9yIHtcbiAgcHJpdmF0ZSBjb25maWc6IFNlY3VyaXR5QXVkaXRDb25maWc7XG4gIHByaXZhdGUgc2Nhbm5lcnM6IFNlY3VyaXR5U2Nhbm5lcltdID0gW107XG4gIHByaXZhdGUgc3VwcHJlc3Npb25zOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBTZWN1cml0eUF1ZGl0Q29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsaXplU2Nhbm5lcnMoKTtcbiAgICB0aGlzLmxvYWRTdXBwcmVzc2lvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGVuYWJsZWQgc2Nhbm5lcnMgYmFzZWQgb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2Nhbm5lcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnNjYW5uZXJzLmNvZGUuZW5hYmxlZCkge1xuICAgICAgdGhpcy5zY2FubmVycy5wdXNoKG5ldyBDb2RlU2Nhbm5lcih0aGlzLmNvbmZpZy5zY2FubmVycy5jb2RlKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmNvbmZpZy5zY2FubmVycy5kZXBlbmRlbmNpZXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5zY2FubmVycy5wdXNoKG5ldyBEZXBlbmRlbmN5U2Nhbm5lcih0aGlzLmNvbmZpZy5zY2FubmVycy5kZXBlbmRlbmNpZXMpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuY29uZmlnLnNjYW5uZXJzLmNvbmZpZ3VyYXRpb24uZW5hYmxlZCkge1xuICAgICAgdGhpcy5zY2FubmVycy5wdXNoKG5ldyBDb25maWd1cmF0aW9uU2Nhbm5lcih0aGlzLmNvbmZpZy5zY2FubmVycy5jb25maWd1cmF0aW9uKSk7XG4gICAgfVxuXG4gICAgLy8gQXVkaXQgbG9nZ2luZyB3b3VsZCBnbyBoZXJlIGlmIFNlY3VyaXR5TW9uaXRvciBzdXBwb3J0ZWQgYXVkaXQgZXZlbnRzXG4gICAgbG9nZ2VyLmluZm8oYFNlY3VyaXR5QXVkaXRvcjogSW5pdGlhbGl6ZWQgJHt0aGlzLnNjYW5uZXJzLmxlbmd0aH0gc2VjdXJpdHkgc2Nhbm5lcnNgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHN1cHByZXNzaW9uIHJ1bGVzIGZyb20gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkU3VwcHJlc3Npb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcuc3VwcHJlc3Npb25zKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHRoaXMuY29uZmlnLnN1cHByZXNzaW9ucykge1xuICAgICAgY29uc3Qga2V5ID0gc3VwcHJlc3Npb24uZmlsZSB8fCAnKic7XG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3Npb25zLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuc3VwcHJlc3Npb25zLnNldChrZXksIG5ldyBTZXQoKSk7XG4gICAgICB9XG4gICAgICB0aGlzLnN1cHByZXNzaW9ucy5nZXQoa2V5KSEuYWRkKHN1cHByZXNzaW9uLnJ1bGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gc2VjdXJpdHkgYXVkaXQgb24gdGhlIHByb2plY3RcbiAgICovXG4gIGFzeW5jIGF1ZGl0KHByb2plY3RSb290OiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpKTogUHJvbWlzZTxTY2FuUmVzdWx0PiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBjb250ZXh0OiBTY2FuQ29udGV4dCA9IHsgcHJvamVjdFJvb3QgfTtcbiAgICBjb25zdCBhbGxGaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10gPSBbXTtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgc2Nhbm5lZEZpbGVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBsb2dnZXIuaW5mbyhgU2VjdXJpdHlBdWRpdG9yOiBTdGFydGluZyBzZWN1cml0eSBhdWRpdCBvZiAke3Byb2plY3RSb290fWApO1xuXG4gICAgLy8gUnVuIGFsbCBlbmFibGVkIHNjYW5uZXJzXG4gICAgZm9yIChjb25zdCBzY2FubmVyIG9mIHRoaXMuc2Nhbm5lcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbmRpbmdzID0gYXdhaXQgc2Nhbm5lci5zY2FuKGNvbnRleHQpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEZpbmRpbmdzID0gdGhpcy5maWx0ZXJTdXBwcmVzc2lvbnMoZmluZGluZ3MpO1xuICAgICAgICBhbGxGaW5kaW5ncy5wdXNoKC4uLmZpbHRlcmVkRmluZGluZ3MpO1xuICAgICAgICAvLyBUcmFjayB1bmlxdWUgZmlsZXMgdGhhdCB3ZXJlIHNjYW5uZWRcbiAgICAgICAgZm9yIChjb25zdCBmaW5kaW5nIG9mIGZpbmRpbmdzKSB7XG4gICAgICAgICAgaWYgKGZpbmRpbmcuZmlsZSkge1xuICAgICAgICAgICAgc2Nhbm5lZEZpbGVzU2V0LmFkZChmaW5kaW5nLmZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYFNjYW5uZXIgJHtzY2FubmVyLm5hbWV9IGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YDtcbiAgICAgICAgZXJyb3JzLnB1c2goZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgRXJyb3JIYW5kbGVyLmxvZ0Vycm9yKCdTZWN1cml0eUF1ZGl0b3IuYXVkaXRQcm9qZWN0JywgZXJyb3IsIHsgcHJvamVjdFJvb3QgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3JlYXRlU2NhblJlc3VsdChhbGxGaW5kaW5ncywgZHVyYXRpb24sIHNjYW5uZWRGaWxlc1NldC5zaXplLCBlcnJvcnMpO1xuXG4gICAgLy8gTG9nIGF1ZGl0IGNvbXBsZXRpb25cbiAgICBsb2dnZXIuaW5mbyhgU2VjdXJpdHlBdWRpdG9yOiBBdWRpdCBjb21wbGV0ZWQ6ICR7cmVzdWx0LnN1bW1hcnkudG90YWx9IGZpbmRpbmdzIGluICR7ZHVyYXRpb259bXNgKTtcblxuICAgIC8vIEdlbmVyYXRlIHJlcG9ydHNcbiAgICBhd2FpdCB0aGlzLmdlbmVyYXRlUmVwb3J0cyhyZXN1bHQpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYnVpbGQgc2hvdWxkIGZhaWxcbiAgICBpZiAodGhpcy5zaG91bGRGYWlsQnVpbGQocmVzdWx0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZWN1cml0eSBhdWRpdCBmYWlsZWQ6ICR7cmVzdWx0LnN1bW1hcnkuYnlTZXZlcml0eS5jcml0aWNhbH0gY3JpdGljYWwsICR7cmVzdWx0LnN1bW1hcnkuYnlTZXZlcml0eS5oaWdofSBoaWdoIHNldmVyaXR5IGlzc3VlcyBmb3VuZGApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIG91dCBzdXBwcmVzc2VkIGZpbmRpbmdzXG4gICAqL1xuICBwcml2YXRlIGZpbHRlclN1cHByZXNzaW9ucyhmaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10pOiBTZWN1cml0eUZpbmRpbmdbXSB7XG4gICAgY29uc3Qgc3VwcHJlc3NlZEZpbmRpbmdzOiBBcnJheTx7cnVsZTogc3RyaW5nOyBmaWxlPzogc3RyaW5nOyByZWFzb24/OiBzdHJpbmd9PiA9IFtdO1xuICAgIFxuICAgIGNvbnN0IGZpbHRlcmVkID0gZmluZGluZ3MuZmlsdGVyKGZpbmRpbmcgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2hlY2sgY29tcHJlaGVuc2l2ZSBzdXBwcmVzc2lvbnMgKGluY2x1ZGVzIGJvdGggZmlsZS1iYXNlZCBhbmQgcGF0dGVybi1iYXNlZClcbiAgICAgICAgaWYgKHNob3VsZFN1cHByZXNzKGZpbmRpbmcucnVsZUlkLCBmaW5kaW5nLmZpbGUpKSB7XG4gICAgICAgICAgLy8gTG9nIHN1cHByZXNzaW9uIGZvciBhdWRpdCB0cmFpbCBpZiB2ZXJib3NlIG1vZGUgaXMgZW5hYmxlZFxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvcnRpbmc/LnZlcmJvc2UpIHtcbiAgICAgICAgICAgIHN1cHByZXNzZWRGaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgcnVsZTogZmluZGluZy5ydWxlSWQsXG4gICAgICAgICAgICAgIGZpbGU6IGZpbmRpbmcuZmlsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gQ2hlY2sgbGVnYWN5IGNvbmZpZy1iYXNlZCBzdXBwcmVzc2lvbnMgaWYgdGhleSBleGlzdFxuICAgICAgICAvLyBUaGlzIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgY29uZmlnc1xuICAgICAgICBpZiAodGhpcy5jb25maWcuc3VwcHJlc3Npb25zICYmIHRoaXMuY29uZmlnLnN1cHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsU3VwcHJlc3Npb25zID0gdGhpcy5zdXBwcmVzc2lvbnMuZ2V0KCcqJyk7XG4gICAgICAgICAgaWYgKGdsb2JhbFN1cHByZXNzaW9ucz8uaGFzKGZpbmRpbmcucnVsZUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlcG9ydGluZz8udmVyYm9zZSkge1xuICAgICAgICAgICAgICBzdXBwcmVzc2VkRmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgcnVsZTogZmluZGluZy5ydWxlSWQsXG4gICAgICAgICAgICAgICAgZmlsZTogZmluZGluZy5maWxlLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogJ0NvbmZpZy1iYXNlZCBnbG9iYWwgc3VwcHJlc3Npb24nXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaW5kaW5nLmZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVTdXBwcmVzc2lvbnMgPSB0aGlzLnN1cHByZXNzaW9ucy5nZXQoZmluZGluZy5maWxlKTtcbiAgICAgICAgICAgIGlmIChmaWxlU3VwcHJlc3Npb25zPy5oYXMoZmluZGluZy5ydWxlSWQpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvcnRpbmc/LnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBzdXBwcmVzc2VkRmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICBydWxlOiBmaW5kaW5nLnJ1bGVJZCxcbiAgICAgICAgICAgICAgICAgIGZpbGU6IGZpbmRpbmcuZmlsZSxcbiAgICAgICAgICAgICAgICAgIHJlYXNvbjogJ0NvbmZpZy1iYXNlZCBmaWxlIHN1cHByZXNzaW9uJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIElmIHN1cHByZXNzaW9uIGNoZWNrIGZhaWxzLCBsb2cgZXJyb3IgYnV0IGRvbid0IHN1cHByZXNzIHRoZSBmaW5kaW5nXG4gICAgICAgIEVycm9ySGFuZGxlci5sb2dFcnJvcignU2VjdXJpdHlBdWRpdG9yLmFwcGx5U3VwcHJlc3Npb24nLCBlcnJvciwgeyBcbiAgICAgICAgICBydWxlSWQ6IGZpbmRpbmcucnVsZUlkLCBcbiAgICAgICAgICBmaWxlOiBmaW5kaW5nLmZpbGUgXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICAvLyBMb2cgc3VwcHJlc3Npb24gc3VtbWFyeSBpZiB2ZXJib3NlIGFuZCBzdXBwcmVzc2lvbnMgd2VyZSBhcHBsaWVkXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9ydGluZz8udmVyYm9zZSAmJiBzdXBwcmVzc2VkRmluZGluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBTZWN1cml0eUF1ZGl0b3I6IFN1cHByZXNzZWQgJHtzdXBwcmVzc2VkRmluZGluZ3MubGVuZ3RofSBmaW5kaW5nczpgKTtcbiAgICAgIHN1cHByZXNzZWRGaW5kaW5ncy5mb3JFYWNoKHMgPT4ge1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgLSAke3MucnVsZX0gaW4gJHtzLmZpbGUgfHwgJ2dsb2JhbCd9JHtzLnJlYXNvbiA/IGAgKCR7cy5yZWFzb259KWAgOiAnJ31gKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHNjYW4gcmVzdWx0IHN1bW1hcnlcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU2NhblJlc3VsdChcbiAgICBmaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10sIFxuICAgIGR1cmF0aW9uOiBudW1iZXIsIFxuICAgIHNjYW5uZWRGaWxlczogbnVtYmVyLFxuICAgIGVycm9yczogc3RyaW5nW11cbiAgKTogU2NhblJlc3VsdCB7XG4gICAgY29uc3QgYnlTZXZlcml0eTogUmVjb3JkPFNldmVyaXR5TGV2ZWwsIG51bWJlcj4gPSB7XG4gICAgICBpbmZvOiAwLFxuICAgICAgbG93OiAwLFxuICAgICAgbWVkaXVtOiAwLFxuICAgICAgaGlnaDogMCxcbiAgICAgIGNyaXRpY2FsOiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZmluZGluZyBvZiBmaW5kaW5ncykge1xuICAgICAgYnlTZXZlcml0eVtmaW5kaW5nLnNldmVyaXR5XSsrO1xuICAgICAgXG4gICAgICAvLyBFeHRyYWN0IGNhdGVnb3J5IGZyb20gcnVsZUlkIChlLmcuLCBTRUMtQ09ERS0wMDEgLT4gQ09ERSlcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gZmluZGluZy5ydWxlSWQuc3BsaXQoJy0nKVsxXSB8fCAnT1RIRVInO1xuICAgICAgYnlDYXRlZ29yeVtjYXRlZ29yeV0gPSAoYnlDYXRlZ29yeVtjYXRlZ29yeV0gfHwgMCkgKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICBkdXJhdGlvbixcbiAgICAgIHNjYW5uZWRGaWxlcyxcbiAgICAgIGZpbmRpbmdzLFxuICAgICAgc3VtbWFyeToge1xuICAgICAgICB0b3RhbDogZmluZGluZ3MubGVuZ3RoLFxuICAgICAgICBieVNldmVyaXR5LFxuICAgICAgICBieUNhdGVnb3J5XG4gICAgICB9LFxuICAgICAgZXJyb3JzOiBlcnJvcnMubGVuZ3RoID4gMCA/IGVycm9ycyA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgcmVwb3J0cyBpbiBjb25maWd1cmVkIGZvcm1hdHNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVSZXBvcnRzKHJlc3VsdDogU2NhblJlc3VsdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZm9ybWF0IG9mIHRoaXMuY29uZmlnLnJlcG9ydGluZy5mb3JtYXRzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICAgIGNhc2UgJ2NvbnNvbGUnOlxuICAgICAgICAgICAgY29uc3QgY29uc29sZVJlcG9ydGVyID0gbmV3IENvbnNvbGVSZXBvcnRlcihyZXN1bHQpO1xuICAgICAgICAgICAgLy8gQ29uc29sZSByZXBvcnRlciBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgc2hvd24gZGlyZWN0bHkgdG8gdXNlclxuICAgICAgICAgICAgLy8gVXNpbmcgY29uc29sZS5sb2cgaGVyZSBpcyBpbnRlbnRpb25hbCBmb3IgZm9ybWF0dGluZ1xuICAgICAgICAgICAgY29uc29sZS5sb2coY29uc29sZVJlcG9ydGVyLmdlbmVyYXRlKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBcbiAgICAgICAgICBjYXNlICdtYXJrZG93bic6XG4gICAgICAgICAgICBjb25zdCBtYXJrZG93blJlcG9ydGVyID0gbmV3IE1hcmtkb3duUmVwb3J0ZXIocmVzdWx0KTtcbiAgICAgICAgICAgIGNvbnN0IG1kUmVwb3J0ID0gbWFya2Rvd25SZXBvcnRlci5nZW5lcmF0ZSgpIGFzIHN0cmluZztcbiAgICAgICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZSgnc2VjdXJpdHktYXVkaXQtcmVwb3J0Lm1kJywgbWRSZXBvcnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBcbiAgICAgICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgICAgIGNvbnN0IGpzb25SZXBvcnRlciA9IG5ldyBKc29uUmVwb3J0ZXIocmVzdWx0KTtcbiAgICAgICAgICAgIGNvbnN0IGpzb25SZXBvcnQgPSBKU09OLnN0cmluZ2lmeShqc29uUmVwb3J0ZXIuZ2VuZXJhdGUoKSwgbnVsbCwgMik7XG4gICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoJ3NlY3VyaXR5LWF1ZGl0LXJlcG9ydC5qc29uJywganNvblJlcG9ydCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgIC8vIFNBUklGIGZvcm1hdCB3b3VsZCBiZSBpbXBsZW1lbnRlZCBzaW1pbGFybHlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgRXJyb3JIYW5kbGVyLmxvZ0Vycm9yKCdTZWN1cml0eUF1ZGl0b3IuZ2VuZXJhdGVSZXBvcnRzJywgZXJyb3IsIHsgZm9ybWF0IH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGJ1aWxkIHNob3VsZCBmYWlsIGJhc2VkIG9uIGZpbmRpbmdzXG4gICAqL1xuICBwcml2YXRlIHNob3VsZEZhaWxCdWlsZChyZXN1bHQ6IFNjYW5SZXN1bHQpOiBib29sZWFuIHtcbiAgICBjb25zdCB0aHJlc2hvbGRzOiBSZWNvcmQ8U2V2ZXJpdHlMZXZlbCwgbnVtYmVyPiA9IHtcbiAgICAgIGluZm86IDUsXG4gICAgICBsb3c6IDQsXG4gICAgICBtZWRpdW06IDMsXG4gICAgICBoaWdoOiAyLFxuICAgICAgY3JpdGljYWw6IDFcbiAgICB9O1xuXG4gICAgY29uc3QgZmFpbFRocmVzaG9sZCA9IHRocmVzaG9sZHNbdGhpcy5jb25maWcucmVwb3J0aW5nLmZhaWxPblNldmVyaXR5XTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IFtzZXZlcml0eSwgY291bnRdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3VsdC5zdW1tYXJ5LmJ5U2V2ZXJpdHkpKSB7XG4gICAgICBpZiAoY291bnQgPiAwICYmIHRocmVzaG9sZHNbc2V2ZXJpdHkgYXMgU2V2ZXJpdHlMZXZlbF0gPD0gZmFpbFRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgc3RhdGljIGdldERlZmF1bHRDb25maWcoKTogU2VjdXJpdHlBdWRpdENvbmZpZyB7XG4gICAgLy8gTG9hZCBzdXBwcmVzc2lvbnMgZnJvbSBmaWxlIGlmIGl0IGV4aXN0c1xuICAgIGxldCBjdXN0b21TdXBwcmVzc2lvbnM6IGFueVtdID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgIGNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG4gICAgICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgICBjb25zdCBzdXBwcmVzc2lvbnNQYXRoID0gcGF0aC5qb2luKHByb2plY3RSb290LCAnLnNlY3VyaXR5LXN1cHByZXNzaW9ucy5qc29uJyk7XG5cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHN1cHByZXNzaW9uc1BhdGgpKSB7XG4gICAgICAgIGNvbnN0IHN1cHByZXNzaW9uc0NvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoc3VwcHJlc3Npb25zUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgIGNvbnN0IHN1cHByZXNzaW9uc0RhdGEgPSBKU09OLnBhcnNlKHN1cHByZXNzaW9uc0NvbnRlbnQpO1xuICAgICAgICAvLyBDb252ZXJ0IHJlbGF0aXZlIHBhdGhzIHRvIHBhdHRlcm5zIGZvciBtYXRjaGluZ1xuICAgICAgICBjdXN0b21TdXBwcmVzc2lvbnMgPSAoc3VwcHJlc3Npb25zRGF0YS5zdXBwcmVzc2lvbnMgfHwgW10pLm1hcCgoczogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgLy8gQ29udmVydCBmaWxlIHBhdGggdG8gYSBwYXR0ZXJuIHRoYXQgd29ya3Mgd2l0aCBtaW5pbWF0Y2hcbiAgICAgICAgICBmaWxlOiBzLmZpbGU/LmluY2x1ZGVzKCcvJykgPyBgKiovJHtzLmZpbGV9YCA6IHMuZmlsZVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFN1cHByZXNzaW9ucyBmaWxlIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgaW52YWxpZCAtIHRoYXQncyBPS1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgc2Nhbm5lcnM6IHtcbiAgICAgICAgY29kZToge1xuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgcnVsZXM6IFsnT1dBU1AtVG9wLTEwJywgJ0NXRS1Ub3AtMjUnLCAnRG9sbGhvdXNlTUNQLVNlY3VyaXR5J10sXG4gICAgICAgICAgZXhjbHVkZTogWydub2RlX21vZHVsZXMvKionLCAnZGlzdC8qKicsICdjb3ZlcmFnZS8qKiddXG4gICAgICAgIH0sXG4gICAgICAgIGRlcGVuZGVuY2llczoge1xuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgc2V2ZXJpdHlUaHJlc2hvbGQ6ICdoaWdoJyxcbiAgICAgICAgICBjaGVja0xpY2Vuc2VzOiB0cnVlLFxuICAgICAgICAgIGFsbG93ZWRMaWNlbnNlczogWydNSVQnLCAnQXBhY2hlLTIuMCcsICdCU0QtMy1DbGF1c2UnLCAnSVNDJywgJ0FHUEwtMy4wJ11cbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgY2hlY2tGaWxlczogWycqLnltbCcsICcqLnlhbWwnLCAnKi5qc29uJywgJy5lbnYuZXhhbXBsZSddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXBvcnRpbmc6IHtcbiAgICAgICAgZm9ybWF0czogWydjb25zb2xlJywgJ21hcmtkb3duJ10sXG4gICAgICAgIGNyZWF0ZUlzc3VlczogdHJ1ZSxcbiAgICAgICAgY29tbWVudE9uUHI6IHRydWUsXG4gICAgICAgIGZhaWxPblNldmVyaXR5OiAnaGlnaCdcbiAgICAgIH0sXG4gICAgICBzdXBwcmVzc2lvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGU6ICdTRUMtVEVTVC0wMDEnLFxuICAgICAgICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgICAgICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBzZWN1cml0eSB0ZXN0IHBhdHRlcm5zJ1xuICAgICAgICB9LFxuICAgICAgICAuLi5jdXN0b21TdXBwcmVzc2lvbnNcbiAgICAgIF1cbiAgICB9O1xuICB9XG59Il19
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlBdWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L1NlY3VyaXR5QXVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCwyREFBMkQ7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQXNCO0lBQzVCLFFBQVEsR0FBc0IsRUFBRSxDQUFDO0lBQ2pDLFlBQVksR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUzRCxZQUFZLE1BQTJCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFP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QUUsSUFBSTtvQkFDYixVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUM7aUJBQzFEO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztnQkFDaEMsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixjQUFjLEVBQUUsTUFBTTthQUN2QjtZQUNELFlBQVksRUFBRTtnQkFDWjtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsTUFBTSxFQUFFLCtDQUErQztpQkFDeEQ7Z0JBQ0QsR0FBRyxrQkFBa0I7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWN1cml0eSBBdWRpdG9yIC0gQ29yZSBvcmNoZXN0cmF0b3IgZm9yIHNlY3VyaXR5IHNjYW5uaW5nXG4gKiBJbXBsZW1lbnRzIGF1dG9tYXRlZCBzZWN1cml0eSBhdWRpdGluZyBmb3IgRG9sbGhvdXNlTUNQIChJc3N1ZSAjNTMpXG4gKi9cblxuLy8gaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFxuICBTZWN1cml0eUF1ZGl0Q29uZmlnLCBcbiAgU2NhbkNvbnRleHQsIFxuICBTY2FuUmVzdWx0LCBcbiAgU2VjdXJpdHlGaW5kaW5nLCBcbiAgU2VjdXJpdHlTY2FubmVyLFxuICBTZXZlcml0eUxldmVsIFxufSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IENvZGVTY2FubmVyIH0gZnJvbSAnLi9zY2FubmVycy9Db2RlU2Nhbm5lci5qcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5U2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lcnMvRGVwZW5kZW5jeVNjYW5uZXIuanMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNjYW5uZXIgfSBmcm9tICcuL3NjYW5uZXJzL0NvbmZpZ3VyYXRpb25TY2FubmVyLmpzJztcbmltcG9ydCB7IENvbnNvbGVSZXBvcnRlciB9IGZyb20gJy4vcmVwb3J0ZXJzL0NvbnNvbGVSZXBvcnRlci5qcyc7XG5pbXBvcnQgeyBNYXJrZG93blJlcG9ydGVyIH0gZnJvbSAnLi9yZXBvcnRlcnMvTWFya2Rvd25SZXBvcnRlci5qcyc7XG5pbXBvcnQgeyBKc29uUmVwb3J0ZXIgfSBmcm9tICcuL3JlcG9ydGVycy9Kc29uUmVwb3J0ZXIuanMnO1xuaW1wb3J0IHsgc2hvdWxkU3VwcHJlc3MgfSBmcm9tICcuL2NvbmZpZy9zdXBwcmVzc2lvbnMuanMnO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBFcnJvckNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvRXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcblxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5QXVkaXRvciB7XG4gIHByaXZhdGUgY29uZmlnOiBTZWN1cml0eUF1ZGl0Q29uZmlnO1xuICBwcml2YXRlIHNjYW5uZXJzOiBTZWN1cml0eVNjYW5uZXJbXSA9IFtdO1xuICBwcml2YXRlIHN1cHByZXNzaW9uczogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogU2VjdXJpdHlBdWRpdENvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNjYW5uZXJzKCk7XG4gICAgdGhpcy5sb2FkU3VwcHJlc3Npb25zKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBlbmFibGVkIHNjYW5uZXJzIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNjYW5uZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZy5zY2FubmVycy5jb2RlLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2Nhbm5lcnMucHVzaChuZXcgQ29kZVNjYW5uZXIodGhpcy5jb25maWcuc2Nhbm5lcnMuY29kZSkpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5jb25maWcuc2Nhbm5lcnMuZGVwZW5kZW5jaWVzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2Nhbm5lcnMucHVzaChuZXcgRGVwZW5kZW5jeVNjYW5uZXIodGhpcy5jb25maWcuc2Nhbm5lcnMuZGVwZW5kZW5jaWVzKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmNvbmZpZy5zY2FubmVycy5jb25maWd1cmF0aW9uLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2Nhbm5lcnMucHVzaChuZXcgQ29uZmlndXJhdGlvblNjYW5uZXIodGhpcy5jb25maWcuc2Nhbm5lcnMuY29uZmlndXJhdGlvbikpO1xuICAgIH1cblxuICAgIC8vIEF1ZGl0IGxvZ2dpbmcgd291bGQgZ28gaGVyZSBpZiBTZWN1cml0eU1vbml0b3Igc3VwcG9ydGVkIGF1ZGl0IGV2ZW50c1xuICAgIGxvZ2dlci5pbmZvKGBTZWN1cml0eUF1ZGl0b3I6IEluaXRpYWxpemVkICR7dGhpcy5zY2FubmVycy5sZW5ndGh9IHNlY3VyaXR5IHNjYW5uZXJzYCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBzdXBwcmVzc2lvbiBydWxlcyBmcm9tIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgbG9hZFN1cHByZXNzaW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLnN1cHByZXNzaW9ucykgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiB0aGlzLmNvbmZpZy5zdXBwcmVzc2lvbnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IHN1cHByZXNzaW9uLmZpbGUgfHwgJyonO1xuICAgICAgaWYgKCF0aGlzLnN1cHByZXNzaW9ucy5oYXMoa2V5KSkge1xuICAgICAgICB0aGlzLnN1cHByZXNzaW9ucy5zZXQoa2V5LCBuZXcgU2V0KCkpO1xuICAgICAgfVxuICAgICAgdGhpcy5zdXBwcmVzc2lvbnMuZ2V0KGtleSkhLmFkZChzdXBwcmVzc2lvbi5ydWxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVuIHNlY3VyaXR5IGF1ZGl0IG9uIHRoZSBwcm9qZWN0XG4gICAqL1xuICBhc3luYyBhdWRpdChwcm9qZWN0Um9vdDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IFByb21pc2U8U2NhblJlc3VsdD4ge1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgY29udGV4dDogU2NhbkNvbnRleHQgPSB7IHByb2plY3RSb290IH07XG4gICAgY29uc3QgYWxsRmluZGluZ3M6IFNlY3VyaXR5RmluZGluZ1tdID0gW107XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNjYW5uZWRGaWxlc1NldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgbG9nZ2VyLmluZm8oYFNlY3VyaXR5QXVkaXRvcjogU3RhcnRpbmcgc2VjdXJpdHkgYXVkaXQgb2YgJHtwcm9qZWN0Um9vdH1gKTtcblxuICAgIC8vIFJ1biBhbGwgZW5hYmxlZCBzY2FubmVyc1xuICAgIGZvciAoY29uc3Qgc2Nhbm5lciBvZiB0aGlzLnNjYW5uZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5kaW5ncyA9IGF3YWl0IHNjYW5uZXIuc2Nhbihjb250ZXh0KTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRGaW5kaW5ncyA9IHRoaXMuZmlsdGVyU3VwcHJlc3Npb25zKGZpbmRpbmdzKTtcbiAgICAgICAgYWxsRmluZGluZ3MucHVzaCguLi5maWx0ZXJlZEZpbmRpbmdzKTtcbiAgICAgICAgLy8gVHJhY2sgdW5pcXVlIGZpbGVzIHRoYXQgd2VyZSBzY2FubmVkXG4gICAgICAgIGZvciAoY29uc3QgZmluZGluZyBvZiBmaW5kaW5ncykge1xuICAgICAgICAgIGlmIChmaW5kaW5nLmZpbGUpIHtcbiAgICAgICAgICAgIHNjYW5uZWRGaWxlc1NldC5hZGQoZmluZGluZy5maWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBTY2FubmVyICR7c2Nhbm5lci5uYW1lfSBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWA7XG4gICAgICAgIGVycm9ycy5wdXNoKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIEVycm9ySGFuZGxlci5sb2dFcnJvcignU2VjdXJpdHlBdWRpdG9yLmF1ZGl0UHJvamVjdCcsIGVycm9yLCB7IHByb2plY3RSb290IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyZWF0ZVNjYW5SZXN1bHQoYWxsRmluZGluZ3MsIGR1cmF0aW9uLCBzY2FubmVkRmlsZXNTZXQuc2l6ZSwgZXJyb3JzKTtcblxuICAgIC8vIExvZyBhdWRpdCBjb21wbGV0aW9uXG4gICAgbG9nZ2VyLmluZm8oYFNlY3VyaXR5QXVkaXRvcjogQXVkaXQgY29tcGxldGVkOiAke3Jlc3VsdC5zdW1tYXJ5LnRvdGFsfSBmaW5kaW5ncyBpbiAke2R1cmF0aW9ufW1zYCk7XG5cbiAgICAvLyBHZW5lcmF0ZSByZXBvcnRzXG4gICAgYXdhaXQgdGhpcy5nZW5lcmF0ZVJlcG9ydHMocmVzdWx0KTtcblxuICAgIC8vIENoZWNrIGlmIGJ1aWxkIHNob3VsZCBmYWlsXG4gICAgaWYgKHRoaXMuc2hvdWxkRmFpbEJ1aWxkKHJlc3VsdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2VjdXJpdHkgYXVkaXQgZmFpbGVkOiAke3Jlc3VsdC5zdW1tYXJ5LmJ5U2V2ZXJpdHkuY3JpdGljYWx9IGNyaXRpY2FsLCAke3Jlc3VsdC5zdW1tYXJ5LmJ5U2V2ZXJpdHkuaGlnaH0gaGlnaCBzZXZlcml0eSBpc3N1ZXMgZm91bmRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBvdXQgc3VwcHJlc3NlZCBmaW5kaW5nc1xuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJTdXBwcmVzc2lvbnMoZmluZGluZ3M6IFNlY3VyaXR5RmluZGluZ1tdKTogU2VjdXJpdHlGaW5kaW5nW10ge1xuICAgIGNvbnN0IHN1cHByZXNzZWRGaW5kaW5nczogQXJyYXk8e3J1bGU6IHN0cmluZzsgZmlsZT86IHN0cmluZzsgcmVhc29uPzogc3RyaW5nfT4gPSBbXTtcbiAgICBcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGZpbmRpbmdzLmZpbHRlcihmaW5kaW5nID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENoZWNrIGNvbXByZWhlbnNpdmUgc3VwcHJlc3Npb25zIChpbmNsdWRlcyBib3RoIGZpbGUtYmFzZWQgYW5kIHBhdHRlcm4tYmFzZWQpXG4gICAgICAgIGlmIChzaG91bGRTdXBwcmVzcyhmaW5kaW5nLnJ1bGVJZCwgZmluZGluZy5maWxlKSkge1xuICAgICAgICAgIC8vIExvZyBzdXBwcmVzc2lvbiBmb3IgYXVkaXQgdHJhaWwgaWYgdmVyYm9zZSBtb2RlIGlzIGVuYWJsZWRcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcucmVwb3J0aW5nPy52ZXJib3NlKSB7XG4gICAgICAgICAgICBzdXBwcmVzc2VkRmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHJ1bGU6IGZpbmRpbmcucnVsZUlkLFxuICAgICAgICAgICAgICBmaWxlOiBmaW5kaW5nLmZpbGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENoZWNrIGxlZ2FjeSBjb25maWctYmFzZWQgc3VwcHJlc3Npb25zIGlmIHRoZXkgZXhpc3RcbiAgICAgICAgLy8gVGhpcyBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGNvbmZpZ3NcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnN1cHByZXNzaW9ucyAmJiB0aGlzLmNvbmZpZy5zdXBwcmVzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFN1cHByZXNzaW9ucyA9IHRoaXMuc3VwcHJlc3Npb25zLmdldCgnKicpO1xuICAgICAgICAgIGlmIChnbG9iYWxTdXBwcmVzc2lvbnM/LmhhcyhmaW5kaW5nLnJ1bGVJZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvcnRpbmc/LnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgc3VwcHJlc3NlZEZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICAgIHJ1bGU6IGZpbmRpbmcucnVsZUlkLFxuICAgICAgICAgICAgICAgIGZpbGU6IGZpbmRpbmcuZmlsZSxcbiAgICAgICAgICAgICAgICByZWFzb246ICdDb25maWctYmFzZWQgZ2xvYmFsIHN1cHByZXNzaW9uJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmluZGluZy5maWxlKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlU3VwcHJlc3Npb25zID0gdGhpcy5zdXBwcmVzc2lvbnMuZ2V0KGZpbmRpbmcuZmlsZSk7XG4gICAgICAgICAgICBpZiAoZmlsZVN1cHByZXNzaW9ucz8uaGFzKGZpbmRpbmcucnVsZUlkKSkge1xuICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcucmVwb3J0aW5nPy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgc3VwcHJlc3NlZEZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgcnVsZTogZmluZGluZy5ydWxlSWQsXG4gICAgICAgICAgICAgICAgICBmaWxlOiBmaW5kaW5nLmZpbGUsXG4gICAgICAgICAgICAgICAgICByZWFzb246ICdDb25maWctYmFzZWQgZmlsZSBzdXBwcmVzc2lvbidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBJZiBzdXBwcmVzc2lvbiBjaGVjayBmYWlscywgbG9nIGVycm9yIGJ1dCBkb24ndCBzdXBwcmVzcyB0aGUgZmluZGluZ1xuICAgICAgICBFcnJvckhhbmRsZXIubG9nRXJyb3IoJ1NlY3VyaXR5QXVkaXRvci5hcHBseVN1cHByZXNzaW9uJywgZXJyb3IsIHsgXG4gICAgICAgICAgcnVsZUlkOiBmaW5kaW5nLnJ1bGVJZCwgXG4gICAgICAgICAgZmlsZTogZmluZGluZy5maWxlIFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgLy8gTG9nIHN1cHByZXNzaW9uIHN1bW1hcnkgaWYgdmVyYm9zZSBhbmQgc3VwcHJlc3Npb25zIHdlcmUgYXBwbGllZFxuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvcnRpbmc/LnZlcmJvc2UgJiYgc3VwcHJlc3NlZEZpbmRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgU2VjdXJpdHlBdWRpdG9yOiBTdXBwcmVzc2VkICR7c3VwcHJlc3NlZEZpbmRpbmdzLmxlbmd0aH0gZmluZGluZ3M6YCk7XG4gICAgICBzdXBwcmVzc2VkRmluZGluZ3MuZm9yRWFjaChzID0+IHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIC0gJHtzLnJ1bGV9IGluICR7cy5maWxlIHx8ICdnbG9iYWwnfSR7cy5yZWFzb24gPyBgICgke3MucmVhc29ufSlgIDogJyd9YCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzY2FuIHJlc3VsdCBzdW1tYXJ5XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVNjYW5SZXN1bHQoXG4gICAgZmluZGluZ3M6IFNlY3VyaXR5RmluZGluZ1tdLCBcbiAgICBkdXJhdGlvbjogbnVtYmVyLCBcbiAgICBzY2FubmVkRmlsZXM6IG51bWJlcixcbiAgICBlcnJvcnM6IHN0cmluZ1tdXG4gICk6IFNjYW5SZXN1bHQge1xuICAgIGNvbnN0IGJ5U2V2ZXJpdHk6IFJlY29yZDxTZXZlcml0eUxldmVsLCBudW1iZXI+ID0ge1xuICAgICAgaW5mbzogMCxcbiAgICAgIGxvdzogMCxcbiAgICAgIG1lZGl1bTogMCxcbiAgICAgIGhpZ2g6IDAsXG4gICAgICBjcml0aWNhbDogMFxuICAgIH07XG5cbiAgICBjb25zdCBieUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGZpbmRpbmcgb2YgZmluZGluZ3MpIHtcbiAgICAgIGJ5U2V2ZXJpdHlbZmluZGluZy5zZXZlcml0eV0rKztcbiAgICAgIFxuICAgICAgLy8gRXh0cmFjdCBjYXRlZ29yeSBmcm9tIHJ1bGVJZCAoZS5nLiwgU0VDLUNPREUtMDAxIC0+IENPREUpXG4gICAgICBjb25zdCBjYXRlZ29yeSA9IGZpbmRpbmcucnVsZUlkLnNwbGl0KCctJylbMV0gfHwgJ09USEVSJztcbiAgICAgIGJ5Q2F0ZWdvcnlbY2F0ZWdvcnldID0gKGJ5Q2F0ZWdvcnlbY2F0ZWdvcnldIHx8IDApICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBzY2FubmVkRmlsZXMsXG4gICAgICBmaW5kaW5ncyxcbiAgICAgIHN1bW1hcnk6IHtcbiAgICAgICAgdG90YWw6IGZpbmRpbmdzLmxlbmd0aCxcbiAgICAgICAgYnlTZXZlcml0eSxcbiAgICAgICAgYnlDYXRlZ29yeVxuICAgICAgfSxcbiAgICAgIGVycm9yczogZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiB1bmRlZmluZWRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJlcG9ydHMgaW4gY29uZmlndXJlZCBmb3JtYXRzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlUmVwb3J0cyhyZXN1bHQ6IFNjYW5SZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiB0aGlzLmNvbmZpZy5yZXBvcnRpbmcuZm9ybWF0cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgICBjYXNlICdjb25zb2xlJzpcbiAgICAgICAgICAgIGNvbnN0IGNvbnNvbGVSZXBvcnRlciA9IG5ldyBDb25zb2xlUmVwb3J0ZXIocmVzdWx0KTtcbiAgICAgICAgICAgIC8vIENvbnNvbGUgcmVwb3J0ZXIgb3V0cHV0IGlzIG1lYW50IHRvIGJlIHNob3duIGRpcmVjdGx5IHRvIHVzZXJcbiAgICAgICAgICAgIC8vIFVzaW5nIGNvbnNvbGUubG9nIGhlcmUgaXMgaW50ZW50aW9uYWwgZm9yIGZvcm1hdHRpbmdcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGVSZXBvcnRlci5nZW5lcmF0ZSgpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgY2FzZSAnbWFya2Rvd24nOlxuICAgICAgICAgICAgY29uc3QgbWFya2Rvd25SZXBvcnRlciA9IG5ldyBNYXJrZG93blJlcG9ydGVyKHJlc3VsdCk7XG4gICAgICAgICAgICBjb25zdCBtZFJlcG9ydCA9IG1hcmtkb3duUmVwb3J0ZXIuZ2VuZXJhdGUoKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoJ3NlY3VyaXR5LWF1ZGl0LXJlcG9ydC5tZCcsIG1kUmVwb3J0KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgY2FzZSAnanNvbic6XG4gICAgICAgICAgICBjb25zdCBqc29uUmVwb3J0ZXIgPSBuZXcgSnNvblJlcG9ydGVyKHJlc3VsdCk7XG4gICAgICAgICAgICBjb25zdCBqc29uUmVwb3J0ID0gSlNPTi5zdHJpbmdpZnkoanNvblJlcG9ydGVyLmdlbmVyYXRlKCksIG51bGwsIDIpO1xuICAgICAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKCdzZWN1cml0eS1hdWRpdC1yZXBvcnQuanNvbicsIGpzb25SZXBvcnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBcbiAgICAgICAgICAvLyBTQVJJRiBmb3JtYXQgd291bGQgYmUgaW1wbGVtZW50ZWQgc2ltaWxhcmx5XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIEVycm9ySGFuZGxlci5sb2dFcnJvcignU2VjdXJpdHlBdWRpdG9yLmdlbmVyYXRlUmVwb3J0cycsIGVycm9yLCB7IGZvcm1hdCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBidWlsZCBzaG91bGQgZmFpbCBiYXNlZCBvbiBmaW5kaW5nc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRGYWlsQnVpbGQocmVzdWx0OiBTY2FuUmVzdWx0KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGhyZXNob2xkczogUmVjb3JkPFNldmVyaXR5TGV2ZWwsIG51bWJlcj4gPSB7XG4gICAgICBpbmZvOiA1LFxuICAgICAgbG93OiA0LFxuICAgICAgbWVkaXVtOiAzLFxuICAgICAgaGlnaDogMixcbiAgICAgIGNyaXRpY2FsOiAxXG4gICAgfTtcblxuICAgIGNvbnN0IGZhaWxUaHJlc2hvbGQgPSB0aHJlc2hvbGRzW3RoaXMuY29uZmlnLnJlcG9ydGluZy5mYWlsT25TZXZlcml0eV07XG4gICAgXG4gICAgZm9yIChjb25zdCBbc2V2ZXJpdHksIGNvdW50XSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHQuc3VtbWFyeS5ieVNldmVyaXR5KSkge1xuICAgICAgaWYgKGNvdW50ID4gMCAmJiB0aHJlc2hvbGRzW3NldmVyaXR5IGFzIFNldmVyaXR5TGV2ZWxdIDw9IGZhaWxUaHJlc2hvbGQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHN0YXRpYyBnZXREZWZhdWx0Q29uZmlnKCk6IFNlY3VyaXR5QXVkaXRDb25maWcge1xuICAgIC8vIExvYWQgc3VwcHJlc3Npb25zIGZyb20gZmlsZSBpZiBpdCBleGlzdHNcbiAgICBsZXQgY3VzdG9tU3VwcHJlc3Npb25zOiBhbnlbXSA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgICBjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuICAgICAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgc3VwcHJlc3Npb25zUGF0aCA9IHBhdGguam9pbihwcm9qZWN0Um9vdCwgJ3NyYycsICdzZWN1cml0eScsICdhdWRpdCcsICdjb25maWcnLCAnc2VjdXJpdHktc3VwcHJlc3Npb25zLmpzb24nKTtcblxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3VwcHJlc3Npb25zUGF0aCkpIHtcbiAgICAgICAgY29uc3Qgc3VwcHJlc3Npb25zQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhzdXBwcmVzc2lvbnNQYXRoLCAndXRmLTgnKTtcbiAgICAgICAgY29uc3Qgc3VwcHJlc3Npb25zRGF0YSA9IEpTT04ucGFyc2Uoc3VwcHJlc3Npb25zQ29udGVudCk7XG4gICAgICAgIC8vIENvbnZlcnQgcmVsYXRpdmUgcGF0aHMgdG8gcGF0dGVybnMgZm9yIG1hdGNoaW5nXG4gICAgICAgIGN1c3RvbVN1cHByZXNzaW9ucyA9IChzdXBwcmVzc2lvbnNEYXRhLnN1cHByZXNzaW9ucyB8fCBbXSkubWFwKChzOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4ucyxcbiAgICAgICAgICAvLyBDb252ZXJ0IGZpbGUgcGF0aCB0byBhIHBhdHRlcm4gdGhhdCB3b3JrcyB3aXRoIG1pbmltYXRjaFxuICAgICAgICAgIGZpbGU6IHMuZmlsZT8uaW5jbHVkZXMoJy8nKSA/IGAqKi8ke3MuZmlsZX1gIDogcy5maWxlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU3VwcHJlc3Npb25zIGZpbGUgZG9lc24ndCBleGlzdCBvciBpcyBpbnZhbGlkIC0gdGhhdCdzIE9LXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBzY2FubmVyczoge1xuICAgICAgICBjb2RlOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBydWxlczogWydPV0FTUC1Ub3AtMTAnLCAnQ1dFLVRvcC0yNScsICdEb2xsaG91c2VNQ1AtU2VjdXJpdHknXSxcbiAgICAgICAgICBleGNsdWRlOiBbJ25vZGVfbW9kdWxlcy8qKicsICdkaXN0LyoqJywgJ2NvdmVyYWdlLyoqJ11cbiAgICAgICAgfSxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzZXZlcml0eVRocmVzaG9sZDogJ2hpZ2gnLFxuICAgICAgICAgIGNoZWNrTGljZW5zZXM6IHRydWUsXG4gICAgICAgICAgYWxsb3dlZExpY2Vuc2VzOiBbJ01JVCcsICdBcGFjaGUtMi4wJywgJ0JTRC0zLUNsYXVzZScsICdJU0MnLCAnQUdQTC0zLjAnXVxuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBjaGVja0ZpbGVzOiBbJyoueW1sJywgJyoueWFtbCcsICcqLmpzb24nLCAnLmVudi5leGFtcGxlJ11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlcG9ydGluZzoge1xuICAgICAgICBmb3JtYXRzOiBbJ2NvbnNvbGUnLCAnbWFya2Rvd24nXSxcbiAgICAgICAgY3JlYXRlSXNzdWVzOiB0cnVlLFxuICAgICAgICBjb21tZW50T25QcjogdHJ1ZSxcbiAgICAgICAgZmFpbE9uU2V2ZXJpdHk6ICdoaWdoJ1xuICAgICAgfSxcbiAgICAgIHN1cHByZXNzaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZTogJ1NFQy1URVNULTAwMScsXG4gICAgICAgICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICAgICAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIHNlY3VyaXR5IHRlc3QgcGF0dGVybnMnXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmN1c3RvbVN1cHByZXNzaW9uc1xuICAgICAgXVxuICAgIH07XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Welcome Message Tool
|
|
3
|
+
*
|
|
4
|
+
* A dedicated MCP tool that returns the welcome message
|
|
5
|
+
* This gives us more control over how the message is presented
|
|
6
|
+
*/
|
|
7
|
+
export interface GetWelcomeMessageOptions {
|
|
8
|
+
format?: 'text' | 'markdown' | 'raw';
|
|
9
|
+
skipCheck?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class GetWelcomeMessageTool {
|
|
12
|
+
private configManager;
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Get the welcome message directly as a tool response
|
|
16
|
+
* This bypasses the response wrapping and gives us full control
|
|
17
|
+
*/
|
|
18
|
+
execute(options?: GetWelcomeMessageOptions): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* Tool definition for MCP
|
|
21
|
+
*/
|
|
22
|
+
static get definition(): {
|
|
23
|
+
name: string;
|
|
24
|
+
description: string;
|
|
25
|
+
inputSchema: {
|
|
26
|
+
type: string;
|
|
27
|
+
properties: {
|
|
28
|
+
format: {
|
|
29
|
+
type: string;
|
|
30
|
+
enum: string[];
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
skipCheck: {
|
|
34
|
+
type: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=getWelcomeMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getWelcomeMessage.d.ts","sourceRoot":"","sources":["../../src/tools/getWelcomeMessage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAgB;;IAMrC;;;OAGG;IACG,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,GAAG,CAAC;IAsEnE;;OAEG;IACH,MAAM,KAAK,UAAU;;;;;;;;;;;;;;;;;MAmBpB;CACF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Welcome Message Tool
|
|
3
|
+
*
|
|
4
|
+
* A dedicated MCP tool that returns the welcome message
|
|
5
|
+
* This gives us more control over how the message is presented
|
|
6
|
+
*/
|
|
7
|
+
import { ConfigManager } from '../config/ConfigManager.js';
|
|
8
|
+
export class GetWelcomeMessageTool {
|
|
9
|
+
configManager;
|
|
10
|
+
constructor() {
|
|
11
|
+
this.configManager = ConfigManager.getInstance();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get the welcome message directly as a tool response
|
|
15
|
+
* This bypasses the response wrapping and gives us full control
|
|
16
|
+
*/
|
|
17
|
+
async execute(options = {}) {
|
|
18
|
+
await this.configManager.initialize();
|
|
19
|
+
const config = this.configManager.getConfig();
|
|
20
|
+
// Check if we should show the welcome message
|
|
21
|
+
if (!options.skipCheck) {
|
|
22
|
+
if (config.wizard?.completed || config.wizard?.dismissed) {
|
|
23
|
+
return {
|
|
24
|
+
content: [{
|
|
25
|
+
type: "text",
|
|
26
|
+
text: "Welcome back to DollhouseMCP! The wizard has already been completed. Use 'Open configuration wizard' if you want to reconfigure."
|
|
27
|
+
}]
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const welcomeMessage = `🎨 **Welcome to DollhouseMCP!**
|
|
32
|
+
|
|
33
|
+
Hi there! I see this is your first time here. DollhouseMCP helps you create powerful customization elements for your AI assistant - and it's easier than you might think!
|
|
34
|
+
|
|
35
|
+
**What can you do with DollhouseMCP?**
|
|
36
|
+
|
|
37
|
+
🎭 **Personas** - Change your AI's personality (make it funny, professional, creative, or anything you imagine)
|
|
38
|
+
💡 **Skills** - Give your AI new abilities like taking meeting notes, reviewing code, or organizing your thoughts
|
|
39
|
+
📝 **Templates** - Create reusable formats for emails, documentation, resumes, and more
|
|
40
|
+
🤖 **Agents** - Build smart assistants that handle specific tasks automatically
|
|
41
|
+
✨ **And more!** - Just describe what you want, and DollhouseMCP will help you create it
|
|
42
|
+
|
|
43
|
+
The best part? Everything you create is saved and persistent. Your custom tools and assistants will be there whenever you need them. You can modify them anytime just by asking!
|
|
44
|
+
|
|
45
|
+
**Need ideas?** Just ask "What would be the best way to..." and I'll help you figure out the perfect solution.
|
|
46
|
+
|
|
47
|
+
**Ready to get started?** I'll help you:
|
|
48
|
+
- Choose a username (this tags your creations so you can find them later - or stay anonymous, that's totally fine!)
|
|
49
|
+
- Set up your workspace for saving all your customizations
|
|
50
|
+
- Browse examples to spark your creativity
|
|
51
|
+
- Create your first customization element
|
|
52
|
+
|
|
53
|
+
Just say:
|
|
54
|
+
- "Yes" or "Let's get started" → I'll guide you through setup
|
|
55
|
+
- "Skip for now" → You can set up later when you're ready
|
|
56
|
+
- "I'll stay anonymous" → Perfect! You can use everything without signing in
|
|
57
|
+
|
|
58
|
+
**What's a username for?** It simply tags your creations (like "created by: you") so you can find them easily. Staying anonymous means your creations are tagged with a fun random ID instead (like "created by: clever-fox"). Either way, all your work is saved locally on your computer!
|
|
59
|
+
|
|
60
|
+
Don't worry - this only takes a minute, and you can change any settings later! 🌟`;
|
|
61
|
+
// Return the message in the requested format
|
|
62
|
+
if (options.format === 'raw') {
|
|
63
|
+
// Just the text, no formatting
|
|
64
|
+
return welcomeMessage;
|
|
65
|
+
}
|
|
66
|
+
else if (options.format === 'markdown') {
|
|
67
|
+
// Return as markdown code block
|
|
68
|
+
return {
|
|
69
|
+
content: [{
|
|
70
|
+
type: "text",
|
|
71
|
+
text: "```markdown\n" + welcomeMessage + "\n```"
|
|
72
|
+
}]
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Default: Return as clean text with instruction
|
|
77
|
+
return {
|
|
78
|
+
content: [{
|
|
79
|
+
type: "text",
|
|
80
|
+
text: welcomeMessage
|
|
81
|
+
}]
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Tool definition for MCP
|
|
87
|
+
*/
|
|
88
|
+
static get definition() {
|
|
89
|
+
return {
|
|
90
|
+
name: "dollhouse_welcome",
|
|
91
|
+
description: "Get the DollhouseMCP welcome message for first-time users",
|
|
92
|
+
inputSchema: {
|
|
93
|
+
type: "object",
|
|
94
|
+
properties: {
|
|
95
|
+
format: {
|
|
96
|
+
type: "string",
|
|
97
|
+
enum: ["text", "markdown", "raw"],
|
|
98
|
+
description: "Format for the welcome message (default: text)"
|
|
99
|
+
},
|
|
100
|
+
skipCheck: {
|
|
101
|
+
type: "boolean",
|
|
102
|
+
description: "Skip checking if wizard was already completed (default: false)"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0V2VsY29tZU1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZ2V0V2VsY29tZU1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFPM0QsTUFBTSxPQUFPLHFCQUFxQjtJQUN4QixhQUFhLENBQWdCO0lBRXJDO1FBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBb0MsRUFBRTtRQUNsRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUU5Qyw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQ3pELE9BQU87b0JBQ0wsT0FBTyxFQUFFLENBQUM7NEJBQ1IsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLGtJQUFrSTt5QkFDekksQ0FBQztpQkFDSCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0ZBNkJ1RCxDQUFDO1FBRS9FLDZDQUE2QztRQUM3QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDN0IsK0JBQStCO1lBQy9CLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDekMsZ0NBQWdDO1lBQ2hDLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLGVBQWUsR0FBRyxjQUFjLEdBQUcsT0FBTztxQkFDakQsQ0FBQzthQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLGlEQUFpRDtZQUNqRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxDQUFDO3dCQUNSLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxjQUFjO3FCQUNyQixDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLEtBQUssVUFBVTtRQUNuQixPQUFPO1lBQ0wsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixXQUFXLEVBQUUsMkRBQTJEO1lBQ3hFLFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsTUFBTSxFQUFFO3dCQUNOLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDO3dCQUNqQyxXQUFXLEVBQUUsZ0RBQWdEO3FCQUM5RDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsV0FBVyxFQUFFLGdFQUFnRTtxQkFDOUU7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldCBXZWxjb21lIE1lc3NhZ2UgVG9vbFxuICogXG4gKiBBIGRlZGljYXRlZCBNQ1AgdG9vbCB0aGF0IHJldHVybnMgdGhlIHdlbGNvbWUgbWVzc2FnZVxuICogVGhpcyBnaXZlcyB1cyBtb3JlIGNvbnRyb2wgb3ZlciBob3cgdGhlIG1lc3NhZ2UgaXMgcHJlc2VudGVkXG4gKi9cblxuaW1wb3J0IHsgQ29uZmlnTWFuYWdlciB9IGZyb20gJy4uL2NvbmZpZy9Db25maWdNYW5hZ2VyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBHZXRXZWxjb21lTWVzc2FnZU9wdGlvbnMge1xuICBmb3JtYXQ/OiAndGV4dCcgfCAnbWFya2Rvd24nIHwgJ3Jhdyc7XG4gIHNraXBDaGVjaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRXZWxjb21lTWVzc2FnZVRvb2wge1xuICBwcml2YXRlIGNvbmZpZ01hbmFnZXI6IENvbmZpZ01hbmFnZXI7XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbmZpZ01hbmFnZXIgPSBDb25maWdNYW5hZ2VyLmdldEluc3RhbmNlKCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdlbGNvbWUgbWVzc2FnZSBkaXJlY3RseSBhcyBhIHRvb2wgcmVzcG9uc2VcbiAgICogVGhpcyBieXBhc3NlcyB0aGUgcmVzcG9uc2Ugd3JhcHBpbmcgYW5kIGdpdmVzIHVzIGZ1bGwgY29udHJvbFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShvcHRpb25zOiBHZXRXZWxjb21lTWVzc2FnZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgYXdhaXQgdGhpcy5jb25maWdNYW5hZ2VyLmluaXRpYWxpemUoKTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIHdlbGNvbWUgbWVzc2FnZVxuICAgIGlmICghb3B0aW9ucy5za2lwQ2hlY2spIHtcbiAgICAgIGlmIChjb25maWcud2l6YXJkPy5jb21wbGV0ZWQgfHwgY29uZmlnLndpemFyZD8uZGlzbWlzc2VkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdGV4dDogXCJXZWxjb21lIGJhY2sgdG8gRG9sbGhvdXNlTUNQISBUaGUgd2l6YXJkIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVkLiBVc2UgJ09wZW4gY29uZmlndXJhdGlvbiB3aXphcmQnIGlmIHlvdSB3YW50IHRvIHJlY29uZmlndXJlLlwiXG4gICAgICAgICAgfV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgY29uc3Qgd2VsY29tZU1lc3NhZ2UgPSBg8J+OqCAqKldlbGNvbWUgdG8gRG9sbGhvdXNlTUNQISoqXG5cbkhpIHRoZXJlISBJIHNlZSB0aGlzIGlzIHlvdXIgZmlyc3QgdGltZSBoZXJlLiBEb2xsaG91c2VNQ1AgaGVscHMgeW91IGNyZWF0ZSBwb3dlcmZ1bCBjdXN0b21pemF0aW9uIGVsZW1lbnRzIGZvciB5b3VyIEFJIGFzc2lzdGFudCAtIGFuZCBpdCdzIGVhc2llciB0aGFuIHlvdSBtaWdodCB0aGluayFcblxuKipXaGF0IGNhbiB5b3UgZG8gd2l0aCBEb2xsaG91c2VNQ1A/Kipcblxu8J+OrSAqKlBlcnNvbmFzKiogLSBDaGFuZ2UgeW91ciBBSSdzIHBlcnNvbmFsaXR5IChtYWtlIGl0IGZ1bm55LCBwcm9mZXNzaW9uYWwsIGNyZWF0aXZlLCBvciBhbnl0aGluZyB5b3UgaW1hZ2luZSlcbvCfkqEgKipTa2lsbHMqKiAtIEdpdmUgeW91ciBBSSBuZXcgYWJpbGl0aWVzIGxpa2UgdGFraW5nIG1lZXRpbmcgbm90ZXMsIHJldmlld2luZyBjb2RlLCBvciBvcmdhbml6aW5nIHlvdXIgdGhvdWdodHNcbvCfk50gKipUZW1wbGF0ZXMqKiAtIENyZWF0ZSByZXVzYWJsZSBmb3JtYXRzIGZvciBlbWFpbHMsIGRvY3VtZW50YXRpb24sIHJlc3VtZXMsIGFuZCBtb3JlXG7wn6SWICoqQWdlbnRzKiogLSBCdWlsZCBzbWFydCBhc3Npc3RhbnRzIHRoYXQgaGFuZGxlIHNwZWNpZmljIHRhc2tzIGF1dG9tYXRpY2FsbHlcbuKcqCAqKkFuZCBtb3JlISoqIC0gSnVzdCBkZXNjcmliZSB3aGF0IHlvdSB3YW50LCBhbmQgRG9sbGhvdXNlTUNQIHdpbGwgaGVscCB5b3UgY3JlYXRlIGl0XG5cblRoZSBiZXN0IHBhcnQ/IEV2ZXJ5dGhpbmcgeW91IGNyZWF0ZSBpcyBzYXZlZCBhbmQgcGVyc2lzdGVudC4gWW91ciBjdXN0b20gdG9vbHMgYW5kIGFzc2lzdGFudHMgd2lsbCBiZSB0aGVyZSB3aGVuZXZlciB5b3UgbmVlZCB0aGVtLiBZb3UgY2FuIG1vZGlmeSB0aGVtIGFueXRpbWUganVzdCBieSBhc2tpbmchXG5cbioqTmVlZCBpZGVhcz8qKiBKdXN0IGFzayBcIldoYXQgd291bGQgYmUgdGhlIGJlc3Qgd2F5IHRvLi4uXCIgYW5kIEknbGwgaGVscCB5b3UgZmlndXJlIG91dCB0aGUgcGVyZmVjdCBzb2x1dGlvbi5cblxuKipSZWFkeSB0byBnZXQgc3RhcnRlZD8qKiBJJ2xsIGhlbHAgeW91OlxuLSBDaG9vc2UgYSB1c2VybmFtZSAodGhpcyB0YWdzIHlvdXIgY3JlYXRpb25zIHNvIHlvdSBjYW4gZmluZCB0aGVtIGxhdGVyIC0gb3Igc3RheSBhbm9ueW1vdXMsIHRoYXQncyB0b3RhbGx5IGZpbmUhKVxuLSBTZXQgdXAgeW91ciB3b3Jrc3BhY2UgZm9yIHNhdmluZyBhbGwgeW91ciBjdXN0b21pemF0aW9uc1xuLSBCcm93c2UgZXhhbXBsZXMgdG8gc3BhcmsgeW91ciBjcmVhdGl2aXR5XG4tIENyZWF0ZSB5b3VyIGZpcnN0IGN1c3RvbWl6YXRpb24gZWxlbWVudFxuXG5KdXN0IHNheTpcbi0gXCJZZXNcIiBvciBcIkxldCdzIGdldCBzdGFydGVkXCIg4oaSIEknbGwgZ3VpZGUgeW91IHRocm91Z2ggc2V0dXBcbi0gXCJTa2lwIGZvciBub3dcIiDihpIgWW91IGNhbiBzZXQgdXAgbGF0ZXIgd2hlbiB5b3UncmUgcmVhZHlcbi0gXCJJJ2xsIHN0YXkgYW5vbnltb3VzXCIg4oaSIFBlcmZlY3QhIFlvdSBjYW4gdXNlIGV2ZXJ5dGhpbmcgd2l0aG91dCBzaWduaW5nIGluXG5cbioqV2hhdCdzIGEgdXNlcm5hbWUgZm9yPyoqIEl0IHNpbXBseSB0YWdzIHlvdXIgY3JlYXRpb25zIChsaWtlIFwiY3JlYXRlZCBieTogeW91XCIpIHNvIHlvdSBjYW4gZmluZCB0aGVtIGVhc2lseS4gU3RheWluZyBhbm9ueW1vdXMgbWVhbnMgeW91ciBjcmVhdGlvbnMgYXJlIHRhZ2dlZCB3aXRoIGEgZnVuIHJhbmRvbSBJRCBpbnN0ZWFkIChsaWtlIFwiY3JlYXRlZCBieTogY2xldmVyLWZveFwiKS4gRWl0aGVyIHdheSwgYWxsIHlvdXIgd29yayBpcyBzYXZlZCBsb2NhbGx5IG9uIHlvdXIgY29tcHV0ZXIhXG5cbkRvbid0IHdvcnJ5IC0gdGhpcyBvbmx5IHRha2VzIGEgbWludXRlLCBhbmQgeW91IGNhbiBjaGFuZ2UgYW55IHNldHRpbmdzIGxhdGVyISDwn4yfYDtcbiAgICBcbiAgICAvLyBSZXR1cm4gdGhlIG1lc3NhZ2UgaW4gdGhlIHJlcXVlc3RlZCBmb3JtYXRcbiAgICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdyYXcnKSB7XG4gICAgICAvLyBKdXN0IHRoZSB0ZXh0LCBubyBmb3JtYXR0aW5nXG4gICAgICByZXR1cm4gd2VsY29tZU1lc3NhZ2U7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ21hcmtkb3duJykge1xuICAgICAgLy8gUmV0dXJuIGFzIG1hcmtkb3duIGNvZGUgYmxvY2tcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCJgYGBtYXJrZG93blxcblwiICsgd2VsY29tZU1lc3NhZ2UgKyBcIlxcbmBgYFwiXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0OiBSZXR1cm4gYXMgY2xlYW4gdGV4dCB3aXRoIGluc3RydWN0aW9uXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IHdlbGNvbWVNZXNzYWdlXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFRvb2wgZGVmaW5pdGlvbiBmb3IgTUNQXG4gICAqL1xuICBzdGF0aWMgZ2V0IGRlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IFwiZG9sbGhvdXNlX3dlbGNvbWVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkdldCB0aGUgRG9sbGhvdXNlTUNQIHdlbGNvbWUgbWVzc2FnZSBmb3IgZmlyc3QtdGltZSB1c2Vyc1wiLFxuICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGZvcm1hdDoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGVudW06IFtcInRleHRcIiwgXCJtYXJrZG93blwiLCBcInJhd1wiXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZvcm1hdCBmb3IgdGhlIHdlbGNvbWUgbWVzc2FnZSAoZGVmYXVsdDogdGV4dClcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2tpcENoZWNrOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNraXAgY2hlY2tpbmcgaWYgd2l6YXJkIHdhcyBhbHJlYWR5IGNvbXBsZXRlZCAoZGVmYXVsdDogZmFsc2UpXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59Il19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dollhousemcp/mcp-server",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.3",
|
|
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",
|