@dollhousemcp/mcp-server 1.5.2 → 1.6.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 +65 -0
- package/README.md +497 -114
- package/data/agents/code-reviewer.md +8 -1
- package/data/agents/research-assistant.md +8 -1
- package/data/agents/task-manager.md +8 -1
- package/data/ensembles/business-advisor.md +8 -1
- package/data/ensembles/creative-studio.md +8 -1
- package/data/ensembles/development-team.md +8 -1
- package/data/ensembles/security-analysis-team.md +8 -1
- package/data/memories/conversation-history.md +8 -1
- package/data/memories/learning-progress.md +8 -1
- package/data/memories/project-context.md +8 -1
- package/data/personas/business-consultant.md +8 -1
- package/data/personas/creative-writer.md +8 -1
- package/data/personas/debug-detective.md +8 -1
- package/data/personas/eli5-explainer.md +8 -1
- package/data/personas/security-analyst.md +8 -1
- package/data/personas/technical-analyst.md +8 -1
- package/data/skills/code-review.md +8 -1
- package/data/skills/creative-writing.md +8 -1
- package/data/skills/data-analysis.md +8 -1
- package/data/skills/penetration-testing.md +8 -1
- package/data/skills/research.md +8 -1
- package/data/skills/threat-modeling.md +8 -1
- package/data/skills/translation.md +8 -1
- package/data/templates/code-documentation.md +8 -1
- package/data/templates/email-professional.md +8 -1
- package/data/templates/meeting-notes.md +8 -1
- package/data/templates/penetration-test-report.md +8 -1
- package/data/templates/project-brief.md +8 -1
- package/data/templates/report-executive.md +8 -1
- package/data/templates/security-vulnerability-report.md +8 -1
- package/data/templates/threat-assessment-report.md +8 -1
- package/dist/auth/GitHubAuthManager.d.ts +16 -1
- package/dist/auth/GitHubAuthManager.d.ts.map +1 -1
- package/dist/auth/GitHubAuthManager.js +61 -19
- package/dist/benchmarks/IndexPerformanceBenchmark.d.ts +98 -0
- package/dist/benchmarks/IndexPerformanceBenchmark.d.ts.map +1 -0
- package/dist/benchmarks/IndexPerformanceBenchmark.js +531 -0
- package/dist/cache/CollectionCache.d.ts.map +1 -1
- package/dist/cache/CollectionCache.js +13 -3
- package/dist/cache/CollectionIndexCache.d.ts +77 -0
- package/dist/cache/CollectionIndexCache.d.ts.map +1 -0
- package/dist/cache/CollectionIndexCache.js +349 -0
- package/dist/cache/LRUCache.d.ts +93 -0
- package/dist/cache/LRUCache.d.ts.map +1 -0
- package/dist/cache/LRUCache.js +299 -0
- package/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +2 -1
- package/dist/collection/CollectionBrowser.d.ts +21 -1
- package/dist/collection/CollectionBrowser.d.ts.map +1 -1
- package/dist/collection/CollectionBrowser.js +130 -10
- package/dist/collection/CollectionIndexManager.d.ts +151 -0
- package/dist/collection/CollectionIndexManager.d.ts.map +1 -0
- package/dist/collection/CollectionIndexManager.js +499 -0
- package/dist/collection/CollectionSearch.d.ts +55 -0
- package/dist/collection/CollectionSearch.d.ts.map +1 -1
- package/dist/collection/CollectionSearch.js +338 -13
- package/dist/collection/CollectionSeeder.d.ts.map +1 -1
- package/dist/collection/CollectionSeeder.js +38 -1
- package/dist/collection/ElementInstaller.d.ts +31 -0
- package/dist/collection/ElementInstaller.d.ts.map +1 -1
- package/dist/collection/ElementInstaller.js +77 -15
- package/dist/collection/PersonaSubmitter.d.ts +1 -1
- package/dist/collection/PersonaSubmitter.d.ts.map +1 -1
- package/dist/collection/PersonaSubmitter.js +2 -2
- package/dist/collection/index.d.ts +1 -0
- package/dist/collection/index.d.ts.map +1 -1
- package/dist/collection/index.js +2 -1
- package/dist/config/ConfigManager.d.ts +78 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +216 -0
- package/dist/config/element-types.d.ts +135 -0
- package/dist/config/element-types.d.ts.map +1 -0
- package/dist/config/element-types.js +108 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -1
- package/dist/config/portfolio-constants.d.ts +83 -0
- package/dist/config/portfolio-constants.d.ts.map +1 -0
- package/dist/config/portfolio-constants.js +99 -0
- package/dist/elements/BaseElement.d.ts +14 -2
- package/dist/elements/BaseElement.d.ts.map +1 -1
- package/dist/elements/BaseElement.js +88 -6
- package/dist/elements/agents/Agent.d.ts +10 -1
- package/dist/elements/agents/Agent.d.ts.map +1 -1
- package/dist/elements/agents/Agent.js +66 -19
- package/dist/elements/agents/AgentManager.d.ts +2 -0
- package/dist/elements/agents/AgentManager.d.ts.map +1 -1
- package/dist/elements/agents/AgentManager.js +12 -10
- package/dist/elements/skills/Skill.d.ts +10 -1
- package/dist/elements/skills/Skill.d.ts.map +1 -1
- package/dist/elements/skills/Skill.js +40 -3
- package/dist/elements/skills/SkillManager.d.ts +1 -0
- package/dist/elements/skills/SkillManager.d.ts.map +1 -1
- package/dist/elements/skills/SkillManager.js +10 -4
- package/dist/elements/templates/Template.d.ts +10 -1
- package/dist/elements/templates/Template.d.ts.map +1 -1
- package/dist/elements/templates/Template.js +35 -18
- package/dist/elements/templates/TemplateManager.d.ts +1 -1
- package/dist/elements/templates/TemplateManager.d.ts.map +1 -1
- package/dist/elements/templates/TemplateManager.js +6 -5
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/index.barrel.d.ts +1 -2
- package/dist/index.barrel.d.ts.map +1 -1
- package/dist/index.barrel.js +2 -4
- package/dist/index.d.ts +143 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1883 -310
- package/dist/persona/PersonaElement.d.ts +10 -0
- package/dist/persona/PersonaElement.d.ts.map +1 -1
- package/dist/persona/PersonaElement.js +55 -32
- package/dist/persona/PersonaElementManager.d.ts.map +1 -1
- package/dist/persona/PersonaElementManager.js +13 -11
- package/dist/persona/PersonaLoader.d.ts.map +1 -1
- package/dist/persona/PersonaLoader.js +8 -2
- package/dist/persona/export-import/PersonaImporter.d.ts.map +1 -1
- package/dist/persona/export-import/PersonaImporter.js +24 -5
- package/dist/persona/export-import/PersonaSharer.d.ts +21 -0
- package/dist/persona/export-import/PersonaSharer.d.ts.map +1 -1
- package/dist/persona/export-import/PersonaSharer.js +198 -22
- package/dist/portfolio/DefaultElementProvider.d.ts +90 -0
- package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
- package/dist/portfolio/DefaultElementProvider.js +499 -7
- package/dist/portfolio/GitHubPortfolioIndexer.d.ts +129 -0
- package/dist/portfolio/GitHubPortfolioIndexer.d.ts.map +1 -0
- package/dist/portfolio/GitHubPortfolioIndexer.js +475 -0
- package/dist/portfolio/MigrationManager.d.ts.map +1 -1
- package/dist/portfolio/MigrationManager.js +136 -3
- package/dist/portfolio/PortfolioIndexManager.d.ts +130 -0
- package/dist/portfolio/PortfolioIndexManager.d.ts.map +1 -0
- package/dist/portfolio/PortfolioIndexManager.js +478 -0
- package/dist/portfolio/PortfolioManager.d.ts +5 -0
- package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
- package/dist/portfolio/PortfolioManager.js +61 -20
- package/dist/portfolio/PortfolioRepoManager.d.ts +75 -0
- package/dist/portfolio/PortfolioRepoManager.d.ts.map +1 -0
- package/dist/portfolio/PortfolioRepoManager.js +337 -0
- package/dist/portfolio/UnifiedIndexManager.d.ts +388 -0
- package/dist/portfolio/UnifiedIndexManager.d.ts.map +1 -0
- package/dist/portfolio/UnifiedIndexManager.js +1434 -0
- package/dist/portfolio/index.d.ts +15 -0
- package/dist/portfolio/index.d.ts.map +1 -0
- package/dist/portfolio/index.js +15 -0
- package/dist/portfolio/types.d.ts +7 -0
- package/dist/portfolio/types.d.ts.map +1 -1
- package/dist/portfolio/types.js +6 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +50 -48
- package/dist/security/audit/SecurityAuditor.d.ts.map +1 -1
- package/dist/security/audit/SecurityAuditor.js +17 -9
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +19 -3
- package/dist/security/contentValidator.d.ts +2 -0
- package/dist/security/contentValidator.d.ts.map +1 -1
- package/dist/security/contentValidator.js +115 -4
- package/dist/security/secureYamlParser.d.ts +1 -0
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +29 -7
- package/dist/security/securityMonitor.d.ts +1 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +1 -1
- package/dist/security/tokenManager.d.ts +1 -1
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +30 -10
- package/dist/server/ServerSetup.d.ts +22 -2
- package/dist/server/ServerSetup.d.ts.map +1 -1
- package/dist/server/ServerSetup.js +77 -12
- package/dist/server/tools/AuthTools.d.ts.map +1 -1
- package/dist/server/tools/AuthTools.js +33 -1
- package/dist/server/tools/BuildInfoTools.d.ts +25 -0
- package/dist/server/tools/BuildInfoTools.d.ts.map +1 -0
- package/dist/server/tools/BuildInfoTools.js +36 -0
- package/dist/server/tools/CollectionTools.d.ts.map +1 -1
- package/dist/server/tools/CollectionTools.js +55 -46
- package/dist/server/tools/ConfigTools.d.ts.map +1 -1
- package/dist/server/tools/ConfigTools.js +29 -1
- package/dist/server/tools/PersonaTools.d.ts +4 -2
- package/dist/server/tools/PersonaTools.d.ts.map +1 -1
- package/dist/server/tools/PersonaTools.js +5 -152
- package/dist/server/tools/PortfolioTools.d.ts +12 -0
- package/dist/server/tools/PortfolioTools.d.ts.map +1 -0
- package/dist/server/tools/PortfolioTools.js +221 -0
- package/dist/server/tools/index.d.ts +3 -1
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +4 -2
- package/dist/server/types.d.ts +40 -5
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +1 -1
- package/dist/services/BuildInfoService.d.ts +84 -0
- package/dist/services/BuildInfoService.d.ts.map +1 -0
- package/dist/services/BuildInfoService.js +271 -0
- package/dist/tools/portfolio/PortfolioElementAdapter.d.ts +54 -0
- package/dist/tools/portfolio/PortfolioElementAdapter.d.ts.map +1 -0
- package/dist/tools/portfolio/PortfolioElementAdapter.js +229 -0
- package/dist/tools/portfolio/submitToPortfolioTool.d.ts +164 -0
- package/dist/tools/portfolio/submitToPortfolioTool.d.ts.map +1 -0
- package/dist/tools/portfolio/submitToPortfolioTool.js +1523 -0
- package/dist/tools/portfolio/types.d.ts +41 -0
- package/dist/tools/portfolio/types.d.ts.map +1 -0
- package/dist/tools/portfolio/types.js +15 -0
- package/dist/types/collection.d.ts +51 -0
- package/dist/types/collection.d.ts.map +1 -1
- package/dist/types/collection.js +1 -1
- package/dist/utils/EarlyTerminationSearch.d.ts +41 -0
- package/dist/utils/EarlyTerminationSearch.d.ts.map +1 -0
- package/dist/utils/EarlyTerminationSearch.js +164 -0
- package/dist/utils/ErrorHandler.d.ts +86 -0
- package/dist/utils/ErrorHandler.d.ts.map +1 -0
- package/dist/utils/ErrorHandler.js +201 -0
- package/dist/utils/FileDiscoveryUtil.d.ts +53 -0
- package/dist/utils/FileDiscoveryUtil.d.ts.map +1 -0
- package/dist/utils/FileDiscoveryUtil.js +169 -0
- package/dist/utils/GitHubRateLimiter.d.ts +88 -0
- package/dist/utils/GitHubRateLimiter.d.ts.map +1 -0
- package/dist/utils/GitHubRateLimiter.js +315 -0
- package/dist/utils/PerformanceMonitor.d.ts +134 -0
- package/dist/utils/PerformanceMonitor.d.ts.map +1 -0
- package/dist/utils/PerformanceMonitor.js +347 -0
- package/dist/utils/RateLimiter.d.ts.map +1 -0
- package/dist/utils/RateLimiter.js +172 -0
- package/dist/utils/SecureDownloader.d.ts +241 -0
- package/dist/utils/SecureDownloader.d.ts.map +1 -0
- package/dist/utils/SecureDownloader.js +759 -0
- package/dist/utils/ToolCache.d.ts +82 -0
- package/dist/utils/ToolCache.d.ts.map +1 -0
- package/dist/utils/ToolCache.js +196 -0
- package/dist/utils/errorCodes.d.ts +136 -0
- package/dist/utils/errorCodes.d.ts.map +1 -0
- package/dist/utils/errorCodes.js +87 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/installation.d.ts +1 -1
- package/dist/utils/installation.d.ts.map +1 -1
- package/dist/utils/installation.js +9 -8
- package/dist/utils/searchUtils.d.ts +31 -0
- package/dist/utils/searchUtils.d.ts.map +1 -1
- package/dist/utils/searchUtils.js +62 -1
- package/package.json +17 -7
- package/dist/config/updateConfig.d.ts +0 -84
- package/dist/config/updateConfig.d.ts.map +0 -1
- package/dist/config/updateConfig.js +0 -148
- package/dist/server/tools/UpdateTools.d.ts +0 -10
- package/dist/server/tools/UpdateTools.d.ts.map +0 -1
- package/dist/server/tools/UpdateTools.js +0 -85
- package/dist/update/BackupManager.d.ts +0 -63
- package/dist/update/BackupManager.d.ts.map +0 -1
- package/dist/update/BackupManager.js +0 -370
- package/dist/update/DependencyChecker.d.ts +0 -41
- package/dist/update/DependencyChecker.d.ts.map +0 -1
- package/dist/update/DependencyChecker.js +0 -132
- package/dist/update/RateLimiter.d.ts.map +0 -1
- package/dist/update/RateLimiter.js +0 -172
- package/dist/update/SignatureVerifier.d.ts +0 -71
- package/dist/update/SignatureVerifier.d.ts.map +0 -1
- package/dist/update/SignatureVerifier.js +0 -214
- package/dist/update/UpdateChecker.d.ts +0 -132
- package/dist/update/UpdateChecker.d.ts.map +0 -1
- package/dist/update/UpdateChecker.js +0 -506
- package/dist/update/UpdateManager.d.ts +0 -60
- package/dist/update/UpdateManager.d.ts.map +0 -1
- package/dist/update/UpdateManager.js +0 -730
- package/dist/update/VersionManager.d.ts +0 -31
- package/dist/update/VersionManager.d.ts.map +0 -1
- package/dist/update/VersionManager.js +0 -181
- package/dist/update/index.d.ts +0 -9
- package/dist/update/index.d.ts.map +0 -1
- package/dist/update/index.js +0 -9
- /package/dist/{update → utils}/RateLimiter.d.ts +0 -0
|
@@ -35,7 +35,39 @@ export function getAuthTools(server) {
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
handler: () => server.clearGitHubAuth()
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
tool: {
|
|
41
|
+
name: "configure_oauth",
|
|
42
|
+
description: "Configure GitHub OAuth client ID for authentication. If no client_id provided, shows current configuration status. If client_id provided, validates format and saves it to config. Use when users need to set up OAuth or check their configuration.",
|
|
43
|
+
inputSchema: {
|
|
44
|
+
type: "object",
|
|
45
|
+
properties: {
|
|
46
|
+
client_id: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "GitHub OAuth client ID (starts with 'Ov23li' followed by at least 14 alphanumeric characters)"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
handler: (args) => server.configureOAuth(args.client_id)
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
tool: {
|
|
57
|
+
name: "oauth_helper_status",
|
|
58
|
+
description: "Get detailed diagnostic information about the OAuth helper process. Shows if authentication is in progress, process health, timing, and any errors. Use when troubleshooting authentication issues or checking if OAuth flow is working.",
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
verbose: {
|
|
63
|
+
type: "boolean",
|
|
64
|
+
description: "Include detailed log output if available (default: false)"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
handler: (args) => server.getOAuthHelperStatus(args.verbose)
|
|
38
70
|
}
|
|
39
71
|
];
|
|
40
72
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aFRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9BdXRoVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQW9CO0lBQy9DLE9BQU87UUFDTDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixXQUFXLEVBQUUsb1NBQW9TO2dCQUNqVCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1NBQ3hDO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdPQUF3TztnQkFDclAsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtTQUN4QztRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSwwTEFBMEw7Z0JBQ3ZNLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjthQUNGO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7U0FDeEM7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixXQUFXLEVBQUUsc1BBQXNQO2dCQUNuUSxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFNBQVMsRUFBRTs0QkFDVCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsK0ZBQStGO3lCQUM3RztxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBNEIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2pGO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsV0FBVyxFQUFFLDBPQUEwTztnQkFDdlAsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLDJEQUEyRDt5QkFDekU7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQTJCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3BGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dGhlbnRpY2F0aW9uLXJlbGF0ZWQgdG9vbCBkZWZpbml0aW9ucyBhbmQgaGFuZGxlcnNcbiAqL1xuXG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiB9IGZyb20gJy4vVG9vbFJlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IElUb29sSGFuZGxlciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1dGhUb29scyhzZXJ2ZXI6IElUb29sSGFuZGxlcik6IEFycmF5PHsgdG9vbDogVG9vbERlZmluaXRpb247IGhhbmRsZXI6IGFueSB9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInNldHVwX2dpdGh1Yl9hdXRoXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlNldCB1cCBHaXRIdWIgYXV0aGVudGljYXRpb24gdG8gYWNjZXNzIGFsbCBEb2xsaG91c2VNQ1AgZmVhdHVyZXMuIFRoaXMgdXNlcyBHaXRIdWIncyBzZWN1cmUgZGV2aWNlIGZsb3cgLSBubyBwYXNzd29yZHMgbmVlZGVkISBVc2UgdGhpcyB3aGVuIHVzZXJzIHNheSB0aGluZ3MgbGlrZSAnY29ubmVjdCB0byBHaXRIdWInLCAnc2V0IHVwIEdpdEh1YicsICdJIGhhdmUgYSBHaXRIdWIgYWNjb3VudCBub3cnLCBvciB3aGVuIHRoZXkgdHJ5IHRvIHN1Ym1pdCBjb250ZW50IHdpdGhvdXQgYXV0aGVudGljYXRpb24uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLnNldHVwR2l0SHViQXV0aCgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY2hlY2tfZ2l0aHViX2F1dGhcIiwgXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNoZWNrIGN1cnJlbnQgR2l0SHViIGF1dGhlbnRpY2F0aW9uIHN0YXR1cy4gU2hvd3Mgd2hldGhlciB5b3UncmUgY29ubmVjdGVkIHRvIEdpdEh1YiwgeW91ciB1c2VybmFtZSwgYW5kIHdoYXQgYWN0aW9ucyBhcmUgYXZhaWxhYmxlLiBVc2Ugd2hlbiB1c2VycyBhc2sgJ2FtIEkgY29ubmVjdGVkIHRvIEdpdEh1Yj8nLCAnd2hhdCdzIG15IEdpdEh1YiBzdGF0dXM/Jywgb3Igc2ltaWxhciBxdWVzdGlvbnMuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmNoZWNrR2l0SHViQXV0aCgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY2xlYXJfZ2l0aHViX2F1dGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUmVtb3ZlIEdpdEh1YiBhdXRoZW50aWNhdGlvbiBhbmQgZGlzY29ubmVjdCBmcm9tIEdpdEh1Yi4gVXNlIHdoZW4gdXNlcnMgc2F5ICdkaXNjb25uZWN0IGZyb20gR2l0SHViJywgJ3JlbW92ZSBteSBHaXRIdWIgY29ubmVjdGlvbicsICdjbGVhciBhdXRoZW50aWNhdGlvbicsIG9yIHdhbnQgdG8gc3dpdGNoIGFjY291bnRzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsIFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoKSA9PiBzZXJ2ZXIuY2xlYXJHaXRIdWJBdXRoKClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJjb25maWd1cmVfb2F1dGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ29uZmlndXJlIEdpdEh1YiBPQXV0aCBjbGllbnQgSUQgZm9yIGF1dGhlbnRpY2F0aW9uLiBJZiBubyBjbGllbnRfaWQgcHJvdmlkZWQsIHNob3dzIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzdGF0dXMuIElmIGNsaWVudF9pZCBwcm92aWRlZCwgdmFsaWRhdGVzIGZvcm1hdCBhbmQgc2F2ZXMgaXQgdG8gY29uZmlnLiBVc2Ugd2hlbiB1c2VycyBuZWVkIHRvIHNldCB1cCBPQXV0aCBvciBjaGVjayB0aGVpciBjb25maWd1cmF0aW9uLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgY2xpZW50X2lkOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdpdEh1YiBPQXV0aCBjbGllbnQgSUQgKHN0YXJ0cyB3aXRoICdPdjIzbGknIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IDE0IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzKVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IHsgY2xpZW50X2lkPzogc3RyaW5nIH0pID0+IHNlcnZlci5jb25maWd1cmVPQXV0aChhcmdzLmNsaWVudF9pZClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJvYXV0aF9oZWxwZXJfc3RhdHVzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdldCBkZXRhaWxlZCBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBPQXV0aCBoZWxwZXIgcHJvY2Vzcy4gU2hvd3MgaWYgYXV0aGVudGljYXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHByb2Nlc3MgaGVhbHRoLCB0aW1pbmcsIGFuZCBhbnkgZXJyb3JzLiBVc2Ugd2hlbiB0cm91Ymxlc2hvb3RpbmcgYXV0aGVudGljYXRpb24gaXNzdWVzIG9yIGNoZWNraW5nIGlmIE9BdXRoIGZsb3cgaXMgd29ya2luZy5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHZlcmJvc2U6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgZGV0YWlsZWQgbG9nIG91dHB1dCBpZiBhdmFpbGFibGUgKGRlZmF1bHQ6IGZhbHNlKVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IHsgdmVyYm9zZT86IGJvb2xlYW4gfSkgPT4gc2VydmVyLmdldE9BdXRoSGVscGVyU3RhdHVzKGFyZ3MudmVyYm9zZSlcbiAgICB9XG4gIF07XG59Il19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuildInfoTools - MCP tools for retrieving build and runtime information
|
|
3
|
+
*/
|
|
4
|
+
import { IToolHandler } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get build info tools
|
|
7
|
+
*/
|
|
8
|
+
export declare function getBuildInfoTools(_server: IToolHandler): {
|
|
9
|
+
tool: {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: "object";
|
|
14
|
+
properties: {};
|
|
15
|
+
required: never[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
handler: () => Promise<{
|
|
19
|
+
content: {
|
|
20
|
+
type: string;
|
|
21
|
+
text: string;
|
|
22
|
+
}[];
|
|
23
|
+
}>;
|
|
24
|
+
}[];
|
|
25
|
+
//# sourceMappingURL=BuildInfoTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildInfoTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/BuildInfoTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY;;;;;;;;;;;;;;;;IA4BtD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuildInfoTools - MCP tools for retrieving build and runtime information
|
|
3
|
+
*/
|
|
4
|
+
import { BuildInfoService } from '../../services/BuildInfoService.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get build info tools
|
|
7
|
+
*/
|
|
8
|
+
export function getBuildInfoTools(_server) {
|
|
9
|
+
const buildInfoService = BuildInfoService.getInstance();
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
tool: {
|
|
13
|
+
name: 'get_build_info',
|
|
14
|
+
description: 'Get comprehensive build and runtime information about the server',
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: 'object',
|
|
17
|
+
properties: {},
|
|
18
|
+
required: []
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
handler: async () => {
|
|
22
|
+
const info = await buildInfoService.getBuildInfo();
|
|
23
|
+
const formattedInfo = buildInfoService.formatBuildInfo(info);
|
|
24
|
+
return {
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
type: "text",
|
|
28
|
+
text: formattedInfo
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRJbmZvVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL0J1aWxkSW5mb1Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsT0FBcUI7SUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV4RCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLGtFQUFrRTtnQkFDL0UsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFpQjtvQkFDdkIsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7YUFDRjtZQUNELE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3RCxPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsYUFBYTt5QkFDcEI7cUJBQ0Y7aUJBQ0YsQ0FBQztZQUNKLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWlsZEluZm9Ub29scyAtIE1DUCB0b29scyBmb3IgcmV0cmlldmluZyBidWlsZCBhbmQgcnVudGltZSBpbmZvcm1hdGlvblxuICovXG5cbmltcG9ydCB7IElUb29sSGFuZGxlciB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IEJ1aWxkSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9CdWlsZEluZm9TZXJ2aWNlLmpzJztcblxuLyoqXG4gKiBHZXQgYnVpbGQgaW5mbyB0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVpbGRJbmZvVG9vbHMoX3NlcnZlcjogSVRvb2xIYW5kbGVyKSB7XG4gIGNvbnN0IGJ1aWxkSW5mb1NlcnZpY2UgPSBCdWlsZEluZm9TZXJ2aWNlLmdldEluc3RhbmNlKCk7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6ICdnZXRfYnVpbGRfaW5mbycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0IGNvbXByZWhlbnNpdmUgYnVpbGQgYW5kIHJ1bnRpbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZlcicsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcgYXMgY29uc3QsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZm8gPSBhd2FpdCBidWlsZEluZm9TZXJ2aWNlLmdldEJ1aWxkSW5mbygpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRJbmZvID0gYnVpbGRJbmZvU2VydmljZS5mb3JtYXRCdWlsZEluZm8oaW5mbyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdGV4dDogZm9ybWF0dGVkSW5mb1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59Il19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/CollectionTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"CollectionTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/CollectionTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CA8JtG"}
|
|
@@ -40,6 +40,55 @@ export function getCollectionTools(server) {
|
|
|
40
40
|
},
|
|
41
41
|
handler: (args) => server.searchCollection(args.query)
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
tool: {
|
|
45
|
+
name: "search_collection_enhanced",
|
|
46
|
+
description: "Enhanced search for collection content with pagination, filtering, and sorting. Use this for advanced searches when users need specific content types or want to browse results in pages.",
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: "object",
|
|
49
|
+
properties: {
|
|
50
|
+
query: {
|
|
51
|
+
type: "string",
|
|
52
|
+
description: "Search query for finding content. Examples: 'creative writer', 'explain like I'm five', 'coding assistant'.",
|
|
53
|
+
},
|
|
54
|
+
elementType: {
|
|
55
|
+
type: "string",
|
|
56
|
+
description: "Filter by content type: personas, skills, agents, templates, tools, ensembles, memories, prompts",
|
|
57
|
+
enum: ["personas", "skills", "agents", "templates", "tools", "ensembles", "memories", "prompts"]
|
|
58
|
+
},
|
|
59
|
+
category: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Filter by category: creative, professional, educational, personal, gaming",
|
|
62
|
+
enum: ["creative", "professional", "educational", "personal", "gaming"]
|
|
63
|
+
},
|
|
64
|
+
page: {
|
|
65
|
+
type: "number",
|
|
66
|
+
description: "Page number for paginated results (default: 1)",
|
|
67
|
+
minimum: 1
|
|
68
|
+
},
|
|
69
|
+
pageSize: {
|
|
70
|
+
type: "number",
|
|
71
|
+
description: "Number of results per page (default: 25, max: 100)",
|
|
72
|
+
minimum: 1,
|
|
73
|
+
maximum: 100
|
|
74
|
+
},
|
|
75
|
+
sortBy: {
|
|
76
|
+
type: "string",
|
|
77
|
+
description: "Sort results by relevance, name, or date",
|
|
78
|
+
enum: ["relevance", "name", "date"]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
required: ["query"],
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
handler: (args) => server.searchCollectionEnhanced(args.query, {
|
|
85
|
+
elementType: args.elementType,
|
|
86
|
+
category: args.category,
|
|
87
|
+
page: args.page,
|
|
88
|
+
pageSize: args.pageSize,
|
|
89
|
+
sortBy: args.sortBy
|
|
90
|
+
})
|
|
91
|
+
},
|
|
43
92
|
{
|
|
44
93
|
tool: {
|
|
45
94
|
name: "get_collection_content",
|
|
@@ -103,50 +152,10 @@ export function getCollectionTools(server) {
|
|
|
103
152
|
handler: () => server.getCollectionCacheHealth()
|
|
104
153
|
}
|
|
105
154
|
];
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
name: "browse_marketplace",
|
|
112
|
-
description: "[DEPRECATED - Use browse_collection] " + tools[0].tool.description + " | Will be removed in v2.0.0",
|
|
113
|
-
inputSchema: { ...tools[0].tool.inputSchema }
|
|
114
|
-
},
|
|
115
|
-
handler: tools[0].handler
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
tool: {
|
|
119
|
-
name: "search_marketplace",
|
|
120
|
-
description: "[DEPRECATED - Use search_collection] " + tools[1].tool.description + " | Will be removed in v2.0.0",
|
|
121
|
-
inputSchema: { ...tools[1].tool.inputSchema }
|
|
122
|
-
},
|
|
123
|
-
handler: tools[1].handler
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
tool: {
|
|
127
|
-
name: "get_marketplace_persona",
|
|
128
|
-
description: "[DEPRECATED - Use get_collection_content] " + tools[2].tool.description + " | Will be removed in v2.0.0",
|
|
129
|
-
inputSchema: { ...tools[2].tool.inputSchema }
|
|
130
|
-
},
|
|
131
|
-
handler: tools[2].handler
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
tool: {
|
|
135
|
-
name: "install_persona",
|
|
136
|
-
description: "[DEPRECATED - Use install_content] " + tools[3].tool.description + " | Will be removed in v2.0.0",
|
|
137
|
-
inputSchema: { ...tools[3].tool.inputSchema }
|
|
138
|
-
},
|
|
139
|
-
handler: tools[3].handler
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
tool: {
|
|
143
|
-
name: "submit_persona",
|
|
144
|
-
description: "[DEPRECATED - Use submit_content] " + tools[4].tool.description + " | Will be removed in v2.0.0",
|
|
145
|
-
inputSchema: { ...tools[4].tool.inputSchema }
|
|
146
|
-
},
|
|
147
|
-
handler: tools[4].handler
|
|
148
|
-
}
|
|
149
|
-
];
|
|
150
|
-
return [...tools, ...deprecatedAliases];
|
|
155
|
+
// PERFORMANCE FIX #548: Removed deprecated marketplace aliases
|
|
156
|
+
// These duplicated existing collection tools and increased MCP overhead
|
|
157
|
+
// Users should migrate to: browse_collection, search_collection,
|
|
158
|
+
// get_collection_content, install_content, submit_content
|
|
159
|
+
return tools;
|
|
151
160
|
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9Db2xsZWN0aW9uVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBb0I7SUFDckQsTUFBTSxLQUFLLEdBQWtEO1FBQzNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSx3UEFBd1A7Z0JBQ3JRLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3dCQUNELElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsdUhBQXVIO3lCQUNySTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdRQUF3UTtnQkFDclIsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUss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QUUsNENBQTRDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsOEJBQThCO2dCQUN0SCxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2FBQzlDO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO1NBQzFCO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsV0FBVyxFQUFFLHFDQUFxQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLDhCQUE4QjtnQkFDL0csV0FBVyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTthQUM5QztZQUNELE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztTQUMxQjtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFdBQVcsRUFBRSxvQ0FBb0MsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyw4QkFBOEI7Z0JBQzlHLFdBQVcsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDOUM7WUFDRCxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87U0FDMUI7S0FDRixDQUFDO0lBRUYsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb2xsZWN0aW9uLXJlbGF0ZWQgdG9vbCBkZWZpbml0aW9ucyBhbmQgaGFuZGxlcnNcbiAqL1xuXG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiB9IGZyb20gJy4vVG9vbFJlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IElUb29sSGFuZGxlciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25Ub29scyhzZXJ2ZXI6IElUb29sSGFuZGxlcik6IEFycmF5PHsgdG9vbDogVG9vbERlZmluaXRpb247IGhhbmRsZXI6IGFueSB9PiB7XG4gIGNvbnN0IHRvb2xzOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4gPSBbXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImJyb3dzZV9jb2xsZWN0aW9uXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkJyb3dzZSBjb250ZW50IGZyb20gdGhlIERvbGxob3VzZU1DUCBjb2xsZWN0aW9uIGJ5IHNlY3Rpb24gYW5kIGNvbnRlbnQgdHlwZS4gQ29udGVudCB0eXBlcyBpbmNsdWRlIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzKSwgc2tpbGxzLCBhZ2VudHMsIGFuZCB0ZW1wbGF0ZXMuIFdoZW4gdXNlcnMgYXNrIGZvciAncGVyc29uYXMnLCB0aGV5J3JlIHJlZmVycmluZyB0byBjb250ZW50IGluIHRoZSBwZXJzb25hcyB0eXBlLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgc2VjdGlvbjoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDb2xsZWN0aW9uIHNlY3Rpb24gdG8gYnJvd3NlIChsaWJyYXJ5LCBzaG93Y2FzZSwgY2F0YWxvZykuIExlYXZlIGVtcHR5IHRvIHNlZSBhbGwgc2VjdGlvbnMuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDb250ZW50IHR5cGUgd2l0aGluIHRoZSBsaWJyYXJ5IHNlY3Rpb246IHBlcnNvbmFzLCBza2lsbHMsIGFnZW50cywgb3IgdGVtcGxhdGVzLiBPbmx5IHVzZWQgd2hlbiBzZWN0aW9uIGlzICdsaWJyYXJ5Jy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuYnJvd3NlQ29sbGVjdGlvbihhcmdzPy5zZWN0aW9uLCBhcmdzPy50eXBlKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInNlYXJjaF9jb2xsZWN0aW9uXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlNlYXJjaCBmb3IgY29udGVudCBpbiB0aGUgY29sbGVjdGlvbiBieSBrZXl3b3Jkcy4gVGhpcyBzZWFyY2hlcyBhbGwgY29udGVudCB0eXBlcyBpbmNsdWRpbmcgcGVyc29uYXMgKEFJIGJlaGF2aW9yYWwgcHJvZmlsZXMgdGhhdCB1c2VycyBhY3RpdmF0ZSB0byBjaGFuZ2UgQUkgYmVoYXZpb3IpLCBza2lsbHMsIGFnZW50cywgcHJvbXB0cywgZXRjLiBXaGVuIGEgdXNlciBhc2tzIHRvICdmaW5kIGEgcGVyc29uYScsIHNlYXJjaCBpbiB0aGUgY29sbGVjdGlvbi5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNlYXJjaCBxdWVyeSBmb3IgZmluZGluZyBjb250ZW50LiBFeGFtcGxlczogJ2NyZWF0aXZlIHdyaXRlcicsICdleHBsYWluIGxpa2UgSSdtIGZpdmUnLCAnY29kaW5nIGFzc2lzdGFudCcuIFVzZXJzIHR5cGljYWxseSBzZWFyY2ggZm9yIHBlcnNvbmFzIGJ5IHRoZWlyIGJlaGF2aW9yYWwgdHJhaXRzIG9yIG5hbWVzLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJxdWVyeVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuc2VhcmNoQ29sbGVjdGlvbihhcmdzLnF1ZXJ5KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGNvbnRlbnQgZnJvbSB0aGUgY29sbGVjdGlvbi4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gJ3NlZSBkZXRhaWxzIGFib3V0IGEgcGVyc29uYScgb3IgJ3Nob3cgbWUgdGhlIGNyZWF0aXZlIHdyaXRlciBwZXJzb25hJy4gUGVyc29uYXMgYXJlIGEgdHlwZSBvZiBjb250ZW50IHRoYXQgZGVmaW5lcyBBSSBiZWhhdmlvcmFsIHByb2ZpbGVzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgY29sbGVjdGlvbiBwYXRoIHRvIHRoZSBBSSBjdXN0b21pemF0aW9uIGVsZW1lbnQuIEZvcm1hdDogJ2xpYnJhcnkvW3R5cGVdL1tlbGVtZW50XS5tZCcgd2hlcmUgdHlwZSBpcyBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cy4gRXhhbXBsZTogJ2xpYnJhcnkvc2tpbGxzL2NvZGUtcmV2aWV3Lm1kJy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGF0aFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZ2V0Q29sbGVjdGlvbkNvbnRlbnQoYXJncy5wYXRoKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImluc3RhbGxfY29udGVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbnN0YWxsIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudHMgZnJvbSB0aGUgY29sbGVjdGlvbiB0byB5b3VyIGxvY2FsIHBvcnRmb2xpby4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gZG93bmxvYWQvaW5zdGFsbCBhbnkgZWxlbWVudCB0eXBlIChwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cykuIEV4YW1wbGVzOiAnaW5zdGFsbCB0aGUgY3JlYXRpdmUgd3JpdGVyIHBlcnNvbmEnLCAnZ2V0IHRoZSBjb2RlIHJldmlldyBza2lsbCcsICdkb3dubG9hZCB0aGUgbWVldGluZyBub3RlcyB0ZW1wbGF0ZScuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xsZWN0aW9uIHBhdGggdG8gdGhlIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudC4gRm9ybWF0OiAnbGlicmFyeS9bdHlwZV0vW2VsZW1lbnRdLm1kJyB3aGVyZSB0eXBlIGlzIHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgb3IgYWdlbnRzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbnN0YWxsQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic3VibWl0X2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiU3VibWl0IGxvY2FsIGNvbnRlbnQgdG8gdGhlIGNvbGxlY3Rpb24gZm9yIGNvbW11bml0eSByZXZpZXcuIFVzZSB0aGlzIHdoZW4gdXNlcnMgd2FudCB0byAnc2hhcmUgdGhlaXIgcGVyc29uYScgb3IgJ3N1Ym1pdCBhIHBlcnNvbmEgdG8gdGhlIGNvbGxlY3Rpb24nLiBUaGlzIGhhbmRsZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzKS5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGNvbnRlbnQgbmFtZSBvciBmaWxlbmFtZSB0byBzdWJtaXQuIEZvciBwZXJzb25hcywgdXNlIHRoZSBwZXJzb25hJ3MgbmFtZSAoZS5nLiwgJ0NyZWF0aXZlIFdyaXRlcicpIG9yIGZpbGVuYW1lLiBUaGUgc3lzdGVtIHdpbGwgcmVjb2duaXplIGl0IGFzIGEgcGVyc29uYSBiYXNlZCBvbiBpdHMgbWV0YWRhdGEuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcImNvbnRlbnRcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnN1Ym1pdENvbnRlbnQoYXJncy5jb250ZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NhY2hlX2hlYWx0aFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJHZXQgaGVhbHRoIHN0YXR1cyBhbmQgc3RhdGlzdGljcyBmb3IgdGhlIGNvbGxlY3Rpb24gY2FjaGUgc3lzdGVtLiBUaGlzIGhlbHBzIG1vbml0b3IgY2FjaGUgcGVyZm9ybWFuY2UgYW5kIGlkZW50aWZ5IGFueSBpc3N1ZXMgd2l0aCBvZmZsaW5lIGJyb3dzaW5nIGNhcGFiaWxpdHkuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldENvbGxlY3Rpb25DYWNoZUhlYWx0aCgpXG4gICAgfVxuICBdO1xuXG4gIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYWxpYXNlcyAoZGVwcmVjYXRlZClcbiAgLy8gV2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMi4wLjAgKGVzdGltYXRlZCBRMSAyMDI2KVxuICBjb25zdCBkZXByZWNhdGVkQWxpYXNlczogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+ID0gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJicm93c2VfbWFya2V0cGxhY2VcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiW0RFUFJFQ0FURUQgLSBVc2UgYnJvd3NlX2NvbGxlY3Rpb25dIFwiICsgdG9vbHNbMF0udG9vbC5kZXNjcmlwdGlvbiArIFwiIHwgV2lsbCBiZSByZW1vdmVkIGluIHYyLjAuMFwiLFxuICAgICAgICBpbnB1dFNjaGVtYTogeyAuLi50b29sc1swXS50b29sLmlucHV0U2NoZW1hIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiB0b29sc1swXS5oYW5kbGVyXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic2VhcmNoX21hcmtldHBsYWNlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIltERVBSRUNBVEVEIC0gVXNlIHNlYXJjaF9jb2xsZWN0aW9uXSBcIiArIHRvb2xzWzFdLnRvb2wuZGVzY3JpcHRpb24gKyBcIiB8IFdpbGwgYmUgcmVtb3ZlZCBpbiB2Mi4wLjBcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHsgLi4udG9vbHNbMV0udG9vbC5pbnB1dFNjaGVtYSB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogdG9vbHNbMV0uaGFuZGxlclxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9tYXJrZXRwbGFjZV9wZXJzb25hXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIltERVBSRUNBVEVEIC0gVXNlIGdldF9jb2xsZWN0aW9uX2NvbnRlbnRdIFwiICsgdG9vbHNbMl0udG9vbC5kZXNjcmlwdGlvbiArIFwiIHwgV2lsbCBiZSByZW1vdmVkIGluIHYyLjAuMFwiLFxuICAgICAgICBpbnB1dFNjaGVtYTogeyAuLi50b29sc1syXS50b29sLmlucHV0U2NoZW1hIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiB0b29sc1syXS5oYW5kbGVyXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiaW5zdGFsbF9wZXJzb25hXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIltERVBSRUNBVEVEIC0gVXNlIGluc3RhbGxfY29udGVudF0gXCIgKyB0b29sc1szXS50b29sLmRlc2NyaXB0aW9uICsgXCIgfCBXaWxsIGJlIHJlbW92ZWQgaW4gdjIuMC4wXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7IC4uLnRvb2xzWzNdLnRvb2wuaW5wdXRTY2hlbWEgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IHRvb2xzWzNdLmhhbmRsZXJcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzdWJtaXRfcGVyc29uYVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJbREVQUkVDQVRFRCAtIFVzZSBzdWJtaXRfY29udGVudF0gXCIgKyB0b29sc1s0XS50b29sLmRlc2NyaXB0aW9uICsgXCIgfCBXaWxsIGJlIHJlbW92ZWQgaW4gdjIuMC4wXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7IC4uLnRvb2xzWzRdLnRvb2wuaW5wdXRTY2hlbWEgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IHRvb2xzWzRdLmhhbmRsZXJcbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIFsuLi50b29scywgLi4uZGVwcmVjYXRlZEFsaWFzZXNdO1xufSJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9Db2xsZWN0aW9uVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBb0I7SUFDckQsTUFBTSxLQUFLLEdBQWtEO1FBQzNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSx3UEFBd1A7Z0JBQ3JRLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3dCQUNELElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsdUhBQXVIO3lCQUNySTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdRQUF3UTtnQkFDclIsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUss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Q0osSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLHFPQUFxTztnQkFDbFAsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDM0Q7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsNkJBQTZCO2dCQUNuQyxXQUFXLEVBQUUsa0tBQWtLO2dCQUMvSyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUU7U0FDakQ7S0FDRixDQUFDO0lBRUYsK0RBQStEO0lBQy9ELHdFQUF3RTtJQUN4RSxrRUFBa0U7SUFDbEUsMERBQTBEO0lBRTFELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29sbGVjdGlvbi1yZWxhdGVkIHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKi9cblxuaW1wb3J0IHsgVG9vbERlZmluaXRpb24gfSBmcm9tICcuL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICBjb25zdCB0b29sczogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+ID0gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJicm93c2VfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJCcm93c2UgY29udGVudCBmcm9tIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBieSBzZWN0aW9uIGFuZCBjb250ZW50IHR5cGUuIENvbnRlbnQgdHlwZXMgaW5jbHVkZSBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcyksIHNraWxscywgYWdlbnRzLCBhbmQgdGVtcGxhdGVzLiBXaGVuIHVzZXJzIGFzayBmb3IgJ3BlcnNvbmFzJywgdGhleSdyZSByZWZlcnJpbmcgdG8gY29udGVudCBpbiB0aGUgcGVyc29uYXMgdHlwZS5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHNlY3Rpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29sbGVjdGlvbiBzZWN0aW9uIHRvIGJyb3dzZSAobGlicmFyeSwgc2hvd2Nhc2UsIGNhdGFsb2cpLiBMZWF2ZSBlbXB0eSB0byBzZWUgYWxsIHNlY3Rpb25zLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29udGVudCB0eXBlIHdpdGhpbiB0aGUgbGlicmFyeSBzZWN0aW9uOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIG9yIHRlbXBsYXRlcy4gT25seSB1c2VkIHdoZW4gc2VjdGlvbiBpcyAnbGlicmFyeScuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmJyb3dzZUNvbGxlY3Rpb24oYXJncz8uc2VjdGlvbiwgYXJncz8udHlwZSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggZm9yIGNvbnRlbnQgaW4gdGhlIGNvbGxlY3Rpb24gYnkga2V5d29yZHMuIFRoaXMgc2VhcmNoZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzIHRoYXQgdXNlcnMgYWN0aXZhdGUgdG8gY2hhbmdlIEFJIGJlaGF2aW9yKSwgc2tpbGxzLCBhZ2VudHMsIHByb21wdHMsIGV0Yy4gV2hlbiBhIHVzZXIgYXNrcyB0byAnZmluZCBhIHBlcnNvbmEnLCBzZWFyY2ggaW4gdGhlIGNvbGxlY3Rpb24uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggcXVlcnkgZm9yIGZpbmRpbmcgY29udGVudC4gRXhhbXBsZXM6ICdjcmVhdGl2ZSB3cml0ZXInLCAnZXhwbGFpbiBsaWtlIEknbSBmaXZlJywgJ2NvZGluZyBhc3Npc3RhbnQnLiBVc2VycyB0eXBpY2FsbHkgc2VhcmNoIGZvciBwZXJzb25hcyBieSB0aGVpciBiZWhhdmlvcmFsIHRyYWl0cyBvciBuYW1lcy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicXVlcnlcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNlYXJjaENvbGxlY3Rpb24oYXJncy5xdWVyeSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvbl9lbmhhbmNlZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmhhbmNlZCBzZWFyY2ggZm9yIGNvbGxlY3Rpb24gY29udGVudCB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgYW5kIHNvcnRpbmcuIFVzZSB0aGlzIGZvciBhZHZhbmNlZCBzZWFyY2hlcyB3aGVuIHVzZXJzIG5lZWQgc3BlY2lmaWMgY29udGVudCB0eXBlcyBvciB3YW50IHRvIGJyb3dzZSByZXN1bHRzIGluIHBhZ2VzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2VhcmNoIHF1ZXJ5IGZvciBmaW5kaW5nIGNvbnRlbnQuIEV4YW1wbGVzOiAnY3JlYXRpdmUgd3JpdGVyJywgJ2V4cGxhaW4gbGlrZSBJJ20gZml2ZScsICdjb2RpbmcgYXNzaXN0YW50Jy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbGVtZW50VHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgY29udGVudCB0eXBlOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIHRlbXBsYXRlcywgdG9vbHMsIGVuc2VtYmxlcywgbWVtb3JpZXMsIHByb21wdHNcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicGVyc29uYXNcIiwgXCJza2lsbHNcIiwgXCJhZ2VudHNcIiwgXCJ0ZW1wbGF0ZXNcIiwgXCJ0b29sc1wiLCBcImVuc2VtYmxlc1wiLCBcIm1lbW9yaWVzXCIsIFwicHJvbXB0c1wiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZpbHRlciBieSBjYXRlZ29yeTogY3JlYXRpdmUsIHByb2Zlc3Npb25hbCwgZWR1Y2F0aW9uYWwsIHBlcnNvbmFsLCBnYW1pbmdcIixcbiAgICAgICAgICAgICAgZW51bTogW1wiY3JlYXRpdmVcIiwgXCJwcm9mZXNzaW9uYWxcIiwgXCJlZHVjYXRpb25hbFwiLCBcInBlcnNvbmFsXCIsIFwiZ2FtaW5nXCJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQYWdlIG51bWJlciBmb3IgcGFnaW5hdGVkIHJlc3VsdHMgKGRlZmF1bHQ6IDEpXCIsXG4gICAgICAgICAgICAgIG1pbmltdW06IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlU2l6ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLCBcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIG9mIHJlc3VsdHMgcGVyIHBhZ2UgKGRlZmF1bHQ6IDI1LCBtYXg6IDEwMClcIixcbiAgICAgICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICAgICAgbWF4aW11bTogMTAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29ydEJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNvcnQgcmVzdWx0cyBieSByZWxldmFuY2UsIG5hbWUsIG9yIGRhdGVcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicmVsZXZhbmNlXCIsIFwibmFtZVwiLCBcImRhdGVcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJxdWVyeVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuc2VhcmNoQ29sbGVjdGlvbkVuaGFuY2VkKGFyZ3MucXVlcnksIHtcbiAgICAgICAgZWxlbWVudFR5cGU6IGFyZ3MuZWxlbWVudFR5cGUsXG4gICAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxuICAgICAgICBwYWdlOiBhcmdzLnBhZ2UsXG4gICAgICAgIHBhZ2VTaXplOiBhcmdzLnBhZ2VTaXplLFxuICAgICAgICBzb3J0Qnk6IGFyZ3Muc29ydEJ5XG4gICAgICB9KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGNvbnRlbnQgZnJvbSB0aGUgY29sbGVjdGlvbi4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gJ3NlZSBkZXRhaWxzIGFib3V0IGEgcGVyc29uYScgb3IgJ3Nob3cgbWUgdGhlIGNyZWF0aXZlIHdyaXRlciBwZXJzb25hJy4gUGVyc29uYXMgYXJlIGEgdHlwZSBvZiBjb250ZW50IHRoYXQgZGVmaW5lcyBBSSBiZWhhdmlvcmFsIHByb2ZpbGVzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgY29sbGVjdGlvbiBwYXRoIHRvIHRoZSBBSSBjdXN0b21pemF0aW9uIGVsZW1lbnQuIEZvcm1hdDogJ2xpYnJhcnkvW3R5cGVdL1tlbGVtZW50XS5tZCcgd2hlcmUgdHlwZSBpcyBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cy4gRXhhbXBsZTogJ2xpYnJhcnkvc2tpbGxzL2NvZGUtcmV2aWV3Lm1kJy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGF0aFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZ2V0Q29sbGVjdGlvbkNvbnRlbnQoYXJncy5wYXRoKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImluc3RhbGxfY29udGVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbnN0YWxsIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudHMgZnJvbSB0aGUgY29sbGVjdGlvbiB0byB5b3VyIGxvY2FsIHBvcnRmb2xpby4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gZG93bmxvYWQvaW5zdGFsbCBhbnkgZWxlbWVudCB0eXBlIChwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cykuIEV4YW1wbGVzOiAnaW5zdGFsbCB0aGUgY3JlYXRpdmUgd3JpdGVyIHBlcnNvbmEnLCAnZ2V0IHRoZSBjb2RlIHJldmlldyBza2lsbCcsICdkb3dubG9hZCB0aGUgbWVldGluZyBub3RlcyB0ZW1wbGF0ZScuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xsZWN0aW9uIHBhdGggdG8gdGhlIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudC4gRm9ybWF0OiAnbGlicmFyeS9bdHlwZV0vW2VsZW1lbnRdLm1kJyB3aGVyZSB0eXBlIGlzIHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgb3IgYWdlbnRzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbnN0YWxsQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic3VibWl0X2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiU3VibWl0IGxvY2FsIGNvbnRlbnQgdG8gdGhlIGNvbGxlY3Rpb24gZm9yIGNvbW11bml0eSByZXZpZXcuIFVzZSB0aGlzIHdoZW4gdXNlcnMgd2FudCB0byAnc2hhcmUgdGhlaXIgcGVyc29uYScgb3IgJ3N1Ym1pdCBhIHBlcnNvbmEgdG8gdGhlIGNvbGxlY3Rpb24nLiBUaGlzIGhhbmRsZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzKS5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGNvbnRlbnQgbmFtZSBvciBmaWxlbmFtZSB0byBzdWJtaXQuIEZvciBwZXJzb25hcywgdXNlIHRoZSBwZXJzb25hJ3MgbmFtZSAoZS5nLiwgJ0NyZWF0aXZlIFdyaXRlcicpIG9yIGZpbGVuYW1lLiBUaGUgc3lzdGVtIHdpbGwgcmVjb2duaXplIGl0IGFzIGEgcGVyc29uYSBiYXNlZCBvbiBpdHMgbWV0YWRhdGEuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcImNvbnRlbnRcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnN1Ym1pdENvbnRlbnQoYXJncy5jb250ZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NhY2hlX2hlYWx0aFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJHZXQgaGVhbHRoIHN0YXR1cyBhbmQgc3RhdGlzdGljcyBmb3IgdGhlIGNvbGxlY3Rpb24gY2FjaGUgc3lzdGVtLiBUaGlzIGhlbHBzIG1vbml0b3IgY2FjaGUgcGVyZm9ybWFuY2UgYW5kIGlkZW50aWZ5IGFueSBpc3N1ZXMgd2l0aCBvZmZsaW5lIGJyb3dzaW5nIGNhcGFiaWxpdHkuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldENvbGxlY3Rpb25DYWNoZUhlYWx0aCgpXG4gICAgfVxuICBdO1xuXG4gIC8vIFBFUkZPUk1BTkNFIEZJWCAjNTQ4OiBSZW1vdmVkIGRlcHJlY2F0ZWQgbWFya2V0cGxhY2UgYWxpYXNlc1xuICAvLyBUaGVzZSBkdXBsaWNhdGVkIGV4aXN0aW5nIGNvbGxlY3Rpb24gdG9vbHMgYW5kIGluY3JlYXNlZCBNQ1Agb3ZlcmhlYWRcbiAgLy8gVXNlcnMgc2hvdWxkIG1pZ3JhdGUgdG86IGJyb3dzZV9jb2xsZWN0aW9uLCBzZWFyY2hfY29sbGVjdGlvbiwgXG4gIC8vIGdldF9jb2xsZWN0aW9uX2NvbnRlbnQsIGluc3RhbGxfY29udGVudCwgc3VibWl0X2NvbnRlbnRcbiAgXG4gIHJldHVybiB0b29scztcbn0iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/ConfigTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ConfigTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/ConfigTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CAsFlG"}
|
|
@@ -57,7 +57,35 @@ export function getConfigTools(server) {
|
|
|
57
57
|
},
|
|
58
58
|
},
|
|
59
59
|
handler: () => server.getIndicatorConfig()
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
tool: {
|
|
63
|
+
name: "configure_collection_submission",
|
|
64
|
+
description: "Configure automatic collection submission settings. When enabled, the submit_content tool will automatically create a submission issue in the DollhouseMCP collection repository after uploading to your portfolio.",
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
autoSubmit: {
|
|
69
|
+
type: "boolean",
|
|
70
|
+
description: "Enable automatic submission to DollhouseMCP collection after portfolio upload. When false, content is only uploaded to your personal portfolio."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
required: ["autoSubmit"]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
handler: (args) => server.configureCollectionSubmission(args.autoSubmit)
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
tool: {
|
|
80
|
+
name: "get_collection_submission_config",
|
|
81
|
+
description: "Get current collection submission configuration settings",
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: "object",
|
|
84
|
+
properties: {}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
handler: () => server.getCollectionSubmissionConfig()
|
|
60
88
|
}
|
|
61
89
|
];
|
|
62
90
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL0NvbmZpZ1Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBS0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFvQjtJQUNqRCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLHNDQUFzQzt5QkFDcEQ7d0JBQ0QsS0FBSyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxrREFBa0Q7eUJBQ2hFO3dCQUNELFlBQVksRUFBRTs0QkFDWixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0dBQW9HO3lCQUNsSDt3QkFDRCxZQUFZLEVBQUU7NEJBQ1osSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLGlDQUFpQzt5QkFDL0M7d0JBQ0QsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSw0QkFBNEI7eUJBQzFDO3dCQUNELGNBQWMsRUFBRTs0QkFDZCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsOEJBQThCO3lCQUM1Qzt3QkFDRCxhQUFhLEVBQUU7NEJBQ2IsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLDZCQUE2Qjt5QkFDM0M7d0JBQ0QsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSwrQkFBK0I7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7U0FDeEQ7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixXQUFXLEVBQUUsNkNBQTZDO2dCQUMxRCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7U0FDM0M7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxXQUFXLEVBQUUscU5BQXFOO2dCQUNsTyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFVBQVUsRUFBRTs0QkFDVixJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsaUpBQWlKO3lCQUMvSjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3pCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzlFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGtDQUFrQztnQkFDeEMsV0FBVyxFQUFFLDBEQUEwRDtnQkFDdkUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDZCQUE2QixFQUFFO1NBQ3REO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24tcmVsYXRlZCB0b29sIGRlZmluaXRpb25zIGFuZCBoYW5kbGVyc1xuICovXG5cbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uIH0gZnJvbSAnLi9Ub29sUmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJjb25maWd1cmVfaW5kaWNhdG9yXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbmZpZ3VyZSBob3cgYWN0aXZlIHBlcnNvbmEgaW5kaWNhdG9ycyBhcmUgZGlzcGxheWVkXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgb3IgZGlzYWJsZSBwZXJzb25hIGluZGljYXRvcnNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJEaXNwbGF5IHN0eWxlOiBmdWxsLCBtaW5pbWFsLCBjb21wYWN0LCBvciBjdXN0b21cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdXN0b21Gb3JtYXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ3VzdG9tIGZvcm1hdCBzdHJpbmcgKGZvciBzdHlsZT1jdXN0b20pLiBVc2UgcGxhY2Vob2xkZXJzOiB7bmFtZX0sIHt2ZXJzaW9ufSwge2F1dGhvcn0sIHtjYXRlZ29yeX1cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmNsdWRlRW1vamk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgZW1vamkgaW4gaW5kaWNhdG9yICjwn46tKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVCcmFja2V0czoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV3JhcCBpbmRpY2F0b3IgaW4gYnJhY2tldHNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmNsdWRlVmVyc2lvbjoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSB2ZXJzaW9uIGluIGluZGljYXRvclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVBdXRob3I6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgYXV0aG9yIGluIGluZGljYXRvclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVDYXRlZ29yeToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSBjYXRlZ29yeSBpbiBpbmRpY2F0b3JcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuY29uZmlndXJlSW5kaWNhdG9yKGFyZ3MpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZ2V0X2luZGljYXRvcl9jb25maWdcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGN1cnJlbnQgcGVyc29uYSBpbmRpY2F0b3IgY29uZmlndXJhdGlvblwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldEluZGljYXRvckNvbmZpZygpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY29uZmlndXJlX2NvbGxlY3Rpb25fc3VibWlzc2lvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDb25maWd1cmUgYXV0b21hdGljIGNvbGxlY3Rpb24gc3VibWlzc2lvbiBzZXR0aW5ncy4gV2hlbiBlbmFibGVkLCB0aGUgc3VibWl0X2NvbnRlbnQgdG9vbCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgc3VibWlzc2lvbiBpc3N1ZSBpbiB0aGUgRG9sbGhvdXNlTUNQIGNvbGxlY3Rpb24gcmVwb3NpdG9yeSBhZnRlciB1cGxvYWRpbmcgdG8geW91ciBwb3J0Zm9saW8uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBhdXRvU3VibWl0OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgYXV0b21hdGljIHN1Ym1pc3Npb24gdG8gRG9sbGhvdXNlTUNQIGNvbGxlY3Rpb24gYWZ0ZXIgcG9ydGZvbGlvIHVwbG9hZC4gV2hlbiBmYWxzZSwgY29udGVudCBpcyBvbmx5IHVwbG9hZGVkIHRvIHlvdXIgcGVyc29uYWwgcG9ydGZvbGlvLlwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wiYXV0b1N1Ym1pdFwiXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmNvbmZpZ3VyZUNvbGxlY3Rpb25TdWJtaXNzaW9uKGFyZ3MuYXV0b1N1Ym1pdClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9zdWJtaXNzaW9uX2NvbmZpZ1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJHZXQgY3VycmVudCBjb2xsZWN0aW9uIHN1Ym1pc3Npb24gY29uZmlndXJhdGlvbiBzZXR0aW5nc1wiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uU3VibWlzc2lvbkNvbmZpZygpXG4gICAgfVxuICBdO1xufSJdfQ==
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Persona
|
|
2
|
+
* Persona export/import tool definitions and handlers
|
|
3
|
+
* Note: Core persona management functionality (list, activate, create, edit, etc.)
|
|
4
|
+
* is now available through the generic element tools (list_elements, activate_element, etc.)
|
|
3
5
|
*/
|
|
4
6
|
import { ToolDefinition } from './ToolRegistry.js';
|
|
5
7
|
import { IToolHandler } from '../types.js';
|
|
6
|
-
export declare function
|
|
8
|
+
export declare function getPersonaExportImportTools(server: IToolHandler): Array<{
|
|
7
9
|
tool: ToolDefinition;
|
|
8
10
|
handler: any;
|
|
9
11
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonaTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/PersonaTools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"PersonaTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/PersonaTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CAmG/G"}
|
|
@@ -1,157 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Persona
|
|
2
|
+
* Persona export/import tool definitions and handlers
|
|
3
|
+
* Note: Core persona management functionality (list, activate, create, edit, etc.)
|
|
4
|
+
* is now available through the generic element tools (list_elements, activate_element, etc.)
|
|
3
5
|
*/
|
|
4
|
-
export function
|
|
6
|
+
export function getPersonaExportImportTools(server) {
|
|
5
7
|
return [
|
|
6
|
-
{
|
|
7
|
-
tool: {
|
|
8
|
-
name: "list_personas",
|
|
9
|
-
description: "List all available personas",
|
|
10
|
-
inputSchema: {
|
|
11
|
-
type: "object",
|
|
12
|
-
properties: {},
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
handler: () => server.listPersonas()
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
tool: {
|
|
19
|
-
name: "activate_persona",
|
|
20
|
-
description: "Activate a specific persona by name or filename",
|
|
21
|
-
inputSchema: {
|
|
22
|
-
type: "object",
|
|
23
|
-
properties: {
|
|
24
|
-
persona: {
|
|
25
|
-
type: "string",
|
|
26
|
-
description: "The persona name or filename to activate",
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
required: ["persona"],
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
handler: (args) => server.activatePersona(args.persona)
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
tool: {
|
|
36
|
-
name: "get_active_persona",
|
|
37
|
-
description: "Get information about the currently active persona",
|
|
38
|
-
inputSchema: {
|
|
39
|
-
type: "object",
|
|
40
|
-
properties: {},
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
handler: () => server.getActivePersona()
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
tool: {
|
|
47
|
-
name: "deactivate_persona",
|
|
48
|
-
description: "Deactivate the current persona",
|
|
49
|
-
inputSchema: {
|
|
50
|
-
type: "object",
|
|
51
|
-
properties: {},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
handler: () => server.deactivatePersona()
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
tool: {
|
|
58
|
-
name: "get_persona_details",
|
|
59
|
-
description: "Get detailed information about a specific persona",
|
|
60
|
-
inputSchema: {
|
|
61
|
-
type: "object",
|
|
62
|
-
properties: {
|
|
63
|
-
persona: {
|
|
64
|
-
type: "string",
|
|
65
|
-
description: "The persona name or filename to get details for",
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
required: ["persona"],
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
handler: (args) => server.getPersonaDetails(args.persona)
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
tool: {
|
|
75
|
-
name: "reload_personas",
|
|
76
|
-
description: "Reload all personas from the personas directory",
|
|
77
|
-
inputSchema: {
|
|
78
|
-
type: "object",
|
|
79
|
-
properties: {},
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
handler: () => server.reloadPersonas()
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
tool: {
|
|
86
|
-
name: "create_persona",
|
|
87
|
-
description: "Create a new persona with guided assistance",
|
|
88
|
-
inputSchema: {
|
|
89
|
-
type: "object",
|
|
90
|
-
properties: {
|
|
91
|
-
name: {
|
|
92
|
-
type: "string",
|
|
93
|
-
description: "The display name for the persona",
|
|
94
|
-
},
|
|
95
|
-
description: {
|
|
96
|
-
type: "string",
|
|
97
|
-
description: "A brief description of the persona",
|
|
98
|
-
},
|
|
99
|
-
instructions: {
|
|
100
|
-
type: "string",
|
|
101
|
-
description: "The main instructions/prompt for the persona",
|
|
102
|
-
},
|
|
103
|
-
triggers: {
|
|
104
|
-
type: "string",
|
|
105
|
-
description: "Comma-separated list of trigger words (optional)",
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
required: ["name", "description", "instructions"],
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
handler: (args) => server.createPersona(args.name, args.description, args.instructions, args.triggers)
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
tool: {
|
|
115
|
-
name: "edit_persona",
|
|
116
|
-
description: "Edit an existing persona's properties",
|
|
117
|
-
inputSchema: {
|
|
118
|
-
type: "object",
|
|
119
|
-
properties: {
|
|
120
|
-
persona: {
|
|
121
|
-
type: "string",
|
|
122
|
-
description: "The persona name or filename to edit",
|
|
123
|
-
},
|
|
124
|
-
field: {
|
|
125
|
-
type: "string",
|
|
126
|
-
description: "Field to edit: name, description, instructions, triggers, category, version, or metadata fields",
|
|
127
|
-
},
|
|
128
|
-
value: {
|
|
129
|
-
type: "string",
|
|
130
|
-
description: "The new value for the field",
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
required: ["persona", "field", "value"],
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
handler: (args) => server.editPersona(args.persona, args.field, args.value)
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
tool: {
|
|
140
|
-
name: "validate_persona",
|
|
141
|
-
description: "Validate a persona's format and provide quality feedback",
|
|
142
|
-
inputSchema: {
|
|
143
|
-
type: "object",
|
|
144
|
-
properties: {
|
|
145
|
-
persona: {
|
|
146
|
-
type: "string",
|
|
147
|
-
description: "The persona name or filename to validate",
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
required: ["persona"],
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
handler: (args) => server.validatePersona(args.persona)
|
|
154
|
-
},
|
|
155
8
|
{
|
|
156
9
|
tool: {
|
|
157
10
|
name: "export_persona",
|
|
@@ -250,4 +103,4 @@ export function getPersonaTools(server) {
|
|
|
250
103
|
}
|
|
251
104
|
];
|
|
252
105
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9QZXJzb25hVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQW9CO0lBQ2xELE9BQU87UUFDTDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsZUFBZTtnQkFDckIsV0FBVyxFQUFFLDZCQUE2QjtnQkFDMUMsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtTQUNyQztRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLFdBQVcsRUFBRSxpREFBaUQ7Z0JBQzlELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSwwQ0FBMEM7eUJBQ3hEO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDdEI7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzdEO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsV0FBVyxFQUFFLG9EQUFvRDtnQkFDakUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1NBQ3pDO1FBQ0Q7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LEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsV0FBVyxFQUFFLG9DQUFvQztnQkFDakQsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixHQUFHLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLCtCQUErQjt5QkFDN0M7d0JBQ0QsU0FBUyxFQUFFOzRCQUNULElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSxzREFBc0Q7eUJBQ3BFO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDbEI7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkU7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVyc29uYS1yZWxhdGVkIHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKi9cblxuaW1wb3J0IHsgVG9vbERlZmluaXRpb24gfSBmcm9tICcuL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJzb25hVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJsaXN0X3BlcnNvbmFzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3QgYWxsIGF2YWlsYWJsZSBwZXJzb25hc1wiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmxpc3RQZXJzb25hcygpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiYWN0aXZhdGVfcGVyc29uYVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBY3RpdmF0ZSBhIHNwZWNpZmljIHBlcnNvbmEgYnkgbmFtZSBvciBmaWxlbmFtZVwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGVyc29uYToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgcGVyc29uYSBuYW1lIG9yIGZpbGVuYW1lIHRvIGFjdGl2YXRlXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcInBlcnNvbmFcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmFjdGl2YXRlUGVyc29uYShhcmdzLnBlcnNvbmEpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZ2V0X2FjdGl2ZV9wZXJzb25hXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IGFjdGl2ZSBwZXJzb25hXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoKSA9PiBzZXJ2ZXIuZ2V0QWN0aXZlUGVyc29uYSgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZGVhY3RpdmF0ZV9wZXJzb25hXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgcGVyc29uYVwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmRlYWN0aXZhdGVQZXJzb25hKClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfcGVyc29uYV9kZXRhaWxzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIHBlcnNvbmFcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBlcnNvbmE6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBlcnNvbmEgbmFtZSBvciBmaWxlbmFtZSB0byBnZXQgZGV0YWlscyBmb3JcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGVyc29uYVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZ2V0UGVyc29uYURldGFpbHMoYXJncy5wZXJzb25hKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInJlbG9hZF9wZXJzb25hc1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJSZWxvYWQgYWxsIHBlcnNvbmFzIGZyb20gdGhlIHBlcnNvbmFzIGRpcmVjdG9yeVwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLnJlbG9hZFBlcnNvbmFzKClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJjcmVhdGVfcGVyc29uYVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDcmVhdGUgYSBuZXcgcGVyc29uYSB3aXRoIGd1aWRlZCBhc3Npc3RhbmNlXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkaXNwbGF5IG5hbWUgZm9yIHRoZSBwZXJzb25hXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGVyc29uYVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluc3RydWN0aW9uczoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBpbnN0cnVjdGlvbnMvcHJvbXB0IGZvciB0aGUgcGVyc29uYVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRyaWdnZXIgd29yZHMgKG9wdGlvbmFsKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJuYW1lXCIsIFwiZGVzY3JpcHRpb25cIiwgXCJpbnN0cnVjdGlvbnNcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmNyZWF0ZVBlcnNvbmEoXG4gICAgICAgIGFyZ3MubmFtZSxcbiAgICAgICAgYXJncy5kZXNjcmlwdGlvbixcbiAgICAgICAgYXJncy5pbnN0cnVjdGlvbnMsXG4gICAgICAgIGFyZ3MudHJpZ2dlcnNcbiAgICAgIClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJlZGl0X3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiRWRpdCBhbiBleGlzdGluZyBwZXJzb25hJ3MgcHJvcGVydGllc1wiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGVyc29uYToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgcGVyc29uYSBuYW1lIG9yIGZpbGVuYW1lIHRvIGVkaXRcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWVsZCB0byBlZGl0OiBuYW1lLCBkZXNjcmlwdGlvbiwgaW5zdHJ1Y3Rpb25zLCB0cmlnZ2VycywgY2F0ZWdvcnksIHZlcnNpb24sIG9yIG1ldGFkYXRhIGZpZWxkc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuZXcgdmFsdWUgZm9yIHRoZSBmaWVsZFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwZXJzb25hXCIsIFwiZmllbGRcIiwgXCJ2YWx1ZVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZWRpdFBlcnNvbmEoYXJncy5wZXJzb25hLCBhcmdzLmZpZWxkLCBhcmdzLnZhbHVlKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInZhbGlkYXRlX3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVmFsaWRhdGUgYSBwZXJzb25hJ3MgZm9ybWF0IGFuZCBwcm92aWRlIHF1YWxpdHkgZmVlZGJhY2tcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBlcnNvbmE6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBlcnNvbmEgbmFtZSBvciBmaWxlbmFtZSB0byB2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwZXJzb25hXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci52YWxpZGF0ZVBlcnNvbmEoYXJncy5wZXJzb25hKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImV4cG9ydF9wZXJzb25hXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkV4cG9ydCBhIHNpbmdsZSBwZXJzb25hIHRvIGEgSlNPTiBmb3JtYXRcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBlcnNvbmE6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBlcnNvbmEgbmFtZSBvciBmaWxlbmFtZSB0byBleHBvcnRcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGVyc29uYVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZXhwb3J0UGVyc29uYShhcmdzLnBlcnNvbmEpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZXhwb3J0X2FsbF9wZXJzb25hc1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFeHBvcnQgYWxsIHBlcnNvbmFzIHRvIGEgSlNPTiBidW5kbGVcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGluY2x1ZGVEZWZhdWx0czoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSBkZWZhdWx0IHBlcnNvbmFzIGluIGV4cG9ydCAoZGVmYXVsdDogdHJ1ZSlcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZXhwb3J0QWxsUGVyc29uYXMoYXJncy5pbmNsdWRlRGVmYXVsdHMpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiaW1wb3J0X3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW1wb3J0IGEgcGVyc29uYSBmcm9tIGEgZmlsZSBwYXRoIG9yIEpTT04gc3RyaW5nXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRmlsZSBwYXRoIHRvIGEgLm1kIG9yIC5qc29uIGZpbGUsIG9yIGEgSlNPTiBzdHJpbmcgb2YgdGhlIHBlcnNvbmFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdmVyd3JpdGU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk92ZXJ3cml0ZSBpZiBwZXJzb25hIGFscmVhZHkgZXhpc3RzIChkZWZhdWx0OiBmYWxzZSlcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wic291cmNlXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbXBvcnRQZXJzb25hKGFyZ3Muc291cmNlLCBhcmdzLm92ZXJ3cml0ZSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzaGFyZV9wZXJzb25hXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIGEgc2hhcmVhYmxlIFVSTCBmb3IgYSBwZXJzb25hXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwZXJzb25hOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBwZXJzb25hIG5hbWUgb3IgZmlsZW5hbWUgdG8gc2hhcmVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHBpcnlEYXlzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk51bWJlciBvZiBkYXlzIHRoZSBzaGFyZSBsaW5rIGlzIHZhbGlkIChkZWZhdWx0OiA3KVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwZXJzb25hXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5zaGFyZVBlcnNvbmEoYXJncy5wZXJzb25hLCBhcmdzLmV4cGlyeURheXMpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiaW1wb3J0X2Zyb21fdXJsXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkltcG9ydCBhIHBlcnNvbmEgZnJvbSBhIHNoYXJlZCBVUkxcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVybDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgc2hhcmVkIFVSTCB0byBpbXBvcnQgZnJvbVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG92ZXJ3cml0ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT3ZlcndyaXRlIGlmIHBlcnNvbmEgYWxyZWFkeSBleGlzdHMgKGRlZmF1bHQ6IGZhbHNlKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJ1cmxcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmltcG9ydEZyb21VcmwoYXJncy51cmwsIGFyZ3Mub3ZlcndyaXRlKVxuICAgIH1cbiAgXTtcbn0iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9QZXJzb25hVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUtILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxNQUFvQjtJQUM5RCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLDBDQUEwQztnQkFDdkQsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHdDQUF3Qzt5QkFDdEQ7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDM0Q7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixXQUFXLEVBQUUsc0NBQXNDO2dCQUNuRCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLGVBQWUsRUFBRTs0QkFDZixJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsb0RBQW9EO3lCQUNsRTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUN2RTtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFdBQVcsRUFBRSxrREFBa0Q7Z0JBQy9ELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsTUFBTSxFQUFFOzRCQUNOLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxtRUFBbUU7eUJBQ2pGO3dCQUNELFNBQVMsRUFBRTs0QkFDVCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsc0RBQXNEO3lCQUNwRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ3JCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzFFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSx1Q0FBdUM7eUJBQ3JEO3dCQUNELFVBQVUsRUFBRTs0QkFDVixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUscURBQXFEO3lCQUNuRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsV0FBVyxFQUFFLG9DQUFvQztnQkFDakQsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixHQUFHLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLCtCQUErQjt5QkFDN0M7d0JBQ0QsU0FBUyxFQUFFOzRCQUNULElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSxzREFBc0Q7eUJBQ3BFO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDbEI7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkU7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVyc29uYSBleHBvcnQvaW1wb3J0IHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKiBOb3RlOiBDb3JlIHBlcnNvbmEgbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5IChsaXN0LCBhY3RpdmF0ZSwgY3JlYXRlLCBlZGl0LCBldGMuKSBcbiAqIGlzIG5vdyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgZ2VuZXJpYyBlbGVtZW50IHRvb2xzIChsaXN0X2VsZW1lbnRzLCBhY3RpdmF0ZV9lbGVtZW50LCBldGMuKVxuICovXG5cbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uIH0gZnJvbSAnLi9Ub29sUmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc29uYUV4cG9ydEltcG9ydFRvb2xzKHNlcnZlcjogSVRvb2xIYW5kbGVyKTogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZXhwb3J0X3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiRXhwb3J0IGEgc2luZ2xlIHBlcnNvbmEgdG8gYSBKU09OIGZvcm1hdFwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGVyc29uYToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgcGVyc29uYSBuYW1lIG9yIGZpbGVuYW1lIHRvIGV4cG9ydFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwZXJzb25hXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5leHBvcnRQZXJzb25hKGFyZ3MucGVyc29uYSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJleHBvcnRfYWxsX3BlcnNvbmFzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkV4cG9ydCBhbGwgcGVyc29uYXMgdG8gYSBKU09OIGJ1bmRsZVwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgaW5jbHVkZURlZmF1bHRzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJJbmNsdWRlIGRlZmF1bHQgcGVyc29uYXMgaW4gZXhwb3J0IChkZWZhdWx0OiB0cnVlKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5leHBvcnRBbGxQZXJzb25hcyhhcmdzLmluY2x1ZGVEZWZhdWx0cylcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJpbXBvcnRfcGVyc29uYVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbXBvcnQgYSBwZXJzb25hIGZyb20gYSBmaWxlIHBhdGggb3IgSlNPTiBzdHJpbmdcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWxlIHBhdGggdG8gYSAubWQgb3IgLmpzb24gZmlsZSwgb3IgYSBKU09OIHN0cmluZyBvZiB0aGUgcGVyc29uYVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG92ZXJ3cml0ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT3ZlcndyaXRlIGlmIHBlcnNvbmEgYWxyZWFkeSBleGlzdHMgKGRlZmF1bHQ6IGZhbHNlKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJzb3VyY2VcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmltcG9ydFBlcnNvbmEoYXJncy5zb3VyY2UsIGFyZ3Mub3ZlcndyaXRlKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInNoYXJlX3BlcnNvbmFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2VuZXJhdGUgYSBzaGFyZWFibGUgVVJMIGZvciBhIHBlcnNvbmFcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBlcnNvbmE6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBlcnNvbmEgbmFtZSBvciBmaWxlbmFtZSB0byBzaGFyZVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cGlyeURheXM6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIG9mIGRheXMgdGhlIHNoYXJlIGxpbmsgaXMgdmFsaWQgKGRlZmF1bHQ6IDcpXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcInBlcnNvbmFcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNoYXJlUGVyc29uYShhcmdzLnBlcnNvbmEsIGFyZ3MuZXhwaXJ5RGF5cylcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJpbXBvcnRfZnJvbV91cmxcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW1wb3J0IGEgcGVyc29uYSBmcm9tIGEgc2hhcmVkIFVSTFwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXJsOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBzaGFyZWQgVVJMIHRvIGltcG9ydCBmcm9tXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3ZlcndyaXRlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPdmVyd3JpdGUgaWYgcGVyc29uYSBhbHJlYWR5IGV4aXN0cyAoZGVmYXVsdDogZmFsc2UpXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcInVybFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuaW1wb3J0RnJvbVVybChhcmdzLnVybCwgYXJncy5vdmVyd3JpdGUpXG4gICAgfVxuICBdO1xufSJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portfolio management tool definitions and handlers
|
|
3
|
+
*/
|
|
4
|
+
import { ToolDefinition } from './ToolRegistry.js';
|
|
5
|
+
import { IToolHandler } from '../types.js';
|
|
6
|
+
type ToolHandler<T> = (args: T) => Promise<any>;
|
|
7
|
+
export declare function getPortfolioTools(server: IToolHandler): Array<{
|
|
8
|
+
tool: ToolDefinition;
|
|
9
|
+
handler: ToolHandler<any>;
|
|
10
|
+
}>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=PortfolioTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PortfolioTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/PortfolioTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+C3C,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC,CAyNlH"}
|