@dollhousemcp/mcp-server 1.4.1 → 1.4.3

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 (46) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +90 -12
  3. package/dist/config/updateConfig.d.ts +84 -0
  4. package/dist/config/updateConfig.d.ts.map +1 -0
  5. package/dist/config/updateConfig.js +148 -0
  6. package/dist/generated/version.d.ts +9 -0
  7. package/dist/generated/version.d.ts.map +1 -0
  8. package/dist/generated/version.js +9 -0
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +34 -6
  12. package/dist/portfolio/DefaultElementProvider.d.ts +78 -0
  13. package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -0
  14. package/dist/portfolio/DefaultElementProvider.js +386 -0
  15. package/dist/portfolio/PortfolioManager.d.ts +12 -0
  16. package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
  17. package/dist/portfolio/PortfolioManager.js +107 -3
  18. package/dist/portfolio/types.d.ts +6 -6
  19. package/dist/portfolio/types.d.ts.map +1 -1
  20. package/dist/portfolio/types.js +7 -7
  21. package/dist/security/commandValidator.d.ts.map +1 -1
  22. package/dist/security/commandValidator.js +5 -2
  23. package/dist/security/securityMonitor.d.ts +2 -1
  24. package/dist/security/securityMonitor.d.ts.map +1 -1
  25. package/dist/security/securityMonitor.js +1 -1
  26. package/dist/server/tools/UpdateTools.d.ts.map +1 -1
  27. package/dist/server/tools/UpdateTools.js +22 -1
  28. package/dist/server/types.d.ts +1 -0
  29. package/dist/server/types.d.ts.map +1 -1
  30. package/dist/server/types.js +1 -1
  31. package/dist/update/BackupManager.d.ts +17 -0
  32. package/dist/update/BackupManager.d.ts.map +1 -1
  33. package/dist/update/BackupManager.js +112 -3
  34. package/dist/update/UpdateManager.d.ts +19 -0
  35. package/dist/update/UpdateManager.d.ts.map +1 -1
  36. package/dist/update/UpdateManager.js +485 -15
  37. package/dist/update/VersionManager.d.ts +1 -1
  38. package/dist/update/VersionManager.d.ts.map +1 -1
  39. package/dist/update/VersionManager.js +62 -15
  40. package/dist/utils/fileOperations.d.ts +83 -0
  41. package/dist/utils/fileOperations.d.ts.map +1 -0
  42. package/dist/utils/fileOperations.js +291 -0
  43. package/dist/utils/installation.d.ts +30 -0
  44. package/dist/utils/installation.d.ts.map +1 -0
  45. package/dist/utils/installation.js +160 -0
  46. package/package.json +3 -1
@@ -7,10 +7,16 @@ import { homedir } from 'os';
7
7
  import { logger } from '../utils/logger.js';
8
8
  import { ElementType } from './types.js';
9
9
  import { SecurityMonitor } from '../security/securityMonitor.js';
10
+ import { UnicodeValidator } from '../security/validators/unicodeValidator.js';
11
+ import { DefaultElementProvider } from './DefaultElementProvider.js';
12
+ // Constants
13
+ const ELEMENT_FILE_EXTENSION = '.md';
10
14
  export { ElementType };
11
15
  export class PortfolioManager {
12
16
  static instance;
13
17
  static instanceLock = false;
18
+ static initializationLock = false;
19
+ static initializationPromise = null;
14
20
  baseDir;
15
21
  constructor(config) {
16
22
  // Get potential directory from environment or config
@@ -65,8 +71,32 @@ export class PortfolioManager {
65
71
  }
66
72
  /**
67
73
  * Initialize the portfolio directory structure
74
+ * Uses locking to prevent race conditions during concurrent initialization
68
75
  */
69
76
  async initialize() {
77
+ // If already initializing, wait for the existing initialization
78
+ if (PortfolioManager.initializationPromise) {
79
+ return PortfolioManager.initializationPromise;
80
+ }
81
+ // If already initialized, check if directories exist
82
+ if (await this.exists()) {
83
+ logger.debug('[PortfolioManager] Portfolio already initialized');
84
+ return;
85
+ }
86
+ // Create initialization promise to prevent concurrent initialization
87
+ PortfolioManager.initializationPromise = this.performInitialization();
88
+ try {
89
+ await PortfolioManager.initializationPromise;
90
+ }
91
+ finally {
92
+ // Clear the promise after completion
93
+ PortfolioManager.initializationPromise = null;
94
+ }
95
+ }
96
+ /**
97
+ * Perform the actual initialization - should only be called once
98
+ */
99
+ async performInitialization() {
70
100
  logger.info('[PortfolioManager] Initializing portfolio directory structure');
71
101
  // Create base directory
72
102
  await fs.mkdir(this.baseDir, { recursive: true });
@@ -80,6 +110,22 @@ export class PortfolioManager {
80
110
  const agentStateDir = path.join(this.baseDir, ElementType.AGENT, '.state');
81
111
  await fs.mkdir(agentStateDir, { recursive: true });
82
112
  logger.info('[PortfolioManager] Portfolio directory structure initialized');
113
+ // Migration for v1.4.2 users: rename singular directories to plural
114
+ await this.migrateFromSingularDirectories();
115
+ // Populate with default elements if this is a new installation
116
+ // Skip during tests to avoid interference
117
+ if (process.env.NODE_ENV !== 'test') {
118
+ try {
119
+ const defaultProvider = new DefaultElementProvider();
120
+ await defaultProvider.populateDefaults(this.baseDir);
121
+ }
122
+ catch (error) {
123
+ logger.error('[PortfolioManager] Error populating default elements:', error);
124
+ // Log to stderr for Claude Desktop visibility
125
+ console.error(`[PortfolioManager] CRITICAL: Failed to populate default elements: ${error instanceof Error ? error.message : String(error)}`);
126
+ // Continue anyway - empty portfolio is valid
127
+ }
128
+ }
83
129
  }
84
130
  /**
85
131
  * Check if portfolio directory exists
@@ -100,8 +146,8 @@ export class PortfolioManager {
100
146
  const elementDir = this.getElementDir(type);
101
147
  try {
102
148
  const files = await fs.readdir(elementDir);
103
- // Filter for .md files only
104
- return files.filter(file => file.endsWith('.md'));
149
+ // Filter for markdown files only
150
+ return files.filter(file => file.endsWith(ELEMENT_FILE_EXTENSION));
105
151
  }
106
152
  catch (error) {
107
153
  const err = error;
@@ -218,5 +264,63 @@ export class PortfolioManager {
218
264
  }
219
265
  return stats;
220
266
  }
267
+ /**
268
+ * Migrate from v1.4.2 singular directory names to v1.4.3 plural names
269
+ * This handles the upgrade path for existing users
270
+ */
271
+ async migrateFromSingularDirectories() {
272
+ const oldToNew = {
273
+ 'persona': 'personas',
274
+ 'skill': 'skills',
275
+ 'template': 'templates',
276
+ 'agent': 'agents',
277
+ 'memory': 'memories',
278
+ 'ensemble': 'ensembles'
279
+ };
280
+ for (const [oldName, newName] of Object.entries(oldToNew)) {
281
+ // Unicode normalize the directory names (even though they're hardcoded, for security audit)
282
+ const normalizedOld = UnicodeValidator.normalize(oldName);
283
+ const normalizedNew = UnicodeValidator.normalize(newName);
284
+ if (!normalizedOld.isValid || !normalizedNew.isValid) {
285
+ // This should never happen with our hardcoded values, but for completeness
286
+ logger.error(`[PortfolioManager] Invalid Unicode in directory names during migration`);
287
+ continue;
288
+ }
289
+ const oldDir = path.join(this.baseDir, normalizedOld.normalizedContent);
290
+ const newDir = path.join(this.baseDir, normalizedNew.normalizedContent);
291
+ try {
292
+ // Check if old directory exists
293
+ await fs.access(oldDir);
294
+ // Check if new directory already has content
295
+ try {
296
+ const newDirFiles = await fs.readdir(newDir);
297
+ if (newDirFiles.length > 0) {
298
+ logger.warn(`[PortfolioManager] Both ${oldName} and ${newName} directories exist. Keeping ${newName}, skipping migration.`, { oldDir, newDir, fileCount: newDirFiles.length });
299
+ continue;
300
+ }
301
+ }
302
+ catch {
303
+ // New directory doesn't exist or is empty, proceed with migration
304
+ }
305
+ // Perform the migration
306
+ logger.info(`[PortfolioManager] Migrating ${oldName} → ${newName}`);
307
+ await fs.rename(oldDir, newDir);
308
+ // Log security event for audit trail
309
+ SecurityMonitor.logSecurityEvent({
310
+ type: 'DIRECTORY_MIGRATION',
311
+ severity: 'LOW',
312
+ source: 'PortfolioManager.migrateFromSingularDirectories',
313
+ details: `Migrated directory from ${oldName} to ${newName} for v1.4.3 compatibility`,
314
+ metadata: { oldDir, newDir }
315
+ });
316
+ }
317
+ catch (error) {
318
+ // Old directory doesn't exist, which is fine
319
+ if (error.code !== 'ENOENT') {
320
+ logger.error(`[PortfolioManager] Error during migration of ${oldName}:`, error);
321
+ }
322
+ }
323
+ }
324
+ }
221
325
  }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFHdkIsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixNQUFNLENBQUMsUUFBUSxDQUFtQjtJQUNsQyxNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixPQUFPLENBQVM7SUFFeEIsWUFBb0IsTUFBd0I7UUFDMUMscURBQXFEO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVuRSw0Q0FBNEM7UUFDNUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsNkNBQTZDO1lBQzdDLElBQUksTUFB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QUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0RCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxLQUFvQyxDQUFDO0lBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBvcnRmb2xpbyBNYW5hZ2VyIC0gTWFuYWdlcyB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGFsbCBlbGVtZW50IHR5cGVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUsIFBvcnRmb2xpb0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcblxuZXhwb3J0IHsgRWxlbWVudFR5cGUgfTtcbmV4cG9ydCB0eXBlIHsgUG9ydGZvbGlvQ29uZmlnIH07XG5cbmV4cG9ydCBjbGFzcyBQb3J0Zm9saW9NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IFBvcnRmb2xpb01hbmFnZXI7XG4gIHByaXZhdGUgc3RhdGljIGluc3RhbmNlTG9jayA9IGZhbHNlO1xuICBwcml2YXRlIGJhc2VEaXI6IHN0cmluZztcbiAgXG4gIHByaXZhdGUgY29uc3RydWN0b3IoY29uZmlnPzogUG9ydGZvbGlvQ29uZmlnKSB7XG4gICAgLy8gR2V0IHBvdGVudGlhbCBkaXJlY3RvcnkgZnJvbSBlbnZpcm9ubWVudCBvciBjb25maWdcbiAgICBjb25zdCBlbnZEaXIgPSBwcm9jZXNzLmVudi5ET0xMSE9VU0VfUE9SVEZPTElPX0RJUjtcbiAgICBjb25zdCBjb25maWdEaXIgPSBjb25maWc/LmJhc2VEaXI7XG4gICAgY29uc3QgZGVmYXVsdERpciA9IHBhdGguam9pbihob21lZGlyKCksICcuZG9sbGhvdXNlJywgJ3BvcnRmb2xpbycpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHByb3ZpZGVkXG4gICAgaWYgKGVudkRpcikge1xuICAgICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoZW52RGlyKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RPTExIT1VTRV9QT1JURk9MSU9fRElSIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCcpO1xuICAgICAgfVxuICAgICAgLy8gQWRkaXRpb25hbCB2YWxpZGF0aW9uIGZvciBzdXNwaWNpb3VzIHBhdGhzXG4gICAgICBpZiAoZW52RGlyLmluY2x1ZGVzKCcuLicpIHx8IGVudkRpci5zdGFydHNXaXRoKCcvZXRjJykgfHwgZW52RGlyLnN0YXJ0c1dpdGgoJy9zeXMnKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RPTExIT1VTRV9QT1JURk9MSU9fRElSIGNvbnRhaW5zIHN1c3BpY2lvdXMgcGF0aCBzZWdtZW50cycpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBWYWxpZGF0ZSBjb25maWcgZGlyZWN0b3J5IGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbmZpZ0RpciAmJiAhcGF0aC5pc0Fic29sdXRlKGNvbmZpZ0RpcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUG9ydGZvbGlvIGNvbmZpZyBiYXNlRGlyIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cbiAgICBcbiAgICAvLyBVc2UgZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgc2V0LCBvdGhlcndpc2UgY29uZmlnLCBvdGhlcndpc2UgZGVmYXVsdFxuICAgIHRoaXMuYmFzZURpciA9IGVudkRpciB8fCBjb25maWdEaXIgfHwgZGVmYXVsdERpcjtcbiAgICBcbiAgICBsb2dnZXIuaW5mbyhgW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBiYXNlIGRpcmVjdG9yeTogJHt0aGlzLmJhc2VEaXJ9YCk7XG4gIH1cbiAgXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoY29uZmlnPzogUG9ydGZvbGlvQ29uZmlnKTogUG9ydGZvbGlvTWFuYWdlciB7XG4gICAgaWYgKCFQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlKSB7XG4gICAgICAvLyBDaGVjayBpZiBhbm90aGVyIHRocmVhZCBpcyBhbHJlYWR5IGNyZWF0aW5nIHRoZSBpbnN0YW5jZVxuICAgICAgaWYgKFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2VMb2NrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUG9ydGZvbGlvTWFuYWdlciBpbnN0YW5jZSBpcyBiZWluZyBjcmVhdGVkIGJ5IGFub3RoZXIgdGhyZWFkJyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRyeSB7XG4gICAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2VMb2NrID0gdHJ1ZTtcbiAgICAgICAgUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZSA9IG5ldyBQb3J0Zm9saW9NYW5hZ2VyKGNvbmZpZyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jayA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZSBwb3J0Zm9saW8gZGlyZWN0b3J5XG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZURpcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJhc2VEaXI7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRpcmVjdG9yeSBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IHR5cGVcbiAgICovXG4gIHB1YmxpYyBnZXRFbGVtZW50RGlyKHR5cGU6IEVsZW1lbnRUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgdHlwZSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBwb3J0Zm9saW8gZGlyZWN0b3J5IHN0cnVjdHVyZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmluZm8oJ1tQb3J0Zm9saW9NYW5hZ2VyXSBJbml0aWFsaXppbmcgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUnKTtcbiAgICBcbiAgICAvLyBDcmVhdGUgYmFzZSBkaXJlY3RvcnlcbiAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLmJhc2VEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIFxuICAgIC8vIENyZWF0ZSBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBlbGVtZW50IHR5cGVcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnRUeXBlIG9mIE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBlbGVtZW50RGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgZWxlbWVudFR5cGUpO1xuICAgICAgYXdhaXQgZnMubWtkaXIoZWxlbWVudERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBsb2dnZXIuZGVidWcoYFtQb3J0Zm9saW9NYW5hZ2VyXSBDcmVhdGVkIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgc3BlY2lhbCBkaXJlY3RvcmllcyBmb3Igc3RhdGVmdWwgZWxlbWVudHNcbiAgICBjb25zdCBhZ2VudFN0YXRlRGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgRWxlbWVudFR5cGUuQUdFTlQsICcuc3RhdGUnKTtcbiAgICBhd2FpdCBmcy5ta2RpcihhZ2VudFN0YXRlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBcbiAgICBsb2dnZXIuaW5mbygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluaXRpYWxpemVkJyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBwb3J0Zm9saW8gZGlyZWN0b3J5IGV4aXN0c1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHRoaXMuYmFzZURpcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBlbGVtZW50cyBvZiBhIHNwZWNpZmljIHR5cGVcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsaXN0RWxlbWVudHModHlwZTogRWxlbWVudFR5cGUpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZWxlbWVudERpciA9IHRoaXMuZ2V0RWxlbWVudERpcih0eXBlKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGVsZW1lbnREaXIpO1xuICAgICAgLy8gRmlsdGVyIGZvciAubWQgZmlsZXMgb25seVxuICAgICAgcmV0dXJuIGZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGUuZW5kc1dpdGgoJy5tZCcpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgICAgXG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIC8vIERpcmVjdG9yeSBkb2Vzbid0IGV4aXN0IHlldCAtIHRoaXMgaXMgZXhwZWN0ZWQgZm9yIG5ldyBpbnN0YWxsYXRpb25zXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW1BvcnRmb2xpb01hbmFnZXJdIEVsZW1lbnQgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QgeWV0OiAke2VsZW1lbnREaXJ9YCk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGVyci5jb2RlID09PSAnRUFDQ0VTJyB8fCBlcnIuY29kZSA9PT0gJ0VQRVJNJykge1xuICAgICAgICAvLyBQZXJtaXNzaW9uIGRlbmllZCAtIGxvZyBidXQgcmV0dXJuIGVtcHR5IGFycmF5XG4gICAgICAgIGxvZ2dlci5lcnJvcihgW1BvcnRmb2xpb01hbmFnZXJdIFBlcm1pc3Npb24gZGVuaWVkIGFjY2Vzc2luZyBkaXJlY3Rvcnk6ICR7ZWxlbWVudERpcn1gLCB7XG4gICAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PVERJUicpIHtcbiAgICAgICAgLy8gUGF0aCBleGlzdHMgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeVxuICAgICAgICBsb2dnZXIuZXJyb3IoYFtQb3J0Zm9saW9NYW5hZ2VyXSBQYXRoIGlzIG5vdCBhIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWAsIHtcbiAgICAgICAgICBjb2RlOiBlcnIuY29kZSxcbiAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZVxuICAgICAgICB9KTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoIGlzIG5vdCBhIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWApO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBGb3IgYW55IG90aGVyIGVycm9ycywgdGhyb3cgd2l0aCBjb250ZXh0XG4gICAgICBsb2dnZXIuZXJyb3IoYFtQb3J0Zm9saW9NYW5hZ2VyXSBFcnJvciByZWFkaW5nIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWAsIHtcbiAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICBzdGFjazogZXJyLnN0YWNrXG4gICAgICB9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBmdWxsIHBhdGggdG8gYW4gZWxlbWVudCBmaWxlXG4gICAqL1xuICBwdWJsaWMgZ2V0RWxlbWVudFBhdGgodHlwZTogRWxlbWVudFR5cGUsIGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFZhbGlkYXRlIGZpbGVuYW1lIHRvIHByZXZlbnQgcGF0aCB0cmF2ZXJzYWxcbiAgICBpZiAoIWZpbGVuYW1lIHx8IHR5cGVvZiBmaWxlbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1BBVEhfVFJBVkVSU0FMX0FUVEVNUFQnLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb01hbmFnZXIuZ2V0RWxlbWVudFBhdGgnLFxuICAgICAgICBkZXRhaWxzOiBgSW52YWxpZCBmaWxlbmFtZSBwcm92aWRlZDogJHt0eXBlb2YgZmlsZW5hbWV9YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgZWxlbWVudFR5cGU6IHR5cGUsIGZpbGVuYW1lOiBTdHJpbmcoZmlsZW5hbWUpIH1cbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZpbGVuYW1lOiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgcGF0aCB0cmF2ZXJzYWwgYXR0ZW1wdHNcbiAgICBpZiAoZmlsZW5hbWUuaW5jbHVkZXMoJy4uJykgfHwgZmlsZW5hbWUuaW5jbHVkZXMoJy8nKSB8fCBmaWxlbmFtZS5pbmNsdWRlcygnXFxcXCcpIHx8IHBhdGguaXNBYnNvbHV0ZShmaWxlbmFtZSkpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1BBVEhfVFJBVkVSU0FMX0FUVEVNUFQnLFxuICAgICAgICBzZXZlcml0eTogJ0hJR0gnLFxuICAgICAgICBzb3VyY2U6ICdQb3J0Zm9saW9NYW5hZ2VyLmdldEVsZW1lbnRQYXRoJyxcbiAgICAgICAgZGV0YWlsczogYFBhdGggdHJhdmVyc2FsIGF0dGVtcHQgZGV0ZWN0ZWQgaW4gZmlsZW5hbWU6ICR7ZmlsZW5hbWV9YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgZWxlbWVudFR5cGU6IHR5cGUsIGZpbGVuYW1lIH1cbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZpbGVuYW1lOiBjb250YWlucyBwYXRoIHRyYXZlcnNhbCBjaGFyYWN0ZXJzOiAke2ZpbGVuYW1lfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGRpdGlvbmFsIHZhbGlkYXRpb24gZm9yIGhpZGRlbiBmaWxlcyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgaWYgKGZpbGVuYW1lLnN0YXJ0c1dpdGgoJy4nKSB8fCBmaWxlbmFtZS5pbmNsdWRlcygnXFwwJykpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1BBVEhfVFJBVkVSU0FMX0FUVEVNUFQnLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb01hbmFnZXIuZ2V0RWxlbWVudFBhdGgnLFxuICAgICAgICBkZXRhaWxzOiBgSW52YWxpZCBmaWxlbmFtZSBjaGFyYWN0ZXJzIGRldGVjdGVkOiAke2ZpbGVuYW1lfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IGVsZW1lbnRUeXBlOiB0eXBlLCBmaWxlbmFtZSwgaGFzSGlkZGVuRmlsZTogZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpLCBoYXNOdWxsQnl0ZTogZmlsZW5hbWUuaW5jbHVkZXMoJ1xcMCcpIH1cbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZpbGVuYW1lOiBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6ICR7ZmlsZW5hbWV9YCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEVuc3VyZSBmaWxlbmFtZSBlbmRzIHdpdGggLm1kXG4gICAgY29uc3Qgc2FmZUZpbGVuYW1lID0gZmlsZW5hbWUuZW5kc1dpdGgoJy5tZCcpID8gZmlsZW5hbWUgOiBgJHtmaWxlbmFtZX0ubWRgO1xuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5nZXRFbGVtZW50RGlyKHR5cGUpLCBzYWZlRmlsZW5hbWUpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gZWxlbWVudCBleGlzdHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBlbGVtZW50RXhpc3RzKHR5cGU6IEVsZW1lbnRUeXBlLCBmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLmFjY2Vzcyh0aGlzLmdldEVsZW1lbnRQYXRoKHR5cGUsIGZpbGVuYW1lKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgbGVnYWN5IHBlcnNvbmFzIGRpcmVjdG9yeSBwYXRoIChmb3IgbWlncmF0aW9uKVxuICAgKi9cbiAgcHVibGljIGdldExlZ2FjeVBlcnNvbmFzRGlyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbihob21lZGlyKCksICcuZG9sbGhvdXNlJywgJ3BlcnNvbmFzJyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBsZWdhY3kgcGVyc29uYXMgZGlyZWN0b3J5IGV4aXN0c1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0xlZ2FjeVBlcnNvbmFzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3ModGhpcy5nZXRMZWdhY3lQZXJzb25hc0RpcigpKTtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcih0aGlzLmdldExlZ2FjeVBlcnNvbmFzRGlyKCkpO1xuICAgICAgcmV0dXJuIGZpbGVzLnNvbWUoZmlsZSA9PiBmaWxlLmVuZHNXaXRoKCcubWQnKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogR2V0IHBvcnRmb2xpbyBzdGF0aXN0aWNzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U3RhdGlzdGljcygpOiBQcm9taXNlPFJlY29yZDxFbGVtZW50VHlwZSwgbnVtYmVyPj4ge1xuICAgIGNvbnN0IHN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gICAgXG4gICAgZm9yIChjb25zdCBlbGVtZW50VHlwZSBvZiBPYmplY3QudmFsdWVzKEVsZW1lbnRUeXBlKSkge1xuICAgICAgY29uc3QgZWxlbWVudHMgPSBhd2FpdCB0aGlzLmxpc3RFbGVtZW50cyhlbGVtZW50VHlwZSk7XG4gICAgICBzdGF0c1tlbGVtZW50VHlwZV0gPSBlbGVtZW50cy5sZW5ndGg7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBzdGF0cyBhcyBSZWNvcmQ8RWxlbWVudFR5cGUsIG51bWJlcj47XG4gIH1cbn0iXX0=
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxZQUFZO0FBQ1osTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBR3ZCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FBbUI7SUFDbEMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNsQyxNQUFNLENBQUMscUJBQXFCLEdBQXlCLElBQUksQ0FBQztJQUMxRCxPQUFPLENBQVM7SUFFeEIsWUFBb0IsTUFBd0I7UUFDMUMscURBQXFEO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8s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QUFlLENBQUMsZ0JBQWdCLENBQUM7b0JBQy9CLElBQUksRUFBRSxxQkFBcUI7b0JBQzNCLFFBQVEsRUFBRSxLQUFLO29CQUNmLE1BQU0sRUFBRSxpREFBaUQ7b0JBQ3pELE9BQU8sRUFBRSwyQkFBMkIsT0FBTyxPQUFPLE9BQU8sMkJBQTJCO29CQUNwRixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO2lCQUM3QixDQUFDLENBQUM7WUFFTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZiw2Q0FBNkM7Z0JBQzdDLElBQUssS0FBYSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsT0FBTyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBvcnRmb2xpbyBNYW5hZ2VyIC0gTWFuYWdlcyB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGFsbCBlbGVtZW50IHR5cGVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUsIFBvcnRmb2xpb0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgRGVmYXVsdEVsZW1lbnRQcm92aWRlciB9IGZyb20gJy4vRGVmYXVsdEVsZW1lbnRQcm92aWRlci5qcyc7XG5cbi8vIENvbnN0YW50c1xuY29uc3QgRUxFTUVOVF9GSUxFX0VYVEVOU0lPTiA9ICcubWQnO1xuXG5leHBvcnQgeyBFbGVtZW50VHlwZSB9O1xuZXhwb3J0IHR5cGUgeyBQb3J0Zm9saW9Db25maWcgfTtcblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb01hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogUG9ydGZvbGlvTWFuYWdlcjtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VMb2NrID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemF0aW9uTG9jayA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBiYXNlRGlyOiBzdHJpbmc7XG4gIFxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBvcnRmb2xpb0NvbmZpZykge1xuICAgIC8vIEdldCBwb3RlbnRpYWwgZGlyZWN0b3J5IGZyb20gZW52aXJvbm1lbnQgb3IgY29uZmlnXG4gICAgY29uc3QgZW52RGlyID0gcHJvY2Vzcy5lbnYuRE9MTEhPVVNFX1BPUlRGT0xJT19ESVI7XG4gICAgY29uc3QgY29uZmlnRGlyID0gY29uZmlnPy5iYXNlRGlyO1xuICAgIGNvbnN0IGRlZmF1bHREaXIgPSBwYXRoLmpvaW4oaG9tZWRpcigpLCAnLmRvbGxob3VzZScsICdwb3J0Zm9saW8nKTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBwcm92aWRlZFxuICAgIGlmIChlbnZEaXIpIHtcbiAgICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGVudkRpcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdET0xMSE9VU0VfUE9SVEZPTElPX0RJUiBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICAgIH1cbiAgICAgIC8vIEFkZGl0aW9uYWwgdmFsaWRhdGlvbiBmb3Igc3VzcGljaW91cyBwYXRoc1xuICAgICAgaWYgKGVudkRpci5pbmNsdWRlcygnLi4nKSB8fCBlbnZEaXIuc3RhcnRzV2l0aCgnL2V0YycpIHx8IGVudkRpci5zdGFydHNXaXRoKCcvc3lzJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdET0xMSE9VU0VfUE9SVEZPTElPX0RJUiBjb250YWlucyBzdXNwaWNpb3VzIHBhdGggc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgY29uZmlnIGRpcmVjdG9yeSBpZiBwcm92aWRlZFxuICAgIGlmIChjb25maWdEaXIgJiYgIXBhdGguaXNBYnNvbHV0ZShjb25maWdEaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnRmb2xpbyBjb25maWcgYmFzZURpciBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNlIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNldCwgb3RoZXJ3aXNlIGNvbmZpZywgb3RoZXJ3aXNlIGRlZmF1bHRcbiAgICB0aGlzLmJhc2VEaXIgPSBlbnZEaXIgfHwgY29uZmlnRGlyIHx8IGRlZmF1bHREaXI7XG4gICAgXG4gICAgbG9nZ2VyLmluZm8oYFtQb3J0Zm9saW9NYW5hZ2VyXSBQb3J0Zm9saW8gYmFzZSBkaXJlY3Rvcnk6ICR7dGhpcy5iYXNlRGlyfWApO1xuICB9XG4gIFxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKGNvbmZpZz86IFBvcnRmb2xpb0NvbmZpZyk6IFBvcnRmb2xpb01hbmFnZXIge1xuICAgIGlmICghUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgYW5vdGhlciB0aHJlYWQgaXMgYWxyZWFkeSBjcmVhdGluZyB0aGUgaW5zdGFuY2VcbiAgICAgIGlmIChQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIgaW5zdGFuY2UgaXMgYmVpbmcgY3JlYXRlZCBieSBhbm90aGVyIHRocmVhZCcpO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jayA9IHRydWU7XG4gICAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2UgPSBuZXcgUG9ydGZvbGlvTWFuYWdlcihjb25maWcpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZUxvY2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgcG9ydGZvbGlvIGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIGdldEJhc2VEaXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlRGlyO1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IHRoZSBkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlXG4gICAqL1xuICBwdWJsaWMgZ2V0RWxlbWVudERpcih0eXBlOiBFbGVtZW50VHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmJhc2VEaXIsIHR5cGUpO1xuICB9XG4gIFxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAgICogVXNlcyBsb2NraW5nIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBjb25jdXJyZW50IGluaXRpYWxpemF0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBJZiBhbHJlYWR5IGluaXRpYWxpemluZywgd2FpdCBmb3IgdGhlIGV4aXN0aW5nIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlKSB7XG4gICAgICByZXR1cm4gUG9ydGZvbGlvTWFuYWdlci5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIElmIGFscmVhZHkgaW5pdGlhbGl6ZWQsIGNoZWNrIGlmIGRpcmVjdG9yaWVzIGV4aXN0XG4gICAgaWYgKGF3YWl0IHRoaXMuZXhpc3RzKCkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBhbHJlYWR5IGluaXRpYWxpemVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBpbml0aWFsaXphdGlvbiBwcm9taXNlIHRvIHByZXZlbnQgY29uY3VycmVudCBpbml0aWFsaXphdGlvblxuICAgIFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gdGhpcy5wZXJmb3JtSW5pdGlhbGl6YXRpb24oKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgYXdhaXQgUG9ydGZvbGlvTWFuYWdlci5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFyIHRoZSBwcm9taXNlIGFmdGVyIGNvbXBsZXRpb25cbiAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBhY3R1YWwgaW5pdGlhbGl6YXRpb24gLSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwZXJmb3JtSW5pdGlhbGl6YXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmluZm8oJ1tQb3J0Zm9saW9NYW5hZ2VyXSBJbml0aWFsaXppbmcgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUnKTtcbiAgICBcbiAgICAvLyBDcmVhdGUgYmFzZSBkaXJlY3RvcnlcbiAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLmJhc2VEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIFxuICAgIC8vIENyZWF0ZSBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBlbGVtZW50IHR5cGVcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnRUeXBlIG9mIE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBlbGVtZW50RGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgZWxlbWVudFR5cGUpO1xuICAgICAgYXdhaXQgZnMubWtkaXIoZWxlbWVudERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBsb2dnZXIuZGVidWcoYFtQb3J0Zm9saW9NYW5hZ2VyXSBDcmVhdGVkIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgc3BlY2lhbCBkaXJlY3RvcmllcyBmb3Igc3RhdGVmdWwgZWxlbWVudHNcbiAgICBjb25zdCBhZ2VudFN0YXRlRGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgRWxlbWVudFR5cGUuQUdFTlQsICcuc3RhdGUnKTtcbiAgICBhd2FpdCBmcy5ta2RpcihhZ2VudFN0YXRlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBcbiAgICBsb2dnZXIuaW5mbygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluaXRpYWxpemVkJyk7XG4gICAgXG4gICAgLy8gTWlncmF0aW9uIGZvciB2MS40LjIgdXNlcnM6IHJlbmFtZSBzaW5ndWxhciBkaXJlY3RvcmllcyB0byBwbHVyYWxcbiAgICBhd2FpdCB0aGlzLm1pZ3JhdGVGcm9tU2luZ3VsYXJEaXJlY3RvcmllcygpO1xuICAgIFxuICAgIC8vIFBvcHVsYXRlIHdpdGggZGVmYXVsdCBlbGVtZW50cyBpZiB0aGlzIGlzIGEgbmV3IGluc3RhbGxhdGlvblxuICAgIC8vIFNraXAgZHVyaW5nIHRlc3RzIHRvIGF2b2lkIGludGVyZmVyZW5jZVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UHJvdmlkZXIgPSBuZXcgRGVmYXVsdEVsZW1lbnRQcm92aWRlcigpO1xuICAgICAgICBhd2FpdCBkZWZhdWx0UHJvdmlkZXIucG9wdWxhdGVEZWZhdWx0cyh0aGlzLmJhc2VEaXIpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdbUG9ydGZvbGlvTWFuYWdlcl0gRXJyb3IgcG9wdWxhdGluZyBkZWZhdWx0IGVsZW1lbnRzOicsIGVycm9yKTtcbiAgICAgICAgLy8gTG9nIHRvIHN0ZGVyciBmb3IgQ2xhdWRlIERlc2t0b3AgdmlzaWJpbGl0eVxuICAgICAgICBjb25zb2xlLmVycm9yKGBbUG9ydGZvbGlvTWFuYWdlcl0gQ1JJVElDQUw6IEZhaWxlZCB0byBwb3B1bGF0ZSBkZWZhdWx0IGVsZW1lbnRzOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gKTtcbiAgICAgICAgLy8gQ29udGludWUgYW55d2F5IC0gZW1wdHkgcG9ydGZvbGlvIGlzIHZhbGlkXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgcG9ydGZvbGlvIGRpcmVjdG9yeSBleGlzdHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBleGlzdHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLmFjY2Vzcyh0aGlzLmJhc2VEaXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogTGlzdCBhbGwgZWxlbWVudHMgb2YgYSBzcGVjaWZpYyB0eXBlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGlzdEVsZW1lbnRzKHR5cGU6IEVsZW1lbnRUeXBlKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IGVsZW1lbnREaXIgPSB0aGlzLmdldEVsZW1lbnREaXIodHlwZSk7XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihlbGVtZW50RGlyKTtcbiAgICAgIC8vIEZpbHRlciBmb3IgbWFya2Rvd24gZmlsZXMgb25seVxuICAgICAgcmV0dXJuIGZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGUuZW5kc1dpdGgoRUxFTUVOVF9GSUxFX0VYVEVOU0lPTikpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnIgPSBlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb247XG4gICAgICBcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgLy8gRGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QgeWV0IC0gdGhpcyBpcyBleHBlY3RlZCBmb3IgbmV3IGluc3RhbGxhdGlvbnNcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBbUG9ydGZvbGlvTWFuYWdlcl0gRWxlbWVudCBkaXJlY3RvcnkgZG9lc24ndCBleGlzdCB5ZXQ6ICR7ZWxlbWVudERpcn1gKTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUNDRVMnIHx8IGVyci5jb2RlID09PSAnRVBFUk0nKSB7XG4gICAgICAgIC8vIFBlcm1pc3Npb24gZGVuaWVkIC0gbG9nIGJ1dCByZXR1cm4gZW1wdHkgYXJyYXlcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBbUG9ydGZvbGlvTWFuYWdlcl0gUGVybWlzc2lvbiBkZW5pZWQgYWNjZXNzaW5nIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWAsIHtcbiAgICAgICAgICBjb2RlOiBlcnIuY29kZSxcbiAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9URElSJykge1xuICAgICAgICAvLyBQYXRoIGV4aXN0cyBidXQgaXMgbm90IGEgZGlyZWN0b3J5XG4gICAgICAgIGxvZ2dlci5lcnJvcihgW1BvcnRmb2xpb01hbmFnZXJdIFBhdGggaXMgbm90IGEgZGlyZWN0b3J5OiAke2VsZW1lbnREaXJ9YCwge1xuICAgICAgICAgIGNvZGU6IGVyci5jb2RlLFxuICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlXG4gICAgICAgIH0pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGggaXMgbm90IGEgZGlyZWN0b3J5OiAke2VsZW1lbnREaXJ9YCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIEZvciBhbnkgb3RoZXIgZXJyb3JzLCB0aHJvdyB3aXRoIGNvbnRleHRcbiAgICAgIGxvZ2dlci5lcnJvcihgW1BvcnRmb2xpb01hbmFnZXJdIEVycm9yIHJlYWRpbmcgZGlyZWN0b3J5OiAke2VsZW1lbnREaXJ9YCwge1xuICAgICAgICBjb2RlOiBlcnIuY29kZSxcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBlcnIuc3RhY2tcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogR2V0IGZ1bGwgcGF0aCB0byBhbiBlbGVtZW50IGZpbGVcbiAgICovXG4gIHB1YmxpYyBnZXRFbGVtZW50UGF0aCh0eXBlOiBFbGVtZW50VHlwZSwgZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVmFsaWRhdGUgZmlsZW5hbWUgdG8gcHJldmVudCBwYXRoIHRyYXZlcnNhbFxuICAgIGlmICghZmlsZW5hbWUgfHwgdHlwZW9mIGZpbGVuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnUEFUSF9UUkFWRVJTQUxfQVRURU1QVCcsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvTWFuYWdlci5nZXRFbGVtZW50UGF0aCcsXG4gICAgICAgIGRldGFpbHM6IGBJbnZhbGlkIGZpbGVuYW1lIHByb3ZpZGVkOiAke3R5cGVvZiBmaWxlbmFtZX1gLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBlbGVtZW50VHlwZTogdHlwZSwgZmlsZW5hbWU6IFN0cmluZyhmaWxlbmFtZSkgfVxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmlsZW5hbWU6IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIGZvciBwYXRoIHRyYXZlcnNhbCBhdHRlbXB0c1xuICAgIGlmIChmaWxlbmFtZS5pbmNsdWRlcygnLi4nKSB8fCBmaWxlbmFtZS5pbmNsdWRlcygnLycpIHx8IGZpbGVuYW1lLmluY2x1ZGVzKCdcXFxcJykgfHwgcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKSkge1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnUEFUSF9UUkFWRVJTQUxfQVRURU1QVCcsXG4gICAgICAgIHNldmVyaXR5OiAnSElHSCcsXG4gICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb01hbmFnZXIuZ2V0RWxlbWVudFBhdGgnLFxuICAgICAgICBkZXRhaWxzOiBgUGF0aCB0cmF2ZXJzYWwgYXR0ZW1wdCBkZXRlY3RlZCBpbiBmaWxlbmFtZTogJHtmaWxlbmFtZX1gLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBlbGVtZW50VHlwZTogdHlwZSwgZmlsZW5hbWUgfVxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZmlsZW5hbWU6IGNvbnRhaW5zIHBhdGggdHJhdmVyc2FsIGNoYXJhY3RlcnM6ICR7ZmlsZW5hbWV9YCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEFkZGl0aW9uYWwgdmFsaWRhdGlvbiBmb3IgaGlkZGVuIGZpbGVzIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgICBpZiAoZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpIHx8IGZpbGVuYW1lLmluY2x1ZGVzKCdcXDAnKSkge1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnUEFUSF9UUkFWRVJTQUxfQVRURU1QVCcsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvTWFuYWdlci5nZXRFbGVtZW50UGF0aCcsXG4gICAgICAgIGRldGFpbHM6IGBJbnZhbGlkIGZpbGVuYW1lIGNoYXJhY3RlcnMgZGV0ZWN0ZWQ6ICR7ZmlsZW5hbWV9YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgZWxlbWVudFR5cGU6IHR5cGUsIGZpbGVuYW1lLCBoYXNIaWRkZW5GaWxlOiBmaWxlbmFtZS5zdGFydHNXaXRoKCcuJyksIGhhc051bGxCeXRlOiBmaWxlbmFtZS5pbmNsdWRlcygnXFwwJykgfVxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZmlsZW5hbWU6IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogJHtmaWxlbmFtZX1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGZpbGVuYW1lIGVuZHMgd2l0aCAubWRcbiAgICBjb25zdCBzYWZlRmlsZW5hbWUgPSBmaWxlbmFtZS5lbmRzV2l0aCgnLm1kJykgPyBmaWxlbmFtZSA6IGAke2ZpbGVuYW1lfS5tZGA7XG4gICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmdldEVsZW1lbnREaXIodHlwZSksIHNhZmVGaWxlbmFtZSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBlbGVtZW50IGV4aXN0c1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGVsZW1lbnRFeGlzdHModHlwZTogRWxlbWVudFR5cGUsIGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHRoaXMuZ2V0RWxlbWVudFBhdGgodHlwZSwgZmlsZW5hbWUpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBsZWdhY3kgcGVyc29uYXMgZGlyZWN0b3J5IHBhdGggKGZvciBtaWdyYXRpb24pXG4gICAqL1xuICBwdWJsaWMgZ2V0TGVnYWN5UGVyc29uYXNEaXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKGhvbWVkaXIoKSwgJy5kb2xsaG91c2UnLCAncGVyc29uYXMnKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGxlZ2FjeSBwZXJzb25hcyBkaXJlY3RvcnkgZXhpc3RzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTGVnYWN5UGVyc29uYXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLmFjY2Vzcyh0aGlzLmdldExlZ2FjeVBlcnNvbmFzRGlyKCkpO1xuICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHRoaXMuZ2V0TGVnYWN5UGVyc29uYXNEaXIoKSk7XG4gICAgICByZXR1cm4gZmlsZXMuc29tZShmaWxlID0+IGZpbGUuZW5kc1dpdGgoJy5tZCcpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgcG9ydGZvbGlvIHN0YXRpc3RpY3NcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTdGF0aXN0aWNzKCk6IFByb21pc2U8UmVjb3JkPEVsZW1lbnRUeXBlLCBudW1iZXI+PiB7XG4gICAgY29uc3Qgc3RhdHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnRUeXBlIG9mIE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBlbGVtZW50cyA9IGF3YWl0IHRoaXMubGlzdEVsZW1lbnRzKGVsZW1lbnRUeXBlKTtcbiAgICAgIHN0YXRzW2VsZW1lbnRUeXBlXSA9IGVsZW1lbnRzLmxlbmd0aDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHN0YXRzIGFzIFJlY29yZDxFbGVtZW50VHlwZSwgbnVtYmVyPjtcbiAgfVxuICBcbiAgLyoqXG4gICAqIE1pZ3JhdGUgZnJvbSB2MS40LjIgc2luZ3VsYXIgZGlyZWN0b3J5IG5hbWVzIHRvIHYxLjQuMyBwbHVyYWwgbmFtZXNcbiAgICogVGhpcyBoYW5kbGVzIHRoZSB1cGdyYWRlIHBhdGggZm9yIGV4aXN0aW5nIHVzZXJzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIG1pZ3JhdGVGcm9tU2luZ3VsYXJEaXJlY3RvcmllcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvbGRUb05ldzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdwZXJzb25hJzogJ3BlcnNvbmFzJyxcbiAgICAgICdza2lsbCc6ICdza2lsbHMnLFxuICAgICAgJ3RlbXBsYXRlJzogJ3RlbXBsYXRlcycsXG4gICAgICAnYWdlbnQnOiAnYWdlbnRzJyxcbiAgICAgICdtZW1vcnknOiAnbWVtb3JpZXMnLFxuICAgICAgJ2Vuc2VtYmxlJzogJ2Vuc2VtYmxlcydcbiAgICB9O1xuICAgIFxuICAgIGZvciAoY29uc3QgW29sZE5hbWUsIG5ld05hbWVdIG9mIE9iamVjdC5lbnRyaWVzKG9sZFRvTmV3KSkge1xuICAgICAgLy8gVW5pY29kZSBub3JtYWxpemUgdGhlIGRpcmVjdG9yeSBuYW1lcyAoZXZlbiB0aG91Z2ggdGhleSdyZSBoYXJkY29kZWQsIGZvciBzZWN1cml0eSBhdWRpdClcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPbGQgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShvbGROYW1lKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROZXcgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShuZXdOYW1lKTtcbiAgICAgIFxuICAgICAgaWYgKCFub3JtYWxpemVkT2xkLmlzVmFsaWQgfHwgIW5vcm1hbGl6ZWROZXcuaXNWYWxpZCkge1xuICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gd2l0aCBvdXIgaGFyZGNvZGVkIHZhbHVlcywgYnV0IGZvciBjb21wbGV0ZW5lc3NcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBbUG9ydGZvbGlvTWFuYWdlcl0gSW52YWxpZCBVbmljb2RlIGluIGRpcmVjdG9yeSBuYW1lcyBkdXJpbmcgbWlncmF0aW9uYCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBvbGREaXIgPSBwYXRoLmpvaW4odGhpcy5iYXNlRGlyLCBub3JtYWxpemVkT2xkLm5vcm1hbGl6ZWRDb250ZW50KTtcbiAgICAgIGNvbnN0IG5ld0RpciA9IHBhdGguam9pbih0aGlzLmJhc2VEaXIsIG5vcm1hbGl6ZWROZXcubm9ybWFsaXplZENvbnRlbnQpO1xuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICAvLyBDaGVjayBpZiBvbGQgZGlyZWN0b3J5IGV4aXN0c1xuICAgICAgICBhd2FpdCBmcy5hY2Nlc3Mob2xkRGlyKTtcbiAgICAgICAgXG4gICAgICAgIC8vIENoZWNrIGlmIG5ldyBkaXJlY3RvcnkgYWxyZWFkeSBoYXMgY29udGVudFxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG5ld0RpckZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihuZXdEaXIpO1xuICAgICAgICAgIGlmIChuZXdEaXJGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcbiAgICAgICAgICAgICAgYFtQb3J0Zm9saW9NYW5hZ2VyXSBCb3RoICR7b2xkTmFtZX0gYW5kICR7bmV3TmFtZX0gZGlyZWN0b3JpZXMgZXhpc3QuIEtlZXBpbmcgJHtuZXdOYW1lfSwgc2tpcHBpbmcgbWlncmF0aW9uLmAsXG4gICAgICAgICAgICAgIHsgb2xkRGlyLCBuZXdEaXIsIGZpbGVDb3VudDogbmV3RGlyRmlsZXMubGVuZ3RoIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIE5ldyBkaXJlY3RvcnkgZG9lc24ndCBleGlzdCBvciBpcyBlbXB0eSwgcHJvY2VlZCB3aXRoIG1pZ3JhdGlvblxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBQZXJmb3JtIHRoZSBtaWdyYXRpb25cbiAgICAgICAgbG9nZ2VyLmluZm8oYFtQb3J0Zm9saW9NYW5hZ2VyXSBNaWdyYXRpbmcgJHtvbGROYW1lfSDihpIgJHtuZXdOYW1lfWApO1xuICAgICAgICBhd2FpdCBmcy5yZW5hbWUob2xkRGlyLCBuZXdEaXIpO1xuICAgICAgICBcbiAgICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciBhdWRpdCB0cmFpbFxuICAgICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgICAgdHlwZTogJ0RJUkVDVE9SWV9NSUdSQVRJT04nLFxuICAgICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgICBzb3VyY2U6ICdQb3J0Zm9saW9NYW5hZ2VyLm1pZ3JhdGVGcm9tU2luZ3VsYXJEaXJlY3RvcmllcycsXG4gICAgICAgICAgZGV0YWlsczogYE1pZ3JhdGVkIGRpcmVjdG9yeSBmcm9tICR7b2xkTmFtZX0gdG8gJHtuZXdOYW1lfSBmb3IgdjEuNC4zIGNvbXBhdGliaWxpdHlgLFxuICAgICAgICAgIG1ldGFkYXRhOiB7IG9sZERpciwgbmV3RGlyIH1cbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gT2xkIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LCB3aGljaCBpcyBmaW5lXG4gICAgICAgIGlmICgoZXJyb3IgYXMgYW55KS5jb2RlICE9PSAnRU5PRU5UJykge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihgW1BvcnRmb2xpb01hbmFnZXJdIEVycm9yIGR1cmluZyBtaWdyYXRpb24gb2YgJHtvbGROYW1lfTpgLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iXX0=
@@ -2,12 +2,12 @@
2
2
  * Shared types for the portfolio system
3
3
  */
4
4
  export declare enum ElementType {
5
- PERSONA = "persona",
6
- SKILL = "skill",
7
- TEMPLATE = "template",
8
- AGENT = "agent",
9
- MEMORY = "memory",
10
- ENSEMBLE = "ensemble"
5
+ PERSONA = "personas",
6
+ SKILL = "skills",
7
+ TEMPLATE = "templates",
8
+ AGENT = "agents",
9
+ MEMORY = "memories",
10
+ ENSEMBLE = "ensembles"
11
11
  }
12
12
  export interface PortfolioConfig {
13
13
  baseDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/portfolio/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/portfolio/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,WAAW;IACrB,OAAO,aAAa;IACpB,KAAK,WAAW;IAChB,QAAQ,cAAc;IACtB,KAAK,WAAW;IAChB,MAAM,aAAa;IACnB,QAAQ,cAAc;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,CAAC"}
@@ -3,11 +3,11 @@
3
3
  */
4
4
  export var ElementType;
5
5
  (function (ElementType) {
6
- ElementType["PERSONA"] = "persona";
7
- ElementType["SKILL"] = "skill";
8
- ElementType["TEMPLATE"] = "template";
9
- ElementType["AGENT"] = "agent";
10
- ElementType["MEMORY"] = "memory";
11
- ElementType["ENSEMBLE"] = "ensemble";
6
+ ElementType["PERSONA"] = "personas";
7
+ ElementType["SKILL"] = "skills";
8
+ ElementType["TEMPLATE"] = "templates";
9
+ ElementType["AGENT"] = "agents";
10
+ ElementType["MEMORY"] = "memories";
11
+ ElementType["ENSEMBLE"] = "ensembles";
12
12
  })(ElementType || (ElementType = {}));
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9ydGZvbGlvL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsTUFBTSxDQUFOLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBZSxDQUFBO0lBQ2Ysb0NBQXFCLENBQUE7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLGdDQUFpQixDQUFBO0lBQ2pCLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFQVyxXQUFXLEtBQVgsV0FBVyxRQU90QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHR5cGVzIGZvciB0aGUgcG9ydGZvbGlvIHN5c3RlbVxuICovXG5cbmV4cG9ydCBlbnVtIEVsZW1lbnRUeXBlIHtcbiAgUEVSU09OQSA9ICdwZXJzb25hJyxcbiAgU0tJTEwgPSAnc2tpbGwnLFxuICBURU1QTEFURSA9ICd0ZW1wbGF0ZScsXG4gIEFHRU5UID0gJ2FnZW50JyxcbiAgTUVNT1JZID0gJ21lbW9yeScsXG4gIEVOU0VNQkxFID0gJ2Vuc2VtYmxlJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRmb2xpb0NvbmZpZyB7XG4gIGJhc2VEaXI/OiBzdHJpbmc7ICAvLyBPdmVycmlkZSBkZWZhdWx0IGxvY2F0aW9uXG4gIGNyZWF0ZUlmTWlzc2luZz86IGJvb2xlYW47XG4gIG1pZ3JhdGVFeGlzdGluZz86IGJvb2xlYW47XG59XG5cbi8vIFJlLWV4cG9ydCBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IFBvcnRmb2xpb0NvbmZpZyBhcyBQb3J0Zm9saW9Db25maWd1cmF0aW9uIH07Il19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9ydGZvbGlvL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsTUFBTSxDQUFOLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQixtQ0FBb0IsQ0FBQTtJQUNwQiwrQkFBZ0IsQ0FBQTtJQUNoQixxQ0FBc0IsQ0FBQTtJQUN0QiwrQkFBZ0IsQ0FBQTtJQUNoQixrQ0FBbUIsQ0FBQTtJQUNuQixxQ0FBc0IsQ0FBQTtBQUN4QixDQUFDLEVBUFcsV0FBVyxLQUFYLFdBQVcsUUFPdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCB0eXBlcyBmb3IgdGhlIHBvcnRmb2xpbyBzeXN0ZW1cbiAqL1xuXG5leHBvcnQgZW51bSBFbGVtZW50VHlwZSB7XG4gIFBFUlNPTkEgPSAncGVyc29uYXMnLFxuICBTS0lMTCA9ICdza2lsbHMnLFxuICBURU1QTEFURSA9ICd0ZW1wbGF0ZXMnLFxuICBBR0VOVCA9ICdhZ2VudHMnLFxuICBNRU1PUlkgPSAnbWVtb3JpZXMnLFxuICBFTlNFTUJMRSA9ICdlbnNlbWJsZXMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGZvbGlvQ29uZmlnIHtcbiAgYmFzZURpcj86IHN0cmluZzsgIC8vIE92ZXJyaWRlIGRlZmF1bHQgbG9jYXRpb25cbiAgY3JlYXRlSWZNaXNzaW5nPzogYm9vbGVhbjtcbiAgbWlncmF0ZUV4aXN0aW5nPzogYm9vbGVhbjtcbn1cblxuLy8gUmUtZXhwb3J0IGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IHsgUG9ydGZvbGlvQ29uZmlnIGFzIFBvcnRmb2xpb0NvbmZpZ3VyYXRpb24gfTsiXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"commandValidator.d.ts","sourceRoot":"","sources":["../../src/security/commandValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAWpD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAczD,OAAO,CAAC,MAAM,CAAC,cAAc;WAKhB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CA0DlG"}
1
+ {"version":3,"file":"commandValidator.d.ts","sourceRoot":"","sources":["../../src/security/commandValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAcpD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAczD,OAAO,CAAC,MAAM,CAAC,cAAc;WAKhB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CA0DlG"}
@@ -1,7 +1,10 @@
1
1
  import { spawn } from 'child_process';
2
2
  import { RegexValidator } from './regexValidator.js';
3
3
  const ALLOWED_COMMANDS = {
4
- git: ['pull', 'status', 'log', 'rev-parse', 'branch', 'checkout', 'fetch', '--abbrev-ref', 'HEAD', '--porcelain'],
4
+ // SECURITY FIX: Added 'clone' command to git allowlist
5
+ // Previously: npm installation feature would fail with "Argument not allowed: clone"
6
+ // Now: git clone command is allowed for npm installation functionality
7
+ git: ['pull', 'status', 'log', 'rev-parse', 'branch', 'checkout', 'fetch', 'clone', '--abbrev-ref', 'HEAD', '--porcelain'],
5
8
  npm: ['install', 'run', 'audit', 'ci', '--version', 'build'],
6
9
  node: ['--version'],
7
10
  npx: ['--version']
@@ -75,4 +78,4 @@ export class CommandValidator {
75
78
  });
76
79
  }
77
80
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9jb21tYW5kVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxNQUFNLGdCQUFnQixHQUE2QjtJQUNqRCxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUM7SUFDakgsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7SUFDNUQsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ25CLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVcsRUFBRSxJQUFjO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1RCxNQUFN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R0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNFLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIFNwYXduT3B0aW9ucyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4vcmVnZXhWYWxpZGF0b3IuanMnO1xuXG5jb25zdCBBTExPV0VEX0NPTU1BTkRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gIGdpdDogWydwdWxsJywgJ3N0YXR1cycsICdsb2cnLCAncmV2LXBhcnNlJywgJ2JyYW5jaCcsICdjaGVja291dCcsICdmZXRjaCcsICctLWFiYnJldi1yZWYnLCAnSEVBRCcsICctLXBvcmNlbGFpbiddLFxuICBucG06IFsnaW5zdGFsbCcsICdydW4nLCAnYXVkaXQnLCAnY2knLCAnLS12ZXJzaW9uJywgJ2J1aWxkJ10sXG4gIG5vZGU6IFsnLS12ZXJzaW9uJ10sXG4gIG5weDogWyctLXZlcnNpb24nXVxufTtcblxuZXhwb3J0IGNsYXNzIENvbW1hbmRWYWxpZGF0b3Ige1xuICBzdGF0aWMgc2FuaXRpemVDb21tYW5kKGNtZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICghQUxMT1dFRF9DT01NQU5EU1tjbWRdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbW1hbmQgbm90IGFsbG93ZWQ6ICR7Y21kfWApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBhbGxvd2VkQXJncyA9IEFMTE9XRURfQ09NTUFORFNbY21kXTtcbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGluIGFsbG93ZWQgbGlzdCBvciBtYXRjaGVzIHNhZmUgcGF0dGVyblxuICAgICAgaWYgKCFhbGxvd2VkQXJncy5pbmNsdWRlcyhhcmcpICYmICF0aGlzLmlzU2FmZUFyZ3VtZW50KGFyZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcmd1bWVudCBub3QgYWxsb3dlZDogJHthcmd9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNTYWZlQXJndW1lbnQoYXJnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBBbGxvdyBhbHBoYW51bWVyaWMsIGRhc2gsIHVuZGVyc2NvcmUsIGRvdCwgYW5kIGZvcndhcmQgc2xhc2hcbiAgICByZXR1cm4gUmVnZXhWYWxpZGF0b3IudmFsaWRhdGUoYXJnLCAvXlthLXpBLVowLTlcXC1fLlxcL10rJC8sIHsgbWF4TGVuZ3RoOiAxMDAwIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNlY3VyZUV4ZWMoY29tbWFuZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFNwYXduT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdGhpcy5zYW5pdGl6ZUNvbW1hbmQoY29tbWFuZCwgYXJncyk7XG4gICAgXG4gICAgY29uc3Qgc2FmZU9wdGlvbnM6IFNwYXduT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAgIFBBVEg6ICcvdXNyL2JpbjovYmluOi91c3IvbG9jYWwvYmluJyAvLyBSZXN0cmljdCBQQVRIXG4gICAgICB9LFxuICAgICAgY3dkOiBvcHRpb25zPy5jd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQgfHwgMzAwMDAgLy8gMzAgc2Vjb25kIGRlZmF1bHRcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBwcm9jID0gc3Bhd24oY29tbWFuZCwgYXJncywgc2FmZU9wdGlvbnMpO1xuICAgICAgXG4gICAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgICBsZXQgc3RkZXJyID0gJyc7XG4gICAgICBsZXQgdGltZW91dEhhbmRsZTogTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgaXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgIFxuICAgICAgLy8gSGVscGVyIHRvIHNhZmVseSByZXNvbHZlL3JlamVjdCBvbmx5IG9uY2VcbiAgICAgIGNvbnN0IGNvbXBsZXRlID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIGlmICghaXNDb21wbGV0ZWQpIHtcbiAgICAgICAgICBpc0NvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKHRpbWVvdXRIYW5kbGUpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm4oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIFxuICAgICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICAgIGlmIChvcHRpb25zPy50aW1lb3V0KSB7XG4gICAgICAgIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBwcm9jLmtpbGwoJ1NJR1RFUk0nKTtcbiAgICAgICAgICBjb21wbGV0ZSgoKSA9PiByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIHRpbWVkIG91dCBhZnRlciAke29wdGlvbnMudGltZW91dH1tc2ApKSk7XG4gICAgICAgIH0sIG9wdGlvbnMudGltZW91dCk7XG4gICAgICAgIHRpbWVvdXRIYW5kbGUudW5yZWYoKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGEpID0+IHN0ZG91dCArPSBkYXRhKTtcbiAgICAgIHByb2Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhKSA9PiBzdGRlcnIgKz0gZGF0YSk7XG4gICAgICBcbiAgICAgIHByb2Mub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICAgIGNvbXBsZXRlKCgpID0+IHJlc29sdmUoc3Rkb3V0LnRyaW0oKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbXBsZXRlKCgpID0+IHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgZmFpbGVkICgke2NvZGV9KTogJHtzdGRlcnJ9YCkpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIHByb2Mub24oJ2Vycm9yJywgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbXBsZXRlKCgpID0+IHJlamVjdChlcnJvcikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9jb21tYW5kVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxNQUFNLGdCQUFnQixHQUE2QjtJQUNqRCx1REFBdUQ7SUFDdkQscUZBQXFGO0lBQ3JGLHVFQUF1RTtJQUN2RSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDO0lBQzFILEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO0lBQzVELElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUNuQixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsSUFBYztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElB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Q0FBQyxDQUFDO2dCQUN6QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN6QixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tICcuL3JlZ2V4VmFsaWRhdG9yLmpzJztcblxuY29uc3QgQUxMT1dFRF9DT01NQU5EUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAvLyBTRUNVUklUWSBGSVg6IEFkZGVkICdjbG9uZScgY29tbWFuZCB0byBnaXQgYWxsb3dsaXN0XG4gIC8vIFByZXZpb3VzbHk6IG5wbSBpbnN0YWxsYXRpb24gZmVhdHVyZSB3b3VsZCBmYWlsIHdpdGggXCJBcmd1bWVudCBub3QgYWxsb3dlZDogY2xvbmVcIlxuICAvLyBOb3c6IGdpdCBjbG9uZSBjb21tYW5kIGlzIGFsbG93ZWQgZm9yIG5wbSBpbnN0YWxsYXRpb24gZnVuY3Rpb25hbGl0eVxuICBnaXQ6IFsncHVsbCcsICdzdGF0dXMnLCAnbG9nJywgJ3Jldi1wYXJzZScsICdicmFuY2gnLCAnY2hlY2tvdXQnLCAnZmV0Y2gnLCAnY2xvbmUnLCAnLS1hYmJyZXYtcmVmJywgJ0hFQUQnLCAnLS1wb3JjZWxhaW4nXSxcbiAgbnBtOiBbJ2luc3RhbGwnLCAncnVuJywgJ2F1ZGl0JywgJ2NpJywgJy0tdmVyc2lvbicsICdidWlsZCddLFxuICBub2RlOiBbJy0tdmVyc2lvbiddLFxuICBucHg6IFsnLS12ZXJzaW9uJ11cbn07XG5cbmV4cG9ydCBjbGFzcyBDb21tYW5kVmFsaWRhdG9yIHtcbiAgc3RhdGljIHNhbml0aXplQ29tbWFuZChjbWQ6IHN0cmluZywgYXJnczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIUFMTE9XRURfQ09NTUFORFNbY21kXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21tYW5kIG5vdCBhbGxvd2VkOiAke2NtZH1gKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgYWxsb3dlZEFyZ3MgPSBBTExPV0VEX0NPTU1BTkRTW2NtZF07XG4gICAgZm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuICAgICAgLy8gQ2hlY2sgaWYgaXQncyBpbiBhbGxvd2VkIGxpc3Qgb3IgbWF0Y2hlcyBzYWZlIHBhdHRlcm5cbiAgICAgIGlmICghYWxsb3dlZEFyZ3MuaW5jbHVkZXMoYXJnKSAmJiAhdGhpcy5pc1NhZmVBcmd1bWVudChhcmcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJndW1lbnQgbm90IGFsbG93ZWQ6ICR7YXJnfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzU2FmZUFyZ3VtZW50KGFyZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQWxsb3cgYWxwaGFudW1lcmljLCBkYXNoLCB1bmRlcnNjb3JlLCBkb3QsIGFuZCBmb3J3YXJkIHNsYXNoXG4gICAgcmV0dXJuIFJlZ2V4VmFsaWRhdG9yLnZhbGlkYXRlKGFyZywgL15bYS16QS1aMC05XFwtXy5cXC9dKyQvLCB7IG1heExlbmd0aDogMTAwMCB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzZWN1cmVFeGVjKGNvbW1hbmQ6IHN0cmluZywgYXJnczogc3RyaW5nW10sIG9wdGlvbnM/OiBTcGF3bk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMuc2FuaXRpemVDb21tYW5kKGNvbW1hbmQsIGFyZ3MpO1xuICAgIFxuICAgIGNvbnN0IHNhZmVPcHRpb25zOiBTcGF3bk9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBQQVRIOiAnL3Vzci9iaW46L2JpbjovdXNyL2xvY2FsL2JpbicgLy8gUmVzdHJpY3QgUEFUSFxuICAgICAgfSxcbiAgICAgIGN3ZDogb3B0aW9ucz8uY3dkIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0IHx8IDMwMDAwIC8vIDMwIHNlY29uZCBkZWZhdWx0XG4gICAgfTtcbiAgICBcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHNhZmVPcHRpb25zKTtcbiAgICAgIFxuICAgICAgbGV0IHN0ZG91dCA9ICcnO1xuICAgICAgbGV0IHN0ZGVyciA9ICcnO1xuICAgICAgbGV0IHRpbWVvdXRIYW5kbGU6IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGlzQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICBcbiAgICAgIC8vIEhlbHBlciB0byBzYWZlbHkgcmVzb2x2ZS9yZWplY3Qgb25seSBvbmNlXG4gICAgICBjb25zdCBjb21wbGV0ZSA9IChmbjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICBpZiAoIWlzQ29tcGxldGVkKSB7XG4gICAgICAgICAgaXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aW1lb3V0SGFuZGxlKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZuKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBcbiAgICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgICBpZiAob3B0aW9ucz8udGltZW91dCkge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgcHJvYy5raWxsKCdTSUdURVJNJyk7XG4gICAgICAgICAgY29tcGxldGUoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgQ29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIgJHtvcHRpb25zLnRpbWVvdXR9bXNgKSkpO1xuICAgICAgICB9LCBvcHRpb25zLnRpbWVvdXQpO1xuICAgICAgICB0aW1lb3V0SGFuZGxlLnVucmVmKCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHByb2Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhKSA9PiBzdGRvdXQgKz0gZGF0YSk7XG4gICAgICBwcm9jLnN0ZGVycj8ub24oJ2RhdGEnLCAoZGF0YSkgPT4gc3RkZXJyICs9IGRhdGEpO1xuICAgICAgXG4gICAgICBwcm9jLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgICBjb21wbGV0ZSgoKSA9PiByZXNvbHZlKHN0ZG91dC50cmltKCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21wbGV0ZSgoKSA9PiByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCAoJHtjb2RlfSk6ICR7c3RkZXJyfWApKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBwcm9jLm9uKCdlcnJvcicsIChlcnJvcikgPT4ge1xuICAgICAgICBjb21wbGV0ZSgoKSA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59Il19
@@ -5,13 +5,14 @@
5
5
  * for tracking and alerting on security-related events.
6
6
  */
7
7
  export interface SecurityEvent {
8
- type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_DELETED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED';
8
+ type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_DELETED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION';
9
9
  severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
10
10
  source: string;
11
11
  details: string;
12
12
  userAgent?: string;
13
13
  ip?: string;
14
14
  additionalData?: Record<string, any>;
15
+ metadata?: Record<string, any>;
15
16
  }
16
17
  export interface SecurityLogEntry extends SecurityEvent {
17
18
  timestamp: string;
@@ -1 +1 @@
1
- {"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,2BAA2B,GAAG,wBAAwB,GAAG,wBAAwB,GACjF,0BAA0B,GAAG,2BAA2B,GAAG,qBAAqB,GAChF,sBAAsB,GAAG,oBAAoB,GAAG,0BAA0B,GAC1E,oBAAoB,GAAG,qBAAqB,GAAG,qBAAqB,GACpE,4BAA4B,GAAG,sBAAsB,GAAG,0BAA0B,GAClF,uBAAuB,GAAG,wBAAwB,GAAG,mBAAmB,GACxE,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,GAC9E,gBAAgB,GAAG,cAAc,GAAG,iBAAiB,GAAG,0BAA0B,GAClF,2BAA2B,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,GACjF,gBAAgB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,yBAAyB,GAC1F,sBAAsB,GAAG,2BAA2B,GAAG,iBAAiB,GAAG,iBAAiB,GAC5F,gBAAgB,GAAG,2BAA2B,GAAG,qCAAqC,GACtF,uBAAuB,GAAG,0BAA0B,GACpD,8BAA8B,GAAG,kCAAkC,GACnE,6BAA6B,GAAG,+BAA+B,GAC/D,gCAAgC,GAAG,gCAAgC,GACnE,gBAAgB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;IAClE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAK;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAE1C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAsBnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAsBhC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,GAAE,MAAY,GAAG,gBAAgB,EAAE;IAI/D;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,gBAAgB,EAAE;IAInF;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,gBAAgB,EAAE;IAIvE;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI;QAC/B,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;KAC1C;IAuBD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,GAAE,MAAU,GAAG,IAAI;CAUpD"}
1
+ {"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,2BAA2B,GAAG,wBAAwB,GAAG,wBAAwB,GACjF,0BAA0B,GAAG,2BAA2B,GAAG,qBAAqB,GAChF,sBAAsB,GAAG,oBAAoB,GAAG,0BAA0B,GAC1E,oBAAoB,GAAG,qBAAqB,GAAG,qBAAqB,GACpE,4BAA4B,GAAG,sBAAsB,GAAG,0BAA0B,GAClF,uBAAuB,GAAG,wBAAwB,GAAG,mBAAmB,GACxE,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,GAC9E,gBAAgB,GAAG,cAAc,GAAG,iBAAiB,GAAG,0BAA0B,GAClF,2BAA2B,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,GACjF,gBAAgB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,yBAAyB,GAC1F,sBAAsB,GAAG,2BAA2B,GAAG,iBAAiB,GAAG,iBAAiB,GAC5F,gBAAgB,GAAG,2BAA2B,GAAG,qCAAqC,GACtF,uBAAuB,GAAG,0BAA0B,GACpD,8BAA8B,GAAG,kCAAkC,GACnE,6BAA6B,GAAG,+BAA+B,GAC/D,gCAAgC,GAAG,gCAAgC,GACnE,gBAAgB,GAAG,mBAAmB,GAAG,kBAAkB,GAC3D,0BAA0B,GAAG,qBAAqB,GAAG,aAAa,GAAG,qBAAqB,CAAC;IACjG,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAK;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAE1C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAsBnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAsBhC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,GAAE,MAAY,GAAG,gBAAgB,EAAE;IAI/D;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,gBAAgB,EAAE;IAInF;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,gBAAgB,EAAE;IAIvE;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI;QAC/B,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;KAC1C;IAuBD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,GAAE,MAAU,GAAG,IAAI;CAUpD"}
@@ -105,4 +105,4 @@ export class SecurityMonitor {
105
105
  }
106
106
  }
107
107
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWlDNUMsTUFBTSxPQUFPLGVBQWU7SUFDbEIsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFVLE1BQU0sR0FBdUIsRUFBRSxDQUFDO0lBQ2hELE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsa0NBQWtDO0lBRTdFOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQW9CO1FBQzFDLE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxHQUFHLEtBQUs7WUFDUixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDbkMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUM3QyxDQUFDO1FBRUYsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELHNGQUFzRjtRQUN0RixvRUFBb0U7UUFDcEUsbURBQW1EO1FBRW5ELElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxpQkFB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Y2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5RXZlbnQge1xuICB0eXBlOiAnQ09OVEVOVF9JTkpFQ1RJT05fQVRURU1QVCcgfCAnWUFNTF9JTkpFQ1RJT05fQVRURU1QVCcgfCAnUEFUSF9UUkFWRVJTQUxfQVRURU1QVCcgfCBcbiAgICAgICAgJ1RPS0VOX1ZBTElEQVRJT05fRkFJTFVSRScgfCAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicgfCAnUkFURV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnWUFNTF9QQVJTSU5HX1dBUk5JTkcnIHwgJ1lBTUxfUEFSU0VfU1VDQ0VTUycgfCAnVE9LRU5fVkFMSURBVElPTl9TVUNDRVNTJyB8XG4gICAgICAgICdSQVRFX0xJTUlUX1dBUk5JTkcnIHwgJ1RPS0VOX0NBQ0hFX0NMRUFSRUQnIHwgJ1lBTUxfVU5JQ09ERV9BVFRBQ0snIHxcbiAgICAgICAgJ1VOSUNPREVfRElSRUNUSU9OX09WRVJSSURFJyB8ICdVTklDT0RFX01JWEVEX1NDUklQVCcgfCAnVU5JQ09ERV9WQUxJREFUSU9OX0VSUk9SJyB8XG4gICAgICAgICdDT05URU5UX1NJWkVfRVhDRUVERUQnIHwgJ0lOQ0xVREVfREVQVEhfRVhDRUVERUQnIHwgJ1RFTVBMQVRFX1JFTkRFUkVEJyB8IFxuICAgICAgICAnVEVNUExBVEVfSU5DTFVERScgfCAnVEVNUExBVEVfTE9BREVEJyB8ICdURU1QTEFURV9TQVZFRCcgfCAnVEVNUExBVEVfREVMRVRFRCcgfFxuICAgICAgICAnTUVNT1JZX0NSRUFURUQnIHwgJ01FTU9SWV9BRERFRCcgfCAnTUVNT1JZX1NFQVJDSEVEJyB8ICdTRU5TSVRJVkVfTUVNT1JZX0RFTEVURUQnIHxcbiAgICAgICAgJ1JFVEVOVElPTl9QT0xJQ1lfRU5GT1JDRUQnIHwgJ01FTU9SWV9DTEVBUkVEJyB8ICdNRU1PUllfTE9BREVEJyB8ICdNRU1PUllfU0FWRUQnIHxcbiAgICAgICAgJ01FTU9SWV9ERUxFVEVEJyB8ICdNRU1PUllfTE9BRF9GQUlMRUQnIHwgJ01FTU9SWV9TQVZFX0ZBSUxFRCcgfCAnTUVNT1JZX0xJU1RfSVRFTV9GQUlMRUQnIHxcbiAgICAgICAgJ01FTU9SWV9JTVBPUlRfRkFJTEVEJyB8ICdNRU1PUllfREVTRVJJQUxJWkVfRkFJTEVEJyB8ICdFTEVNRU5UX0NSRUFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfREVDSVNJT04nIHwgJ1JVTEVfRU5HSU5FX0NPTkZJR19VUERBVEUnIHwgJ1JVTEVfRU5HSU5FX0NPTkZJR19WQUxJREFUSU9OX0VSUk9SJyB8XG4gICAgICAgICdHT0FMX1RFTVBMQVRFX0FQUExJRUQnIHwgJ0dPQUxfVEVNUExBVEVfVkFMSURBVElPTicgfFxuICAgICAgICAnRU5TRU1CTEVfQ0lSQ1VMQVJfREVQRU5ERU5DWScgfCAnRU5TRU1CTEVfUkVTT1VSQ0VfTElNSVRfRVhDRUVERUQnIHwgXG4gICAgICAgICdFTlNFTUJMRV9BQ1RJVkFUSU9OX1RJTUVPVVQnIHwgJ0VOU0VNQkxFX1NVU1BJQ0lPVVNfQ09ORElUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9ORVNURURfREVQVEhfRVhDRUVERUQnIHwgJ0VOU0VNQkxFX0NPTlRFWFRfU0laRV9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfU0FWRUQnIHwgJ0VOU0VNQkxFX0lNUE9SVEVEJyB8ICdFTlNFTUJMRV9ERUxFVEVEJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlMb2dFbnRyeSBleHRlbmRzIFNlY3VyaXR5RXZlbnQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5TW9uaXRvciB7XG4gIHByaXZhdGUgc3RhdGljIGV2ZW50Q291bnQgPSAwO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBldmVudHM6IFNlY3VyaXR5TG9nRW50cnlbXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfRVZFTlRTID0gMTAwMDsgLy8gS2VlcCBsYXN0IDEwMDAgZXZlbnRzIGluIG1lbW9yeVxuXG4gIC8qKlxuICAgKiBMb2dzIGEgc2VjdXJpdHkgZXZlbnRcbiAgICovXG4gIHN0YXRpYyBsb2dTZWN1cml0eUV2ZW50KGV2ZW50OiBTZWN1cml0eUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgbG9nRW50cnk6IFNlY3VyaXR5TG9nRW50cnkgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaWQ6IGBTRUMtJHtEYXRlLm5vdygpfS0keysrdGhpcy5ldmVudENvdW50fWAsXG4gICAgfTtcblxuICAgIC8vIFN0b3JlIGluIG1lbW9yeSAoY2lyY3VsYXIgYnVmZmVyKVxuICAgIHRoaXMuZXZlbnRzLnB1c2gobG9nRW50cnkpO1xuICAgIGlmICh0aGlzLmV2ZW50cy5sZW5ndGggPiB0aGlzLk1BWF9FVkVOVFMpIHtcbiAgICAgIHRoaXMuZXZlbnRzLnNoaWZ0KCk7XG4gICAgfVxuXG4gICAgLy8gSW4gTUNQIHNlcnZlcnMsIHdlIGNhbm5vdCB3cml0ZSB0byBzdGRlcnIvc3Rkb3V0IGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICAvLyBTZWN1cml0eSBldmVudHMgYXJlIHN0b3JlZCBpbiBtZW1vcnkgYW5kIGNhbiBiZSByZXRyaWV2ZWQgdmlhIEFQSVxuICAgIC8vIE9ubHkgc2VuZCBjcml0aWNhbCBhbGVydHMgdmlhIHRoZSBwcm9wZXIgY2hhbm5lbFxuICAgIFxuICAgIGlmIChldmVudC5zZXZlcml0eSA9PT0gJ0NSSVRJQ0FMJykge1xuICAgICAgdGhpcy5zZW5kU2VjdXJpdHlBbGVydChsb2dFbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHNlY3VyaXR5IGFsZXJ0cyBmb3IgY3JpdGljYWwgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzZW5kU2VjdXJpdHlBbGVydChldmVudDogU2VjdXJpdHlMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIEluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpcyB3b3VsZCBpbnRlZ3JhdGUgd2l0aDpcbiAgICAvLyAtIFNsYWNrIHdlYmhvb2tzXG4gICAgLy8gLSBFbWFpbCBhbGVydHNcbiAgICAvLyAtIFBhZ2VyRHV0eVxuICAgIC8vIC0gU2VjdXJpdHkgSW5mb3JtYXRpb24gYW5kIEV2ZW50IE1hbmFnZW1lbnQgKFNJRU0pIHN5c3RlbXNcbiAgICBcbiAgICAvLyBMb2cgY3JpdGljYWwgc2VjdXJpdHkgYWxlcnRzIHdpdGggc3RydWN0dXJlZCBkYXRhXG4gICAgLy8gRE8gTk9UIHVzZSBjb25zb2xlLmVycm9yIGluIE1DUCBzZXJ2ZXJzIGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICBsb2dnZXIuZXJyb3IoJ/CfmqggQ1JJVElDQUwgU0VDVVJJVFkgQUxFUlQg8J+aqCcsIHtcbiAgICAgIHR5cGU6IGV2ZW50LnR5cGUsXG4gICAgICBkZXRhaWxzOiBldmVudC5kZXRhaWxzLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBpZDogZXZlbnQuaWRcbiAgICB9KTtcbiAgICBcbiAgICAvLyBJZiBpbiBwcm9kdWN0aW9uIG1vZGUgd2l0aCBwcm9wZXIgY29uZmlnLCBzZW5kIGFjdHVhbCBhbGVydHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuRE9MTEhPVVNFX1NFQ1VSSVRZX0FMRVJUUyA9PT0gJ3RydWUnKSB7XG4gICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgYWN0dWFsIGFsZXJ0IG1lY2hhbmlzbXNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyByZWNlbnQgc2VjdXJpdHkgZXZlbnRzIGZvciBhbmFseXNpc1xuICAgKi9cbiAgc3RhdGljIGdldFJlY2VudEV2ZW50cyhjb3VudDogbnVtYmVyID0gMTAwKTogU2VjdXJpdHlMb2dFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMuc2xpY2UoLWNvdW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSBzZXZlcml0eVxuICAgKi9cbiAgc3RhdGljIGdldEV2ZW50c0J5U2V2ZXJpdHkoc2V2ZXJpdHk6IFNlY3VyaXR5RXZlbnRbJ3NldmVyaXR5J10pOiBTZWN1cml0eUxvZ0VudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cy5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuc2V2ZXJpdHkgPT09IHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSB0eXBlXG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlUeXBlKHR5cGU6IFNlY3VyaXR5RXZlbnRbJ3R5cGUnXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSB0eXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBzZWN1cml0eSByZXBvcnRcbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVNlY3VyaXR5UmVwb3J0KCk6IHtcbiAgICB0b3RhbEV2ZW50czogbnVtYmVyO1xuICAgIGV2ZW50c0J5U2V2ZXJpdHk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgZXZlbnRzQnlUeXBlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiBTZWN1cml0eUxvZ0VudHJ5W107XG4gIH0ge1xuICAgIGNvbnN0IGV2ZW50c0J5U2V2ZXJpdHk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgICBDUklUSUNBTDogMCxcbiAgICAgIEhJR0g6IDAsXG4gICAgICBNRURJVU06IDAsXG4gICAgICBMT1c6IDAsXG4gICAgfTtcblxuICAgIGNvbnN0IGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBldmVudCBvZiB0aGlzLmV2ZW50cykge1xuICAgICAgZXZlbnRzQnlTZXZlcml0eVtldmVudC5zZXZlcml0eV0rKztcbiAgICAgIGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSA9IChldmVudHNCeVR5cGVbZXZlbnQudHlwZV0gfHwgMCkgKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0b3RhbEV2ZW50czogdGhpcy5ldmVudHMubGVuZ3RoLFxuICAgICAgZXZlbnRzQnlTZXZlcml0eSxcbiAgICAgIGV2ZW50c0J5VHlwZSxcbiAgICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiB0aGlzLmdldEV2ZW50c0J5U2V2ZXJpdHkoJ0NSSVRJQ0FMJykuc2xpY2UoLTEwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbGQgZXZlbnRzIChmb3IgbWVtb3J5IG1hbmFnZW1lbnQpXG4gICAqL1xuICBzdGF0aWMgY2xlYXJPbGRFdmVudHMoZGF5c1RvS2VlcDogbnVtYmVyID0gNyk6IHZvaWQge1xuICAgIGNvbnN0IGN1dG9mZkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1dG9mZkRhdGUuc2V0RGF0ZShjdXRvZmZEYXRlLmdldERhdGUoKSAtIGRheXNUb0tlZXApO1xuICAgIGNvbnN0IGN1dG9mZlRpbWVzdGFtcCA9IGN1dG9mZkRhdGUudG9JU09TdHJpbmcoKTtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ldmVudHMuZmluZEluZGV4KGV2ZW50ID0+IGV2ZW50LnRpbWVzdGFtcCA+PSBjdXRvZmZUaW1lc3RhbXApO1xuICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgIHRoaXMuZXZlbnRzLnNwbGljZSgwLCBpbmRleCk7XG4gICAgfVxuICB9XG59Il19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQW1DNUMsTUFBTSxPQUFPLGVBQWU7SUFDbEIsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFVLE1BQU0sR0FBdUIsRUFBRSxDQUFDO0lBQ2hELE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsa0NBQWtDO0lBRTdFOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQW9CO1FBQzFDLE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxHQUFHLEtBQUs7WUFDUixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDbkMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUM3QyxDQUFDO1FBRUYsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELHNGQUFzRjtRQUN0RixvRUFBb0U7UUFDcEUsbURBQW1EO1FBRW5ELElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxpQkFB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Y2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5RXZlbnQge1xuICB0eXBlOiAnQ09OVEVOVF9JTkpFQ1RJT05fQVRURU1QVCcgfCAnWUFNTF9JTkpFQ1RJT05fQVRURU1QVCcgfCAnUEFUSF9UUkFWRVJTQUxfQVRURU1QVCcgfCBcbiAgICAgICAgJ1RPS0VOX1ZBTElEQVRJT05fRkFJTFVSRScgfCAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicgfCAnUkFURV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnWUFNTF9QQVJTSU5HX1dBUk5JTkcnIHwgJ1lBTUxfUEFSU0VfU1VDQ0VTUycgfCAnVE9LRU5fVkFMSURBVElPTl9TVUNDRVNTJyB8XG4gICAgICAgICdSQVRFX0xJTUlUX1dBUk5JTkcnIHwgJ1RPS0VOX0NBQ0hFX0NMRUFSRUQnIHwgJ1lBTUxfVU5JQ09ERV9BVFRBQ0snIHxcbiAgICAgICAgJ1VOSUNPREVfRElSRUNUSU9OX09WRVJSSURFJyB8ICdVTklDT0RFX01JWEVEX1NDUklQVCcgfCAnVU5JQ09ERV9WQUxJREFUSU9OX0VSUk9SJyB8XG4gICAgICAgICdDT05URU5UX1NJWkVfRVhDRUVERUQnIHwgJ0lOQ0xVREVfREVQVEhfRVhDRUVERUQnIHwgJ1RFTVBMQVRFX1JFTkRFUkVEJyB8IFxuICAgICAgICAnVEVNUExBVEVfSU5DTFVERScgfCAnVEVNUExBVEVfTE9BREVEJyB8ICdURU1QTEFURV9TQVZFRCcgfCAnVEVNUExBVEVfREVMRVRFRCcgfFxuICAgICAgICAnTUVNT1JZX0NSRUFURUQnIHwgJ01FTU9SWV9BRERFRCcgfCAnTUVNT1JZX1NFQVJDSEVEJyB8ICdTRU5TSVRJVkVfTUVNT1JZX0RFTEVURUQnIHxcbiAgICAgICAgJ1JFVEVOVElPTl9QT0xJQ1lfRU5GT1JDRUQnIHwgJ01FTU9SWV9DTEVBUkVEJyB8ICdNRU1PUllfTE9BREVEJyB8ICdNRU1PUllfU0FWRUQnIHxcbiAgICAgICAgJ01FTU9SWV9ERUxFVEVEJyB8ICdNRU1PUllfTE9BRF9GQUlMRUQnIHwgJ01FTU9SWV9TQVZFX0ZBSUxFRCcgfCAnTUVNT1JZX0xJU1RfSVRFTV9GQUlMRUQnIHxcbiAgICAgICAgJ01FTU9SWV9JTVBPUlRfRkFJTEVEJyB8ICdNRU1PUllfREVTRVJJQUxJWkVfRkFJTEVEJyB8ICdFTEVNRU5UX0NSRUFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfREVDSVNJT04nIHwgJ1JVTEVfRU5HSU5FX0NPTkZJR19VUERBVEUnIHwgJ1JVTEVfRU5HSU5FX0NPTkZJR19WQUxJREFUSU9OX0VSUk9SJyB8XG4gICAgICAgICdHT0FMX1RFTVBMQVRFX0FQUExJRUQnIHwgJ0dPQUxfVEVNUExBVEVfVkFMSURBVElPTicgfFxuICAgICAgICAnRU5TRU1CTEVfQ0lSQ1VMQVJfREVQRU5ERU5DWScgfCAnRU5TRU1CTEVfUkVTT1VSQ0VfTElNSVRfRVhDRUVERUQnIHwgXG4gICAgICAgICdFTlNFTUJMRV9BQ1RJVkFUSU9OX1RJTUVPVVQnIHwgJ0VOU0VNQkxFX1NVU1BJQ0lPVVNfQ09ORElUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9ORVNURURfREVQVEhfRVhDRUVERUQnIHwgJ0VOU0VNQkxFX0NPTlRFWFRfU0laRV9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfU0FWRUQnIHwgJ0VOU0VNQkxFX0lNUE9SVEVEJyB8ICdFTlNFTUJMRV9ERUxFVEVEJyB8XG4gICAgICAgICdQT1JURk9MSU9fSU5JVElBTElaQVRJT04nIHwgJ1BPUlRGT0xJT19QT1BVTEFURUQnIHwgJ0ZJTEVfQ09QSUVEJyB8ICdESVJFQ1RPUllfTUlHUkFUSU9OJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUxvZ0VudHJ5IGV4dGVuZHMgU2VjdXJpdHlFdmVudCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRDb3VudCA9IDA7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGV2ZW50czogU2VjdXJpdHlMb2dFbnRyeVtdID0gW107XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BWF9FVkVOVFMgPSAxMDAwOyAvLyBLZWVwIGxhc3QgMTAwMCBldmVudHMgaW4gbWVtb3J5XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBzZWN1cml0eSBldmVudFxuICAgKi9cbiAgc3RhdGljIGxvZ1NlY3VyaXR5RXZlbnQoZXZlbnQ6IFNlY3VyaXR5RXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBsb2dFbnRyeTogU2VjdXJpdHlMb2dFbnRyeSA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBpZDogYFNFQy0ke0RhdGUubm93KCl9LSR7Kyt0aGlzLmV2ZW50Q291bnR9YCxcbiAgICB9O1xuXG4gICAgLy8gU3RvcmUgaW4gbWVtb3J5IChjaXJjdWxhciBidWZmZXIpXG4gICAgdGhpcy5ldmVudHMucHVzaChsb2dFbnRyeSk7XG4gICAgaWYgKHRoaXMuZXZlbnRzLmxlbmd0aCA+IHRoaXMuTUFYX0VWRU5UUykge1xuICAgICAgdGhpcy5ldmVudHMuc2hpZnQoKTtcbiAgICB9XG5cbiAgICAvLyBJbiBNQ1Agc2VydmVycywgd2UgY2Fubm90IHdyaXRlIHRvIHN0ZGVyci9zdGRvdXQgYXMgaXQgYnJlYWtzIHRoZSBKU09OLVJQQyBwcm90b2NvbFxuICAgIC8vIFNlY3VyaXR5IGV2ZW50cyBhcmUgc3RvcmVkIGluIG1lbW9yeSBhbmQgY2FuIGJlIHJldHJpZXZlZCB2aWEgQVBJXG4gICAgLy8gT25seSBzZW5kIGNyaXRpY2FsIGFsZXJ0cyB2aWEgdGhlIHByb3BlciBjaGFubmVsXG4gICAgXG4gICAgaWYgKGV2ZW50LnNldmVyaXR5ID09PSAnQ1JJVElDQUwnKSB7XG4gICAgICB0aGlzLnNlbmRTZWN1cml0eUFsZXJ0KGxvZ0VudHJ5KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgc2VjdXJpdHkgYWxlcnRzIGZvciBjcml0aWNhbCBldmVudHNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNlbmRTZWN1cml0eUFsZXJ0KGV2ZW50OiBTZWN1cml0eUxvZ0VudHJ5KTogdm9pZCB7XG4gICAgLy8gSW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LCB0aGlzIHdvdWxkIGludGVncmF0ZSB3aXRoOlxuICAgIC8vIC0gU2xhY2sgd2ViaG9va3NcbiAgICAvLyAtIEVtYWlsIGFsZXJ0c1xuICAgIC8vIC0gUGFnZXJEdXR5XG4gICAgLy8gLSBTZWN1cml0eSBJbmZvcm1hdGlvbiBhbmQgRXZlbnQgTWFuYWdlbWVudCAoU0lFTSkgc3lzdGVtc1xuICAgIFxuICAgIC8vIExvZyBjcml0aWNhbCBzZWN1cml0eSBhbGVydHMgd2l0aCBzdHJ1Y3R1cmVkIGRhdGFcbiAgICAvLyBETyBOT1QgdXNlIGNvbnNvbGUuZXJyb3IgaW4gTUNQIHNlcnZlcnMgYXMgaXQgYnJlYWtzIHRoZSBKU09OLVJQQyBwcm90b2NvbFxuICAgIGxvZ2dlci5lcnJvcign8J+aqCBDUklUSUNBTCBTRUNVUklUWSBBTEVSVCDwn5qoJywge1xuICAgICAgdHlwZTogZXZlbnQudHlwZSxcbiAgICAgIGRldGFpbHM6IGV2ZW50LmRldGFpbHMsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGlkOiBldmVudC5pZFxuICAgIH0pO1xuICAgIFxuICAgIC8vIElmIGluIHByb2R1Y3Rpb24gbW9kZSB3aXRoIHByb3BlciBjb25maWcsIHNlbmQgYWN0dWFsIGFsZXJ0c1xuICAgIGlmIChwcm9jZXNzLmVudi5ET0xMSE9VU0VfU0VDVVJJVFlfQUxFUlRTID09PSAndHJ1ZScpIHtcbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCBhY3R1YWwgYWxlcnQgbWVjaGFuaXNtc1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHJlY2VudCBzZWN1cml0eSBldmVudHMgZm9yIGFuYWx5c2lzXG4gICAqL1xuICBzdGF0aWMgZ2V0UmVjZW50RXZlbnRzKGNvdW50OiBudW1iZXIgPSAxMDApOiBTZWN1cml0eUxvZ0VudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cy5zbGljZSgtY291bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHNldmVyaXR5XG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlTZXZlcml0eShzZXZlcml0eTogU2VjdXJpdHlFdmVudFsnc2V2ZXJpdHknXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmZpbHRlcihldmVudCA9PiBldmVudC5zZXZlcml0eSA9PT0gc2V2ZXJpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHR5cGVcbiAgICovXG4gIHN0YXRpYyBnZXRFdmVudHNCeVR5cGUodHlwZTogU2VjdXJpdHlFdmVudFsndHlwZSddKTogU2VjdXJpdHlMb2dFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMuZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnR5cGUgPT09IHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNlY3VyaXR5IHJlcG9ydFxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlU2VjdXJpdHlSZXBvcnQoKToge1xuICAgIHRvdGFsRXZlbnRzOiBudW1iZXI7XG4gICAgZXZlbnRzQnlTZXZlcml0eTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgcmVjZW50Q3JpdGljYWxFdmVudHM6IFNlY3VyaXR5TG9nRW50cnlbXTtcbiAgfSB7XG4gICAgY29uc3QgZXZlbnRzQnlTZXZlcml0eTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgICAgIENSSVRJQ0FMOiAwLFxuICAgICAgSElHSDogMCxcbiAgICAgIE1FRElVTTogMCxcbiAgICAgIExPVzogMCxcbiAgICB9O1xuXG4gICAgY29uc3QgZXZlbnRzQnlUeXBlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHRoaXMuZXZlbnRzKSB7XG4gICAgICBldmVudHNCeVNldmVyaXR5W2V2ZW50LnNldmVyaXR5XSsrO1xuICAgICAgZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdID0gKGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsRXZlbnRzOiB0aGlzLmV2ZW50cy5sZW5ndGgsXG4gICAgICBldmVudHNCeVNldmVyaXR5LFxuICAgICAgZXZlbnRzQnlUeXBlLFxuICAgICAgcmVjZW50Q3JpdGljYWxFdmVudHM6IHRoaXMuZ2V0RXZlbnRzQnlTZXZlcml0eSgnQ1JJVElDQUwnKS5zbGljZSgtMTApLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIG9sZCBldmVudHMgKGZvciBtZW1vcnkgbWFuYWdlbWVudClcbiAgICovXG4gIHN0YXRpYyBjbGVhck9sZEV2ZW50cyhkYXlzVG9LZWVwOiBudW1iZXIgPSA3KTogdm9pZCB7XG4gICAgY29uc3QgY3V0b2ZmRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY3V0b2ZmRGF0ZS5zZXREYXRlKGN1dG9mZkRhdGUuZ2V0RGF0ZSgpIC0gZGF5c1RvS2VlcCk7XG4gICAgY29uc3QgY3V0b2ZmVGltZXN0YW1wID0gY3V0b2ZmRGF0ZS50b0lTT1N0cmluZygpO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmV2ZW50cy5maW5kSW5kZXgoZXZlbnQgPT4gZXZlbnQudGltZXN0YW1wID49IGN1dG9mZlRpbWVzdGFtcCk7XG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgdGhpcy5ldmVudHMuc3BsaWNlKDAsIGluZGV4KTtcbiAgICB9XG4gIH1cbn0iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/UpdateTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CA2DlG"}
1
+ {"version":3,"file":"UpdateTools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/UpdateTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CAgFlG"}
@@ -58,7 +58,28 @@ export function getUpdateTools(server) {
58
58
  },
59
59
  },
60
60
  handler: () => server.getServerStatus()
61
+ },
62
+ {
63
+ tool: {
64
+ name: "convert_to_git_installation",
65
+ description: "Convert from npm installation to git installation for more control over updates",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ targetDir: {
70
+ type: "string",
71
+ description: "Target directory for git installation (default: ~/.dollhouse/mcp-server-git)",
72
+ },
73
+ confirm: {
74
+ type: "boolean",
75
+ description: "Confirm the conversion (true to proceed, false for preview)",
76
+ },
77
+ },
78
+ required: ["confirm"],
79
+ },
80
+ },
81
+ handler: (args) => server.convertToGitInstallation(args.targetDir, args.confirm)
61
82
  }
62
83
  ];
63
84
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL1VwZGF0ZVRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBS0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFvQjtJQUNqRCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtTQUN4QztRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxlQUFlO2dCQUNyQixXQUFXLEVBQUUsdURBQXVEO2dCQUNwRSxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUseURBQXlEO3lCQUN2RTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMxRDtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFdBQVcsRUFBRSw4Q0FBOEM7Z0JBQzNELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSx3REFBd0Q7eUJBQ3RFO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDdEI7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzVEO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLDREQUE0RDtnQkFDekUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtTQUN4QztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVcGRhdGUvbWFpbnRlbmFuY2UtcmVsYXRlZCB0b29sIGRlZmluaXRpb25zIGFuZCBoYW5kbGVyc1xuICovXG5cbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uIH0gZnJvbSAnLi9Ub29sUmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBkYXRlVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJjaGVja19mb3JfdXBkYXRlc1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDaGVjayBpZiBhIG5ld2VyIHZlcnNpb24gb2YgRG9sbGhvdXNlTUNQIGlzIGF2YWlsYWJsZVwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmNoZWNrRm9yVXBkYXRlcygpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwidXBkYXRlX3NlcnZlclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJVcGRhdGUgRG9sbGhvdXNlTUNQIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIEdpdEh1YlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgY29uZmlybToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29uZmlybSB0aGUgdXBkYXRlICh0cnVlIHRvIHByb2NlZWQsIGZhbHNlIGZvciBwcmV2aWV3KVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJjb25maXJtXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci51cGRhdGVTZXJ2ZXIoYXJncy5jb25maXJtKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInJvbGxiYWNrX3VwZGF0ZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJSb2xsYmFjayB0byB0aGUgcHJldmlvdXMgdmVyc2lvbiBmcm9tIGJhY2t1cFwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgY29uZmlybToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29uZmlybSB0aGUgcm9sbGJhY2sgKHRydWUgdG8gcHJvY2VlZCwgZmFsc2UgZm9yIGluZm8pXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcImNvbmZpcm1cIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnJvbGxiYWNrVXBkYXRlKGFyZ3MuY29uZmlybSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfc2VydmVyX3N0YXR1c1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJHZXQgY3VycmVudCBzZXJ2ZXIgc3RhdHVzLCB2ZXJzaW9uLCBhbmQgc3lzdGVtIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoKSA9PiBzZXJ2ZXIuZ2V0U2VydmVyU3RhdHVzKClcbiAgICB9XG4gIF07XG59Il19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL1VwZGF0ZVRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBS0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFvQjtJQUNqRCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtTQUN4QztRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxlQUFlO2dCQUNyQixXQUFXLEVBQUUsdURBQXVEO2dCQUNwRSxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUseURBQXlEO3lCQUN2RTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMxRDtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFdBQVcsRUFBRSw4Q0FBOEM7Z0JBQzNELFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSx3REFBd0Q7eUJBQ3RFO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDdEI7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzVEO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLDREQUE0RDtnQkFDekUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtTQUN4QztRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFdBQVcsRUFBRSxpRkFBaUY7Z0JBQzlGLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsU0FBUyxFQUFFOzRCQUNULElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw4RUFBOEU7eUJBQzVGO3dCQUNELE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsNkRBQTZEO3lCQUMzRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdEY7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXBkYXRlL21haW50ZW5hbmNlLXJlbGF0ZWQgdG9vbCBkZWZpbml0aW9ucyBhbmQgaGFuZGxlcnNcbiAqL1xuXG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiB9IGZyb20gJy4vVG9vbFJlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IElUb29sSGFuZGxlciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVwZGF0ZVRvb2xzKHNlcnZlcjogSVRvb2xIYW5kbGVyKTogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY2hlY2tfZm9yX3VwZGF0ZXNcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2hlY2sgaWYgYSBuZXdlciB2ZXJzaW9uIG9mIERvbGxob3VzZU1DUCBpcyBhdmFpbGFibGVcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5jaGVja0ZvclVwZGF0ZXMoKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcInVwZGF0ZV9zZXJ2ZXJcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVXBkYXRlIERvbGxob3VzZU1DUCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gZnJvbSBHaXRIdWJcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGNvbmZpcm06IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbmZpcm0gdGhlIHVwZGF0ZSAodHJ1ZSB0byBwcm9jZWVkLCBmYWxzZSBmb3IgcHJldmlldylcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wiY29uZmlybVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIudXBkYXRlU2VydmVyKGFyZ3MuY29uZmlybSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJyb2xsYmFja191cGRhdGVcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUm9sbGJhY2sgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24gZnJvbSBiYWNrdXBcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGNvbmZpcm06IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbmZpcm0gdGhlIHJvbGxiYWNrICh0cnVlIHRvIHByb2NlZWQsIGZhbHNlIGZvciBpbmZvKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJjb25maXJtXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5yb2xsYmFja1VwZGF0ZShhcmdzLmNvbmZpcm0pXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZ2V0X3NlcnZlcl9zdGF0dXNcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGN1cnJlbnQgc2VydmVyIHN0YXR1cywgdmVyc2lvbiwgYW5kIHN5c3RlbSBpbmZvcm1hdGlvblwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldFNlcnZlclN0YXR1cygpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY29udmVydF90b19naXRfaW5zdGFsbGF0aW9uXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbnZlcnQgZnJvbSBucG0gaW5zdGFsbGF0aW9uIHRvIGdpdCBpbnN0YWxsYXRpb24gZm9yIG1vcmUgY29udHJvbCBvdmVyIHVwZGF0ZXNcIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHRhcmdldERpcjoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUYXJnZXQgZGlyZWN0b3J5IGZvciBnaXQgaW5zdGFsbGF0aW9uIChkZWZhdWx0OiB+Ly5kb2xsaG91c2UvbWNwLXNlcnZlci1naXQpXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29uZmlybSB0aGUgY29udmVyc2lvbiAodHJ1ZSB0byBwcm9jZWVkLCBmYWxzZSBmb3IgcHJldmlldylcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wiY29uZmlybVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuY29udmVydFRvR2l0SW5zdGFsbGF0aW9uKGFyZ3MudGFyZ2V0RGlyLCBhcmdzLmNvbmZpcm0pXG4gICAgfVxuICBdO1xufSJdfQ==
@@ -54,6 +54,7 @@ export interface IToolHandler {
54
54
  updateServer(confirm: boolean): Promise<any>;
55
55
  rollbackUpdate(confirm: boolean): Promise<any>;
56
56
  getServerStatus(): Promise<any>;
57
+ convertToGitInstallation(targetDir?: string, confirm?: boolean): Promise<any>;
57
58
  configureIndicator(config: any): Promise<any>;
58
59
  getIndicatorConfig(): Promise<any>;
59
60
  exportPersona(persona: string): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAE3B,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjD,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1H,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAG/C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,aAAa,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACvI,WAAW,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzF,eAAe,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACpF,aAAa,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAGtF,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAGvD,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAG7C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAGlC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,wBAAwB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAG9E,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAGnC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,iBAAiB,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/D"}
@@ -2,4 +2,4 @@
2
2
  * Server interface types to avoid circular dependencies
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJ2ZXIgaW50ZXJmYWNlIHR5cGVzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2xIYW5kbGVyIHtcbiAgLy8gUGVyc29uYSB0b29scyAobGVnYWN5IC0gd2lsbCBjYWxsIGVsZW1lbnQgdG9vbHMgaW50ZXJuYWxseSlcbiAgbGlzdFBlcnNvbmFzKCk6IFByb21pc2U8YW55PjtcbiAgYWN0aXZhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZ2V0QWN0aXZlUGVyc29uYSgpOiBQcm9taXNlPGFueT47XG4gIGRlYWN0aXZhdGVQZXJzb25hKCk6IFByb21pc2U8YW55PjtcbiAgZ2V0UGVyc29uYURldGFpbHMocGVyc29uYTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRQZXJzb25hcygpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZVBlcnNvbmEobmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBpbnN0cnVjdGlvbnM6IHN0cmluZywgdHJpZ2dlcnM/OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGVkaXRQZXJzb25hKHBlcnNvbmE6IHN0cmluZywgZmllbGQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgdmFsaWRhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQgdG9vbHMgKGdlbmVyaWMgZm9yIGFsbCBlbGVtZW50IHR5cGVzKVxuICBsaXN0RWxlbWVudHModHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEFjdGl2ZUVsZW1lbnRzKHR5cGU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZGVhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRFbGVtZW50cyh0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nOyBjb250ZW50Pzogc3RyaW5nOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT59KTogUHJvbWlzZTxhbnk+O1xuICBlZGl0RWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGZpZWxkOiBzdHJpbmc7IHZhbHVlOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xuICB2YWxpZGF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBzdHJpY3Q/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlRWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGRlbGV0ZURhdGE/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQtc3BlY2lmaWMgdG9vbHNcbiAgcmVuZGVyVGVtcGxhdGUobmFtZTogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT47XG4gIGV4ZWN1dGVBZ2VudChuYW1lOiBzdHJpbmcsIGdvYWw6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIENvbGxlY3Rpb24gdG9vbHNcbiAgYnJvd3NlQ29sbGVjdGlvbihzZWN0aW9uPzogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBzZWFyY2hDb2xsZWN0aW9uKHF1ZXJ5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldENvbGxlY3Rpb25Db250ZW50KHBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgaW5zdGFsbENvbnRlbnQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBzdWJtaXRDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIFVzZXIgdG9vbHNcbiAgc2V0VXNlcklkZW50aXR5KHVzZXJuYW1lOiBzdHJpbmcsIGVtYWlsPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBnZXRVc2VySWRlbnRpdHkoKTogUHJvbWlzZTxhbnk+O1xuICBjbGVhclVzZXJJZGVudGl0eSgpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBVcGRhdGUgdG9vbHNcbiAgY2hlY2tGb3JVcGRhdGVzKCk6IFByb21pc2U8YW55PjtcbiAgdXBkYXRlU2VydmVyKGNvbmZpcm06IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG4gIHJvbGxiYWNrVXBkYXRlKGNvbmZpcm06IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG4gIGdldFNlcnZlclN0YXR1cygpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBDb25maWcgdG9vbHNcbiAgY29uZmlndXJlSW5kaWNhdG9yKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+O1xuICBnZXRJbmRpY2F0b3JDb25maWcoKTogUHJvbWlzZTxhbnk+O1xuICBcbiAgLy8gRXhwb3J0L0ltcG9ydC9TaGFyZSB0b29sc1xuICBleHBvcnRQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZXhwb3J0QWxsUGVyc29uYXMoaW5jbHVkZURlZmF1bHRzPzogYm9vbGVhbik6IFByb21pc2U8YW55PjtcbiAgaW1wb3J0UGVyc29uYShzb3VyY2U6IHN0cmluZywgb3ZlcndyaXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PjtcbiAgc2hhcmVQZXJzb25hKHBlcnNvbmE6IHN0cmluZywgZXhwaXJ5RGF5cz86IG51bWJlcik6IFByb21pc2U8YW55PjtcbiAgaW1wb3J0RnJvbVVybCh1cmw6IHN0cmluZywgb3ZlcndyaXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55Pjtcbn0iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJ2ZXIgaW50ZXJmYWNlIHR5cGVzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2xIYW5kbGVyIHtcbiAgLy8gUGVyc29uYSB0b29scyAobGVnYWN5IC0gd2lsbCBjYWxsIGVsZW1lbnQgdG9vbHMgaW50ZXJuYWxseSlcbiAgbGlzdFBlcnNvbmFzKCk6IFByb21pc2U8YW55PjtcbiAgYWN0aXZhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZ2V0QWN0aXZlUGVyc29uYSgpOiBQcm9taXNlPGFueT47XG4gIGRlYWN0aXZhdGVQZXJzb25hKCk6IFByb21pc2U8YW55PjtcbiAgZ2V0UGVyc29uYURldGFpbHMocGVyc29uYTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRQZXJzb25hcygpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZVBlcnNvbmEobmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBpbnN0cnVjdGlvbnM6IHN0cmluZywgdHJpZ2dlcnM/OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGVkaXRQZXJzb25hKHBlcnNvbmE6IHN0cmluZywgZmllbGQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgdmFsaWRhdGVQZXJzb25hKHBlcnNvbmE6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQgdG9vbHMgKGdlbmVyaWMgZm9yIGFsbCBlbGVtZW50IHR5cGVzKVxuICBsaXN0RWxlbWVudHModHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEFjdGl2ZUVsZW1lbnRzKHR5cGU6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgZGVhY3RpdmF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWxvYWRFbGVtZW50cyh0eXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGNyZWF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nOyBjb250ZW50Pzogc3RyaW5nOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT59KTogUHJvbWlzZTxhbnk+O1xuICBlZGl0RWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGZpZWxkOiBzdHJpbmc7IHZhbHVlOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xuICB2YWxpZGF0ZUVsZW1lbnQoYXJnczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBzdHJpY3Q/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlRWxlbWVudChhcmdzOiB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGRlbGV0ZURhdGE/OiBib29sZWFufSk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEVsZW1lbnQtc3BlY2lmaWMgdG9vbHNcbiAgcmVuZGVyVGVtcGxhdGUobmFtZTogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT47XG4gIGV4ZWN1dGVBZ2VudChuYW1lOiBzdHJpbmcsIGdvYWw6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIENvbGxlY3Rpb24gdG9vbHNcbiAgYnJvd3NlQ29sbGVjdGlvbihzZWN0aW9uPzogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBzZWFyY2hDb2xsZWN0aW9uKHF1ZXJ5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGdldENvbGxlY3Rpb25Db250ZW50KHBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgaW5zdGFsbENvbnRlbnQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBzdWJtaXRDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIFVzZXIgdG9vbHNcbiAgc2V0VXNlcklkZW50aXR5KHVzZXJuYW1lOiBzdHJpbmcsIGVtYWlsPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBnZXRVc2VySWRlbnRpdHkoKTogUHJvbWlzZTxhbnk+O1xuICBjbGVhclVzZXJJZGVudGl0eSgpOiBQcm9taXNlPGFueT47XG4gIFxuICAvLyBVcGRhdGUgdG9vbHNcbiAgY2hlY2tGb3JVcGRhdGVzKCk6IFByb21pc2U8YW55PjtcbiAgdXBkYXRlU2VydmVyKGNvbmZpcm06IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG4gIHJvbGxiYWNrVXBkYXRlKGNvbmZpcm06IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG4gIGdldFNlcnZlclN0YXR1cygpOiBQcm9taXNlPGFueT47XG4gIGNvbnZlcnRUb0dpdEluc3RhbGxhdGlvbih0YXJnZXREaXI/OiBzdHJpbmcsIGNvbmZpcm0/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+O1xuICBcbiAgLy8gQ29uZmlnIHRvb2xzXG4gIGNvbmZpZ3VyZUluZGljYXRvcihjb25maWc6IGFueSk6IFByb21pc2U8YW55PjtcbiAgZ2V0SW5kaWNhdG9yQ29uZmlnKCk6IFByb21pc2U8YW55PjtcbiAgXG4gIC8vIEV4cG9ydC9JbXBvcnQvU2hhcmUgdG9vbHNcbiAgZXhwb3J0UGVyc29uYShwZXJzb25hOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGV4cG9ydEFsbFBlcnNvbmFzKGluY2x1ZGVEZWZhdWx0cz86IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG4gIGltcG9ydFBlcnNvbmEoc291cmNlOiBzdHJpbmcsIG92ZXJ3cml0ZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG4gIHNoYXJlUGVyc29uYShwZXJzb25hOiBzdHJpbmcsIGV4cGlyeURheXM/OiBudW1iZXIpOiBQcm9taXNlPGFueT47XG4gIGltcG9ydEZyb21VcmwodXJsOiBzdHJpbmcsIG92ZXJ3cml0ZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XG59Il19
@@ -26,6 +26,23 @@ export declare class BackupManager {
26
26
  * Create a backup of the current installation
27
27
  */
28
28
  createBackup(version?: string): Promise<BackupInfo>;
29
+ /**
30
+ * Create a backup specifically for npm installations
31
+ */
32
+ createNpmBackup(npmGlobalPath: string, version?: string): Promise<string>;
33
+ /**
34
+ * Copy directory recursively with progress reporting
35
+ * @deprecated Use FileOperations.copyDirectory instead
36
+ */
37
+ private copyDirectory;
38
+ /**
39
+ * Update npm backup manifest
40
+ */
41
+ private updateNpmBackupManifest;
42
+ /**
43
+ * Clean up old npm backups
44
+ */
45
+ private cleanupOldNpmBackups;
29
46
  /**
30
47
  * List available backups
31
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BackupManager.d.ts","sourceRoot":"","sources":["../../src/update/BackupManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,CAAC,EAAE,MAAM;IAyB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4EzD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAmC1C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKnD;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtD;;OAEG;IACG,iBAAiB,CAAC,SAAS,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAmBhE"}
1
+ {"version":3,"file":"BackupManager.d.ts","sourceRoot":"","sources":["../../src/update/BackupManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,CAAC,EAAE,MAAM;IAyB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuFzD;;OAEG;IACG,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmD/E;;;OAGG;YACW,aAAa;IAW3B;;OAEG;YACW,uBAAuB;IA8BrC;;OAEG;YACW,oBAAoB;IAqBlC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAmC1C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKnD;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtD;;OAEG;IACG,iBAAiB,CAAC,SAAS,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAmBhE"}