@dollhousemcp/mcp-server 1.5.1 → 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 (38) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +9 -5
  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/PersonaSubmitter.d.ts +48 -1
  20. package/dist/collection/PersonaSubmitter.d.ts.map +1 -1
  21. package/dist/collection/PersonaSubmitter.js +170 -34
  22. package/dist/collection/index.d.ts +1 -0
  23. package/dist/collection/index.d.ts.map +1 -1
  24. package/dist/collection/index.js +2 -1
  25. package/dist/generated/version.d.ts +2 -2
  26. package/dist/generated/version.js +3 -3
  27. package/dist/index.d.ts +11 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +139 -25
  30. package/dist/server/tools/CollectionTools.d.ts.map +1 -1
  31. package/dist/server/tools/CollectionTools.js +12 -1
  32. package/dist/server/types.d.ts +1 -0
  33. package/dist/server/types.d.ts.map +1 -1
  34. package/dist/server/types.js +1 -1
  35. package/dist/utils/searchUtils.d.ts +23 -0
  36. package/dist/utils/searchUtils.d.ts.map +1 -0
  37. package/dist/utils/searchUtils.js +57 -0
  38. package/package.json +1 -1
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Collection seeder for anonymous/offline browsing
3
+ * Provides basic collection data that doesn't require GitHub authentication
4
+ */
5
+ /**
6
+ * Basic collection data that can be used without GitHub API access
7
+ * This provides a minimal set of well-known collection items
8
+ */
9
+ export class CollectionSeeder {
10
+ // Cache the seed data as a static property for memory efficiency
11
+ static cachedSeedData = null;
12
+ /**
13
+ * Get seed data for the collection cache
14
+ * This includes popular/essential items that are commonly requested
15
+ * Data is cached as a static property to avoid recreation on every call
16
+ */
17
+ static getSeedData() {
18
+ // Return cached data if available
19
+ if (CollectionSeeder.cachedSeedData) {
20
+ return CollectionSeeder.cachedSeedData;
21
+ }
22
+ // Create and cache the seed data
23
+ CollectionSeeder.cachedSeedData = [
24
+ // Popular Personas
25
+ {
26
+ name: 'creative-writer.md',
27
+ path: 'library/personas/creative-writer.md',
28
+ sha: 'seed-data',
29
+ last_modified: new Date().toISOString()
30
+ },
31
+ {
32
+ name: 'eli5-explainer.md',
33
+ path: 'library/personas/eli5-explainer.md',
34
+ sha: 'seed-data',
35
+ last_modified: new Date().toISOString()
36
+ },
37
+ {
38
+ name: 'debug-detective.md',
39
+ path: 'library/personas/debug-detective.md',
40
+ sha: 'seed-data',
41
+ last_modified: new Date().toISOString()
42
+ },
43
+ {
44
+ name: 'technical-analyst.md',
45
+ path: 'library/personas/technical-analyst.md',
46
+ sha: 'seed-data',
47
+ last_modified: new Date().toISOString()
48
+ },
49
+ {
50
+ name: 'business-consultant.md',
51
+ path: 'library/personas/business-consultant.md',
52
+ sha: 'seed-data',
53
+ last_modified: new Date().toISOString()
54
+ },
55
+ {
56
+ name: 'security-analyst.md',
57
+ path: 'library/personas/security-analyst.md',
58
+ sha: 'seed-data',
59
+ last_modified: new Date().toISOString()
60
+ },
61
+ // Popular Skills
62
+ {
63
+ name: 'code-review.md',
64
+ path: 'library/skills/code-review.md',
65
+ sha: 'seed-data',
66
+ last_modified: new Date().toISOString()
67
+ },
68
+ {
69
+ name: 'creative-writing.md',
70
+ path: 'library/skills/creative-writing.md',
71
+ sha: 'seed-data',
72
+ last_modified: new Date().toISOString()
73
+ },
74
+ {
75
+ name: 'data-analysis.md',
76
+ path: 'library/skills/data-analysis.md',
77
+ sha: 'seed-data',
78
+ last_modified: new Date().toISOString()
79
+ },
80
+ {
81
+ name: 'research.md',
82
+ path: 'library/skills/research.md',
83
+ sha: 'seed-data',
84
+ last_modified: new Date().toISOString()
85
+ },
86
+ {
87
+ name: 'translation.md',
88
+ path: 'library/skills/translation.md',
89
+ sha: 'seed-data',
90
+ last_modified: new Date().toISOString()
91
+ },
92
+ {
93
+ name: 'threat-modeling.md',
94
+ path: 'library/skills/threat-modeling.md',
95
+ sha: 'seed-data',
96
+ last_modified: new Date().toISOString()
97
+ },
98
+ {
99
+ name: 'penetration-testing.md',
100
+ path: 'library/skills/penetration-testing.md',
101
+ sha: 'seed-data',
102
+ last_modified: new Date().toISOString()
103
+ },
104
+ // Popular Agents
105
+ {
106
+ name: 'code-reviewer.md',
107
+ path: 'library/agents/code-reviewer.md',
108
+ sha: 'seed-data',
109
+ last_modified: new Date().toISOString()
110
+ },
111
+ {
112
+ name: 'research-assistant.md',
113
+ path: 'library/agents/research-assistant.md',
114
+ sha: 'seed-data',
115
+ last_modified: new Date().toISOString()
116
+ },
117
+ {
118
+ name: 'task-manager.md',
119
+ path: 'library/agents/task-manager.md',
120
+ sha: 'seed-data',
121
+ last_modified: new Date().toISOString()
122
+ },
123
+ // Popular Templates
124
+ {
125
+ name: 'code-documentation.md',
126
+ path: 'library/templates/code-documentation.md',
127
+ sha: 'seed-data',
128
+ last_modified: new Date().toISOString()
129
+ },
130
+ {
131
+ name: 'email-professional.md',
132
+ path: 'library/templates/email-professional.md',
133
+ sha: 'seed-data',
134
+ last_modified: new Date().toISOString()
135
+ },
136
+ {
137
+ name: 'meeting-notes.md',
138
+ path: 'library/templates/meeting-notes.md',
139
+ sha: 'seed-data',
140
+ last_modified: new Date().toISOString()
141
+ },
142
+ {
143
+ name: 'project-brief.md',
144
+ path: 'library/templates/project-brief.md',
145
+ sha: 'seed-data',
146
+ last_modified: new Date().toISOString()
147
+ },
148
+ {
149
+ name: 'report-executive.md',
150
+ path: 'library/templates/report-executive.md',
151
+ sha: 'seed-data',
152
+ last_modified: new Date().toISOString()
153
+ },
154
+ {
155
+ name: 'penetration-test-report.md',
156
+ path: 'library/templates/penetration-test-report.md',
157
+ sha: 'seed-data',
158
+ last_modified: new Date().toISOString()
159
+ },
160
+ {
161
+ name: 'security-vulnerability-report.md',
162
+ path: 'library/templates/security-vulnerability-report.md',
163
+ sha: 'seed-data',
164
+ last_modified: new Date().toISOString()
165
+ },
166
+ {
167
+ name: 'threat-assessment-report.md',
168
+ path: 'library/templates/threat-assessment-report.md',
169
+ sha: 'seed-data',
170
+ last_modified: new Date().toISOString()
171
+ },
172
+ // Popular Ensembles
173
+ {
174
+ name: 'business-advisor.md',
175
+ path: 'library/ensembles/business-advisor.md',
176
+ sha: 'seed-data',
177
+ last_modified: new Date().toISOString()
178
+ },
179
+ {
180
+ name: 'creative-studio.md',
181
+ path: 'library/ensembles/creative-studio.md',
182
+ sha: 'seed-data',
183
+ last_modified: new Date().toISOString()
184
+ },
185
+ {
186
+ name: 'development-team.md',
187
+ path: 'library/ensembles/development-team.md',
188
+ sha: 'seed-data',
189
+ last_modified: new Date().toISOString()
190
+ },
191
+ {
192
+ name: 'security-analysis-team.md',
193
+ path: 'library/ensembles/security-analysis-team.md',
194
+ sha: 'seed-data',
195
+ last_modified: new Date().toISOString()
196
+ }
197
+ ];
198
+ return CollectionSeeder.cachedSeedData;
199
+ }
200
+ /**
201
+ * Get collection statistics from seed data
202
+ */
203
+ static getSeedStats() {
204
+ const seedData = this.getSeedData();
205
+ const typeCount = new Map();
206
+ seedData.forEach(item => {
207
+ // Extract type from path (library/personas/name.md -> personas)
208
+ const pathParts = item.path.split('/');
209
+ const type = pathParts[1] || 'unknown';
210
+ typeCount.set(type, (typeCount.get(type) || 0) + 1);
211
+ });
212
+ return {
213
+ total: seedData.length,
214
+ byType: Object.fromEntries(typeCount)
215
+ };
216
+ }
217
+ /**
218
+ * Check if an item is available in seed data
219
+ */
220
+ static isItemInSeedData(path) {
221
+ return this.getSeedData().some(item => item.path === path);
222
+ }
223
+ /**
224
+ * Get seed item by path
225
+ */
226
+ static getSeedItem(path) {
227
+ return this.getSeedData().find(item => item.path === path);
228
+ }
229
+ }
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblNlZWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xsZWN0aW9uL0NvbGxlY3Rpb25TZWVkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBSUg7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixpRUFBaUU7SUFDekQsTUFBTSxDQUFDLGNBQWMsR0FBNEIsSUFBSSxDQUFDO0lBRTlEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsV0FBVztRQUNoQixrQ0FBa0M7UUFDbEMsSUFBSSxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxPQUFPLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLGdCQUFnQixDQUFDLGNBQWMsR0FBRztZQUNoQyxtQkFBbUI7WUFDbkI7Z0JBQ0UsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsSUFBSSxFQUFFLHFDQUFxQztnQkFDM0MsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTthQUN4QztZQUNEO2dCQUNFLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLElBQUksRUFBRSxvQ0FBb0M7Z0JBQzFDLEdBQUcsRUFBRSxXQUFXO2dCQUNoQixhQUFhLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDeEM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixJQUFJLEVBQUUscUNBQXFDO2dCQUMzQyxHQUFHLEVBQUUsV0FBVztnQkFDaEIsYUFBYSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3hDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsSUFBSSxFQUFFLHVDQUF1QztnQkFDN0MsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLGFBQWEsRUFBRSxJQUFJLElBQUksRUFB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LE9BQU87WUFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1NBQ3RDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBWTtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbGxlY3Rpb24gc2VlZGVyIGZvciBhbm9ueW1vdXMvb2ZmbGluZSBicm93c2luZ1xuICogUHJvdmlkZXMgYmFzaWMgY29sbGVjdGlvbiBkYXRhIHRoYXQgZG9lc24ndCByZXF1aXJlIEdpdEh1YiBhdXRoZW50aWNhdGlvblxuICovXG5cbmltcG9ydCB7IENvbGxlY3Rpb25JdGVtIH0gZnJvbSAnLi4vY2FjaGUvQ29sbGVjdGlvbkNhY2hlLmpzJztcblxuLyoqXG4gKiBCYXNpYyBjb2xsZWN0aW9uIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCB3aXRob3V0IEdpdEh1YiBBUEkgYWNjZXNzXG4gKiBUaGlzIHByb3ZpZGVzIGEgbWluaW1hbCBzZXQgb2Ygd2VsbC1rbm93biBjb2xsZWN0aW9uIGl0ZW1zXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uU2VlZGVyIHtcbiAgLy8gQ2FjaGUgdGhlIHNlZWQgZGF0YSBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBmb3IgbWVtb3J5IGVmZmljaWVuY3lcbiAgcHJpdmF0ZSBzdGF0aWMgY2FjaGVkU2VlZERhdGE6IENvbGxlY3Rpb25JdGVtW10gfCBudWxsID0gbnVsbDtcbiAgXG4gIC8qKlxuICAgKiBHZXQgc2VlZCBkYXRhIGZvciB0aGUgY29sbGVjdGlvbiBjYWNoZVxuICAgKiBUaGlzIGluY2x1ZGVzIHBvcHVsYXIvZXNzZW50aWFsIGl0ZW1zIHRoYXQgYXJlIGNvbW1vbmx5IHJlcXVlc3RlZFxuICAgKiBEYXRhIGlzIGNhY2hlZCBhcyBhIHN0YXRpYyBwcm9wZXJ0eSB0byBhdm9pZCByZWNyZWF0aW9uIG9uIGV2ZXJ5IGNhbGxcbiAgICovXG4gIHN0YXRpYyBnZXRTZWVkRGF0YSgpOiBDb2xsZWN0aW9uSXRlbVtdIHtcbiAgICAvLyBSZXR1cm4gY2FjaGVkIGRhdGEgaWYgYXZhaWxhYmxlXG4gICAgaWYgKENvbGxlY3Rpb25TZWVkZXIuY2FjaGVkU2VlZERhdGEpIHtcbiAgICAgIHJldHVybiBDb2xsZWN0aW9uU2VlZGVyLmNhY2hlZFNlZWREYXRhO1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgYW5kIGNhY2hlIHRoZSBzZWVkIGRhdGFcbiAgICBDb2xsZWN0aW9uU2VlZGVyLmNhY2hlZFNlZWREYXRhID0gW1xuICAgICAgLy8gUG9wdWxhciBQZXJzb25hc1xuICAgICAge1xuICAgICAgICBuYW1lOiAnY3JlYXRpdmUtd3JpdGVyLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvcGVyc29uYXMvY3JlYXRpdmUtd3JpdGVyLm1kJyxcbiAgICAgICAgc2hhOiAnc2VlZC1kYXRhJyxcbiAgICAgICAgbGFzdF9tb2RpZmllZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZWxpNS1leHBsYWluZXIubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9wZXJzb25hcy9lbGk1LWV4cGxhaW5lci5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2RlYnVnLWRldGVjdGl2ZS5tZCcsXG4gICAgICAgIHBhdGg6ICdsaWJyYXJ5L3BlcnNvbmFzL2RlYnVnLWRldGVjdGl2ZS5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RlY2huaWNhbC1hbmFseXN0Lm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvcGVyc29uYXMvdGVjaG5pY2FsLWFuYWx5c3QubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdidXNpbmVzcy1jb25zdWx0YW50Lm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvcGVyc29uYXMvYnVzaW5lc3MtY29uc3VsdGFudC5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NlY3VyaXR5LWFuYWx5c3QubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9wZXJzb25hcy9zZWN1cml0eS1hbmFseXN0Lm1kJyxcbiAgICAgICAgc2hhOiAnc2VlZC1kYXRhJyxcbiAgICAgICAgbGFzdF9tb2RpZmllZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBQb3B1bGFyIFNraWxsc1xuICAgICAge1xuICAgICAgICBuYW1lOiAnY29kZS1yZXZpZXcubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjcmVhdGl2ZS13cml0aW5nLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvc2tpbGxzL2NyZWF0aXZlLXdyaXRpbmcubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkYXRhLWFuYWx5c2lzLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvc2tpbGxzL2RhdGEtYW5hbHlzaXMubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZXNlYXJjaC5tZCcsXG4gICAgICAgIHBhdGg6ICdsaWJyYXJ5L3NraWxscy9yZXNlYXJjaC5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RyYW5zbGF0aW9uLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvc2tpbGxzL3RyYW5zbGF0aW9uLm1kJyxcbiAgICAgICAgc2hhOiAnc2VlZC1kYXRhJyxcbiAgICAgICAgbGFzdF9tb2RpZmllZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGhyZWF0LW1vZGVsaW5nLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvc2tpbGxzL3RocmVhdC1tb2RlbGluZy5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3BlbmV0cmF0aW9uLXRlc3RpbmcubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9za2lsbHMvcGVuZXRyYXRpb24tdGVzdGluZy5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gUG9wdWxhciBBZ2VudHNcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NvZGUtcmV2aWV3ZXIubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9hZ2VudHMvY29kZS1yZXZpZXdlci5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Jlc2VhcmNoLWFzc2lzdGFudC5tZCcsXG4gICAgICAgIHBhdGg6ICdsaWJyYXJ5L2FnZW50cy9yZXNlYXJjaC1hc3Npc3RhbnQubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd0YXNrLW1hbmFnZXIubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9hZ2VudHMvdGFzay1tYW5hZ2VyLm1kJyxcbiAgICAgICAgc2hhOiAnc2VlZC1kYXRhJyxcbiAgICAgICAgbGFzdF9tb2RpZmllZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBQb3B1bGFyIFRlbXBsYXRlc1xuICAgICAge1xuICAgICAgICBuYW1lOiAnY29kZS1kb2N1bWVudGF0aW9uLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvdGVtcGxhdGVzL2NvZGUtZG9jdW1lbnRhdGlvbi5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtYWlsLXByb2Zlc3Npb25hbC5tZCcsXG4gICAgICAgIHBhdGg6ICdsaWJyYXJ5L3RlbXBsYXRlcy9lbWFpbC1wcm9mZXNzaW9uYWwubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtZWV0aW5nLW5vdGVzLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvdGVtcGxhdGVzL21lZXRpbmctbm90ZXMubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwcm9qZWN0LWJyaWVmLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvdGVtcGxhdGVzL3Byb2plY3QtYnJpZWYubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZXBvcnQtZXhlY3V0aXZlLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvdGVtcGxhdGVzL3JlcG9ydC1leGVjdXRpdmUubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwZW5ldHJhdGlvbi10ZXN0LXJlcG9ydC5tZCcsXG4gICAgICAgIHBhdGg6ICdsaWJyYXJ5L3RlbXBsYXRlcy9wZW5ldHJhdGlvbi10ZXN0LXJlcG9ydC5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NlY3VyaXR5LXZ1bG5lcmFiaWxpdHktcmVwb3J0Lm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvdGVtcGxhdGVzL3NlY3VyaXR5LXZ1bG5lcmFiaWxpdHktcmVwb3J0Lm1kJyxcbiAgICAgICAgc2hhOiAnc2VlZC1kYXRhJyxcbiAgICAgICAgbGFzdF9tb2RpZmllZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGhyZWF0LWFzc2Vzc21lbnQtcmVwb3J0Lm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvdGVtcGxhdGVzL3RocmVhdC1hc3Nlc3NtZW50LXJlcG9ydC5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gUG9wdWxhciBFbnNlbWJsZXNcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2J1c2luZXNzLWFkdmlzb3IubWQnLFxuICAgICAgICBwYXRoOiAnbGlicmFyeS9lbnNlbWJsZXMvYnVzaW5lc3MtYWR2aXNvci5tZCcsXG4gICAgICAgIHNoYTogJ3NlZWQtZGF0YScsXG4gICAgICAgIGxhc3RfbW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NyZWF0aXZlLXN0dWRpby5tZCcsXG4gICAgICAgIHBhdGg6ICdsaWJyYXJ5L2Vuc2VtYmxlcy9jcmVhdGl2ZS1zdHVkaW8ubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkZXZlbG9wbWVudC10ZWFtLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvZW5zZW1ibGVzL2RldmVsb3BtZW50LXRlYW0ubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzZWN1cml0eS1hbmFseXNpcy10ZWFtLm1kJyxcbiAgICAgICAgcGF0aDogJ2xpYnJhcnkvZW5zZW1ibGVzL3NlY3VyaXR5LWFuYWx5c2lzLXRlYW0ubWQnLFxuICAgICAgICBzaGE6ICdzZWVkLWRhdGEnLFxuICAgICAgICBsYXN0X21vZGlmaWVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH1cbiAgICBdO1xuICAgIFxuICAgIHJldHVybiBDb2xsZWN0aW9uU2VlZGVyLmNhY2hlZFNlZWREYXRhO1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IGNvbGxlY3Rpb24gc3RhdGlzdGljcyBmcm9tIHNlZWQgZGF0YVxuICAgKi9cbiAgc3RhdGljIGdldFNlZWRTdGF0cygpIHtcbiAgICBjb25zdCBzZWVkRGF0YSA9IHRoaXMuZ2V0U2VlZERhdGEoKTtcbiAgICBjb25zdCB0eXBlQ291bnQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIFxuICAgIHNlZWREYXRhLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAvLyBFeHRyYWN0IHR5cGUgZnJvbSBwYXRoIChsaWJyYXJ5L3BlcnNvbmFzL25hbWUubWQgLT4gcGVyc29uYXMpXG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBpdGVtLnBhdGguc3BsaXQoJy8nKTtcbiAgICAgIGNvbnN0IHR5cGUgPSBwYXRoUGFydHNbMV0gfHwgJ3Vua25vd24nO1xuICAgICAgdHlwZUNvdW50LnNldCh0eXBlLCAodHlwZUNvdW50LmdldCh0eXBlKSB8fCAwKSArIDEpO1xuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICB0b3RhbDogc2VlZERhdGEubGVuZ3RoLFxuICAgICAgYnlUeXBlOiBPYmplY3QuZnJvbUVudHJpZXModHlwZUNvdW50KVxuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBpdGVtIGlzIGF2YWlsYWJsZSBpbiBzZWVkIGRhdGFcbiAgICovXG4gIHN0YXRpYyBpc0l0ZW1JblNlZWREYXRhKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFNlZWREYXRhKCkuc29tZShpdGVtID0+IGl0ZW0ucGF0aCA9PT0gcGF0aCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgc2VlZCBpdGVtIGJ5IHBhdGhcbiAgICovXG4gIHN0YXRpYyBnZXRTZWVkSXRlbShwYXRoOiBzdHJpbmcpOiBDb2xsZWN0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VlZERhdGEoKS5maW5kKGl0ZW0gPT4gaXRlbS5wYXRoID09PSBwYXRoKTtcbiAgfVxufSJdfQ==
@@ -1,19 +1,66 @@
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
  */
4
10
  import { Persona } from '../types/persona.js';
11
+ import { RateLimitStatus } from '../update/RateLimiter.js';
5
12
  export declare class PersonaSubmitter {
13
+ private rateLimiter;
14
+ constructor();
6
15
  /**
7
16
  * Generate GitHub issue for persona submission
17
+ * Includes URL length validation to comply with GitHub's ~8KB limit
8
18
  */
9
19
  generateSubmissionIssue(persona: Persona): {
10
20
  issueTitle: string;
11
21
  issueBody: string;
12
22
  githubIssueUrl: string;
23
+ rateLimitStatus?: RateLimitStatus;
13
24
  };
14
25
  /**
15
- * Format submission response
26
+ * Format submission response for authenticated users
16
27
  */
17
28
  formatSubmissionResponse(persona: Persona, githubIssueUrl: string, personaIndicator?: string): string;
29
+ /**
30
+ * Format anonymous submission response for unauthenticated users
31
+ */
32
+ formatAnonymousSubmissionResponse(persona: Persona, githubIssueUrl: string, personaIndicator?: string): string;
33
+ /**
34
+ * Build the full issue body with all persona details
35
+ */
36
+ private buildIssueBody;
37
+ /**
38
+ * Build a truncated issue body to fit within URL limits
39
+ */
40
+ private buildTruncatedIssueBody;
41
+ /**
42
+ * Serialize persona metadata to YAML format
43
+ */
44
+ private serializeMetadata;
45
+ /**
46
+ * Build the GitHub issue URL
47
+ */
48
+ private buildGitHubIssueUrl;
49
+ /**
50
+ * Build common response header used by both authenticated and anonymous responses
51
+ */
52
+ private buildResponseHeader;
53
+ /**
54
+ * Build standard submission steps for authenticated users
55
+ */
56
+ private buildStandardSubmissionSteps;
57
+ /**
58
+ * Build anonymous submission process instructions
59
+ */
60
+ private buildAnonymousSubmissionProcess;
61
+ /**
62
+ * Build anonymous submission next steps and expectations
63
+ */
64
+ private buildAnonymousNextSteps;
18
65
  }
19
66
  //# sourceMappingURL=PersonaSubmitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PersonaSubmitter.d.ts","sourceRoot":"","sources":["../../src/collection/PersonaSubmitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG;QACzC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAA;KACvB;IAqCD;;OAEG;IACH,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAW,GAAG,MAAM;CAW1G"}
1
+ {"version":3,"file":"PersonaSubmitter.d.ts","sourceRoot":"","sources":["../../src/collection/PersonaSubmitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAe,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAgBxE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;;IAUjC;;;OAGG;IACH,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG;QACzC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC;IAsCD;;OAEG;IACH,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAW,GAAG,MAAM;IAczG;;OAEG;IACH,iCAAiC,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAW,GAAG,MAAM;IAiBlH;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAyB/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IASpC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAYvC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAOhC"}
@@ -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.1";
6
- export declare const BUILD_TIMESTAMP = "2025-08-05T19:59:44.139Z";
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