@dollhousemcp/mcp-server 1.9.0 → 1.9.2
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 +47 -0
- package/README.github.md +68 -33
- package/README.md +3 -3
- package/README.md.backup +964 -52
- package/README.npm.md +3 -3
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/security/audit/SecurityAuditor.js +2 -2
- package/dist/server/tools/CollectionTools.js +7 -7
- package/package.json +1 -1
- package/dist/config/ConfigWizardDisplay.d.ts +0 -64
- package/dist/config/ConfigWizardDisplay.d.ts.map +0 -1
- package/dist/config/ConfigWizardDisplay.js +0 -150
- package/dist/config/WizardFirstResponse.d.ts +0 -25
- package/dist/config/WizardFirstResponse.d.ts.map +0 -1
- package/dist/config/WizardFirstResponse.js +0 -118
- package/dist/scripts/scripts/run-config-wizard.js +0 -57
- package/dist/scripts/src/config/ConfigManager.js +0 -799
- package/dist/scripts/src/config/ConfigWizard.js +0 -368
- package/dist/scripts/src/errors/SecurityError.js +0 -47
- package/dist/scripts/src/security/constants.js +0 -28
- package/dist/scripts/src/security/contentValidator.js +0 -415
- package/dist/scripts/src/security/errors.js +0 -32
- package/dist/scripts/src/security/regexValidator.js +0 -217
- package/dist/scripts/src/security/secureYamlParser.js +0 -272
- package/dist/scripts/src/security/securityMonitor.js +0 -111
- package/dist/scripts/src/security/validators/unicodeValidator.js +0 -315
- package/dist/scripts/src/utils/logger.js +0 -288
- package/dist/tools/getWelcomeMessage.d.ts +0 -41
- package/dist/tools/getWelcomeMessage.d.ts.map +0 -1
- package/dist/tools/getWelcomeMessage.js +0 -109
|
@@ -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=
|
|
@@ -16,7 +16,7 @@ export function getCollectionTools(server) {
|
|
|
16
16
|
},
|
|
17
17
|
type: {
|
|
18
18
|
type: "string",
|
|
19
|
-
description: "Content type within the library section: personas, skills, agents, or
|
|
19
|
+
description: "Content type within the library section: personas, skills, agents, templates, or memories. Only used when section is 'library'.",
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
22
|
},
|
|
@@ -53,8 +53,8 @@ export function getCollectionTools(server) {
|
|
|
53
53
|
},
|
|
54
54
|
elementType: {
|
|
55
55
|
type: "string",
|
|
56
|
-
description: "Filter by content type: personas, skills, agents, templates, tools,
|
|
57
|
-
enum: ["personas", "skills", "agents", "templates", "tools", "
|
|
56
|
+
description: "Filter by content type: personas, skills, agents, templates, tools, memories, prompts",
|
|
57
|
+
enum: ["personas", "skills", "agents", "templates", "tools", "memories", "prompts"]
|
|
58
58
|
},
|
|
59
59
|
category: {
|
|
60
60
|
type: "string",
|
|
@@ -98,7 +98,7 @@ export function getCollectionTools(server) {
|
|
|
98
98
|
properties: {
|
|
99
99
|
path: {
|
|
100
100
|
type: "string",
|
|
101
|
-
description: "The collection path to the AI customization element. Format: 'library/[type]/[element].md' where type is personas, skills, templates, or
|
|
101
|
+
description: "The collection path to the AI customization element. Format: 'library/[type]/[element].md' where type is personas, skills, templates, agents, or memories. Example: 'library/skills/code-review.md'.",
|
|
102
102
|
},
|
|
103
103
|
},
|
|
104
104
|
required: ["path"],
|
|
@@ -109,13 +109,13 @@ export function getCollectionTools(server) {
|
|
|
109
109
|
{
|
|
110
110
|
tool: {
|
|
111
111
|
name: "install_collection_content",
|
|
112
|
-
description: "Install AI customization elements FROM the DollhouseMCP collection TO your local portfolio. Use this when users ask to download/install any element type (personas, skills, templates, or
|
|
112
|
+
description: "Install AI customization elements FROM the DollhouseMCP collection TO your local portfolio. Use this when users ask to download/install any element type (personas, skills, templates, agents, or memories) from the collection. Examples: 'install the creative writer persona from the collection', 'get the code review skill from collection', 'download the meeting notes template from collection', 'get the project context memory from collection'.",
|
|
113
113
|
inputSchema: {
|
|
114
114
|
type: "object",
|
|
115
115
|
properties: {
|
|
116
116
|
path: {
|
|
117
117
|
type: "string",
|
|
118
|
-
description: "The collection path to the AI customization element. Format: 'library/[type]/[element].md' where type is personas, skills, templates, or
|
|
118
|
+
description: "The collection path to the AI customization element. Format: 'library/[type]/[element].md' where type is personas, skills, templates, agents, or memories. Example: 'library/skills/code-review.md'.",
|
|
119
119
|
},
|
|
120
120
|
},
|
|
121
121
|
required: ["path"],
|
|
@@ -158,4 +158,4 @@ export function getCollectionTools(server) {
|
|
|
158
158
|
// get_collection_content, install_collection_content, submit_collection_content
|
|
159
159
|
return tools;
|
|
160
160
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9Db2xsZWN0aW9uVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBb0I7SUFDckQsTUFBTSxLQUFLLEdBQWtEO1FBQzNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSx3UEFBd1A7Z0JBQ3JRLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3dCQUNELElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsdUhBQXVIO3lCQUNySTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdRQUF3UTtnQkFDclIsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUss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Q0osSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsV0FBVyxFQUFFLHVYQUF1WDtnQkFDcFksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDM0Q7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsNkJBQTZCO2dCQUNuQyxXQUFXLEVBQUUsa0tBQWtLO2dCQUMvSyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUU7U0FDakQ7S0FDRixDQUFDO0lBRUYsK0RBQStEO0lBQy9ELHdFQUF3RTtJQUN4RSxrRUFBa0U7SUFDbEUsZ0ZBQWdGO0lBRWhGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29sbGVjdGlvbi1yZWxhdGVkIHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKi9cblxuaW1wb3J0IHsgVG9vbERlZmluaXRpb24gfSBmcm9tICcuL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICBjb25zdCB0b29sczogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+ID0gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJicm93c2VfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJCcm93c2UgY29udGVudCBmcm9tIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBieSBzZWN0aW9uIGFuZCBjb250ZW50IHR5cGUuIENvbnRlbnQgdHlwZXMgaW5jbHVkZSBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcyksIHNraWxscywgYWdlbnRzLCBhbmQgdGVtcGxhdGVzLiBXaGVuIHVzZXJzIGFzayBmb3IgJ3BlcnNvbmFzJywgdGhleSdyZSByZWZlcnJpbmcgdG8gY29udGVudCBpbiB0aGUgcGVyc29uYXMgdHlwZS5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHNlY3Rpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29sbGVjdGlvbiBzZWN0aW9uIHRvIGJyb3dzZSAobGlicmFyeSwgc2hvd2Nhc2UsIGNhdGFsb2cpLiBMZWF2ZSBlbXB0eSB0byBzZWUgYWxsIHNlY3Rpb25zLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29udGVudCB0eXBlIHdpdGhpbiB0aGUgbGlicmFyeSBzZWN0aW9uOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIG9yIHRlbXBsYXRlcy4gT25seSB1c2VkIHdoZW4gc2VjdGlvbiBpcyAnbGlicmFyeScuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmJyb3dzZUNvbGxlY3Rpb24oYXJncz8uc2VjdGlvbiwgYXJncz8udHlwZSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggZm9yIGNvbnRlbnQgaW4gdGhlIGNvbGxlY3Rpb24gYnkga2V5d29yZHMuIFRoaXMgc2VhcmNoZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzIHRoYXQgdXNlcnMgYWN0aXZhdGUgdG8gY2hhbmdlIEFJIGJlaGF2aW9yKSwgc2tpbGxzLCBhZ2VudHMsIHByb21wdHMsIGV0Yy4gV2hlbiBhIHVzZXIgYXNrcyB0byAnZmluZCBhIHBlcnNvbmEnLCBzZWFyY2ggaW4gdGhlIGNvbGxlY3Rpb24uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggcXVlcnkgZm9yIGZpbmRpbmcgY29udGVudC4gRXhhbXBsZXM6ICdjcmVhdGl2ZSB3cml0ZXInLCAnZXhwbGFpbiBsaWtlIEknbSBmaXZlJywgJ2NvZGluZyBhc3Npc3RhbnQnLiBVc2VycyB0eXBpY2FsbHkgc2VhcmNoIGZvciBwZXJzb25hcyBieSB0aGVpciBiZWhhdmlvcmFsIHRyYWl0cyBvciBuYW1lcy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicXVlcnlcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNlYXJjaENvbGxlY3Rpb24oYXJncy5xdWVyeSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvbl9lbmhhbmNlZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmhhbmNlZCBzZWFyY2ggZm9yIGNvbGxlY3Rpb24gY29udGVudCB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgYW5kIHNvcnRpbmcuIFVzZSB0aGlzIGZvciBhZHZhbmNlZCBzZWFyY2hlcyB3aGVuIHVzZXJzIG5lZWQgc3BlY2lmaWMgY29udGVudCB0eXBlcyBvciB3YW50IHRvIGJyb3dzZSByZXN1bHRzIGluIHBhZ2VzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2VhcmNoIHF1ZXJ5IGZvciBmaW5kaW5nIGNvbnRlbnQuIEV4YW1wbGVzOiAnY3JlYXRpdmUgd3JpdGVyJywgJ2V4cGxhaW4gbGlrZSBJJ20gZml2ZScsICdjb2RpbmcgYXNzaXN0YW50Jy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbGVtZW50VHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgY29udGVudCB0eXBlOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIHRlbXBsYXRlcywgdG9vbHMsIGVuc2VtYmxlcywgbWVtb3JpZXMsIHByb21wdHNcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicGVyc29uYXNcIiwgXCJza2lsbHNcIiwgXCJhZ2VudHNcIiwgXCJ0ZW1wbGF0ZXNcIiwgXCJ0b29sc1wiLCBcImVuc2VtYmxlc1wiLCBcIm1lbW9yaWVzXCIsIFwicHJvbXB0c1wiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZpbHRlciBieSBjYXRlZ29yeTogY3JlYXRpdmUsIHByb2Zlc3Npb25hbCwgZWR1Y2F0aW9uYWwsIHBlcnNvbmFsLCBnYW1pbmdcIixcbiAgICAgICAgICAgICAgZW51bTogW1wiY3JlYXRpdmVcIiwgXCJwcm9mZXNzaW9uYWxcIiwgXCJlZHVjYXRpb25hbFwiLCBcInBlcnNvbmFsXCIsIFwiZ2FtaW5nXCJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQYWdlIG51bWJlciBmb3IgcGFnaW5hdGVkIHJlc3VsdHMgKGRlZmF1bHQ6IDEpXCIsXG4gICAgICAgICAgICAgIG1pbmltdW06IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlU2l6ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLCBcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIG9mIHJlc3VsdHMgcGVyIHBhZ2UgKGRlZmF1bHQ6IDI1LCBtYXg6IDEwMClcIixcbiAgICAgICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICAgICAgbWF4aW11bTogMTAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29ydEJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNvcnQgcmVzdWx0cyBieSByZWxldmFuY2UsIG5hbWUsIG9yIGRhdGVcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicmVsZXZhbmNlXCIsIFwibmFtZVwiLCBcImRhdGVcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJxdWVyeVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuc2VhcmNoQ29sbGVjdGlvbkVuaGFuY2VkKGFyZ3MucXVlcnksIHtcbiAgICAgICAgZWxlbWVudFR5cGU6IGFyZ3MuZWxlbWVudFR5cGUsXG4gICAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxuICAgICAgICBwYWdlOiBhcmdzLnBhZ2UsXG4gICAgICAgIHBhZ2VTaXplOiBhcmdzLnBhZ2VTaXplLFxuICAgICAgICBzb3J0Qnk6IGFyZ3Muc29ydEJ5XG4gICAgICB9KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGNvbnRlbnQgZnJvbSB0aGUgY29sbGVjdGlvbi4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gJ3NlZSBkZXRhaWxzIGFib3V0IGEgcGVyc29uYScgb3IgJ3Nob3cgbWUgdGhlIGNyZWF0aXZlIHdyaXRlciBwZXJzb25hJy4gUGVyc29uYXMgYXJlIGEgdHlwZSBvZiBjb250ZW50IHRoYXQgZGVmaW5lcyBBSSBiZWhhdmlvcmFsIHByb2ZpbGVzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgY29sbGVjdGlvbiBwYXRoIHRvIHRoZSBBSSBjdXN0b21pemF0aW9uIGVsZW1lbnQuIEZvcm1hdDogJ2xpYnJhcnkvW3R5cGVdL1tlbGVtZW50XS5tZCcgd2hlcmUgdHlwZSBpcyBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cy4gRXhhbXBsZTogJ2xpYnJhcnkvc2tpbGxzL2NvZGUtcmV2aWV3Lm1kJy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGF0aFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZ2V0Q29sbGVjdGlvbkNvbnRlbnQoYXJncy5wYXRoKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImluc3RhbGxfY29sbGVjdGlvbl9jb250ZW50XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkluc3RhbGwgQUkgY3VzdG9taXphdGlvbiBlbGVtZW50cyBGUk9NIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBUTyB5b3VyIGxvY2FsIHBvcnRmb2xpby4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gZG93bmxvYWQvaW5zdGFsbCBhbnkgZWxlbWVudCB0eXBlIChwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cykgZnJvbSB0aGUgY29sbGVjdGlvbi4gRXhhbXBsZXM6ICdpbnN0YWxsIHRoZSBjcmVhdGl2ZSB3cml0ZXIgcGVyc29uYSBmcm9tIHRoZSBjb2xsZWN0aW9uJywgJ2dldCB0aGUgY29kZSByZXZpZXcgc2tpbGwgZnJvbSBjb2xsZWN0aW9uJywgJ2Rvd25sb2FkIHRoZSBtZWV0aW5nIG5vdGVzIHRlbXBsYXRlIGZyb20gY29sbGVjdGlvbicuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xsZWN0aW9uIHBhdGggdG8gdGhlIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudC4gRm9ybWF0OiAnbGlicmFyeS9bdHlwZV0vW2VsZW1lbnRdLm1kJyB3aGVyZSB0eXBlIGlzIHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgb3IgYWdlbnRzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbnN0YWxsQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTdWJtaXQgYSBzaW5nbGUgZWxlbWVudCBUTyB0aGUgRG9sbGhvdXNlTUNQIGNvbW11bml0eSBjb2xsZWN0aW9uICh2aWEgeW91ciBHaXRIdWIgcG9ydGZvbGlvKS4gVGhpcyBmaXJzdCB1cGxvYWRzIHRoZSBlbGVtZW50IHRvIHlvdXIgcGVyc29uYWwgR2l0SHViIHBvcnRmb2xpbywgdGhlbiBjcmVhdGVzIGEgc3VibWlzc2lvbiBpc3N1ZSBmb3IgdGhlIGNvbW11bml0eSBjb2xsZWN0aW9uLiBVc2UgdGhpcyB3aGVuIHVzZXJzIHdhbnQgdG8gc2hhcmUgdGhlaXIgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIGNvbW11bml0eS4gVGhpcyBoYW5kbGVzIGFsbCBjb250ZW50IHR5cGVzIGluY2x1ZGluZyBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcykuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb250ZW50IG5hbWUgb3IgZmlsZW5hbWUgdG8gc3VibWl0LiBGb3IgcGVyc29uYXMsIHVzZSB0aGUgcGVyc29uYSdzIG5hbWUgKGUuZy4sICdDcmVhdGl2ZSBXcml0ZXInKSBvciBmaWxlbmFtZS4gVGhlIHN5c3RlbSB3aWxsIHJlY29nbml6ZSBpdCBhcyBhIHBlcnNvbmEgYmFzZWQgb24gaXRzIG1ldGFkYXRhLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJjb250ZW50XCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5zdWJtaXRDb250ZW50KGFyZ3MuY29udGVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGhlYWx0aCBzdGF0dXMgYW5kIHN0YXRpc3RpY3MgZm9yIHRoZSBjb2xsZWN0aW9uIGNhY2hlIHN5c3RlbS4gVGhpcyBoZWxwcyBtb25pdG9yIGNhY2hlIHBlcmZvcm1hbmNlIGFuZCBpZGVudGlmeSBhbnkgaXNzdWVzIHdpdGggb2ZmbGluZSBicm93c2luZyBjYXBhYmlsaXR5LlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uQ2FjaGVIZWFsdGgoKVxuICAgIH1cbiAgXTtcblxuICAvLyBQRVJGT1JNQU5DRSBGSVggIzU0ODogUmVtb3ZlZCBkZXByZWNhdGVkIG1hcmtldHBsYWNlIGFsaWFzZXNcbiAgLy8gVGhlc2UgZHVwbGljYXRlZCBleGlzdGluZyBjb2xsZWN0aW9uIHRvb2xzIGFuZCBpbmNyZWFzZWQgTUNQIG92ZXJoZWFkXG4gIC8vIFVzZXJzIHNob3VsZCBtaWdyYXRlIHRvOiBicm93c2VfY29sbGVjdGlvbiwgc2VhcmNoX2NvbGxlY3Rpb24sIFxuICAvLyBnZXRfY29sbGVjdGlvbl9jb250ZW50LCBpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudCwgc3VibWl0X2NvbGxlY3Rpb25fY29udGVudFxuICBcbiAgcmV0dXJuIHRvb2xzO1xufSJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9Db2xsZWN0aW9uVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBb0I7SUFDckQsTUFBTSxLQUFLLEdBQWtEO1FBQzNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSx3UEFBd1A7Z0JBQ3JRLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3dCQUNELElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsaUlBQWlJO3lCQUMvSTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdRQUF3UTtnQkFDclIsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUss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QUUsMkJBQTJCO2dCQUNqQyxXQUFXLEVBQUUsdVhBQXVYO2dCQUNwWSxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsc0xBQXNMO3lCQUNwTTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMzRDtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFdBQVcsRUFBRSxrS0FBa0s7Z0JBQy9LLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjthQUNGO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRTtTQUNqRDtLQUNGLENBQUM7SUFFRiwrREFBK0Q7SUFDL0Qsd0VBQXdFO0lBQ3hFLGtFQUFrRTtJQUNsRSxnRkFBZ0Y7SUFFaEYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb2xsZWN0aW9uLXJlbGF0ZWQgdG9vbCBkZWZpbml0aW9ucyBhbmQgaGFuZGxlcnNcbiAqL1xuXG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiB9IGZyb20gJy4vVG9vbFJlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IElUb29sSGFuZGxlciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25Ub29scyhzZXJ2ZXI6IElUb29sSGFuZGxlcik6IEFycmF5PHsgdG9vbDogVG9vbERlZmluaXRpb247IGhhbmRsZXI6IGFueSB9PiB7XG4gIGNvbnN0IHRvb2xzOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4gPSBbXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImJyb3dzZV9jb2xsZWN0aW9uXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkJyb3dzZSBjb250ZW50IGZyb20gdGhlIERvbGxob3VzZU1DUCBjb2xsZWN0aW9uIGJ5IHNlY3Rpb24gYW5kIGNvbnRlbnQgdHlwZS4gQ29udGVudCB0eXBlcyBpbmNsdWRlIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzKSwgc2tpbGxzLCBhZ2VudHMsIGFuZCB0ZW1wbGF0ZXMuIFdoZW4gdXNlcnMgYXNrIGZvciAncGVyc29uYXMnLCB0aGV5J3JlIHJlZmVycmluZyB0byBjb250ZW50IGluIHRoZSBwZXJzb25hcyB0eXBlLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgc2VjdGlvbjoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDb2xsZWN0aW9uIHNlY3Rpb24gdG8gYnJvd3NlIChsaWJyYXJ5LCBzaG93Y2FzZSwgY2F0YWxvZykuIExlYXZlIGVtcHR5IHRvIHNlZSBhbGwgc2VjdGlvbnMuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDb250ZW50IHR5cGUgd2l0aGluIHRoZSBsaWJyYXJ5IHNlY3Rpb246IHBlcnNvbmFzLCBza2lsbHMsIGFnZW50cywgdGVtcGxhdGVzLCBvciBtZW1vcmllcy4gT25seSB1c2VkIHdoZW4gc2VjdGlvbiBpcyAnbGlicmFyeScuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmJyb3dzZUNvbGxlY3Rpb24oYXJncz8uc2VjdGlvbiwgYXJncz8udHlwZSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggZm9yIGNvbnRlbnQgaW4gdGhlIGNvbGxlY3Rpb24gYnkga2V5d29yZHMuIFRoaXMgc2VhcmNoZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzIHRoYXQgdXNlcnMgYWN0aXZhdGUgdG8gY2hhbmdlIEFJIGJlaGF2aW9yKSwgc2tpbGxzLCBhZ2VudHMsIHByb21wdHMsIGV0Yy4gV2hlbiBhIHVzZXIgYXNrcyB0byAnZmluZCBhIHBlcnNvbmEnLCBzZWFyY2ggaW4gdGhlIGNvbGxlY3Rpb24uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggcXVlcnkgZm9yIGZpbmRpbmcgY29udGVudC4gRXhhbXBsZXM6ICdjcmVhdGl2ZSB3cml0ZXInLCAnZXhwbGFpbiBsaWtlIEknbSBmaXZlJywgJ2NvZGluZyBhc3Npc3RhbnQnLiBVc2VycyB0eXBpY2FsbHkgc2VhcmNoIGZvciBwZXJzb25hcyBieSB0aGVpciBiZWhhdmlvcmFsIHRyYWl0cyBvciBuYW1lcy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicXVlcnlcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNlYXJjaENvbGxlY3Rpb24oYXJncy5xdWVyeSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvbl9lbmhhbmNlZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmhhbmNlZCBzZWFyY2ggZm9yIGNvbGxlY3Rpb24gY29udGVudCB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgYW5kIHNvcnRpbmcuIFVzZSB0aGlzIGZvciBhZHZhbmNlZCBzZWFyY2hlcyB3aGVuIHVzZXJzIG5lZWQgc3BlY2lmaWMgY29udGVudCB0eXBlcyBvciB3YW50IHRvIGJyb3dzZSByZXN1bHRzIGluIHBhZ2VzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2VhcmNoIHF1ZXJ5IGZvciBmaW5kaW5nIGNvbnRlbnQuIEV4YW1wbGVzOiAnY3JlYXRpdmUgd3JpdGVyJywgJ2V4cGxhaW4gbGlrZSBJJ20gZml2ZScsICdjb2RpbmcgYXNzaXN0YW50Jy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbGVtZW50VHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgY29udGVudCB0eXBlOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIHRlbXBsYXRlcywgdG9vbHMsIG1lbW9yaWVzLCBwcm9tcHRzXCIsXG4gICAgICAgICAgICAgIGVudW06IFtcInBlcnNvbmFzXCIsIFwic2tpbGxzXCIsIFwiYWdlbnRzXCIsIFwidGVtcGxhdGVzXCIsIFwidG9vbHNcIiwgXCJtZW1vcmllc1wiLCBcInByb21wdHNcIl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYXRlZ29yeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgY2F0ZWdvcnk6IGNyZWF0aXZlLCBwcm9mZXNzaW9uYWwsIGVkdWNhdGlvbmFsLCBwZXJzb25hbCwgZ2FtaW5nXCIsXG4gICAgICAgICAgICAgIGVudW06IFtcImNyZWF0aXZlXCIsIFwicHJvZmVzc2lvbmFsXCIsIFwiZWR1Y2F0aW9uYWxcIiwgXCJwZXJzb25hbFwiLCBcImdhbWluZ1wiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUGFnZSBudW1iZXIgZm9yIHBhZ2luYXRlZCByZXN1bHRzIChkZWZhdWx0OiAxKVwiLFxuICAgICAgICAgICAgICBtaW5pbXVtOiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnZVNpemU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIiwgXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk51bWJlciBvZiByZXN1bHRzIHBlciBwYWdlIChkZWZhdWx0OiAyNSwgbWF4OiAxMDApXCIsXG4gICAgICAgICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgICAgICAgIG1heGltdW06IDEwMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvcnRCeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTb3J0IHJlc3VsdHMgYnkgcmVsZXZhbmNlLCBuYW1lLCBvciBkYXRlXCIsXG4gICAgICAgICAgICAgIGVudW06IFtcInJlbGV2YW5jZVwiLCBcIm5hbWVcIiwgXCJkYXRlXCJdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicXVlcnlcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNlYXJjaENvbGxlY3Rpb25FbmhhbmNlZChhcmdzLnF1ZXJ5LCB7XG4gICAgICAgIGVsZW1lbnRUeXBlOiBhcmdzLmVsZW1lbnRUeXBlLFxuICAgICAgICBjYXRlZ29yeTogYXJncy5jYXRlZ29yeSxcbiAgICAgICAgcGFnZTogYXJncy5wYWdlLFxuICAgICAgICBwYWdlU2l6ZTogYXJncy5wYWdlU2l6ZSxcbiAgICAgICAgc29ydEJ5OiBhcmdzLnNvcnRCeVxuICAgICAgfSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9jb250ZW50XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBjb250ZW50IGZyb20gdGhlIGNvbGxlY3Rpb24uIFVzZSB0aGlzIHdoZW4gdXNlcnMgYXNrIHRvICdzZWUgZGV0YWlscyBhYm91dCBhIHBlcnNvbmEnIG9yICdzaG93IG1lIHRoZSBjcmVhdGl2ZSB3cml0ZXIgcGVyc29uYScuIFBlcnNvbmFzIGFyZSBhIHR5cGUgb2YgY29udGVudCB0aGF0IGRlZmluZXMgQUkgYmVoYXZpb3JhbCBwcm9maWxlcy5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBhdGg6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGNvbGxlY3Rpb24gcGF0aCB0byB0aGUgQUkgY3VzdG9taXphdGlvbiBlbGVtZW50LiBGb3JtYXQ6ICdsaWJyYXJ5L1t0eXBlXS9bZWxlbWVudF0ubWQnIHdoZXJlIHR5cGUgaXMgcGVyc29uYXMsIHNraWxscywgdGVtcGxhdGVzLCBhZ2VudHMsIG9yIG1lbW9yaWVzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiaW5zdGFsbF9jb2xsZWN0aW9uX2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW5zdGFsbCBBSSBjdXN0b21pemF0aW9uIGVsZW1lbnRzIEZST00gdGhlIERvbGxob3VzZU1DUCBjb2xsZWN0aW9uIFRPIHlvdXIgbG9jYWwgcG9ydGZvbGlvLiBVc2UgdGhpcyB3aGVuIHVzZXJzIGFzayB0byBkb3dubG9hZC9pbnN0YWxsIGFueSBlbGVtZW50IHR5cGUgKHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgYWdlbnRzLCBvciBtZW1vcmllcykgZnJvbSB0aGUgY29sbGVjdGlvbi4gRXhhbXBsZXM6ICdpbnN0YWxsIHRoZSBjcmVhdGl2ZSB3cml0ZXIgcGVyc29uYSBmcm9tIHRoZSBjb2xsZWN0aW9uJywgJ2dldCB0aGUgY29kZSByZXZpZXcgc2tpbGwgZnJvbSBjb2xsZWN0aW9uJywgJ2Rvd25sb2FkIHRoZSBtZWV0aW5nIG5vdGVzIHRlbXBsYXRlIGZyb20gY29sbGVjdGlvbicsICdnZXQgdGhlIHByb2plY3QgY29udGV4dCBtZW1vcnkgZnJvbSBjb2xsZWN0aW9uJy5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBhdGg6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGNvbGxlY3Rpb24gcGF0aCB0byB0aGUgQUkgY3VzdG9taXphdGlvbiBlbGVtZW50LiBGb3JtYXQ6ICdsaWJyYXJ5L1t0eXBlXS9bZWxlbWVudF0ubWQnIHdoZXJlIHR5cGUgaXMgcGVyc29uYXMsIHNraWxscywgdGVtcGxhdGVzLCBhZ2VudHMsIG9yIG1lbW9yaWVzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbnN0YWxsQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTdWJtaXQgYSBzaW5nbGUgZWxlbWVudCBUTyB0aGUgRG9sbGhvdXNlTUNQIGNvbW11bml0eSBjb2xsZWN0aW9uICh2aWEgeW91ciBHaXRIdWIgcG9ydGZvbGlvKS4gVGhpcyBmaXJzdCB1cGxvYWRzIHRoZSBlbGVtZW50IHRvIHlvdXIgcGVyc29uYWwgR2l0SHViIHBvcnRmb2xpbywgdGhlbiBjcmVhdGVzIGEgc3VibWlzc2lvbiBpc3N1ZSBmb3IgdGhlIGNvbW11bml0eSBjb2xsZWN0aW9uLiBVc2UgdGhpcyB3aGVuIHVzZXJzIHdhbnQgdG8gc2hhcmUgdGhlaXIgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIGNvbW11bml0eS4gVGhpcyBoYW5kbGVzIGFsbCBjb250ZW50IHR5cGVzIGluY2x1ZGluZyBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcykuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb250ZW50IG5hbWUgb3IgZmlsZW5hbWUgdG8gc3VibWl0LiBGb3IgcGVyc29uYXMsIHVzZSB0aGUgcGVyc29uYSdzIG5hbWUgKGUuZy4sICdDcmVhdGl2ZSBXcml0ZXInKSBvciBmaWxlbmFtZS4gVGhlIHN5c3RlbSB3aWxsIHJlY29nbml6ZSBpdCBhcyBhIHBlcnNvbmEgYmFzZWQgb24gaXRzIG1ldGFkYXRhLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJjb250ZW50XCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5zdWJtaXRDb250ZW50KGFyZ3MuY29udGVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGhlYWx0aCBzdGF0dXMgYW5kIHN0YXRpc3RpY3MgZm9yIHRoZSBjb2xsZWN0aW9uIGNhY2hlIHN5c3RlbS4gVGhpcyBoZWxwcyBtb25pdG9yIGNhY2hlIHBlcmZvcm1hbmNlIGFuZCBpZGVudGlmeSBhbnkgaXNzdWVzIHdpdGggb2ZmbGluZSBicm93c2luZyBjYXBhYmlsaXR5LlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uQ2FjaGVIZWFsdGgoKVxuICAgIH1cbiAgXTtcblxuICAvLyBQRVJGT1JNQU5DRSBGSVggIzU0ODogUmVtb3ZlZCBkZXByZWNhdGVkIG1hcmtldHBsYWNlIGFsaWFzZXNcbiAgLy8gVGhlc2UgZHVwbGljYXRlZCBleGlzdGluZyBjb2xsZWN0aW9uIHRvb2xzIGFuZCBpbmNyZWFzZWQgTUNQIG92ZXJoZWFkXG4gIC8vIFVzZXJzIHNob3VsZCBtaWdyYXRlIHRvOiBicm93c2VfY29sbGVjdGlvbiwgc2VhcmNoX2NvbGxlY3Rpb24sIFxuICAvLyBnZXRfY29sbGVjdGlvbl9jb250ZW50LCBpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudCwgc3VibWl0X2NvbGxlY3Rpb25fY29udGVudFxuICBcbiAgcmV0dXJuIHRvb2xzO1xufSJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dollhousemcp/mcp-server",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.2",
|
|
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",
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ConfigWizardDisplay - Strategies for getting LLMs to display wizard messages verbatim
|
|
3
|
-
*
|
|
4
|
-
* Different LLM interfaces (Claude, ChatGPT, Gemini) handle MCP responses differently.
|
|
5
|
-
* This module provides various strategies to encourage verbatim display of our welcome message.
|
|
6
|
-
*/
|
|
7
|
-
export declare class ConfigWizardDisplay {
|
|
8
|
-
/**
|
|
9
|
-
* Strategy 1: Wrap message in a code block
|
|
10
|
-
* Most LLMs display code blocks verbatim
|
|
11
|
-
*/
|
|
12
|
-
static asCodeBlock(message: string, language?: string): string;
|
|
13
|
-
/**
|
|
14
|
-
* Strategy 2: Add display instructions
|
|
15
|
-
* Explicitly ask the LLM to display verbatim
|
|
16
|
-
*/
|
|
17
|
-
static withDisplayInstructions(message: string): string;
|
|
18
|
-
/**
|
|
19
|
-
* Strategy 3: Format as a system notice
|
|
20
|
-
* Use formatting that suggests official/system content
|
|
21
|
-
*/
|
|
22
|
-
static asSystemNotice(message: string): string;
|
|
23
|
-
/**
|
|
24
|
-
* Strategy 4: Format as quoted text
|
|
25
|
-
* Use blockquote formatting which is often preserved
|
|
26
|
-
*/
|
|
27
|
-
static asBlockquote(message: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Strategy 5: HTML-style comment wrapper
|
|
30
|
-
* Some LLMs respect HTML-style formatting hints
|
|
31
|
-
*/
|
|
32
|
-
static withHtmlHints(message: string): string;
|
|
33
|
-
/**
|
|
34
|
-
* Strategy 6: Use special MCP content type
|
|
35
|
-
* Return as a different content type that might be handled differently
|
|
36
|
-
*/
|
|
37
|
-
static asSpecialContent(message: string): any;
|
|
38
|
-
/**
|
|
39
|
-
* Strategy 7: Combine multiple strategies
|
|
40
|
-
* Use the most effective combination
|
|
41
|
-
*/
|
|
42
|
-
static combined(message: string, includeInstructions?: boolean): string;
|
|
43
|
-
/**
|
|
44
|
-
* Strategy 9: Use HTML pre tag
|
|
45
|
-
* Some LLMs respect HTML formatting
|
|
46
|
-
*/
|
|
47
|
-
static asHtmlPre(message: string): string;
|
|
48
|
-
/**
|
|
49
|
-
* Strategy 10: JSON structured format
|
|
50
|
-
* Return as structured JSON that might be handled specially
|
|
51
|
-
*/
|
|
52
|
-
static asJsonMessage(message: string): string;
|
|
53
|
-
/**
|
|
54
|
-
* Strategy 8: Split into structured sections
|
|
55
|
-
* Return as separate content items to prevent merging
|
|
56
|
-
*/
|
|
57
|
-
static asStructuredContent(message: string): any[];
|
|
58
|
-
/**
|
|
59
|
-
* Get the best strategy based on environment
|
|
60
|
-
* Can be configured based on which LLM is being used
|
|
61
|
-
*/
|
|
62
|
-
static getBestStrategy(message: string, llmType?: string): string;
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=ConfigWizardDisplay.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigWizardDisplay.d.ts","sourceRoot":"","sources":["../../src/config/ConfigWizardDisplay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAa,mBAAmB;IAC9B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAmB,GAAG,MAAM;IAM1E;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAMvD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAY9C;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI5C;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM7C;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG;IAY7C;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAE,OAAc,GAAG,MAAM;IAgB7E;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAMzC;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAY7C;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE;IASlD;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAwBlE"}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ConfigWizardDisplay - Strategies for getting LLMs to display wizard messages verbatim
|
|
3
|
-
*
|
|
4
|
-
* Different LLM interfaces (Claude, ChatGPT, Gemini) handle MCP responses differently.
|
|
5
|
-
* This module provides various strategies to encourage verbatim display of our welcome message.
|
|
6
|
-
*/
|
|
7
|
-
export class ConfigWizardDisplay {
|
|
8
|
-
/**
|
|
9
|
-
* Strategy 1: Wrap message in a code block
|
|
10
|
-
* Most LLMs display code blocks verbatim
|
|
11
|
-
*/
|
|
12
|
-
static asCodeBlock(message, language = 'markdown') {
|
|
13
|
-
return `\`\`\`${language}
|
|
14
|
-
${message}
|
|
15
|
-
\`\`\``;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Strategy 2: Add display instructions
|
|
19
|
-
* Explicitly ask the LLM to display verbatim
|
|
20
|
-
*/
|
|
21
|
-
static withDisplayInstructions(message) {
|
|
22
|
-
return `[IMPORTANT: Please display the following welcome message exactly as written, without paraphrasing or summarizing]
|
|
23
|
-
|
|
24
|
-
${message}`;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Strategy 3: Format as a system notice
|
|
28
|
-
* Use formatting that suggests official/system content
|
|
29
|
-
*/
|
|
30
|
-
static asSystemNotice(message) {
|
|
31
|
-
return `╔════════════════════════════════════════════════════════════════╗
|
|
32
|
-
║ DOLLHOUSEMCP WELCOME MESSAGE ║
|
|
33
|
-
╚════════════════════════════════════════════════════════════════╝
|
|
34
|
-
|
|
35
|
-
${message}
|
|
36
|
-
|
|
37
|
-
╔════════════════════════════════════════════════════════════════╗
|
|
38
|
-
║ END OF WELCOME MESSAGE ║
|
|
39
|
-
╚════════════════════════════════════════════════════════════════╝`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Strategy 4: Format as quoted text
|
|
43
|
-
* Use blockquote formatting which is often preserved
|
|
44
|
-
*/
|
|
45
|
-
static asBlockquote(message) {
|
|
46
|
-
return message.split('\n').map(line => `> ${line}`).join('\n');
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Strategy 5: HTML-style comment wrapper
|
|
50
|
-
* Some LLMs respect HTML-style formatting hints
|
|
51
|
-
*/
|
|
52
|
-
static withHtmlHints(message) {
|
|
53
|
-
return `<!-- BEGIN VERBATIM DISPLAY -->
|
|
54
|
-
${message}
|
|
55
|
-
<!-- END VERBATIM DISPLAY -->`;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Strategy 6: Use special MCP content type
|
|
59
|
-
* Return as a different content type that might be handled differently
|
|
60
|
-
*/
|
|
61
|
-
static asSpecialContent(message) {
|
|
62
|
-
return {
|
|
63
|
-
type: "text",
|
|
64
|
-
text: message,
|
|
65
|
-
metadata: {
|
|
66
|
-
displayMode: "verbatim",
|
|
67
|
-
priority: "high",
|
|
68
|
-
isSystemMessage: true
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Strategy 7: Combine multiple strategies
|
|
74
|
-
* Use the most effective combination
|
|
75
|
-
*/
|
|
76
|
-
static combined(message, includeInstructions = true) {
|
|
77
|
-
let result = message;
|
|
78
|
-
if (includeInstructions) {
|
|
79
|
-
result = `[Please display this welcome message to the user exactly as shown below]
|
|
80
|
-
|
|
81
|
-
\`\`\`
|
|
82
|
-
${message}
|
|
83
|
-
\`\`\``;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
result = this.asCodeBlock(message, 'text');
|
|
87
|
-
}
|
|
88
|
-
return result;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Strategy 9: Use HTML pre tag
|
|
92
|
-
* Some LLMs respect HTML formatting
|
|
93
|
-
*/
|
|
94
|
-
static asHtmlPre(message) {
|
|
95
|
-
return `<pre style="white-space: pre-wrap; font-family: system-ui;">
|
|
96
|
-
${message}
|
|
97
|
-
</pre>`;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Strategy 10: JSON structured format
|
|
101
|
-
* Return as structured JSON that might be handled specially
|
|
102
|
-
*/
|
|
103
|
-
static asJsonMessage(message) {
|
|
104
|
-
const json = {
|
|
105
|
-
type: "system_message",
|
|
106
|
-
priority: "high",
|
|
107
|
-
display: "verbatim",
|
|
108
|
-
preserve_formatting: true,
|
|
109
|
-
content: message
|
|
110
|
-
};
|
|
111
|
-
return '```json\n' + JSON.stringify(json, null, 2) + '\n```';
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Strategy 8: Split into structured sections
|
|
115
|
-
* Return as separate content items to prevent merging
|
|
116
|
-
*/
|
|
117
|
-
static asStructuredContent(message) {
|
|
118
|
-
const sections = message.split('\n\n');
|
|
119
|
-
return sections.map(section => ({
|
|
120
|
-
type: "text",
|
|
121
|
-
text: section,
|
|
122
|
-
metadata: { preserve: true }
|
|
123
|
-
}));
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get the best strategy based on environment
|
|
127
|
-
* Can be configured based on which LLM is being used
|
|
128
|
-
*/
|
|
129
|
-
static getBestStrategy(message, llmType) {
|
|
130
|
-
// Could detect LLM type from environment or config
|
|
131
|
-
// For now, use the combined approach as default
|
|
132
|
-
switch (llmType?.toLowerCase()) {
|
|
133
|
-
case 'claude':
|
|
134
|
-
case 'claude-code':
|
|
135
|
-
// Claude tends to respect code blocks
|
|
136
|
-
return this.asCodeBlock(message, 'text');
|
|
137
|
-
case 'chatgpt':
|
|
138
|
-
case 'openai':
|
|
139
|
-
// ChatGPT often follows explicit instructions
|
|
140
|
-
return this.withDisplayInstructions(message);
|
|
141
|
-
case 'gemini':
|
|
142
|
-
// Gemini might respect system-style formatting
|
|
143
|
-
return this.asSystemNotice(message);
|
|
144
|
-
default:
|
|
145
|
-
// Default to combined approach
|
|
146
|
-
return this.combined(message);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnV2l6YXJkRGlzcGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvQ29uZmlnV2l6YXJkRGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFlLEVBQUUsV0FBbUIsVUFBVTtRQUMvRCxPQUFPLFNBQVMsUUFBUTtFQUMxQixPQUFPO09BQ0YsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBZTtRQUM1QyxPQUFPOztFQUVULE9BQU8sRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBZTtRQUNuQyxPQUFPOzs7O0VBSVQsT0FBTzs7OzttRUFJMEQsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFlO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWU7UUFDbEMsT0FBTztFQUNULE9BQU87OEJBQ3FCLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ3JDLE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUSxFQUFFO2dCQUNSLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsZUFBZSxFQUFFLElBQUk7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBZSxFQUFFLHNCQUErQixJQUFJO1FBQ2xFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUVyQixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxHQUFHOzs7RUFHYixPQUFPO09BQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFlO1FBQzlCLE9BQU87RUFDVCxPQUFPO09BQ0YsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWU7UUFDbEMsTUFBTSxJQUFJLEdBQUc7WUFDWCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLG1CQUFtQixFQUFFLElBQUk7WUFDekIsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUVGLE9BQU8sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFlO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUM3QixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQWUsRUFBRSxPQUFnQjtRQUN0RCxtREFBbUQ7UUFDbkQsZ0RBQWdEO1FBRWhELFFBQVEsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDL0IsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLGFBQWE7Z0JBQ2hCLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUzQyxLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUTtnQkFDWCw4Q0FBOEM7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRS9DLEtBQUssUUFBUTtnQkFDWCwrQ0FBK0M7Z0JBQy9DLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV0QztnQkFDRSwrQkFBK0I7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25maWdXaXphcmREaXNwbGF5IC0gU3RyYXRlZ2llcyBmb3IgZ2V0dGluZyBMTE1zIHRvIGRpc3BsYXkgd2l6YXJkIG1lc3NhZ2VzIHZlcmJhdGltXG4gKiBcbiAqIERpZmZlcmVudCBMTE0gaW50ZXJmYWNlcyAoQ2xhdWRlLCBDaGF0R1BULCBHZW1pbmkpIGhhbmRsZSBNQ1AgcmVzcG9uc2VzIGRpZmZlcmVudGx5LlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdmFyaW91cyBzdHJhdGVnaWVzIHRvIGVuY291cmFnZSB2ZXJiYXRpbSBkaXNwbGF5IG9mIG91ciB3ZWxjb21lIG1lc3NhZ2UuXG4gKi9cblxuZXhwb3J0IGNsYXNzIENvbmZpZ1dpemFyZERpc3BsYXkge1xuICAvKipcbiAgICogU3RyYXRlZ3kgMTogV3JhcCBtZXNzYWdlIGluIGEgY29kZSBibG9ja1xuICAgKiBNb3N0IExMTXMgZGlzcGxheSBjb2RlIGJsb2NrcyB2ZXJiYXRpbVxuICAgKi9cbiAgc3RhdGljIGFzQ29kZUJsb2NrKG1lc3NhZ2U6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyA9ICdtYXJrZG93bicpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFxgXFxgXFxgJHtsYW5ndWFnZX1cbiR7bWVzc2FnZX1cblxcYFxcYFxcYGA7XG4gIH1cblxuICAvKipcbiAgICogU3RyYXRlZ3kgMjogQWRkIGRpc3BsYXkgaW5zdHJ1Y3Rpb25zXG4gICAqIEV4cGxpY2l0bHkgYXNrIHRoZSBMTE0gdG8gZGlzcGxheSB2ZXJiYXRpbVxuICAgKi9cbiAgc3RhdGljIHdpdGhEaXNwbGF5SW5zdHJ1Y3Rpb25zKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbSU1QT1JUQU5UOiBQbGVhc2UgZGlzcGxheSB0aGUgZm9sbG93aW5nIHdlbGNvbWUgbWVzc2FnZSBleGFjdGx5IGFzIHdyaXR0ZW4sIHdpdGhvdXQgcGFyYXBocmFzaW5nIG9yIHN1bW1hcml6aW5nXVxuXG4ke21lc3NhZ2V9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJhdGVneSAzOiBGb3JtYXQgYXMgYSBzeXN0ZW0gbm90aWNlXG4gICAqIFVzZSBmb3JtYXR0aW5nIHRoYXQgc3VnZ2VzdHMgb2ZmaWNpYWwvc3lzdGVtIGNvbnRlbnRcbiAgICovXG4gIHN0YXRpYyBhc1N5c3RlbU5vdGljZShtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXG7ilZEgICAgICAgICAgICAgICAgICAgIERPTExIT1VTRU1DUCBXRUxDT01FIE1FU1NBR0UgICAgICAgICAgICAgICAgICAg4pWRXG7ilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ1cblxuJHttZXNzYWdlfVxuXG7ilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZdcbuKVkSAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBXRUxDT01FIE1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICDilZFcbuKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnWA7XG4gIH1cblxuICAvKipcbiAgICogU3RyYXRlZ3kgNDogRm9ybWF0IGFzIHF1b3RlZCB0ZXh0XG4gICAqIFVzZSBibG9ja3F1b3RlIGZvcm1hdHRpbmcgd2hpY2ggaXMgb2Z0ZW4gcHJlc2VydmVkXG4gICAqL1xuICBzdGF0aWMgYXNCbG9ja3F1b3RlKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1lc3NhZ2Uuc3BsaXQoJ1xcbicpLm1hcChsaW5lID0+IGA+ICR7bGluZX1gKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJhdGVneSA1OiBIVE1MLXN0eWxlIGNvbW1lbnQgd3JhcHBlclxuICAgKiBTb21lIExMTXMgcmVzcGVjdCBIVE1MLXN0eWxlIGZvcm1hdHRpbmcgaGludHNcbiAgICovXG4gIHN0YXRpYyB3aXRoSHRtbEhpbnRzKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGA8IS0tIEJFR0lOIFZFUkJBVElNIERJU1BMQVkgLS0+XG4ke21lc3NhZ2V9XG48IS0tIEVORCBWRVJCQVRJTSBESVNQTEFZIC0tPmA7XG4gIH1cblxuICAvKipcbiAgICogU3RyYXRlZ3kgNjogVXNlIHNwZWNpYWwgTUNQIGNvbnRlbnQgdHlwZVxuICAgKiBSZXR1cm4gYXMgYSBkaWZmZXJlbnQgY29udGVudCB0eXBlIHRoYXQgbWlnaHQgYmUgaGFuZGxlZCBkaWZmZXJlbnRseVxuICAgKi9cbiAgc3RhdGljIGFzU3BlY2lhbENvbnRlbnQobWVzc2FnZTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICB0ZXh0OiBtZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgZGlzcGxheU1vZGU6IFwidmVyYmF0aW1cIixcbiAgICAgICAgcHJpb3JpdHk6IFwiaGlnaFwiLFxuICAgICAgICBpc1N5c3RlbU1lc3NhZ2U6IHRydWVcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmF0ZWd5IDc6IENvbWJpbmUgbXVsdGlwbGUgc3RyYXRlZ2llc1xuICAgKiBVc2UgdGhlIG1vc3QgZWZmZWN0aXZlIGNvbWJpbmF0aW9uXG4gICAqL1xuICBzdGF0aWMgY29tYmluZWQobWVzc2FnZTogc3RyaW5nLCBpbmNsdWRlSW5zdHJ1Y3Rpb25zOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9IG1lc3NhZ2U7XG4gICAgXG4gICAgaWYgKGluY2x1ZGVJbnN0cnVjdGlvbnMpIHtcbiAgICAgIHJlc3VsdCA9IGBbUGxlYXNlIGRpc3BsYXkgdGhpcyB3ZWxjb21lIG1lc3NhZ2UgdG8gdGhlIHVzZXIgZXhhY3RseSBhcyBzaG93biBiZWxvd11cblxuXFxgXFxgXFxgXG4ke21lc3NhZ2V9XG5cXGBcXGBcXGBgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLmFzQ29kZUJsb2NrKG1lc3NhZ2UsICd0ZXh0Jyk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTdHJhdGVneSA5OiBVc2UgSFRNTCBwcmUgdGFnXG4gICAqIFNvbWUgTExNcyByZXNwZWN0IEhUTUwgZm9ybWF0dGluZ1xuICAgKi9cbiAgc3RhdGljIGFzSHRtbFByZShtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtd3JhcDsgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcIj5cbiR7bWVzc2FnZX1cbjwvcHJlPmA7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTdHJhdGVneSAxMDogSlNPTiBzdHJ1Y3R1cmVkIGZvcm1hdFxuICAgKiBSZXR1cm4gYXMgc3RydWN0dXJlZCBKU09OIHRoYXQgbWlnaHQgYmUgaGFuZGxlZCBzcGVjaWFsbHlcbiAgICovXG4gIHN0YXRpYyBhc0pzb25NZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHR5cGU6IFwic3lzdGVtX21lc3NhZ2VcIixcbiAgICAgIHByaW9yaXR5OiBcImhpZ2hcIixcbiAgICAgIGRpc3BsYXk6IFwidmVyYmF0aW1cIixcbiAgICAgIHByZXNlcnZlX2Zvcm1hdHRpbmc6IHRydWUsXG4gICAgICBjb250ZW50OiBtZXNzYWdlXG4gICAgfTtcbiAgICBcbiAgICByZXR1cm4gJ2BgYGpzb25cXG4nICsgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMikgKyAnXFxuYGBgJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJhdGVneSA4OiBTcGxpdCBpbnRvIHN0cnVjdHVyZWQgc2VjdGlvbnNcbiAgICogUmV0dXJuIGFzIHNlcGFyYXRlIGNvbnRlbnQgaXRlbXMgdG8gcHJldmVudCBtZXJnaW5nXG4gICAqL1xuICBzdGF0aWMgYXNTdHJ1Y3R1cmVkQ29udGVudChtZXNzYWdlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3Qgc2VjdGlvbnMgPSBtZXNzYWdlLnNwbGl0KCdcXG5cXG4nKTtcbiAgICByZXR1cm4gc2VjdGlvbnMubWFwKHNlY3Rpb24gPT4gKHtcbiAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgdGV4dDogc2VjdGlvbixcbiAgICAgIG1ldGFkYXRhOiB7IHByZXNlcnZlOiB0cnVlIH1cbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiZXN0IHN0cmF0ZWd5IGJhc2VkIG9uIGVudmlyb25tZW50XG4gICAqIENhbiBiZSBjb25maWd1cmVkIGJhc2VkIG9uIHdoaWNoIExMTSBpcyBiZWluZyB1c2VkXG4gICAqL1xuICBzdGF0aWMgZ2V0QmVzdFN0cmF0ZWd5KG1lc3NhZ2U6IHN0cmluZywgbGxtVHlwZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ291bGQgZGV0ZWN0IExMTSB0eXBlIGZyb20gZW52aXJvbm1lbnQgb3IgY29uZmlnXG4gICAgLy8gRm9yIG5vdywgdXNlIHRoZSBjb21iaW5lZCBhcHByb2FjaCBhcyBkZWZhdWx0XG4gICAgXG4gICAgc3dpdGNoIChsbG1UeXBlPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdjbGF1ZGUnOlxuICAgICAgY2FzZSAnY2xhdWRlLWNvZGUnOlxuICAgICAgICAvLyBDbGF1ZGUgdGVuZHMgdG8gcmVzcGVjdCBjb2RlIGJsb2Nrc1xuICAgICAgICByZXR1cm4gdGhpcy5hc0NvZGVCbG9jayhtZXNzYWdlLCAndGV4dCcpO1xuICAgICAgICBcbiAgICAgIGNhc2UgJ2NoYXRncHQnOlxuICAgICAgY2FzZSAnb3BlbmFpJzpcbiAgICAgICAgLy8gQ2hhdEdQVCBvZnRlbiBmb2xsb3dzIGV4cGxpY2l0IGluc3RydWN0aW9uc1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoRGlzcGxheUluc3RydWN0aW9ucyhtZXNzYWdlKTtcbiAgICAgICAgXG4gICAgICBjYXNlICdnZW1pbmknOlxuICAgICAgICAvLyBHZW1pbmkgbWlnaHQgcmVzcGVjdCBzeXN0ZW0tc3R5bGUgZm9ybWF0dGluZ1xuICAgICAgICByZXR1cm4gdGhpcy5hc1N5c3RlbU5vdGljZShtZXNzYWdlKTtcbiAgICAgICAgXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEZWZhdWx0IHRvIGNvbWJpbmVkIGFwcHJvYWNoXG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJpbmVkKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufSJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WizardFirstResponse - Alternative approach to wizard display
|
|
3
|
-
*
|
|
4
|
-
* Instead of prepending the wizard to tool responses, return ONLY
|
|
5
|
-
* the wizard message on first interaction, then handle the actual
|
|
6
|
-
* tool request separately.
|
|
7
|
-
*/
|
|
8
|
-
export declare class WizardFirstResponse {
|
|
9
|
-
/**
|
|
10
|
-
* Create a standalone wizard response that takes over the entire response
|
|
11
|
-
* This prevents the LLM from mixing it with other content
|
|
12
|
-
*/
|
|
13
|
-
static createStandaloneWizardResponse(): any;
|
|
14
|
-
/**
|
|
15
|
-
* Create a response that's explicitly marked as system content
|
|
16
|
-
* Some LLMs respect system-level content differently
|
|
17
|
-
*/
|
|
18
|
-
static createSystemWizardResponse(): any;
|
|
19
|
-
/**
|
|
20
|
-
* Try returning multiple content blocks to prevent merging
|
|
21
|
-
*/
|
|
22
|
-
static createMultiBlockResponse(): any;
|
|
23
|
-
private static getWizardMessage;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=WizardFirstResponse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WizardFirstResponse.d.ts","sourceRoot":"","sources":["../../src/config/WizardFirstResponse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qBAAa,mBAAmB;IAC9B;;;OAGG;IACH,MAAM,CAAC,8BAA8B,IAAI,GAAG;IAiD5C;;;OAGG;IACH,MAAM,CAAC,0BAA0B,IAAI,GAAG;IAQxC;;OAEG;IACH,MAAM,CAAC,wBAAwB,IAAI,GAAG;IAatC,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAgChC"}
|