@dollhousemcp/mcp-server 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/README.md +27 -16
  3. package/dist/auth/GitHubAuthManager.js +2 -2
  4. package/dist/cache/CollectionCache.d.ts +65 -0
  5. package/dist/cache/CollectionCache.d.ts.map +1 -0
  6. package/dist/cache/CollectionCache.js +162 -0
  7. package/dist/cache/index.d.ts +1 -0
  8. package/dist/cache/index.d.ts.map +1 -1
  9. package/dist/cache/index.js +2 -1
  10. package/dist/collection/CollectionBrowser.d.ts +24 -1
  11. package/dist/collection/CollectionBrowser.d.ts.map +1 -1
  12. package/dist/collection/CollectionBrowser.js +135 -23
  13. package/dist/collection/CollectionSearch.d.ts +20 -1
  14. package/dist/collection/CollectionSearch.d.ts.map +1 -1
  15. package/dist/collection/CollectionSearch.js +110 -6
  16. package/dist/collection/CollectionSeeder.d.ts +36 -0
  17. package/dist/collection/CollectionSeeder.d.ts.map +1 -0
  18. package/dist/collection/CollectionSeeder.js +230 -0
  19. package/dist/collection/GitHubClient.d.ts.map +1 -1
  20. package/dist/collection/GitHubClient.js +8 -4
  21. package/dist/collection/PersonaSubmitter.d.ts +48 -1
  22. package/dist/collection/PersonaSubmitter.d.ts.map +1 -1
  23. package/dist/collection/PersonaSubmitter.js +170 -34
  24. package/dist/collection/index.d.ts +1 -0
  25. package/dist/collection/index.d.ts.map +1 -1
  26. package/dist/collection/index.js +2 -1
  27. package/dist/generated/version.d.ts +2 -2
  28. package/dist/generated/version.js +3 -3
  29. package/dist/index.d.ts +12 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +165 -54
  32. package/dist/server/tools/CollectionTools.d.ts.map +1 -1
  33. package/dist/server/tools/CollectionTools.js +12 -1
  34. package/dist/server/tools/PersonaTools.d.ts.map +1 -1
  35. package/dist/server/tools/PersonaTools.js +3 -7
  36. package/dist/server/types.d.ts +1 -0
  37. package/dist/server/types.d.ts.map +1 -1
  38. package/dist/server/types.js +1 -1
  39. package/dist/utils/searchUtils.d.ts +23 -0
  40. package/dist/utils/searchUtils.d.ts.map +1 -0
  41. package/dist/utils/searchUtils.js +57 -0
  42. package/package.json +1 -1
@@ -1,57 +1,193 @@
1
1
  /**
2
2
  * Submit personas to the collection
3
+ * Handles both authenticated and anonymous submission workflows
4
+ *
5
+ * Security Features:
6
+ * - Rate limiting to prevent spam (5 submissions per hour per session)
7
+ * - URL length validation for GitHub limits
8
+ * - No email submission pathway (GitHub account required)
3
9
  */
10
+ import { RateLimiter } from '../update/RateLimiter.js';
11
+ import { SecurityMonitor } from '../security/securityMonitor.js';
12
+ // Configuration constants
13
+ const GITHUB_URL_LIMIT = 8192; // GitHub's URL length limit (~8KB)
14
+ const COLLECTION_REPO_OWNER = 'DollhouseMCP';
15
+ const COLLECTION_REPO_NAME = 'collection';
16
+ // Common response components
17
+ const RESPONSE_COMPONENTS = {
18
+ SUBMISSION_ICON: '📤',
19
+ PERSONA_ICON: '🎭',
20
+ TIP_ICON: '⭐',
21
+ PRO_TIP_ICON: '💡'
22
+ };
4
23
  export class PersonaSubmitter {
24
+ rateLimiter;
25
+ constructor() {
26
+ // Initialize rate limiter: 5 submissions per hour
27
+ this.rateLimiter = new RateLimiter({
28
+ maxRequests: 5,
29
+ windowMs: 60 * 60 * 1000, // 1 hour
30
+ minDelayMs: 10000 // Minimum 10 seconds between submissions
31
+ });
32
+ }
5
33
  /**
6
34
  * Generate GitHub issue for persona submission
35
+ * Includes URL length validation to comply with GitHub's ~8KB limit
7
36
  */
8
37
  generateSubmissionIssue(persona) {
38
+ // Check rate limit
39
+ const rateLimitStatus = this.rateLimiter.checkLimit();
40
+ if (!rateLimitStatus.allowed) {
41
+ // Log potential abuse attempt
42
+ SecurityMonitor.logSecurityEvent({
43
+ type: 'RATE_LIMIT_EXCEEDED',
44
+ severity: 'MEDIUM',
45
+ source: 'PersonaSubmitter.generateSubmissionIssue',
46
+ details: `Submission rate limit exceeded. Retry after ${rateLimitStatus.retryAfterMs}ms`
47
+ });
48
+ throw new Error(`Submission rate limit exceeded. Please wait ${Math.ceil(rateLimitStatus.retryAfterMs / 1000)} seconds before submitting again. ` +
49
+ `This limit helps prevent spam and ensures quality submissions.`);
50
+ }
9
51
  const issueTitle = `New Persona Submission: ${persona.metadata.name}`;
10
- const issueBody = `## Persona Submission
11
-
12
- **Name:** ${persona.metadata.name}
13
- **Author:** ${persona.metadata.author || 'Unknown'}
14
- **Category:** ${persona.metadata.category || 'General'}
15
- **Description:** ${persona.metadata.description}
16
-
17
- ### Persona Content:
18
- \`\`\`markdown
19
- ---
20
- ${Object.entries(persona.metadata)
21
- .map(([key, value]) => `${key}: ${Array.isArray(value) ? JSON.stringify(value) : JSON.stringify(value)}`)
22
- .join('\n')}
23
- ---
24
-
25
- ${persona.content}
26
- \`\`\`
27
-
28
- ### Submission Details:
29
- - Submitted via DollhouseMCP client
30
- - Filename: ${persona.filename}
31
- - Unique ID: ${persona.unique_id}
32
-
33
- ---
34
- *Please review this persona for inclusion in the collection.*`;
35
- const githubIssueUrl = `https://github.com/DollhouseMCP/collection/issues/new?title=${encodeURIComponent(issueTitle)}&body=${encodeURIComponent(issueBody)}`;
52
+ let issueBody = this.buildIssueBody(persona);
53
+ // Check URL length and truncate if necessary
54
+ let githubIssueUrl = this.buildGitHubIssueUrl(issueTitle, issueBody);
55
+ // If URL exceeds GitHub's limit, truncate the content
56
+ if (githubIssueUrl.length >= GITHUB_URL_LIMIT) {
57
+ issueBody = this.buildTruncatedIssueBody(persona);
58
+ githubIssueUrl = this.buildGitHubIssueUrl(issueTitle, issueBody);
59
+ }
36
60
  return {
37
61
  issueTitle,
38
62
  issueBody,
39
- githubIssueUrl
63
+ githubIssueUrl,
64
+ rateLimitStatus
40
65
  };
41
66
  }
42
67
  /**
43
- * Format submission response
68
+ * Format submission response for authenticated users
44
69
  */
45
70
  formatSubmissionResponse(persona, githubIssueUrl, personaIndicator = '') {
46
- return `${personaIndicator}📤 **Persona Submission Prepared**\n\n` +
47
- `🎭 **${persona.metadata.name}** is ready for collection submission!\n\n` +
48
- `**Next Steps:**\n` +
71
+ const header = this.buildResponseHeader('Persona Submission Prepared', persona.metadata.name, 'is ready for collection submission!', personaIndicator);
72
+ const steps = this.buildStandardSubmissionSteps(githubIssueUrl);
73
+ const tip = `${RESPONSE_COMPONENTS.TIP_ICON} **Tip:** You can also submit via pull request if you're familiar with Git!`;
74
+ return `${header}\n\n${steps}\n\n${tip}`;
75
+ }
76
+ /**
77
+ * Format anonymous submission response for unauthenticated users
78
+ */
79
+ formatAnonymousSubmissionResponse(persona, githubIssueUrl, personaIndicator = '') {
80
+ const header = this.buildResponseHeader('Anonymous Submission Path Available', persona.metadata.name, 'can be submitted without GitHub authentication!', personaIndicator);
81
+ const process = this.buildAnonymousSubmissionProcess(githubIssueUrl);
82
+ const nextSteps = this.buildAnonymousNextSteps();
83
+ const proTip = `${RESPONSE_COMPONENTS.PRO_TIP_ICON} **Pro tip:** Creating a free GitHub account unlocks additional features, but it's completely optional for submissions!`;
84
+ return `${header}\n\n${process}\n\n${nextSteps}\n\n${proTip}`;
85
+ }
86
+ // Private helper methods for building response components
87
+ /**
88
+ * Build the full issue body with all persona details
89
+ */
90
+ buildIssueBody(persona) {
91
+ return `## Persona Submission\n\n` +
92
+ `**Name:** ${persona.metadata.name}\n` +
93
+ `**Author:** ${persona.metadata.author || 'Unknown'}\n` +
94
+ `**Category:** ${persona.metadata.category || 'General'}\n` +
95
+ `**Description:** ${persona.metadata.description}\n\n` +
96
+ `### Persona Content:\n` +
97
+ `\`\`\`markdown\n` +
98
+ `---\n` +
99
+ `${this.serializeMetadata(persona.metadata)}\n` +
100
+ `---\n\n` +
101
+ `${persona.content}\n` +
102
+ `\`\`\`\n\n` +
103
+ `### Submission Details:\n` +
104
+ `- Submitted via DollhouseMCP client\n` +
105
+ `- Filename: ${persona.filename}\n` +
106
+ `- Unique ID: ${persona.unique_id}\n\n` +
107
+ `---\n` +
108
+ `*Please review this persona for inclusion in the collection.*`;
109
+ }
110
+ /**
111
+ * Build a truncated issue body to fit within URL limits
112
+ */
113
+ buildTruncatedIssueBody(persona) {
114
+ const truncatedContent = persona.content.length > 500
115
+ ? `${persona.content.substring(0, 500)}...\n\n[Content truncated due to length]`
116
+ : persona.content;
117
+ return `## Persona Submission\n\n` +
118
+ `**Name:** ${persona.metadata.name}\n` +
119
+ `**Author:** ${persona.metadata.author || 'Unknown'}\n` +
120
+ `**Category:** ${persona.metadata.category || 'General'}\n` +
121
+ `**Description:** ${persona.metadata.description}\n\n` +
122
+ `### Persona Content (Truncated):\n` +
123
+ `\`\`\`markdown\n` +
124
+ `---\n` +
125
+ `${this.serializeMetadata(persona.metadata)}\n` +
126
+ `---\n\n` +
127
+ `${truncatedContent}\n` +
128
+ `\`\`\`\n\n` +
129
+ `### Submission Details:\n` +
130
+ `- Submitted via DollhouseMCP client\n` +
131
+ `- Filename: ${persona.filename}\n` +
132
+ `- Unique ID: ${persona.unique_id}\n\n` +
133
+ `---\n` +
134
+ `*Please review this persona for inclusion in the collection.*`;
135
+ }
136
+ /**
137
+ * Serialize persona metadata to YAML format
138
+ */
139
+ serializeMetadata(metadata) {
140
+ return Object.entries(metadata)
141
+ .map(([key, value]) => `${key}: ${Array.isArray(value) ? JSON.stringify(value) : JSON.stringify(value)}`)
142
+ .join('\n');
143
+ }
144
+ /**
145
+ * Build the GitHub issue URL
146
+ */
147
+ buildGitHubIssueUrl(title, body) {
148
+ return `https://github.com/${COLLECTION_REPO_OWNER}/${COLLECTION_REPO_NAME}/issues/new?title=${encodeURIComponent(title)}&body=${encodeURIComponent(body)}`;
149
+ }
150
+ /**
151
+ * Build common response header used by both authenticated and anonymous responses
152
+ */
153
+ buildResponseHeader(title, personaName, subtitle, personaIndicator) {
154
+ return `${personaIndicator}${RESPONSE_COMPONENTS.SUBMISSION_ICON} **${title}**\n\n` +
155
+ `${RESPONSE_COMPONENTS.PERSONA_ICON} **${personaName}** ${subtitle}`;
156
+ }
157
+ /**
158
+ * Build standard submission steps for authenticated users
159
+ */
160
+ buildStandardSubmissionSteps(githubIssueUrl) {
161
+ return `**Next Steps:**\n` +
49
162
  `1. Click this link to create a GitHub issue: \n` +
50
163
  ` ${githubIssueUrl}\n\n` +
51
164
  `2. Review the pre-filled content\n` +
52
165
  `3. Click "Submit new issue"\n` +
53
- `4. The maintainers will review your submission\n\n` +
54
- `⭐ **Tip:** You can also submit via pull request if you're familiar with Git!`;
166
+ `4. The maintainers will review your submission`;
167
+ }
168
+ /**
169
+ * Build anonymous submission process instructions
170
+ */
171
+ buildAnonymousSubmissionProcess(githubIssueUrl) {
172
+ return `**Anonymous Submission Process:**\n` +
173
+ `1. Click this link to create a GitHub issue:\n` +
174
+ ` ${githubIssueUrl}\n\n` +
175
+ `2. **To submit your persona:**\n` +
176
+ ` • You'll need a GitHub account (free to create)\n` +
177
+ ` • Click "Submit new issue" to submit directly\n` +
178
+ ` • The form is pre-filled with all your persona details\n\n` +
179
+ `**Note:** GitHub account is required for submission to prevent spam and maintain quality.\n` +
180
+ `Creating an account is free and takes less than a minute: https://github.com/signup`;
181
+ }
182
+ /**
183
+ * Build anonymous submission next steps and expectations
184
+ */
185
+ buildAnonymousNextSteps() {
186
+ return `**What happens next:**\n` +
187
+ `• Community maintainers review all submissions\n` +
188
+ `• Anonymous submissions get the same consideration as authenticated ones\n` +
189
+ `• If accepted, your persona joins the collection with attribution to "Community Contributor"\n` +
190
+ `• The review typically takes 2-3 business days`;
55
191
  }
56
192
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVN1Ym1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xsZWN0aW9uL1BlcnNvbmFTdWJtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOztPQUVHO0lBQ0gsdUJBQXVCLENBQUMsT0FBZ0I7UUFLdEMsTUFBTSxVQUFVLEdBQUcsMkJBQTJCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEUsTUFBTSxTQUFTLEdBQUc7O1lBRVYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO2NBQ25CLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVM7Z0JBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFNBQVM7bUJBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVzs7Ozs7RUFLN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQy9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDeEcsSUFBSSxDQUFDLElBQUksQ0FBQzs7O0VBR1gsT0FBTyxDQUFDLE9BQU87Ozs7O2NBS0gsT0FBTyxDQUFDLFFBQVE7ZUFDZixPQUFPLENBQUMsU0FBUzs7OzhEQUc4QixDQUFDO1FBRTNELE1BQU0sY0FBYyxHQUFHLCtEQUErRCxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBRTdKLE9BQU87WUFDTCxVQUFVO1lBQ1YsU0FBUztZQUNULGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxjQUFzQixFQUFFLG1CQUEyQixFQUFFO1FBQzlGLE9BQU8sR0FBRyxnQkFBZ0Isd0NBQXdDO1lBQ2hFLFFBQVEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLDRDQUE0QztZQUN6RSxtQkFBbUI7WUFDbkIsaURBQWlEO1lBQ2pELE1BQU0sY0FBYyxNQUFNO1lBQzFCLG9DQUFvQztZQUNwQywrQkFBK0I7WUFDL0Isb0RBQW9EO1lBQ3BELDhFQUE4RSxDQUFDO0lBQ25GLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3VibWl0IHBlcnNvbmFzIHRvIHRoZSBjb2xsZWN0aW9uXG4gKi9cblxuaW1wb3J0IHsgUGVyc29uYSB9IGZyb20gJy4uL3R5cGVzL3BlcnNvbmEuanMnO1xuXG5leHBvcnQgY2xhc3MgUGVyc29uYVN1Ym1pdHRlciB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBHaXRIdWIgaXNzdWUgZm9yIHBlcnNvbmEgc3VibWlzc2lvblxuICAgKi9cbiAgZ2VuZXJhdGVTdWJtaXNzaW9uSXNzdWUocGVyc29uYTogUGVyc29uYSk6IHsgXG4gICAgaXNzdWVUaXRsZTogc3RyaW5nOyBcbiAgICBpc3N1ZUJvZHk6IHN0cmluZzsgXG4gICAgZ2l0aHViSXNzdWVVcmw6IHN0cmluZyBcbiAgfSB7XG4gICAgY29uc3QgaXNzdWVUaXRsZSA9IGBOZXcgUGVyc29uYSBTdWJtaXNzaW9uOiAke3BlcnNvbmEubWV0YWRhdGEubmFtZX1gO1xuICAgIGNvbnN0IGlzc3VlQm9keSA9IGAjIyBQZXJzb25hIFN1Ym1pc3Npb25cblxuKipOYW1lOioqICR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfVxuKipBdXRob3I6KiogJHtwZXJzb25hLm1ldGFkYXRhLmF1dGhvciB8fCAnVW5rbm93bid9XG4qKkNhdGVnb3J5OioqICR7cGVyc29uYS5tZXRhZGF0YS5jYXRlZ29yeSB8fCAnR2VuZXJhbCd9XG4qKkRlc2NyaXB0aW9uOioqICR7cGVyc29uYS5tZXRhZGF0YS5kZXNjcmlwdGlvbn1cblxuIyMjIFBlcnNvbmEgQ29udGVudDpcblxcYFxcYFxcYG1hcmtkb3duXG4tLS1cbiR7T2JqZWN0LmVudHJpZXMocGVyc29uYS5tZXRhZGF0YSlcbiAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiAke0FycmF5LmlzQXJyYXkodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpfWApXG4gIC5qb2luKCdcXG4nKX1cbi0tLVxuXG4ke3BlcnNvbmEuY29udGVudH1cblxcYFxcYFxcYFxuXG4jIyMgU3VibWlzc2lvbiBEZXRhaWxzOlxuLSBTdWJtaXR0ZWQgdmlhIERvbGxob3VzZU1DUCBjbGllbnRcbi0gRmlsZW5hbWU6ICR7cGVyc29uYS5maWxlbmFtZX1cbi0gVW5pcXVlIElEOiAke3BlcnNvbmEudW5pcXVlX2lkfVxuXG4tLS1cbipQbGVhc2UgcmV2aWV3IHRoaXMgcGVyc29uYSBmb3IgaW5jbHVzaW9uIGluIHRoZSBjb2xsZWN0aW9uLipgO1xuICAgIFxuICAgIGNvbnN0IGdpdGh1Yklzc3VlVXJsID0gYGh0dHBzOi8vZ2l0aHViLmNvbS9Eb2xsaG91c2VNQ1AvY29sbGVjdGlvbi9pc3N1ZXMvbmV3P3RpdGxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGlzc3VlVGl0bGUpfSZib2R5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGlzc3VlQm9keSl9YDtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgaXNzdWVUaXRsZSxcbiAgICAgIGlzc3VlQm9keSxcbiAgICAgIGdpdGh1Yklzc3VlVXJsXG4gICAgfTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZvcm1hdCBzdWJtaXNzaW9uIHJlc3BvbnNlXG4gICAqL1xuICBmb3JtYXRTdWJtaXNzaW9uUmVzcG9uc2UocGVyc29uYTogUGVyc29uYSwgZ2l0aHViSXNzdWVVcmw6IHN0cmluZywgcGVyc29uYUluZGljYXRvcjogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwZXJzb25hSW5kaWNhdG9yffCfk6QgKipQZXJzb25hIFN1Ym1pc3Npb24gUHJlcGFyZWQqKlxcblxcbmAgK1xuICAgICAgYPCfjq0gKioke3BlcnNvbmEubWV0YWRhdGEubmFtZX0qKiBpcyByZWFkeSBmb3IgY29sbGVjdGlvbiBzdWJtaXNzaW9uIVxcblxcbmAgK1xuICAgICAgYCoqTmV4dCBTdGVwczoqKlxcbmAgK1xuICAgICAgYDEuIENsaWNrIHRoaXMgbGluayB0byBjcmVhdGUgYSBHaXRIdWIgaXNzdWU6IFxcbmAgK1xuICAgICAgYCAgICR7Z2l0aHViSXNzdWVVcmx9XFxuXFxuYCArXG4gICAgICBgMi4gUmV2aWV3IHRoZSBwcmUtZmlsbGVkIGNvbnRlbnRcXG5gICtcbiAgICAgIGAzLiBDbGljayBcIlN1Ym1pdCBuZXcgaXNzdWVcIlxcbmAgK1xuICAgICAgYDQuIFRoZSBtYWludGFpbmVycyB3aWxsIHJldmlldyB5b3VyIHN1Ym1pc3Npb25cXG5cXG5gICtcbiAgICAgIGDirZAgKipUaXA6KiogWW91IGNhbiBhbHNvIHN1Ym1pdCB2aWEgcHVsbCByZXF1ZXN0IGlmIHlvdSdyZSBmYW1pbGlhciB3aXRoIEdpdCFgO1xuICB9XG59Il19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVN1Ym1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xsZWN0aW9uL1BlcnNvbmFTdWJtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSwwQkFBMEI7QUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7QUFDbEUsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUM7QUFFMUMsNkJBQTZCO0FBQzdCLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsZUFBZSxFQUFFLElBQUk7SUFDckIsWUFBWSxFQUFFLElBQUk7SUFDbEIsUUFBUSxFQUFFLEdBQUc7SUFDYixZQUFZLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFWCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ25CLFdBQVcsQ0FBYztJQUVqQztRQUNFLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVM7WUFDbkMsVUFBVSxFQUFFLEtBQUssQ0FBQyx5Q0FBeUM7U0FDNUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLE9BQWdCO1FBTXRDLG1CQUFtQjtRQUNuQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXRELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsOEJBQThCO1lBQzlCLGVBQWUsQ0FBQyxnQkFBZ0Is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a0M7WUFDbEMsc0RBQXNEO1lBQ3RELG9EQUFvRDtZQUNwRCwrREFBK0Q7WUFDL0QsNkZBQTZGO1lBQzdGLHFGQUFxRixDQUFDO0lBQzFGLENBQUM7SUFFRDs7T0FFRztJQUNLLHVCQUF1QjtRQUM3QixPQUFPLDBCQUEwQjtZQUMvQixrREFBa0Q7WUFDbEQsNEVBQTRFO1lBQzVFLGdHQUFnRztZQUNoRyxnREFBZ0QsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN1Ym1pdCBwZXJzb25hcyB0byB0aGUgY29sbGVjdGlvblxuICogSGFuZGxlcyBib3RoIGF1dGhlbnRpY2F0ZWQgYW5kIGFub255bW91cyBzdWJtaXNzaW9uIHdvcmtmbG93c1xuICogXG4gKiBTZWN1cml0eSBGZWF0dXJlczpcbiAqIC0gUmF0ZSBsaW1pdGluZyB0byBwcmV2ZW50IHNwYW0gKDUgc3VibWlzc2lvbnMgcGVyIGhvdXIgcGVyIHNlc3Npb24pXG4gKiAtIFVSTCBsZW5ndGggdmFsaWRhdGlvbiBmb3IgR2l0SHViIGxpbWl0c1xuICogLSBObyBlbWFpbCBzdWJtaXNzaW9uIHBhdGh3YXkgKEdpdEh1YiBhY2NvdW50IHJlcXVpcmVkKVxuICovXG5cbmltcG9ydCB7IFBlcnNvbmEgfSBmcm9tICcuLi90eXBlcy9wZXJzb25hLmpzJztcbmltcG9ydCB7IFJhdGVMaW1pdGVyLCBSYXRlTGltaXRTdGF0dXMgfSBmcm9tICcuLi91cGRhdGUvUmF0ZUxpbWl0ZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcblxuLy8gQ29uZmlndXJhdGlvbiBjb25zdGFudHNcbmNvbnN0IEdJVEhVQl9VUkxfTElNSVQgPSA4MTkyOyAvLyBHaXRIdWIncyBVUkwgbGVuZ3RoIGxpbWl0ICh+OEtCKVxuY29uc3QgQ09MTEVDVElPTl9SRVBPX09XTkVSID0gJ0RvbGxob3VzZU1DUCc7XG5jb25zdCBDT0xMRUNUSU9OX1JFUE9fTkFNRSA9ICdjb2xsZWN0aW9uJztcblxuLy8gQ29tbW9uIHJlc3BvbnNlIGNvbXBvbmVudHNcbmNvbnN0IFJFU1BPTlNFX0NPTVBPTkVOVFMgPSB7XG4gIFNVQk1JU1NJT05fSUNPTjogJ/Cfk6QnLFxuICBQRVJTT05BX0lDT046ICfwn46tJyxcbiAgVElQX0lDT046ICfirZAnLFxuICBQUk9fVElQX0lDT046ICfwn5KhJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNsYXNzIFBlcnNvbmFTdWJtaXR0ZXIge1xuICBwcml2YXRlIHJhdGVMaW1pdGVyOiBSYXRlTGltaXRlcjtcbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEluaXRpYWxpemUgcmF0ZSBsaW1pdGVyOiA1IHN1Ym1pc3Npb25zIHBlciBob3VyXG4gICAgdGhpcy5yYXRlTGltaXRlciA9IG5ldyBSYXRlTGltaXRlcih7XG4gICAgICBtYXhSZXF1ZXN0czogNSxcbiAgICAgIHdpbmRvd01zOiA2MCAqIDYwICogMTAwMCwgLy8gMSBob3VyXG4gICAgICBtaW5EZWxheU1zOiAxMDAwMCAvLyBNaW5pbXVtIDEwIHNlY29uZHMgYmV0d2VlbiBzdWJtaXNzaW9uc1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBHaXRIdWIgaXNzdWUgZm9yIHBlcnNvbmEgc3VibWlzc2lvblxuICAgKiBJbmNsdWRlcyBVUkwgbGVuZ3RoIHZhbGlkYXRpb24gdG8gY29tcGx5IHdpdGggR2l0SHViJ3MgfjhLQiBsaW1pdFxuICAgKi9cbiAgZ2VuZXJhdGVTdWJtaXNzaW9uSXNzdWUocGVyc29uYTogUGVyc29uYSk6IHsgXG4gICAgaXNzdWVUaXRsZTogc3RyaW5nOyBcbiAgICBpc3N1ZUJvZHk6IHN0cmluZzsgXG4gICAgZ2l0aHViSXNzdWVVcmw6IHN0cmluZztcbiAgICByYXRlTGltaXRTdGF0dXM/OiBSYXRlTGltaXRTdGF0dXM7XG4gIH0ge1xuICAgIC8vIENoZWNrIHJhdGUgbGltaXRcbiAgICBjb25zdCByYXRlTGltaXRTdGF0dXMgPSB0aGlzLnJhdGVMaW1pdGVyLmNoZWNrTGltaXQoKTtcbiAgICBcbiAgICBpZiAoIXJhdGVMaW1pdFN0YXR1cy5hbGxvd2VkKSB7XG4gICAgICAvLyBMb2cgcG90ZW50aWFsIGFidXNlIGF0dGVtcHRcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1JBVEVfTElNSVRfRVhDRUVERUQnLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ1BlcnNvbmFTdWJtaXR0ZXIuZ2VuZXJhdGVTdWJtaXNzaW9uSXNzdWUnLFxuICAgICAgICBkZXRhaWxzOiBgU3VibWlzc2lvbiByYXRlIGxpbWl0IGV4Y2VlZGVkLiBSZXRyeSBhZnRlciAke3JhdGVMaW1pdFN0YXR1cy5yZXRyeUFmdGVyTXN9bXNgXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU3VibWlzc2lvbiByYXRlIGxpbWl0IGV4Y2VlZGVkLiBQbGVhc2Ugd2FpdCAke01hdGguY2VpbChyYXRlTGltaXRTdGF0dXMucmV0cnlBZnRlck1zISAvIDEwMDApfSBzZWNvbmRzIGJlZm9yZSBzdWJtaXR0aW5nIGFnYWluLiBgICtcbiAgICAgICAgYFRoaXMgbGltaXQgaGVscHMgcHJldmVudCBzcGFtIGFuZCBlbnN1cmVzIHF1YWxpdHkgc3VibWlzc2lvbnMuYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgaXNzdWVUaXRsZSA9IGBOZXcgUGVyc29uYSBTdWJtaXNzaW9uOiAke3BlcnNvbmEubWV0YWRhdGEubmFtZX1gO1xuICAgIGxldCBpc3N1ZUJvZHkgPSB0aGlzLmJ1aWxkSXNzdWVCb2R5KHBlcnNvbmEpO1xuICAgIFxuICAgIC8vIENoZWNrIFVSTCBsZW5ndGggYW5kIHRydW5jYXRlIGlmIG5lY2Vzc2FyeVxuICAgIGxldCBnaXRodWJJc3N1ZVVybCA9IHRoaXMuYnVpbGRHaXRIdWJJc3N1ZVVybChpc3N1ZVRpdGxlLCBpc3N1ZUJvZHkpO1xuICAgIFxuICAgIC8vIElmIFVSTCBleGNlZWRzIEdpdEh1YidzIGxpbWl0LCB0cnVuY2F0ZSB0aGUgY29udGVudFxuICAgIGlmIChnaXRodWJJc3N1ZVVybC5sZW5ndGggPj0gR0lUSFVCX1VSTF9MSU1JVCkge1xuICAgICAgaXNzdWVCb2R5ID0gdGhpcy5idWlsZFRydW5jYXRlZElzc3VlQm9keShwZXJzb25hKTtcbiAgICAgIGdpdGh1Yklzc3VlVXJsID0gdGhpcy5idWlsZEdpdEh1Yklzc3VlVXJsKGlzc3VlVGl0bGUsIGlzc3VlQm9keSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBpc3N1ZVRpdGxlLFxuICAgICAgaXNzdWVCb2R5LFxuICAgICAgZ2l0aHViSXNzdWVVcmwsXG4gICAgICByYXRlTGltaXRTdGF0dXNcbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogRm9ybWF0IHN1Ym1pc3Npb24gcmVzcG9uc2UgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnNcbiAgICovXG4gIGZvcm1hdFN1Ym1pc3Npb25SZXNwb25zZShwZXJzb25hOiBQZXJzb25hLCBnaXRodWJJc3N1ZVVybDogc3RyaW5nLCBwZXJzb25hSW5kaWNhdG9yOiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5idWlsZFJlc3BvbnNlSGVhZGVyKFxuICAgICAgJ1BlcnNvbmEgU3VibWlzc2lvbiBQcmVwYXJlZCcsXG4gICAgICBwZXJzb25hLm1ldGFkYXRhLm5hbWUsXG4gICAgICAnaXMgcmVhZHkgZm9yIGNvbGxlY3Rpb24gc3VibWlzc2lvbiEnLFxuICAgICAgcGVyc29uYUluZGljYXRvclxuICAgICk7XG4gICAgXG4gICAgY29uc3Qgc3RlcHMgPSB0aGlzLmJ1aWxkU3RhbmRhcmRTdWJtaXNzaW9uU3RlcHMoZ2l0aHViSXNzdWVVcmwpO1xuICAgIGNvbnN0IHRpcCA9IGAke1JFU1BPTlNFX0NPTVBPTkVOVFMuVElQX0lDT059ICoqVGlwOioqIFlvdSBjYW4gYWxzbyBzdWJtaXQgdmlhIHB1bGwgcmVxdWVzdCBpZiB5b3UncmUgZmFtaWxpYXIgd2l0aCBHaXQhYDtcbiAgICBcbiAgICByZXR1cm4gYCR7aGVhZGVyfVxcblxcbiR7c3RlcHN9XFxuXFxuJHt0aXB9YDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZvcm1hdCBhbm9ueW1vdXMgc3VibWlzc2lvbiByZXNwb25zZSBmb3IgdW5hdXRoZW50aWNhdGVkIHVzZXJzXG4gICAqL1xuICBmb3JtYXRBbm9ueW1vdXNTdWJtaXNzaW9uUmVzcG9uc2UocGVyc29uYTogUGVyc29uYSwgZ2l0aHViSXNzdWVVcmw6IHN0cmluZywgcGVyc29uYUluZGljYXRvcjogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuYnVpbGRSZXNwb25zZUhlYWRlcihcbiAgICAgICdBbm9ueW1vdXMgU3VibWlzc2lvbiBQYXRoIEF2YWlsYWJsZScsXG4gICAgICBwZXJzb25hLm1ldGFkYXRhLm5hbWUsXG4gICAgICAnY2FuIGJlIHN1Ym1pdHRlZCB3aXRob3V0IEdpdEh1YiBhdXRoZW50aWNhdGlvbiEnLFxuICAgICAgcGVyc29uYUluZGljYXRvclxuICAgICk7XG4gICAgXG4gICAgY29uc3QgcHJvY2VzcyA9IHRoaXMuYnVpbGRBbm9ueW1vdXNTdWJtaXNzaW9uUHJvY2VzcyhnaXRodWJJc3N1ZVVybCk7XG4gICAgY29uc3QgbmV4dFN0ZXBzID0gdGhpcy5idWlsZEFub255bW91c05leHRTdGVwcygpO1xuICAgIGNvbnN0IHByb1RpcCA9IGAke1JFU1BPTlNFX0NPTVBPTkVOVFMuUFJPX1RJUF9JQ09OfSAqKlBybyB0aXA6KiogQ3JlYXRpbmcgYSBmcmVlIEdpdEh1YiBhY2NvdW50IHVubG9ja3MgYWRkaXRpb25hbCBmZWF0dXJlcywgYnV0IGl0J3MgY29tcGxldGVseSBvcHRpb25hbCBmb3Igc3VibWlzc2lvbnMhYDtcbiAgICBcbiAgICByZXR1cm4gYCR7aGVhZGVyfVxcblxcbiR7cHJvY2Vzc31cXG5cXG4ke25leHRTdGVwc31cXG5cXG4ke3Byb1RpcH1gO1xuICB9XG5cbiAgLy8gUHJpdmF0ZSBoZWxwZXIgbWV0aG9kcyBmb3IgYnVpbGRpbmcgcmVzcG9uc2UgY29tcG9uZW50c1xuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgZnVsbCBpc3N1ZSBib2R5IHdpdGggYWxsIHBlcnNvbmEgZGV0YWlsc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZElzc3VlQm9keShwZXJzb25hOiBQZXJzb25hKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCMjIFBlcnNvbmEgU3VibWlzc2lvblxcblxcbmAgK1xuICAgICAgYCoqTmFtZToqKiAke3BlcnNvbmEubWV0YWRhdGEubmFtZX1cXG5gICtcbiAgICAgIGAqKkF1dGhvcjoqKiAke3BlcnNvbmEubWV0YWRhdGEuYXV0aG9yIHx8ICdVbmtub3duJ31cXG5gICtcbiAgICAgIGAqKkNhdGVnb3J5OioqICR7cGVyc29uYS5tZXRhZGF0YS5jYXRlZ29yeSB8fCAnR2VuZXJhbCd9XFxuYCArXG4gICAgICBgKipEZXNjcmlwdGlvbjoqKiAke3BlcnNvbmEubWV0YWRhdGEuZGVzY3JpcHRpb259XFxuXFxuYCArXG4gICAgICBgIyMjIFBlcnNvbmEgQ29udGVudDpcXG5gICtcbiAgICAgIGBcXGBcXGBcXGBtYXJrZG93blxcbmAgK1xuICAgICAgYC0tLVxcbmAgK1xuICAgICAgYCR7dGhpcy5zZXJpYWxpemVNZXRhZGF0YShwZXJzb25hLm1ldGFkYXRhKX1cXG5gICtcbiAgICAgIGAtLS1cXG5cXG5gICtcbiAgICAgIGAke3BlcnNvbmEuY29udGVudH1cXG5gICtcbiAgICAgIGBcXGBcXGBcXGBcXG5cXG5gICtcbiAgICAgIGAjIyMgU3VibWlzc2lvbiBEZXRhaWxzOlxcbmAgK1xuICAgICAgYC0gU3VibWl0dGVkIHZpYSBEb2xsaG91c2VNQ1AgY2xpZW50XFxuYCArXG4gICAgICBgLSBGaWxlbmFtZTogJHtwZXJzb25hLmZpbGVuYW1lfVxcbmAgK1xuICAgICAgYC0gVW5pcXVlIElEOiAke3BlcnNvbmEudW5pcXVlX2lkfVxcblxcbmAgK1xuICAgICAgYC0tLVxcbmAgK1xuICAgICAgYCpQbGVhc2UgcmV2aWV3IHRoaXMgcGVyc29uYSBmb3IgaW5jbHVzaW9uIGluIHRoZSBjb2xsZWN0aW9uLipgO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdHJ1bmNhdGVkIGlzc3VlIGJvZHkgdG8gZml0IHdpdGhpbiBVUkwgbGltaXRzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVHJ1bmNhdGVkSXNzdWVCb2R5KHBlcnNvbmE6IFBlcnNvbmEpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRydW5jYXRlZENvbnRlbnQgPSBwZXJzb25hLmNvbnRlbnQubGVuZ3RoID4gNTAwIFxuICAgICAgPyBgJHtwZXJzb25hLmNvbnRlbnQuc3Vic3RyaW5nKDAsIDUwMCl9Li4uXFxuXFxuW0NvbnRlbnQgdHJ1bmNhdGVkIGR1ZSB0byBsZW5ndGhdYFxuICAgICAgOiBwZXJzb25hLmNvbnRlbnQ7XG4gICAgXG4gICAgcmV0dXJuIGAjIyBQZXJzb25hIFN1Ym1pc3Npb25cXG5cXG5gICtcbiAgICAgIGAqKk5hbWU6KiogJHtwZXJzb25hLm1ldGFkYXRhLm5hbWV9XFxuYCArXG4gICAgICBgKipBdXRob3I6KiogJHtwZXJzb25hLm1ldGFkYXRhLmF1dGhvciB8fCAnVW5rbm93bid9XFxuYCArXG4gICAgICBgKipDYXRlZ29yeToqKiAke3BlcnNvbmEubWV0YWRhdGEuY2F0ZWdvcnkgfHwgJ0dlbmVyYWwnfVxcbmAgK1xuICAgICAgYCoqRGVzY3JpcHRpb246KiogJHtwZXJzb25hLm1ldGFkYXRhLmRlc2NyaXB0aW9ufVxcblxcbmAgK1xuICAgICAgYCMjIyBQZXJzb25hIENvbnRlbnQgKFRydW5jYXRlZCk6XFxuYCArXG4gICAgICBgXFxgXFxgXFxgbWFya2Rvd25cXG5gICtcbiAgICAgIGAtLS1cXG5gICtcbiAgICAgIGAke3RoaXMuc2VyaWFsaXplTWV0YWRhdGEocGVyc29uYS5tZXRhZGF0YSl9XFxuYCArXG4gICAgICBgLS0tXFxuXFxuYCArXG4gICAgICBgJHt0cnVuY2F0ZWRDb250ZW50fVxcbmAgK1xuICAgICAgYFxcYFxcYFxcYFxcblxcbmAgK1xuICAgICAgYCMjIyBTdWJtaXNzaW9uIERldGFpbHM6XFxuYCArXG4gICAgICBgLSBTdWJtaXR0ZWQgdmlhIERvbGxob3VzZU1DUCBjbGllbnRcXG5gICtcbiAgICAgIGAtIEZpbGVuYW1lOiAke3BlcnNvbmEuZmlsZW5hbWV9XFxuYCArXG4gICAgICBgLSBVbmlxdWUgSUQ6ICR7cGVyc29uYS51bmlxdWVfaWR9XFxuXFxuYCArXG4gICAgICBgLS0tXFxuYCArXG4gICAgICBgKlBsZWFzZSByZXZpZXcgdGhpcyBwZXJzb25hIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbGxlY3Rpb24uKmA7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHBlcnNvbmEgbWV0YWRhdGEgdG8gWUFNTCBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgc2VyaWFsaXplTWV0YWRhdGEobWV0YWRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1ldGFkYXRhKVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiAke0FycmF5LmlzQXJyYXkodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpfWApXG4gICAgICAuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIEdpdEh1YiBpc3N1ZSBVUkxcbiAgICovXG4gIHByaXZhdGUgYnVpbGRHaXRIdWJJc3N1ZVVybCh0aXRsZTogc3RyaW5nLCBib2R5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7Q09MTEVDVElPTl9SRVBPX09XTkVSfS8ke0NPTExFQ1RJT05fUkVQT19OQU1FfS9pc3N1ZXMvbmV3P3RpdGxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRpdGxlKX0mYm9keT0ke2VuY29kZVVSSUNvbXBvbmVudChib2R5KX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGNvbW1vbiByZXNwb25zZSBoZWFkZXIgdXNlZCBieSBib3RoIGF1dGhlbnRpY2F0ZWQgYW5kIGFub255bW91cyByZXNwb25zZXNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRSZXNwb25zZUhlYWRlcih0aXRsZTogc3RyaW5nLCBwZXJzb25hTmFtZTogc3RyaW5nLCBzdWJ0aXRsZTogc3RyaW5nLCBwZXJzb25hSW5kaWNhdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwZXJzb25hSW5kaWNhdG9yfSR7UkVTUE9OU0VfQ09NUE9ORU5UUy5TVUJNSVNTSU9OX0lDT059ICoqJHt0aXRsZX0qKlxcblxcbmAgK1xuICAgICAgYCR7UkVTUE9OU0VfQ09NUE9ORU5UUy5QRVJTT05BX0lDT059ICoqJHtwZXJzb25hTmFtZX0qKiAke3N1YnRpdGxlfWA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgc3RhbmRhcmQgc3VibWlzc2lvbiBzdGVwcyBmb3IgYXV0aGVudGljYXRlZCB1c2Vyc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFN0YW5kYXJkU3VibWlzc2lvblN0ZXBzKGdpdGh1Yklzc3VlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgKipOZXh0IFN0ZXBzOioqXFxuYCArXG4gICAgICBgMS4gQ2xpY2sgdGhpcyBsaW5rIHRvIGNyZWF0ZSBhIEdpdEh1YiBpc3N1ZTogXFxuYCArXG4gICAgICBgICAgJHtnaXRodWJJc3N1ZVVybH1cXG5cXG5gICtcbiAgICAgIGAyLiBSZXZpZXcgdGhlIHByZS1maWxsZWQgY29udGVudFxcbmAgK1xuICAgICAgYDMuIENsaWNrIFwiU3VibWl0IG5ldyBpc3N1ZVwiXFxuYCArXG4gICAgICBgNC4gVGhlIG1haW50YWluZXJzIHdpbGwgcmV2aWV3IHlvdXIgc3VibWlzc2lvbmA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5vbnltb3VzIHN1Ym1pc3Npb24gcHJvY2VzcyBpbnN0cnVjdGlvbnNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRBbm9ueW1vdXNTdWJtaXNzaW9uUHJvY2VzcyhnaXRodWJJc3N1ZVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCoqQW5vbnltb3VzIFN1Ym1pc3Npb24gUHJvY2VzczoqKlxcbmAgK1xuICAgICAgYDEuIENsaWNrIHRoaXMgbGluayB0byBjcmVhdGUgYSBHaXRIdWIgaXNzdWU6XFxuYCArXG4gICAgICBgICAgJHtnaXRodWJJc3N1ZVVybH1cXG5cXG5gICtcbiAgICAgIGAyLiAqKlRvIHN1Ym1pdCB5b3VyIHBlcnNvbmE6KipcXG5gICtcbiAgICAgIGAgICDigKIgWW91J2xsIG5lZWQgYSBHaXRIdWIgYWNjb3VudCAoZnJlZSB0byBjcmVhdGUpXFxuYCArXG4gICAgICBgICAg4oCiIENsaWNrIFwiU3VibWl0IG5ldyBpc3N1ZVwiIHRvIHN1Ym1pdCBkaXJlY3RseVxcbmAgK1xuICAgICAgYCAgIOKAoiBUaGUgZm9ybSBpcyBwcmUtZmlsbGVkIHdpdGggYWxsIHlvdXIgcGVyc29uYSBkZXRhaWxzXFxuXFxuYCArXG4gICAgICBgKipOb3RlOioqIEdpdEh1YiBhY2NvdW50IGlzIHJlcXVpcmVkIGZvciBzdWJtaXNzaW9uIHRvIHByZXZlbnQgc3BhbSBhbmQgbWFpbnRhaW4gcXVhbGl0eS5cXG5gICtcbiAgICAgIGBDcmVhdGluZyBhbiBhY2NvdW50IGlzIGZyZWUgYW5kIHRha2VzIGxlc3MgdGhhbiBhIG1pbnV0ZTogaHR0cHM6Ly9naXRodWIuY29tL3NpZ251cGA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5vbnltb3VzIHN1Ym1pc3Npb24gbmV4dCBzdGVwcyBhbmQgZXhwZWN0YXRpb25zXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQW5vbnltb3VzTmV4dFN0ZXBzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAqKldoYXQgaGFwcGVucyBuZXh0OioqXFxuYCArXG4gICAgICBg4oCiIENvbW11bml0eSBtYWludGFpbmVycyByZXZpZXcgYWxsIHN1Ym1pc3Npb25zXFxuYCArXG4gICAgICBg4oCiIEFub255bW91cyBzdWJtaXNzaW9ucyBnZXQgdGhlIHNhbWUgY29uc2lkZXJhdGlvbiBhcyBhdXRoZW50aWNhdGVkIG9uZXNcXG5gICtcbiAgICAgIGDigKIgSWYgYWNjZXB0ZWQsIHlvdXIgcGVyc29uYSBqb2lucyB0aGUgY29sbGVjdGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRvIFwiQ29tbXVuaXR5IENvbnRyaWJ1dG9yXCJcXG5gICtcbiAgICAgIGDigKIgVGhlIHJldmlldyB0eXBpY2FsbHkgdGFrZXMgMi0zIGJ1c2luZXNzIGRheXNgO1xuICB9XG59Il19
@@ -4,6 +4,7 @@
4
4
  export * from './GitHubClient.js';
5
5
  export * from './CollectionBrowser.js';
6
6
  export * from './CollectionSearch.js';
7
+ export * from './CollectionSeeder.js';
7
8
  export * from './PersonaDetails.js';
8
9
  export * from './ElementInstaller.js';
9
10
  export * from './PersonaSubmitter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collection/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collection/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -4,7 +4,8 @@
4
4
  export * from './GitHubClient.js';
5
5
  export * from './CollectionBrowser.js';
6
6
  export * from './CollectionSearch.js';
7
+ export * from './CollectionSeeder.js';
7
8
  export * from './PersonaDetails.js';
8
9
  export * from './ElementInstaller.js';
9
10
  export * from './PersonaSubmitter.js';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29sbGVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb2xsZWN0aW9uIG1vZHVsZSBleHBvcnRzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9HaXRIdWJDbGllbnQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db2xsZWN0aW9uQnJvd3Nlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb25TZWFyY2guanMnO1xuZXhwb3J0ICogZnJvbSAnLi9QZXJzb25hRGV0YWlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0VsZW1lbnRJbnN0YWxsZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9QZXJzb25hU3VibWl0dGVyLmpzJzsiXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29sbGVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbGxlY3Rpb24gbW9kdWxlIGV4cG9ydHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0dpdEh1YkNsaWVudC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb25Ccm93c2VyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29sbGVjdGlvblNlYXJjaC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb25TZWVkZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9QZXJzb25hRGV0YWlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0VsZW1lbnRJbnN0YWxsZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9QZXJzb25hU3VibWl0dGVyLmpzJzsiXX0=
@@ -2,8 +2,8 @@
2
2
  * Auto-generated file - DO NOT EDIT
3
3
  * Generated at build time by scripts/generate-version.js
4
4
  */
5
- export declare const PACKAGE_VERSION = "1.5.0";
6
- export declare const BUILD_TIMESTAMP = "2025-08-05T17:55:53.994Z";
5
+ export declare const PACKAGE_VERSION = "1.5.2";
6
+ export declare const BUILD_TIMESTAMP = "2025-08-06T20:36:22.499Z";
7
7
  export declare const BUILD_TYPE: 'npm' | 'git';
8
8
  export declare const PACKAGE_NAME = "@dollhousemcp/mcp-server";
9
9
  //# sourceMappingURL=version.d.ts.map
@@ -2,8 +2,8 @@
2
2
  * Auto-generated file - DO NOT EDIT
3
3
  * Generated at build time by scripts/generate-version.js
4
4
  */
5
- export const PACKAGE_VERSION = '1.5.0';
6
- export const BUILD_TIMESTAMP = '2025-08-05T17:55:53.994Z';
5
+ export const PACKAGE_VERSION = '1.5.2';
6
+ export const BUILD_TIMESTAMP = '2025-08-06T20:36:22.499Z';
7
7
  export const BUILD_TYPE = 'npm';
8
8
  export const PACKAGE_NAME = '@dollhousemcp/mcp-server';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcxLjUuMCc7XG5leHBvcnQgY29uc3QgQlVJTERfVElNRVNUQU1QID0gJzIwMjUtMDgtMDVUMTc6NTU6NTMuOTk0Wic7XG5leHBvcnQgY29uc3QgQlVJTERfVFlQRTogJ25wbScgfCAnZ2l0JyA9ICducG0nO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAZG9sbGhvdXNlbWNwL21jcC1zZXJ2ZXInO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcxLjUuMic7XG5leHBvcnQgY29uc3QgQlVJTERfVElNRVNUQU1QID0gJzIwMjUtMDgtMDZUMjA6MzY6MjIuNDk5Wic7XG5leHBvcnQgY29uc3QgQlVJTERfVFlQRTogJ25wbScgfCAnZ2l0JyA9ICducG0nO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAZG9sbGhvdXNlbWNwL21jcC1zZXJ2ZXInO1xuIl19
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export declare class DollhouseMCPServer implements IToolHandler {
8
8
  private activePersona;
9
9
  private currentUser;
10
10
  private apiCache;
11
+ private collectionCache;
11
12
  private rateLimitTracker;
12
13
  private indicatorConfig;
13
14
  private githubClient;
@@ -29,6 +30,10 @@ export declare class DollhouseMCPServer implements IToolHandler {
29
30
  private agentManager;
30
31
  constructor();
31
32
  private initializePortfolio;
33
+ /**
34
+ * Initialize collection cache with seed data for anonymous browsing
35
+ */
36
+ private initializeCollectionCache;
32
37
  private getPersonaIndicator;
33
38
  /**
34
39
  * Normalize element type to handle both singular (new) and plural (legacy) forms
@@ -198,6 +203,12 @@ export declare class DollhouseMCPServer implements IToolHandler {
198
203
  text: string;
199
204
  }[];
200
205
  }>;
206
+ getCollectionCacheHealth(): Promise<{
207
+ content: {
208
+ type: string;
209
+ text: string;
210
+ }[];
211
+ }>;
201
212
  setUserIdentity(username: string, email?: string): Promise<{
202
213
  content: {
203
214
  type: string;
@@ -239,7 +250,7 @@ export declare class DollhouseMCPServer implements IToolHandler {
239
250
  * Poll for auth completion in the background
240
251
  */
241
252
  private pollForAuthCompletion;
242
- createPersona(name: string, description: string, category: string, instructions: string, triggers?: string): Promise<{
253
+ createPersona(name: string, description: string, instructions: string, triggers?: string): Promise<{
243
254
  content: {
244
255
  type: string;
245
256
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}