@dollhousemcp/mcp-server 1.7.4 → 1.8.1
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 +118 -0
- package/README.github.md +90 -1
- package/README.md +1 -1
- package/README.md.backup +90 -1
- package/README.npm.md +1 -1
- package/dist/collection/CollectionBrowser.js +2 -2
- package/dist/collection/CollectionSearch.js +3 -3
- package/dist/collection/PersonaDetails.js +2 -2
- package/dist/config/ConfigManager.d.ts +20 -0
- package/dist/config/ConfigManager.d.ts.map +1 -1
- package/dist/config/ConfigManager.js +48 -4
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/ConfigHandler.d.ts +30 -0
- package/dist/handlers/ConfigHandler.d.ts.map +1 -1
- package/dist/handlers/ConfigHandler.js +149 -21
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -52
- package/dist/portfolio/GitHubPortfolioIndexer.d.ts.map +1 -1
- package/dist/portfolio/GitHubPortfolioIndexer.js +8 -5
- package/dist/portfolio/PortfolioIndexManager.d.ts +1 -1
- package/dist/portfolio/PortfolioIndexManager.js +2 -2
- package/dist/portfolio/PortfolioRepoManager.d.ts +16 -2
- package/dist/portfolio/PortfolioRepoManager.d.ts.map +1 -1
- package/dist/portfolio/PortfolioRepoManager.js +95 -18
- package/dist/portfolio/PortfolioSyncManager.d.ts.map +1 -1
- package/dist/portfolio/PortfolioSyncManager.js +23 -15
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +11 -1
- package/dist/server/ServerSetup.d.ts.map +1 -1
- package/dist/server/ServerSetup.js +11 -6
- package/dist/server/tools/CollectionTools.js +6 -6
- package/dist/server/tools/ConfigTools.js +2 -2
- package/dist/server/tools/ConfigToolsV2.js +5 -5
- package/dist/server/tools/PortfolioTools.d.ts.map +1 -1
- package/dist/server/tools/PortfolioTools.js +16 -5
- package/dist/server/types.d.ts +2 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +1 -1
- package/dist/tools/portfolio/submitToPortfolioTool.d.ts.map +1 -1
- package/dist/tools/portfolio/submitToPortfolioTool.js +6 -5
- package/package.json +7 -6
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { ConfigManager } from '../config/ConfigManager.js';
|
|
6
6
|
import { SecureErrorHandler } from '../security/errorHandler.js';
|
|
7
|
+
import { getFriendlyNullValue } from '../config/wizardTemplates.js';
|
|
8
|
+
// WizardTemplateBuilder imported for future full template migration
|
|
9
|
+
// import { WizardTemplateBuilder } from '../config/wizardTemplates.js';
|
|
7
10
|
import * as yaml from 'js-yaml';
|
|
8
11
|
export class ConfigHandler {
|
|
9
12
|
configManager;
|
|
@@ -12,6 +15,20 @@ export class ConfigHandler {
|
|
|
12
15
|
}
|
|
13
16
|
/**
|
|
14
17
|
* Handle configuration operations via the dollhouse_config tool
|
|
18
|
+
*
|
|
19
|
+
* @param options - Configuration operation options
|
|
20
|
+
* @param options.action - The action to perform (get, set, reset, export, import, wizard)
|
|
21
|
+
* @param options.setting - Optional setting path for get/set operations
|
|
22
|
+
* @param options.value - Optional value for set operations
|
|
23
|
+
* @param options.section - Optional section for filtering
|
|
24
|
+
* @param options.format - Optional format for export (yaml or json)
|
|
25
|
+
* @param options.data - Optional data for import operations
|
|
26
|
+
* @param indicator - Optional indicator string for persona context
|
|
27
|
+
* @returns Promise resolving to content object with operation result
|
|
28
|
+
* @async
|
|
29
|
+
*
|
|
30
|
+
* @note The wizard action is async and will await the handleWizard method
|
|
31
|
+
* @since v1.4.0 - handleWizard made async for better config fetching
|
|
15
32
|
*/
|
|
16
33
|
async handleConfigOperation(options, indicator = '') {
|
|
17
34
|
try {
|
|
@@ -28,7 +45,7 @@ export class ConfigHandler {
|
|
|
28
45
|
case 'import':
|
|
29
46
|
return this.handleImport(options, indicator);
|
|
30
47
|
case 'wizard':
|
|
31
|
-
return this.handleWizard(indicator);
|
|
48
|
+
return await this.handleWizard(indicator);
|
|
32
49
|
default:
|
|
33
50
|
return {
|
|
34
51
|
content: [{
|
|
@@ -66,17 +83,18 @@ export class ConfigHandler {
|
|
|
66
83
|
content: [{
|
|
67
84
|
type: "text",
|
|
68
85
|
text: `${indicator}⚙️ **Configuration Setting**\n\n` +
|
|
69
|
-
`**${options.setting}**: ${
|
|
86
|
+
`**${options.setting}**: ${this.formatValue(value)}`
|
|
70
87
|
}]
|
|
71
88
|
};
|
|
72
89
|
}
|
|
73
|
-
// Get all settings
|
|
90
|
+
// Get all settings - make them user-friendly
|
|
74
91
|
const config = this.configManager.getConfig();
|
|
92
|
+
const friendlyConfig = this.makeFriendlyConfig(config);
|
|
75
93
|
return {
|
|
76
94
|
content: [{
|
|
77
95
|
type: "text",
|
|
78
96
|
text: `${indicator}⚙️ **DollhouseMCP Configuration**\n\n` +
|
|
79
|
-
`\`\`\`yaml\n${yaml.dump(
|
|
97
|
+
`\`\`\`yaml\n${yaml.dump(friendlyConfig, { lineWidth: -1 })}\`\`\``
|
|
80
98
|
}]
|
|
81
99
|
};
|
|
82
100
|
}
|
|
@@ -176,27 +194,137 @@ export class ConfigHandler {
|
|
|
176
194
|
}]
|
|
177
195
|
};
|
|
178
196
|
}
|
|
179
|
-
|
|
180
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Handle the configuration wizard
|
|
199
|
+
* @returns Promise with wizard interface content
|
|
200
|
+
* @async
|
|
201
|
+
*/
|
|
202
|
+
async handleWizard(indicator) {
|
|
203
|
+
// Get current configuration to show the user
|
|
204
|
+
const config = this.configManager.getConfig();
|
|
205
|
+
const friendlyConfig = this.makeFriendlyConfig(config);
|
|
206
|
+
// Build wizard content using templates
|
|
207
|
+
// Note: Template builder is imported for future use when we fully migrate to template system
|
|
208
|
+
const wizardContent = `${indicator}🧙 **Configuration Wizard - Let's Set Up DollhouseMCP!**
|
|
209
|
+
|
|
210
|
+
I'll help you configure DollhouseMCP step by step. First, let me show you your current settings:
|
|
211
|
+
|
|
212
|
+
**📊 Current Configuration:**
|
|
213
|
+
\`\`\`yaml
|
|
214
|
+
${yaml.dump(friendlyConfig, { lineWidth: -1 })}
|
|
215
|
+
\`\`\`
|
|
216
|
+
|
|
217
|
+
**Now, let's configure your settings one by one!**
|
|
218
|
+
|
|
219
|
+
🎯 **Step 1: User Identity**
|
|
220
|
+
This tags your creations so you can find them later. Everything is saved locally on your computer.
|
|
221
|
+
- To set a username: Say "Set my username to [your-name]"
|
|
222
|
+
- To stay anonymous: Say "I'll stay anonymous"
|
|
223
|
+
- Current: ${friendlyConfig.user?.username || '(not set - anonymous mode)'}
|
|
224
|
+
|
|
225
|
+
🔐 **Step 2: GitHub Integration (Optional)**
|
|
226
|
+
Connect to GitHub to share your creations and browse community content.
|
|
227
|
+
- To connect GitHub: Say "Connect my GitHub account"
|
|
228
|
+
- To skip: Say "Skip GitHub for now"
|
|
229
|
+
- Current: ${friendlyConfig.github?.auth_token ? 'Connected' : '(not connected)'}
|
|
230
|
+
|
|
231
|
+
🔄 **Step 3: Portfolio Sync (Optional)**
|
|
232
|
+
Automatically backup your creations to GitHub.
|
|
233
|
+
- To enable: Say "Enable auto-sync"
|
|
234
|
+
- To keep manual: Say "I'll sync manually"
|
|
235
|
+
- Current: ${friendlyConfig.portfolio?.auto_sync ? 'Enabled' : 'Manual'}
|
|
236
|
+
|
|
237
|
+
🎨 **Step 4: Display Preferences**
|
|
238
|
+
Customize how DollhouseMCP shows information.
|
|
239
|
+
- To show active persona: Say "Show persona indicators"
|
|
240
|
+
- To keep minimal: Say "Use minimal display"
|
|
241
|
+
- Current: ${friendlyConfig.indicator?.enabled ? 'Enabled' : 'Minimal'}
|
|
242
|
+
|
|
243
|
+
💡 **Quick Setup**: Say "Configure the basics" to set just username and GitHub
|
|
244
|
+
📝 **Detailed Setup**: Say "Configure everything" to go through all options
|
|
245
|
+
⏭️ **Skip for Now**: Say "Skip wizard" to use anonymous mode
|
|
246
|
+
|
|
247
|
+
✨ You can always change these settings later by saying "Open configuration wizard"`;
|
|
181
248
|
return {
|
|
182
249
|
content: [{
|
|
183
250
|
type: "text",
|
|
184
|
-
text:
|
|
185
|
-
`The configuration wizard helps you set up DollhouseMCP.\n\n` +
|
|
186
|
-
`**Key Settings to Configure:**\n\n` +
|
|
187
|
-
`1. **User Identity**\n` +
|
|
188
|
-
` \`dollhouse_config action: "set", setting: "user.username", value: "your-username"\`\n\n` +
|
|
189
|
-
`2. **GitHub Portfolio**\n` +
|
|
190
|
-
` \`dollhouse_config action: "set", setting: "github.portfolio.repository_name", value: "dollhouse-portfolio"\`\n\n` +
|
|
191
|
-
`3. **Sync Settings**\n` +
|
|
192
|
-
` \`dollhouse_config action: "set", setting: "sync.enabled", value: true\`\n` +
|
|
193
|
-
` \`dollhouse_config action: "set", setting: "sync.bulk.upload_enabled", value: true\`\n\n` +
|
|
194
|
-
`4. **Privacy Settings**\n` +
|
|
195
|
-
` \`dollhouse_config action: "set", setting: "sync.privacy.scan_for_secrets", value: true\`\n` +
|
|
196
|
-
` \`dollhouse_config action: "set", setting: "sync.privacy.respect_local_only", value: true\`\n\n` +
|
|
197
|
-
`Run \`dollhouse_config action: "get"\` to see current settings.`
|
|
251
|
+
text: wizardContent
|
|
198
252
|
}]
|
|
199
253
|
};
|
|
200
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Format a value for user-friendly display
|
|
257
|
+
* Replaces null/undefined with helpful messages
|
|
258
|
+
*/
|
|
259
|
+
formatValue(value) {
|
|
260
|
+
if (value === null || value === undefined) {
|
|
261
|
+
return "(not set)";
|
|
262
|
+
}
|
|
263
|
+
if (typeof value === 'string' && value.trim() === '') {
|
|
264
|
+
return "(empty)";
|
|
265
|
+
}
|
|
266
|
+
return JSON.stringify(value, null, 2);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Make configuration display user-friendly for non-technical users
|
|
270
|
+
* Replaces null values with helpful explanations
|
|
271
|
+
* Uses centralized friendly values for i18n support
|
|
272
|
+
*/
|
|
273
|
+
makeFriendlyConfig(config) {
|
|
274
|
+
const friendly = JSON.parse(JSON.stringify(config)); // Deep clone
|
|
275
|
+
// Helper function to replace null values with friendly messages
|
|
276
|
+
const replaceFriendlyValue = (obj, path = '') => {
|
|
277
|
+
for (const key in obj) {
|
|
278
|
+
const currentPath = path ? `${path}.${key}` : key;
|
|
279
|
+
if (obj[key] === null) {
|
|
280
|
+
obj[key] = getFriendlyNullValue(currentPath);
|
|
281
|
+
}
|
|
282
|
+
else if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
|
|
283
|
+
replaceFriendlyValue(obj[key], currentPath);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
// Apply friendly replacements
|
|
288
|
+
replaceFriendlyValue(friendly);
|
|
289
|
+
// Legacy manual replacements for backward compatibility
|
|
290
|
+
// (These will be removed once we fully migrate to template system)
|
|
291
|
+
if (friendly.sync) {
|
|
292
|
+
if (friendly.sync.last_sync === "(not set)") {
|
|
293
|
+
friendly.sync.last_sync = "(never synced)";
|
|
294
|
+
}
|
|
295
|
+
if (friendly.sync.remote_url === "(not set)") {
|
|
296
|
+
friendly.sync.remote_url = "(no remote repository)";
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Display settings
|
|
300
|
+
if (friendly.display) {
|
|
301
|
+
// These are typically booleans, but handle nulls just in case
|
|
302
|
+
if (friendly.display.show_persona_indicator === null) {
|
|
303
|
+
friendly.display.show_persona_indicator = true; // Default value
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Collection settings
|
|
307
|
+
if (friendly.collection) {
|
|
308
|
+
if (friendly.collection.auto_submit === null) {
|
|
309
|
+
friendly.collection.auto_submit = false; // Default value
|
|
310
|
+
}
|
|
311
|
+
if (friendly.collection.last_cache_update === null) {
|
|
312
|
+
friendly.collection.last_cache_update = "(cache not initialized)";
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// Wizard settings - show friendly status
|
|
316
|
+
if (friendly.wizard) {
|
|
317
|
+
if (friendly.wizard.completed === false && friendly.wizard.dismissed === false) {
|
|
318
|
+
friendly.wizard._status = "⏳ Ready to run (not completed)";
|
|
319
|
+
}
|
|
320
|
+
else if (friendly.wizard.completed === true) {
|
|
321
|
+
friendly.wizard._status = "✅ Completed";
|
|
322
|
+
}
|
|
323
|
+
else if (friendly.wizard.dismissed === true) {
|
|
324
|
+
friendly.wizard._status = "⏭️ Dismissed";
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return friendly;
|
|
328
|
+
}
|
|
201
329
|
}
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQVdoQyxNQUFNLE9BQU8sYUFBYTtJQUNoQixhQUFhLENBQWdCO0lBRXJDO1FBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQStCLEVBQUUsWUFBb0IsRUFBRTtRQUNqRixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFdEMsUUFBUSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssS0FBSztvQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUU1QyxLQUFLLEtBQUs7b0JBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFNUMsS0FBSyxPQUFPO29CQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRTlDLEtBQUssUUFBUTtvQkFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUvQyxLQUFLLFFBQVE7b0JBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFL0MsS0FB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QUF5RDtpQkFDaEUsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLG1DQUFtQztRQUNuQyxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLEdBQUcsU0FBUyxpQ0FBaUM7d0JBQzdDLDZEQUE2RDt3QkFDN0Qsb0NBQW9DO3dCQUNwQyx3QkFBd0I7d0JBQ3hCLDZGQUE2Rjt3QkFDN0YsMkJBQTJCO3dCQUMzQixzSEFBc0g7d0JBQ3RILHdCQUF3Qjt3QkFDeEIsK0VBQStFO3dCQUMvRSw2RkFBNkY7d0JBQzdGLDJCQUEyQjt3QkFDM0IsZ0dBQWdHO3dCQUNoRyxvR0FBb0c7d0JBQ3BHLGlFQUFpRTtpQkFDeEUsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gaGFuZGxlciBmb3IgdGhlIGRvbGxob3VzZV9jb25maWcgTUNQIHRvb2xcbiAqIFByb3ZpZGVzIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBhbGwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IG9wZXJhdGlvbnNcbiAqL1xuXG5pbXBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSAnLi4vY29uZmlnL0NvbmZpZ01hbmFnZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJlRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vc2VjdXJpdHkvZXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3BlcmF0aW9uT3B0aW9ucyB7XG4gIGFjdGlvbjogJ2dldCcgfCAnc2V0JyB8ICdyZXNldCcgfCAnZXhwb3J0JyB8ICdpbXBvcnQnIHwgJ3dpemFyZCc7XG4gIHNldHRpbmc/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBzZWN0aW9uPzogc3RyaW5nO1xuICBmb3JtYXQ/OiAneWFtbCcgfCAnanNvbic7XG4gIGRhdGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWdIYW5kbGVyIHtcbiAgcHJpdmF0ZSBjb25maWdNYW5hZ2VyOiBDb25maWdNYW5hZ2VyO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb25maWdNYW5hZ2VyID0gQ29uZmlnTWFuYWdlci5nZXRJbnN0YW5jZSgpO1xuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyB2aWEgdGhlIGRvbGxob3VzZV9jb25maWcgdG9vbFxuICAgKi9cbiAgYXN5bmMgaGFuZGxlQ29uZmlnT3BlcmF0aW9uKG9wdGlvbnM6IENvbmZpZ09wZXJhdGlvbk9wdGlvbnMsIGluZGljYXRvcjogc3RyaW5nID0gJycpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWdNYW5hZ2VyLmluaXRpYWxpemUoKTtcbiAgICAgIFxuICAgICAgc3dpdGNoIChvcHRpb25zLmFjdGlvbikge1xuICAgICAgICBjYXNlICdnZXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdldChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVTZXQob3B0aW9ucywgaW5kaWNhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNldChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFeHBvcnQob3B0aW9ucywgaW5kaWNhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlSW1wb3J0KG9wdGlvbnMsIGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBjYXNlICd3aXphcmQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVdpemFyZChpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgSW52YWxpZCBhY3Rpb24gJyR7b3B0aW9ucy5hY3Rpb259Jy5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICAgICAgYFZhbGlkIGFjdGlvbnM6IGdldCwgc2V0LCByZXNldCwgZXhwb3J0LCBpbXBvcnQsIHdpemFyZGBcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRFcnJvciA9IFNlY3VyZUVycm9ySGFuZGxlci5zYW5pdGl6ZUVycm9yKGVycm9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBDb25maWd1cmF0aW9uIG9wZXJhdGlvbiBmYWlsZWQ6ICR7c2FuaXRpemVkRXJyb3IubWVzc2FnZX1gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVHZXQob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBHZXQgYSBzcGVjaWZpYyBzZXR0aW5nIG9yIGFsbCBzZXR0aW5nc1xuICAgIGlmIChvcHRpb25zLnNldHRpbmcpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb25maWdNYW5hZ2VyLmdldFNldHRpbmcob3B0aW9ucy5zZXR0aW5nKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBTZXR0aW5nICcke29wdGlvbnMuc2V0dGluZ30nIG5vdCBmb3VuZC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICAgIGBVc2UgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwiZ2V0XCJcXGAgdG8gc2VlIGFsbCBhdmFpbGFibGUgc2V0dGluZ3MuYFxuICAgICAgICAgIH1dXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKame+4jyAqKkNvbmZpZ3VyYXRpb24gU2V0dGluZyoqXFxuXFxuYCArXG4gICAgICAgICAgICAgICAgYCoqJHtvcHRpb25zLnNldHRpbmd9Kio6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIEdldCBhbGwgc2V0dGluZ3NcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pqZ77iPICoqRG9sbGhvdXNlTUNQIENvbmZpZ3VyYXRpb24qKlxcblxcbmAgK1xuICAgICAgICAgICAgICBgXFxgXFxgXFxgeWFtbFxcbiR7eWFtbC5kdW1wKGNvbmZpZywgeyBsaW5lV2lkdGg6IC0xIH0pfVxcYFxcYFxcYGBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXQob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBTZXQgYSBjb25maWd1cmF0aW9uIHZhbHVlXG4gICAgaWYgKCFvcHRpb25zLnNldHRpbmcgfHwgb3B0aW9ucy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgQm90aCAnc2V0dGluZycgYW5kICd2YWx1ZScgYXJlIHJlcXVpcmVkIGZvciBzZXQgb3BlcmF0aW9uLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgIGBFeGFtcGxlOiBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLmVuYWJsZWRcIiwgdmFsdWU6IHRydWVcXGBgXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBUeXBlIGNvZXJjaW9uIGZvciBjb21tb24gc3RyaW5nLXRvLXR5cGUgY29udmVyc2lvbnNcbiAgICBsZXQgY29lcmNlZFZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICBcbiAgICAvLyBDb252ZXJ0IHN0cmluZyBib29sZWFucyB0byBhY3R1YWwgYm9vbGVhbnNcbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBjb2VyY2VkVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlclZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgY29lcmNlZFZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobG93ZXJWYWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBjb2VyY2VkVmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoL15cXGQrJC8udGVzdChjb2VyY2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBzdHJpbmdzIHRvIG51bWJlcnNcbiAgICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUludChjb2VyY2VkVmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgICAgICBjb2VyY2VkVmFsdWUgPSBudW1WYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIudXBkYXRlU2V0dGluZyhvcHRpb25zLnNldHRpbmcsIGNvZXJjZWRWYWx1ZSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBVcGRhdGVkKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYCoqJHtvcHRpb25zLnNldHRpbmd9Kiogc2V0IHRvOiAke0pTT04uc3RyaW5naWZ5KGNvZXJjZWRWYWx1ZSwgbnVsbCwgMil9XFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLmBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZXNldChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIFJlc2V0IGNvbmZpZ3VyYXRpb24gdG8gZGVmYXVsdHNcbiAgICBpZiAob3B0aW9ucy5zZWN0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIucmVzZXRDb25maWcob3B0aW9ucy5zZWN0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgU2VjdGlvbiAnJHtvcHRpb25zLnNlY3Rpb259JyBoYXMgYmVlbiByZXNldCB0byBkZWZhdWx0IHZhbHVlcy5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBSZXNldCBhbGwgY29uZmlndXJhdGlvblxuICAgIGF3YWl0IHRoaXMuY29uZmlnTWFuYWdlci5yZXNldENvbmZpZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYEFsbCBzZXR0aW5ncyBoYXZlIGJlZW4gcmVzZXQgdG8gZGVmYXVsdCB2YWx1ZXMuXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBOb3RlOiBVc2VyIGlkZW50aXR5IGFuZCBHaXRIdWIgYXV0aGVudGljYXRpb24gYXJlIHByZXNlcnZlZC5gXG4gICAgICB9XVxuICAgIH07XG4gIH1cbiAgXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbnM6IENvbmZpZ09wZXJhdGlvbk9wdGlvbnMsIGluZGljYXRvcjogc3RyaW5nKSB7XG4gICAgLy8gRXhwb3J0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAneWFtbCc7XG4gICAgY29uc3QgZXhwb3J0ZWQgPSBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuZXhwb3J0Q29uZmlnKGZvcm1hdCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+TpCAqKkNvbmZpZ3VyYXRpb24gRXhwb3J0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFxcYFxcYFxcYCR7Zm9ybWF0fVxcbiR7ZXhwb3J0ZWR9XFxgXFxgXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBZb3UgY2FuIHNhdmUgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpbXBvcnQgaXQgbGF0ZXIuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUltcG9ydChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEltcG9ydCBjb25maWd1cmF0aW9uXG4gICAgaWYgKCFvcHRpb25zLmRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBDb25maWd1cmF0aW9uIGRhdGEgaXMgcmVxdWlyZWQgZm9yIGltcG9ydC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBZQU1MIG9yIEpTT04gY29uZmlndXJhdGlvbiBpbiB0aGUgJ2RhdGEnIHBhcmFtZXRlci5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuaW1wb3J0Q29uZmlnKG9wdGlvbnMuZGF0YSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBJbXBvcnRlZCoqXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDb25maWd1cmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBhbmQgc2F2ZWQuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICBwcml2YXRlIGhhbmRsZVdpemFyZChpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEludGVyYWN0aXZlIGNvbmZpZ3VyYXRpb24gd2l6YXJkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+nmSAqKkNvbmZpZ3VyYXRpb24gV2l6YXJkKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFRoZSBjb25maWd1cmF0aW9uIHdpemFyZCBoZWxwcyB5b3Ugc2V0IHVwIERvbGxob3VzZU1DUC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgYCoqS2V5IFNldHRpbmdzIHRvIENvbmZpZ3VyZToqKlxcblxcbmAgK1xuICAgICAgICAgICAgICBgMS4gKipVc2VyIElkZW50aXR5KipcXG5gICtcbiAgICAgICAgICAgICAgYCAgIFxcYGRvbGxob3VzZV9jb25maWcgYWN0aW9uOiBcInNldFwiLCBzZXR0aW5nOiBcInVzZXIudXNlcm5hbWVcIiwgdmFsdWU6IFwieW91ci11c2VybmFtZVwiXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGAyLiAqKkdpdEh1YiBQb3J0Zm9saW8qKlxcbmAgK1xuICAgICAgICAgICAgICBgICAgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwiZ2l0aHViLnBvcnRmb2xpby5yZXBvc2l0b3J5X25hbWVcIiwgdmFsdWU6IFwiZG9sbGhvdXNlLXBvcnRmb2xpb1wiXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGAzLiAqKlN5bmMgU2V0dGluZ3MqKlxcbmAgK1xuICAgICAgICAgICAgICBgICAgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwic3luYy5lbmFibGVkXCIsIHZhbHVlOiB0cnVlXFxgXFxuYCArXG4gICAgICAgICAgICAgIGAgICBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLmJ1bGsudXBsb2FkX2VuYWJsZWRcIiwgdmFsdWU6IHRydWVcXGBcXG5cXG5gICtcbiAgICAgICAgICAgICAgYDQuICoqUHJpdmFjeSBTZXR0aW5ncyoqXFxuYCArXG4gICAgICAgICAgICAgIGAgICBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLnByaXZhY3kuc2Nhbl9mb3Jfc2VjcmV0c1wiLCB2YWx1ZTogdHJ1ZVxcYFxcbmAgK1xuICAgICAgICAgICAgICBgICAgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwic3luYy5wcml2YWN5LnJlc3BlY3RfbG9jYWxfb25seVwiLCB2YWx1ZTogdHJ1ZVxcYFxcblxcbmAgK1xuICAgICAgICAgICAgICBgUnVuIFxcYGRvbGxob3VzZV9jb25maWcgYWN0aW9uOiBcImdldFwiXFxgIHRvIHNlZSBjdXJyZW50IHNldHRpbmdzLmBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufSJdfQ==
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxvRUFBb0U7QUFDcEUsd0VBQXdFO0FBQ3hFLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBV2hDLE1BQU0sT0FBTyxhQUFhO0lBQ2hCLGFBQWEsQ0FBZ0I7SUFFckM7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBK0IsRUFBRSxZQUFvQixFQUFFO1FBQ2pGLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUV0QyxRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxLQUFLO29CQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRTVDLEtBQUssS0FBSztvQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUU1QyxLQUFLLE9BQU87b0JBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFOUMsS0FBSyxRQUFRO29CQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENB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QUN6QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDL0UsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsZ0NBQWdDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7WUFDMUMsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gaGFuZGxlciBmb3IgdGhlIGRvbGxob3VzZV9jb25maWcgTUNQIHRvb2xcbiAqIFByb3ZpZGVzIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBhbGwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IG9wZXJhdGlvbnNcbiAqL1xuXG5pbXBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSAnLi4vY29uZmlnL0NvbmZpZ01hbmFnZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJlRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vc2VjdXJpdHkvZXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCB7IGdldEZyaWVuZGx5TnVsbFZhbHVlIH0gZnJvbSAnLi4vY29uZmlnL3dpemFyZFRlbXBsYXRlcy5qcyc7XG4vLyBXaXphcmRUZW1wbGF0ZUJ1aWxkZXIgaW1wb3J0ZWQgZm9yIGZ1dHVyZSBmdWxsIHRlbXBsYXRlIG1pZ3JhdGlvblxuLy8gaW1wb3J0IHsgV2l6YXJkVGVtcGxhdGVCdWlsZGVyIH0gZnJvbSAnLi4vY29uZmlnL3dpemFyZFRlbXBsYXRlcy5qcyc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ09wZXJhdGlvbk9wdGlvbnMge1xuICBhY3Rpb246ICdnZXQnIHwgJ3NldCcgfCAncmVzZXQnIHwgJ2V4cG9ydCcgfCAnaW1wb3J0JyB8ICd3aXphcmQnO1xuICBzZXR0aW5nPzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgc2VjdGlvbj86IHN0cmluZztcbiAgZm9ybWF0PzogJ3lhbWwnIHwgJ2pzb24nO1xuICBkYXRhPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlnSGFuZGxlciB7XG4gIHByaXZhdGUgY29uZmlnTWFuYWdlcjogQ29uZmlnTWFuYWdlcjtcbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uZmlnTWFuYWdlciA9IENvbmZpZ01hbmFnZXIuZ2V0SW5zdGFuY2UoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMgdmlhIHRoZSBkb2xsaG91c2VfY29uZmlnIHRvb2xcbiAgICogXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucy5hY3Rpb24gLSBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gKGdldCwgc2V0LCByZXNldCwgZXhwb3J0LCBpbXBvcnQsIHdpemFyZClcbiAgICogQHBhcmFtIG9wdGlvbnMuc2V0dGluZyAtIE9wdGlvbmFsIHNldHRpbmcgcGF0aCBmb3IgZ2V0L3NldCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLnZhbHVlIC0gT3B0aW9uYWwgdmFsdWUgZm9yIHNldCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLnNlY3Rpb24gLSBPcHRpb25hbCBzZWN0aW9uIGZvciBmaWx0ZXJpbmdcbiAgICogQHBhcmFtIG9wdGlvbnMuZm9ybWF0IC0gT3B0aW9uYWwgZm9ybWF0IGZvciBleHBvcnQgKHlhbWwgb3IganNvbilcbiAgICogQHBhcmFtIG9wdGlvbnMuZGF0YSAtIE9wdGlvbmFsIGRhdGEgZm9yIGltcG9ydCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBpbmRpY2F0b3IgLSBPcHRpb25hbCBpbmRpY2F0b3Igc3RyaW5nIGZvciBwZXJzb25hIGNvbnRleHRcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gY29udGVudCBvYmplY3Qgd2l0aCBvcGVyYXRpb24gcmVzdWx0XG4gICAqIEBhc3luY1xuICAgKiBcbiAgICogQG5vdGUgVGhlIHdpemFyZCBhY3Rpb24gaXMgYXN5bmMgYW5kIHdpbGwgYXdhaXQgdGhlIGhhbmRsZVdpemFyZCBtZXRob2RcbiAgICogQHNpbmNlIHYxLjQuMCAtIGhhbmRsZVdpemFyZCBtYWRlIGFzeW5jIGZvciBiZXR0ZXIgY29uZmlnIGZldGNoaW5nXG4gICAqL1xuICBhc3luYyBoYW5kbGVDb25maWdPcGVyYXRpb24ob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcgPSAnJykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2dldCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR2V0KG9wdGlvbnMsIGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVNldChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc2V0KG9wdGlvbnMsIGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUV4cG9ydChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnaW1wb3J0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVJbXBvcnQob3B0aW9ucywgaW5kaWNhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3dpemFyZCc6XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlV2l6YXJkKGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBJbnZhbGlkIGFjdGlvbiAnJHtvcHRpb25zLmFjdGlvbn0nLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgICAgICBgVmFsaWQgYWN0aW9uczogZ2V0LCBzZXQsIHJlc2V0LCBleHBvcnQsIGltcG9ydCwgd2l6YXJkYFxuICAgICAgICAgICAgfV1cbiAgICAgICAgICB9O1xuICAgICAgfVxuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IHNhbml0aXplZEVycm9yID0gU2VjdXJlRXJyb3JIYW5kbGVyLnNhbml0aXplRXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94p2MIENvbmZpZ3VyYXRpb24gb3BlcmF0aW9uIGZhaWxlZDogJHtzYW5pdGl6ZWRFcnJvci5tZXNzYWdlfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUdldChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEdldCBhIHNwZWNpZmljIHNldHRpbmcgb3IgYWxsIHNldHRpbmdzXG4gICAgaWYgKG9wdGlvbnMuc2V0dGluZykge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0U2V0dGluZyhvcHRpb25zLnNldHRpbmcpO1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94p2MIFNldHRpbmcgJyR7b3B0aW9ucy5zZXR0aW5nfScgbm90IGZvdW5kLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgICAgYFVzZSBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJnZXRcIlxcYCB0byBzZWUgYWxsIGF2YWlsYWJsZSBzZXR0aW5ncy5gXG4gICAgICAgICAgfV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pqZ77iPICoqQ29uZmlndXJhdGlvbiBTZXR0aW5nKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgKioke29wdGlvbnMuc2V0dGluZ30qKjogJHt0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKX1gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBHZXQgYWxsIHNldHRpbmdzIC0gbWFrZSB0aGVtIHVzZXItZnJpZW5kbHlcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgZnJpZW5kbHlDb25maWcgPSB0aGlzLm1ha2VGcmllbmRseUNvbmZpZyhjb25maWcpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKame+4jyAqKkRvbGxob3VzZU1DUCBDb25maWd1cmF0aW9uKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFxcYFxcYFxcYHlhbWxcXG4ke3lhbWwuZHVtcChmcmllbmRseUNvbmZpZywgeyBsaW5lV2lkdGg6IC0xIH0pfVxcYFxcYFxcYGBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXQob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBTZXQgYSBjb25maWd1cmF0aW9uIHZhbHVlXG4gICAgaWYgKCFvcHRpb25zLnNldHRpbmcgfHwgb3B0aW9ucy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgQm90aCAnc2V0dGluZycgYW5kICd2YWx1ZScgYXJlIHJlcXVpcmVkIGZvciBzZXQgb3BlcmF0aW9uLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgIGBFeGFtcGxlOiBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLmVuYWJsZWRcIiwgdmFsdWU6IHRydWVcXGBgXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBUeXBlIGNvZXJjaW9uIGZvciBjb21tb24gc3RyaW5nLXRvLXR5cGUgY29udmVyc2lvbnNcbiAgICBsZXQgY29lcmNlZFZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICBcbiAgICAvLyBDb252ZXJ0IHN0cmluZyBib29sZWFucyB0byBhY3R1YWwgYm9vbGVhbnNcbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBjb2VyY2VkVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlclZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgY29lcmNlZFZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobG93ZXJWYWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBjb2VyY2VkVmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoL15cXGQrJC8udGVzdChjb2VyY2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBzdHJpbmdzIHRvIG51bWJlcnNcbiAgICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUludChjb2VyY2VkVmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgICAgICBjb2VyY2VkVmFsdWUgPSBudW1WYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIudXBkYXRlU2V0dGluZyhvcHRpb25zLnNldHRpbmcsIGNvZXJjZWRWYWx1ZSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBVcGRhdGVkKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYCoqJHtvcHRpb25zLnNldHRpbmd9Kiogc2V0IHRvOiAke0pTT04uc3RyaW5naWZ5KGNvZXJjZWRWYWx1ZSwgbnVsbCwgMil9XFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLmBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZXNldChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIFJlc2V0IGNvbmZpZ3VyYXRpb24gdG8gZGVmYXVsdHNcbiAgICBpZiAob3B0aW9ucy5zZWN0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIucmVzZXRDb25maWcob3B0aW9ucy5zZWN0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgU2VjdGlvbiAnJHtvcHRpb25zLnNlY3Rpb259JyBoYXMgYmVlbiByZXNldCB0byBkZWZhdWx0IHZhbHVlcy5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBSZXNldCBhbGwgY29uZmlndXJhdGlvblxuICAgIGF3YWl0IHRoaXMuY29uZmlnTWFuYWdlci5yZXNldENvbmZpZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYEFsbCBzZXR0aW5ncyBoYXZlIGJlZW4gcmVzZXQgdG8gZGVmYXVsdCB2YWx1ZXMuXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBOb3RlOiBVc2VyIGlkZW50aXR5IGFuZCBHaXRIdWIgYXV0aGVudGljYXRpb24gYXJlIHByZXNlcnZlZC5gXG4gICAgICB9XVxuICAgIH07XG4gIH1cbiAgXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbnM6IENvbmZpZ09wZXJhdGlvbk9wdGlvbnMsIGluZGljYXRvcjogc3RyaW5nKSB7XG4gICAgLy8gRXhwb3J0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAneWFtbCc7XG4gICAgY29uc3QgZXhwb3J0ZWQgPSBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuZXhwb3J0Q29uZmlnKGZvcm1hdCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+TpCAqKkNvbmZpZ3VyYXRpb24gRXhwb3J0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFxcYFxcYFxcYCR7Zm9ybWF0fVxcbiR7ZXhwb3J0ZWR9XFxgXFxgXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBZb3UgY2FuIHNhdmUgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpbXBvcnQgaXQgbGF0ZXIuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUltcG9ydChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEltcG9ydCBjb25maWd1cmF0aW9uXG4gICAgaWYgKCFvcHRpb25zLmRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBDb25maWd1cmF0aW9uIGRhdGEgaXMgcmVxdWlyZWQgZm9yIGltcG9ydC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBZQU1MIG9yIEpTT04gY29uZmlndXJhdGlvbiBpbiB0aGUgJ2RhdGEnIHBhcmFtZXRlci5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuaW1wb3J0Q29uZmlnKG9wdGlvbnMuZGF0YSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBJbXBvcnRlZCoqXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDb25maWd1cmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBhbmQgc2F2ZWQuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIHRoZSBjb25maWd1cmF0aW9uIHdpemFyZFxuICAgKiBAcmV0dXJucyBQcm9taXNlIHdpdGggd2l6YXJkIGludGVyZmFjZSBjb250ZW50XG4gICAqIEBhc3luY1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVXaXphcmQoaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBHZXQgY3VycmVudCBjb25maWd1cmF0aW9uIHRvIHNob3cgdGhlIHVzZXJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgZnJpZW5kbHlDb25maWcgPSB0aGlzLm1ha2VGcmllbmRseUNvbmZpZyhjb25maWcpO1xuICAgIFxuICAgIC8vIEJ1aWxkIHdpemFyZCBjb250ZW50IHVzaW5nIHRlbXBsYXRlc1xuICAgIC8vIE5vdGU6IFRlbXBsYXRlIGJ1aWxkZXIgaXMgaW1wb3J0ZWQgZm9yIGZ1dHVyZSB1c2Ugd2hlbiB3ZSBmdWxseSBtaWdyYXRlIHRvIHRlbXBsYXRlIHN5c3RlbVxuICAgIGNvbnN0IHdpemFyZENvbnRlbnQgPSBgJHtpbmRpY2F0b3J98J+nmSAqKkNvbmZpZ3VyYXRpb24gV2l6YXJkIC0gTGV0J3MgU2V0IFVwIERvbGxob3VzZU1DUCEqKlxuXG5JJ2xsIGhlbHAgeW91IGNvbmZpZ3VyZSBEb2xsaG91c2VNQ1Agc3RlcCBieSBzdGVwLiBGaXJzdCwgbGV0IG1lIHNob3cgeW91IHlvdXIgY3VycmVudCBzZXR0aW5nczpcblxuKirwn5OKIEN1cnJlbnQgQ29uZmlndXJhdGlvbjoqKlxuXFxgXFxgXFxgeWFtbFxuJHt5YW1sLmR1bXAoZnJpZW5kbHlDb25maWcsIHsgbGluZVdpZHRoOiAtMSB9KX1cblxcYFxcYFxcYFxuXG4qKk5vdywgbGV0J3MgY29uZmlndXJlIHlvdXIgc2V0dGluZ3Mgb25lIGJ5IG9uZSEqKlxuXG7wn46vICoqU3RlcCAxOiBVc2VyIElkZW50aXR5KipcblRoaXMgdGFncyB5b3VyIGNyZWF0aW9ucyBzbyB5b3UgY2FuIGZpbmQgdGhlbSBsYXRlci4gRXZlcnl0aGluZyBpcyBzYXZlZCBsb2NhbGx5IG9uIHlvdXIgY29tcHV0ZXIuXG4tIFRvIHNldCBhIHVzZXJuYW1lOiBTYXkgXCJTZXQgbXkgdXNlcm5hbWUgdG8gW3lvdXItbmFtZV1cIlxuLSBUbyBzdGF5IGFub255bW91czogU2F5IFwiSSdsbCBzdGF5IGFub255bW91c1wiXG4tIEN1cnJlbnQ6ICR7ZnJpZW5kbHlDb25maWcudXNlcj8udXNlcm5hbWUgfHwgJyhub3Qgc2V0IC0gYW5vbnltb3VzIG1vZGUpJ31cblxu8J+UkCAqKlN0ZXAgMjogR2l0SHViIEludGVncmF0aW9uIChPcHRpb25hbCkqKlxuQ29ubmVjdCB0byBHaXRIdWIgdG8gc2hhcmUgeW91ciBjcmVhdGlvbnMgYW5kIGJyb3dzZSBjb21tdW5pdHkgY29udGVudC5cbi0gVG8gY29ubmVjdCBHaXRIdWI6IFNheSBcIkNvbm5lY3QgbXkgR2l0SHViIGFjY291bnRcIlxuLSBUbyBza2lwOiBTYXkgXCJTa2lwIEdpdEh1YiBmb3Igbm93XCJcbi0gQ3VycmVudDogJHtmcmllbmRseUNvbmZpZy5naXRodWI/LmF1dGhfdG9rZW4gPyAnQ29ubmVjdGVkJyA6ICcobm90IGNvbm5lY3RlZCknfVxuXG7wn5SEICoqU3RlcCAzOiBQb3J0Zm9saW8gU3luYyAoT3B0aW9uYWwpKipcbkF1dG9tYXRpY2FsbHkgYmFja3VwIHlvdXIgY3JlYXRpb25zIHRvIEdpdEh1Yi5cbi0gVG8gZW5hYmxlOiBTYXkgXCJFbmFibGUgYXV0by1zeW5jXCJcbi0gVG8ga2VlcCBtYW51YWw6IFNheSBcIkknbGwgc3luYyBtYW51YWxseVwiXG4tIEN1cnJlbnQ6ICR7ZnJpZW5kbHlDb25maWcucG9ydGZvbGlvPy5hdXRvX3N5bmMgPyAnRW5hYmxlZCcgOiAnTWFudWFsJ31cblxu8J+OqCAqKlN0ZXAgNDogRGlzcGxheSBQcmVmZXJlbmNlcyoqXG5DdXN0b21pemUgaG93IERvbGxob3VzZU1DUCBzaG93cyBpbmZvcm1hdGlvbi5cbi0gVG8gc2hvdyBhY3RpdmUgcGVyc29uYTogU2F5IFwiU2hvdyBwZXJzb25hIGluZGljYXRvcnNcIlxuLSBUbyBrZWVwIG1pbmltYWw6IFNheSBcIlVzZSBtaW5pbWFsIGRpc3BsYXlcIlxuLSBDdXJyZW50OiAke2ZyaWVuZGx5Q29uZmlnLmluZGljYXRvcj8uZW5hYmxlZCA/ICdFbmFibGVkJyA6ICdNaW5pbWFsJ31cblxu8J+SoSAqKlF1aWNrIFNldHVwKio6IFNheSBcIkNvbmZpZ3VyZSB0aGUgYmFzaWNzXCIgdG8gc2V0IGp1c3QgdXNlcm5hbWUgYW5kIEdpdEh1Ylxu8J+TnSAqKkRldGFpbGVkIFNldHVwKio6IFNheSBcIkNvbmZpZ3VyZSBldmVyeXRoaW5nXCIgdG8gZ28gdGhyb3VnaCBhbGwgb3B0aW9uc1xu4o+t77iPICoqU2tpcCBmb3IgTm93Kio6IFNheSBcIlNraXAgd2l6YXJkXCIgdG8gdXNlIGFub255bW91cyBtb2RlXG5cbuKcqCBZb3UgY2FuIGFsd2F5cyBjaGFuZ2UgdGhlc2Ugc2V0dGluZ3MgbGF0ZXIgYnkgc2F5aW5nIFwiT3BlbiBjb25maWd1cmF0aW9uIHdpemFyZFwiYDtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IHdpemFyZENvbnRlbnRcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZvcm1hdCBhIHZhbHVlIGZvciB1c2VyLWZyaWVuZGx5IGRpc3BsYXlcbiAgICogUmVwbGFjZXMgbnVsbC91bmRlZmluZWQgd2l0aCBoZWxwZnVsIG1lc3NhZ2VzXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gXCIobm90IHNldClcIjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgcmV0dXJuIFwiKGVtcHR5KVwiO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xuICB9XG4gIFxuICAvKipcbiAgICogTWFrZSBjb25maWd1cmF0aW9uIGRpc3BsYXkgdXNlci1mcmllbmRseSBmb3Igbm9uLXRlY2huaWNhbCB1c2Vyc1xuICAgKiBSZXBsYWNlcyBudWxsIHZhbHVlcyB3aXRoIGhlbHBmdWwgZXhwbGFuYXRpb25zXG4gICAqIFVzZXMgY2VudHJhbGl6ZWQgZnJpZW5kbHkgdmFsdWVzIGZvciBpMThuIHN1cHBvcnRcbiAgICovXG4gIHByaXZhdGUgbWFrZUZyaWVuZGx5Q29uZmlnKGNvbmZpZzogYW55KTogYW55IHtcbiAgICBjb25zdCBmcmllbmRseSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7IC8vIERlZXAgY2xvbmVcbiAgICBcbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVwbGFjZSBudWxsIHZhbHVlcyB3aXRoIGZyaWVuZGx5IG1lc3NhZ2VzXG4gICAgY29uc3QgcmVwbGFjZUZyaWVuZGx5VmFsdWUgPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZyA9ICcnKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgICAgXG4gICAgICAgIGlmIChvYmpba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgIG9ialtrZXldID0gZ2V0RnJpZW5kbHlOdWxsVmFsdWUoY3VycmVudFBhdGgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkob2JqW2tleV0pKSB7XG4gICAgICAgICAgcmVwbGFjZUZyaWVuZGx5VmFsdWUob2JqW2tleV0sIGN1cnJlbnRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gQXBwbHkgZnJpZW5kbHkgcmVwbGFjZW1lbnRzXG4gICAgcmVwbGFjZUZyaWVuZGx5VmFsdWUoZnJpZW5kbHkpO1xuICAgIFxuICAgIC8vIExlZ2FjeSBtYW51YWwgcmVwbGFjZW1lbnRzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgLy8gKFRoZXNlIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHdlIGZ1bGx5IG1pZ3JhdGUgdG8gdGVtcGxhdGUgc3lzdGVtKVxuICAgIGlmIChmcmllbmRseS5zeW5jKSB7XG4gICAgICBpZiAoZnJpZW5kbHkuc3luYy5sYXN0X3N5bmMgPT09IFwiKG5vdCBzZXQpXCIpIHtcbiAgICAgICAgZnJpZW5kbHkuc3luYy5sYXN0X3N5bmMgPSBcIihuZXZlciBzeW5jZWQpXCI7XG4gICAgICB9XG4gICAgICBpZiAoZnJpZW5kbHkuc3luYy5yZW1vdGVfdXJsID09PSBcIihub3Qgc2V0KVwiKSB7XG4gICAgICAgIGZyaWVuZGx5LnN5bmMucmVtb3RlX3VybCA9IFwiKG5vIHJlbW90ZSByZXBvc2l0b3J5KVwiO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBEaXNwbGF5IHNldHRpbmdzXG4gICAgaWYgKGZyaWVuZGx5LmRpc3BsYXkpIHtcbiAgICAgIC8vIFRoZXNlIGFyZSB0eXBpY2FsbHkgYm9vbGVhbnMsIGJ1dCBoYW5kbGUgbnVsbHMganVzdCBpbiBjYXNlXG4gICAgICBpZiAoZnJpZW5kbHkuZGlzcGxheS5zaG93X3BlcnNvbmFfaW5kaWNhdG9yID09PSBudWxsKSB7XG4gICAgICAgIGZyaWVuZGx5LmRpc3BsYXkuc2hvd19wZXJzb25hX2luZGljYXRvciA9IHRydWU7IC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gQ29sbGVjdGlvbiBzZXR0aW5nc1xuICAgIGlmIChmcmllbmRseS5jb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoZnJpZW5kbHkuY29sbGVjdGlvbi5hdXRvX3N1Ym1pdCA9PT0gbnVsbCkge1xuICAgICAgICBmcmllbmRseS5jb2xsZWN0aW9uLmF1dG9fc3VibWl0ID0gZmFsc2U7IC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIH1cbiAgICAgIGlmIChmcmllbmRseS5jb2xsZWN0aW9uLmxhc3RfY2FjaGVfdXBkYXRlID09PSBudWxsKSB7XG4gICAgICAgIGZyaWVuZGx5LmNvbGxlY3Rpb24ubGFzdF9jYWNoZV91cGRhdGUgPSBcIihjYWNoZSBub3QgaW5pdGlhbGl6ZWQpXCI7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFdpemFyZCBzZXR0aW5ncyAtIHNob3cgZnJpZW5kbHkgc3RhdHVzXG4gICAgaWYgKGZyaWVuZGx5LndpemFyZCkge1xuICAgICAgaWYgKGZyaWVuZGx5LndpemFyZC5jb21wbGV0ZWQgPT09IGZhbHNlICYmIGZyaWVuZGx5LndpemFyZC5kaXNtaXNzZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGZyaWVuZGx5LndpemFyZC5fc3RhdHVzID0gXCLij7MgUmVhZHkgdG8gcnVuIChub3QgY29tcGxldGVkKVwiO1xuICAgICAgfSBlbHNlIGlmIChmcmllbmRseS53aXphcmQuY29tcGxldGVkID09PSB0cnVlKSB7XG4gICAgICAgIGZyaWVuZGx5LndpemFyZC5fc3RhdHVzID0gXCLinIUgQ29tcGxldGVkXCI7XG4gICAgICB9IGVsc2UgaWYgKGZyaWVuZGx5LndpemFyZC5kaXNtaXNzZWQgPT09IHRydWUpIHtcbiAgICAgICAgZnJpZW5kbHkud2l6YXJkLl9zdGF0dXMgPSBcIuKPre+4jyBEaXNtaXNzZWRcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZyaWVuZGx5O1xuICB9XG59Il19
|
package/dist/index.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare class DollhouseMCPServer implements IToolHandler {
|
|
|
28
28
|
private migrationManager;
|
|
29
29
|
private skillManager;
|
|
30
30
|
private templateManager;
|
|
31
|
+
private templateRenderer;
|
|
31
32
|
private agentManager;
|
|
32
33
|
constructor();
|
|
33
34
|
private initializePortfolio;
|
|
@@ -408,14 +409,11 @@ export declare class DollhouseMCPServer implements IToolHandler {
|
|
|
408
409
|
*/
|
|
409
410
|
syncPortfolio(options: {
|
|
410
411
|
direction: string;
|
|
412
|
+
mode?: string;
|
|
411
413
|
force: boolean;
|
|
412
414
|
dryRun: boolean;
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
type: string;
|
|
416
|
-
text: string;
|
|
417
|
-
}[];
|
|
418
|
-
}>;
|
|
415
|
+
confirmDeletions?: boolean;
|
|
416
|
+
}): Promise<import("./handlers/PortfolioPullHandler.js").PullResult>;
|
|
419
417
|
/**
|
|
420
418
|
* Handle configuration operations - delegates to ConfigHandler
|
|
421
419
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,OAAO,EAA8D,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAgBhI,OAAO,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|