@dollhousemcp/mcp-server 1.9.8 → 1.9.11

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 (113) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.github.md +79 -3
  3. package/README.md.backup +79 -3
  4. package/dist/collection/PersonaSubmitter.js +2 -2
  5. package/dist/config/ConfigManager.d.ts +24 -0
  6. package/dist/config/ConfigManager.d.ts.map +1 -1
  7. package/dist/config/ConfigManager.js +28 -22
  8. package/dist/config/ConfigWizardCheck.d.ts.map +1 -1
  9. package/dist/config/ConfigWizardCheck.js +9 -2
  10. package/dist/elements/BaseElement.d.ts.map +1 -1
  11. package/dist/elements/BaseElement.js +11 -4
  12. package/dist/elements/agents/AgentManager.d.ts +5 -0
  13. package/dist/elements/agents/AgentManager.d.ts.map +1 -1
  14. package/dist/elements/agents/AgentManager.js +52 -2
  15. package/dist/elements/agents/types.d.ts +6 -0
  16. package/dist/elements/agents/types.d.ts.map +1 -1
  17. package/dist/elements/agents/types.js +1 -1
  18. package/dist/elements/memories/Memory.d.ts +6 -0
  19. package/dist/elements/memories/Memory.d.ts.map +1 -1
  20. package/dist/elements/memories/Memory.js +87 -12
  21. package/dist/elements/memories/MemoryManager.d.ts +6 -0
  22. package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
  23. package/dist/elements/memories/MemoryManager.js +54 -1
  24. package/dist/elements/skills/Skill.d.ts +1 -0
  25. package/dist/elements/skills/Skill.d.ts.map +1 -1
  26. package/dist/elements/skills/Skill.js +1 -1
  27. package/dist/elements/skills/SkillManager.d.ts +6 -0
  28. package/dist/elements/skills/SkillManager.d.ts.map +1 -1
  29. package/dist/elements/skills/SkillManager.js +62 -2
  30. package/dist/elements/templates/Template.d.ts +6 -0
  31. package/dist/elements/templates/Template.d.ts.map +1 -1
  32. package/dist/elements/templates/Template.js +1 -1
  33. package/dist/elements/templates/TemplateManager.d.ts.map +1 -1
  34. package/dist/elements/templates/TemplateManager.js +46 -2
  35. package/dist/generated/version.d.ts +2 -2
  36. package/dist/generated/version.d.ts.map +1 -1
  37. package/dist/generated/version.js +3 -3
  38. package/dist/handlers/EnhancedIndexHandler.d.ts +69 -0
  39. package/dist/handlers/EnhancedIndexHandler.d.ts.map +1 -0
  40. package/dist/handlers/EnhancedIndexHandler.js +394 -0
  41. package/dist/index.d.ts +49 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +89 -2
  44. package/dist/persona/PersonaElementManager.js +3 -3
  45. package/dist/persona/PersonaLoader.d.ts +6 -0
  46. package/dist/persona/PersonaLoader.d.ts.map +1 -1
  47. package/dist/persona/PersonaLoader.js +62 -1
  48. package/dist/portfolio/EnhancedIndexManager-fixes.d.ts +9 -0
  49. package/dist/portfolio/EnhancedIndexManager-fixes.d.ts.map +1 -0
  50. package/dist/portfolio/EnhancedIndexManager-fixes.js +123 -0
  51. package/dist/portfolio/EnhancedIndexManager.d.ts +429 -0
  52. package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -0
  53. package/dist/portfolio/EnhancedIndexManager.js +1780 -0
  54. package/dist/portfolio/GitHubPortfolioIndexer.d.ts.map +1 -1
  55. package/dist/portfolio/GitHubPortfolioIndexer.js +2 -3
  56. package/dist/portfolio/NLPScoringManager.d.ts +131 -0
  57. package/dist/portfolio/NLPScoringManager.d.ts.map +1 -0
  58. package/dist/portfolio/NLPScoringManager.js +351 -0
  59. package/dist/portfolio/PortfolioIndexManager.d.ts.map +1 -1
  60. package/dist/portfolio/PortfolioIndexManager.js +13 -3
  61. package/dist/portfolio/RelationshipManager.d.ts +133 -0
  62. package/dist/portfolio/RelationshipManager.d.ts.map +1 -0
  63. package/dist/portfolio/RelationshipManager.js +503 -0
  64. package/dist/portfolio/UnifiedIndexManager.d.ts +2 -0
  65. package/dist/portfolio/UnifiedIndexManager.d.ts.map +1 -1
  66. package/dist/portfolio/UnifiedIndexManager.js +59 -5
  67. package/dist/portfolio/VerbTriggerManager.d.ts +127 -0
  68. package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -0
  69. package/dist/portfolio/VerbTriggerManager.js +490 -0
  70. package/dist/portfolio/config/IndexConfig.d.ts +110 -0
  71. package/dist/portfolio/config/IndexConfig.d.ts.map +1 -0
  72. package/dist/portfolio/config/IndexConfig.js +391 -0
  73. package/dist/portfolio/types/RelationshipTypes.d.ts +250 -0
  74. package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -0
  75. package/dist/portfolio/types/RelationshipTypes.js +341 -0
  76. package/dist/security/InputValidator.d.ts.map +1 -1
  77. package/dist/security/InputValidator.js +4 -3
  78. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  79. package/dist/security/audit/config/suppressions.js +75 -1
  80. package/dist/security/pathValidator.js +2 -2
  81. package/dist/security/validators/unicodeValidator.d.ts.map +1 -1
  82. package/dist/security/validators/unicodeValidator.js +3 -2
  83. package/dist/security/yamlValidator.js +2 -2
  84. package/dist/server/ServerSetup.d.ts.map +1 -1
  85. package/dist/server/ServerSetup.js +4 -1
  86. package/dist/server/tools/EnhancedIndexTools.d.ts +18 -0
  87. package/dist/server/tools/EnhancedIndexTools.d.ts.map +1 -0
  88. package/dist/server/tools/EnhancedIndexTools.js +122 -0
  89. package/dist/server/tools/index.d.ts +1 -0
  90. package/dist/server/tools/index.d.ts.map +1 -1
  91. package/dist/server/tools/index.js +2 -1
  92. package/dist/server/types.d.ts +16 -0
  93. package/dist/server/types.d.ts.map +1 -1
  94. package/dist/server/types.js +1 -1
  95. package/dist/sync/PortfolioDownloader.js +3 -3
  96. package/dist/tools/portfolio/submitToPortfolioTool.js +5 -5
  97. package/dist/utils/FileLock.d.ts +38 -0
  98. package/dist/utils/FileLock.d.ts.map +1 -0
  99. package/dist/utils/FileLock.js +161 -0
  100. package/dist/utils/GitHubRateLimiter.d.ts +6 -0
  101. package/dist/utils/GitHubRateLimiter.d.ts.map +1 -1
  102. package/dist/utils/GitHubRateLimiter.js +85 -24
  103. package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
  104. package/dist/utils/PerformanceMonitor.js +2 -2
  105. package/dist/utils/elementId.d.ts +76 -0
  106. package/dist/utils/elementId.d.ts.map +1 -0
  107. package/dist/utils/elementId.js +144 -0
  108. package/dist/utils/filesystem.js +2 -2
  109. package/dist/utils/searchUtils.js +2 -2
  110. package/dist/utils/securityUtils.d.ts +59 -0
  111. package/dist/utils/securityUtils.d.ts.map +1 -0
  112. package/dist/utils/securityUtils.js +96 -0
  113. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,116 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.11] - 2025-09-28
4
+
5
+ ### Fixed
6
+ - **SonarCloud Quality Improvements**
7
+ - Resolved S1143 violation: unsafe throw in finally block (PR #1162)
8
+ - Fixed async constructor pattern in GitHubRateLimiter (PR #1161)
9
+ - Addressed remaining test file reliability issues (PR #1158)
10
+ - Removed SonarCloud analysis artifacts from tracking (PR #1157)
11
+ - Fixed remaining source file bugs (PR #1156)
12
+ - Resolved regex precedence and ReDoS vulnerabilities (PR #1155)
13
+ - Fixed control character literal usage (PR #1154)
14
+ - Fixed unsafe throw in finally blocks (PR #1153)
15
+ - Removed hardcoded token from validation script (PR #1152)
16
+
17
+ ### Security
18
+ - Fixed command injection vulnerabilities in GitHub Actions workflows (Issue #1149)
19
+ - Resolved ReDoS vulnerabilities in RelationshipManager by replacing regex with string methods (Issue #1144)
20
+
21
+ ### Improved
22
+ - **Test Utilities**: Extracted reusable permission test helpers for cross-platform compatibility
23
+ - **Code Quality**: Achieved 82% reduction in SonarCloud reliability bugs (from 55 to 10)
24
+ - **Security Posture**: All critical and high severity security issues resolved
25
+
26
+ ## [1.9.10] - 2025-09-27
27
+
28
+ ### Added
29
+ - **Enhanced Capability Index** - Major new feature for intelligent element discovery
30
+ - **NLP Scoring System** (PR #1091)
31
+ - Jaccard similarity and Shannon entropy scoring
32
+ - Advanced sampling algorithm for performance
33
+ - Extensible Enhanced Index Manager architecture
34
+ - Verb-based action triggers for natural language queries
35
+
36
+ - **Cross-Element Relationships** (PR #1093)
37
+ - GraphRAG-style relationship mapping between elements
38
+ - Automatic discovery of element dependencies and connections
39
+
40
+ - **Comprehensive Trigger Extraction** - Extended to all element types
41
+ - Memory elements trigger extraction (PR #1133, Issue #1124)
42
+ - Skills elements trigger extraction (PR #1136, Issue #1121)
43
+ - Template elements trigger extraction (PR #1137, Issue #1122)
44
+ - Agent elements trigger extraction (PR #1138, Issue #1123)
45
+ - Comprehensive trigger extraction documentation (PR #1135)
46
+
47
+ ### Fixed
48
+ - **Enhanced Index Stability**
49
+ - Fixed verb extraction with comprehensive configuration support (PR #1125)
50
+ - Fixed undefined metadata handling in EnhancedIndexManager (PR #1110)
51
+ - Fixed loadIndex error and Docker Hub rate limits (PR #1107)
52
+ - Improved type safety in relationship parsing (PR #1106, Issue #1103)
53
+ - Fixed caching issues and added error boundaries (PR #1098)
54
+ - Enhanced trigger validation for Skills and Memories (PR #1140, Issue #1139)
55
+
56
+ - **Test Infrastructure**
57
+ - Fixed Extended Node compatibility test failures (PR #1141, Issue #1142)
58
+ - Fixed CI test failures in IndexConfig and EnhancedIndexManager (PR #1115)
59
+ - Fixed CI environment tests for GitHub Actions (PR #1114)
60
+ - Fixed Extended Node test failures with Node 22+ (PR #1111)
61
+ - Removed dangerous restore-keys from cache configuration (PR #1109)
62
+ - Added test isolation to prevent file system pollution (PR #1094, #1095)
63
+ - Added memory trigger tests to ESM ignore list (PR #1134)
64
+ - Skip ESM-incompatible tests in CI (PR #1130)
65
+
66
+ - **Code Quality**
67
+ - Standardized element ID parsing logic (PR #1104, Issue #1099)
68
+ - Moved magic numbers to configuration (PR #1105, Issue #1100)
69
+ - Fixed broken README badge links (PR #1079)
70
+
71
+ ### Improved
72
+ - **Performance**: Enhanced Index now includes batching, caching, and memory cleanup mechanisms
73
+ - **Security**: Added validation for configuration changes with audit logging
74
+ - **Documentation**: Added CHANGELOG_PROCESS.md and restored lost session documentation (PR #1082, #1077)
75
+
76
+ ### Technical Details
77
+ - The Enhanced Capability Index provides intelligent element discovery using NLP techniques
78
+ - All element types now support trigger extraction for improved searchability
79
+ - Comprehensive test coverage improvements and CI reliability fixes
80
+ - Node 22+ compatibility fully verified and tested
81
+
82
+ ## [1.9.9] - 2025-09-22
83
+
84
+ ### Added
85
+ - **Security Utilities Module** (PR #1072)
86
+ - New `src/utils/securityUtils.ts` with reusable security patterns
87
+ - Prototype pollution protection functions
88
+ - Safe object creation with Object.create(null)
89
+ - Secure property setting with Object.defineProperty()
90
+
91
+ - **Memory Auto-Repair** (PR #1070)
92
+ - Automatic repair of corrupted memory timestamps during read operations
93
+ - No migration needed - repairs happen transparently
94
+ - Enhanced sorting operations with defensive timestamp conversions
95
+
96
+ ### Fixed
97
+ - **Memory Timestamp Crashes** (PR #1070)
98
+ - Fixed toISOString() errors when memory entries have string timestamps (#1069)
99
+ - Added comprehensive timestamp validation with detailed error reporting
100
+
101
+ - **Security Badge Link** (PR #1071, #1075)
102
+ - Fixed broken security badge link in README pointing to docs/SECURITY.md
103
+ - Badge now correctly points to SECURITY.md at repository root
104
+
105
+ - **Prototype Pollution False Positives** (PR #1072)
106
+ - Added CodeQL suppressions for false positive alerts (#202-#205)
107
+ - Implemented belt-and-suspenders protection to satisfy code scanners
108
+
109
+ ### Security
110
+ - Added comprehensive prototype pollution protection across ConfigManager
111
+ - Proper CodeQL suppressions for validated false positives
112
+ - Enhanced input validation and sanitization
113
+
3
114
  ## [1.9.8] - 2025-09-20
4
115
 
5
116
  ### Added
package/README.github.md CHANGED
@@ -4,13 +4,13 @@
4
4
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green)](https://modelcontextprotocol.io)
5
5
  [![npm version](https://img.shields.io/npm/v/@dollhousemcp/mcp-server.svg)](https://www.npmjs.com/package/@dollhousemcp/mcp-server)
6
6
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
7
- [![GitHub Views](https://komarev.com/ghpvc/?username=DollhouseMCP&repo=mcp-server&label=Repository+Views&style=flat)](https://github.com/DollhouseMCP/mcp-server)
7
+ [![GitHub Views](https://komarev.com/ghpvc/?username=DollhouseMCP&repo=mcp-server&label=Repository+Views&style=flat)](https://github.com/DollhouseMCP/mcp-server/graphs/traffic)
8
8
 
9
9
  ## Build & Quality
10
10
  [![Core Build & Test](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml)
11
11
  [![Build Artifacts](https://github.com/DollhouseMCP/mcp-server/actions/workflows/build-artifacts.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/build-artifacts.yml)
12
- [![Test Coverage](https://img.shields.io/badge/Coverage-1858%2B%20Tests-green)](https://github.com/DollhouseMCP/mcp-server/tree/main/__tests__)
13
- [![Enterprise-Grade Security](https://img.shields.io/badge/Security-Enterprise%20Grade-purple)](docs/SECURITY.md)
12
+ [![Test Coverage](https://img.shields.io/badge/Coverage-1858%2B%20Tests-green)](https://github.com/DollhouseMCP/mcp-server/tree/develop/test/__tests__)
13
+ [![Enterprise-Grade Security](https://img.shields.io/badge/Security-Enterprise%20Grade-purple)](https://github.com/DollhouseMCP/mcp-server/blob/develop/SECURITY.md)
14
14
 
15
15
  ## Platform Support
16
16
  [![Windows Build Status](https://img.shields.io/badge/Windows-✓_Tested-0078D4?logo=windows&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml?query=branch:main "Windows CI Build Status")
@@ -873,6 +873,82 @@ For detailed guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).
873
873
 
874
874
  ## 🏷️ Version History
875
875
 
876
+ ### v1.9.11 - September 28, 2025
877
+
878
+ **SonarCloud Quality & Security**: Major code quality improvements and security fixes
879
+
880
+ #### 🔒 Security Fixes
881
+ - Fixed command injection vulnerabilities in GitHub Actions workflows (#1149)
882
+ - Resolved ReDoS vulnerabilities in RelationshipManager (#1144)
883
+ - All critical and high severity issues resolved
884
+
885
+ #### 🛠️ Quality Improvements
886
+ - **82% reduction in SonarCloud reliability bugs** (from 55 to 10)
887
+ - Fixed unsafe throw in finally blocks (S1143)
888
+ - Fixed async constructor patterns
889
+ - Resolved regex precedence issues
890
+ - Fixed control character usage
891
+ - Removed hardcoded tokens
892
+
893
+ #### 📊 Statistics
894
+ - 11 Pull Requests merged for quality fixes
895
+ - Quality Gate: PASSING
896
+ - Security: All critical issues resolved
897
+ - Test Coverage: >96% maintained
898
+
899
+ ### v1.9.10 - September 27, 2025
900
+
901
+ **Enhanced Capability Index & Security**: Complete trigger extraction system and SonarCloud integration
902
+
903
+ #### ✨ Major Features
904
+ - **Enhanced Capability Index System** - NLP scoring with Jaccard similarity and Shannon entropy
905
+ - **Cross-Element Relationships** - GraphRAG-style relationship mapping
906
+ - **Complete Trigger Extraction** - All element types now support trigger extraction
907
+ - **SonarCloud Integration** - Quality gate PASSING with 0% duplication
908
+
909
+ #### 🔒 Security Improvements
910
+ - Fixed 16 SonarCloud BLOCKER issues
911
+ - GitHub Actions command injection vulnerabilities resolved
912
+ - Full SHA pinning for all Actions
913
+ - PATH manipulation vulnerability fixed
914
+
915
+ #### 🛠️ Improvements
916
+ - Extended Node compatibility fixes
917
+ - Enhanced Index stability improvements
918
+ - Type-safe relationship parsing
919
+ - Docker Hub rate limit mitigation
920
+ - Test isolation and CI improvements
921
+
922
+ #### 📊 Statistics
923
+ - 34 Pull Requests merged
924
+ - Test Coverage: 98.17%
925
+ - Security Hotspots: 100% reviewed
926
+ - Code Duplication: 0% on new code
927
+
928
+ ---
929
+
930
+ ### v1.9.9 - September 22, 2025
931
+
932
+ **Security & Stability**: Prototype pollution protection and memory timestamp fixes
933
+
934
+ #### ✨ Features
935
+ - **Security Utilities**: New reusable security module for prototype pollution protection
936
+ - **Memory Auto-Repair**: Corrupted memory timestamps now auto-repair during read operations
937
+ - **Enhanced Validation**: Comprehensive timestamp validation with detailed error reporting
938
+
939
+ #### 🔧 Fixed
940
+ - **Memory Timestamps**: Fixed toISOString errors when memory entries have string timestamps (#1069)
941
+ - **Security Badge**: Fixed broken security badge link in README pointing to wrong location
942
+ - **Prototype Pollution**: Added belt-and-suspenders protection to satisfy code scanners (#202-#205)
943
+
944
+ #### 🔒 Security
945
+ - Added `securityUtils.ts` module with reusable security patterns
946
+ - Implemented Object.create(null) for prototype-less objects
947
+ - Added Object.defineProperty() for secure property setting
948
+ - Proper CodeQL suppressions for validated false positives
949
+
950
+ ---
951
+
876
952
  ### v1.9.8 - September 20, 2025
877
953
 
878
954
  **Memory System Complete**: Full CRUD operations and enhanced memory management
package/README.md.backup CHANGED
@@ -4,13 +4,13 @@
4
4
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green)](https://modelcontextprotocol.io)
5
5
  [![npm version](https://img.shields.io/npm/v/@dollhousemcp/mcp-server.svg)](https://www.npmjs.com/package/@dollhousemcp/mcp-server)
6
6
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
7
- [![GitHub Views](https://komarev.com/ghpvc/?username=DollhouseMCP&repo=mcp-server&label=Repository+Views&style=flat)](https://github.com/DollhouseMCP/mcp-server)
7
+ [![GitHub Views](https://komarev.com/ghpvc/?username=DollhouseMCP&repo=mcp-server&label=Repository+Views&style=flat)](https://github.com/DollhouseMCP/mcp-server/graphs/traffic)
8
8
 
9
9
  ## Build & Quality
10
10
  [![Core Build & Test](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml)
11
11
  [![Build Artifacts](https://github.com/DollhouseMCP/mcp-server/actions/workflows/build-artifacts.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/build-artifacts.yml)
12
- [![Test Coverage](https://img.shields.io/badge/Coverage-1858%2B%20Tests-green)](https://github.com/DollhouseMCP/mcp-server/tree/main/__tests__)
13
- [![Enterprise-Grade Security](https://img.shields.io/badge/Security-Enterprise%20Grade-purple)](docs/SECURITY.md)
12
+ [![Test Coverage](https://img.shields.io/badge/Coverage-1858%2B%20Tests-green)](https://github.com/DollhouseMCP/mcp-server/tree/develop/test/__tests__)
13
+ [![Enterprise-Grade Security](https://img.shields.io/badge/Security-Enterprise%20Grade-purple)](https://github.com/DollhouseMCP/mcp-server/blob/develop/SECURITY.md)
14
14
 
15
15
  ## Platform Support
16
16
  [![Windows Build Status](https://img.shields.io/badge/Windows-✓_Tested-0078D4?logo=windows&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml?query=branch:main "Windows CI Build Status")
@@ -873,6 +873,82 @@ For detailed guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).
873
873
 
874
874
  ## 🏷️ Version History
875
875
 
876
+ ### v1.9.11 - September 28, 2025
877
+
878
+ **SonarCloud Quality & Security**: Major code quality improvements and security fixes
879
+
880
+ #### 🔒 Security Fixes
881
+ - Fixed command injection vulnerabilities in GitHub Actions workflows (#1149)
882
+ - Resolved ReDoS vulnerabilities in RelationshipManager (#1144)
883
+ - All critical and high severity issues resolved
884
+
885
+ #### 🛠️ Quality Improvements
886
+ - **82% reduction in SonarCloud reliability bugs** (from 55 to 10)
887
+ - Fixed unsafe throw in finally blocks (S1143)
888
+ - Fixed async constructor patterns
889
+ - Resolved regex precedence issues
890
+ - Fixed control character usage
891
+ - Removed hardcoded tokens
892
+
893
+ #### 📊 Statistics
894
+ - 11 Pull Requests merged for quality fixes
895
+ - Quality Gate: PASSING
896
+ - Security: All critical issues resolved
897
+ - Test Coverage: >96% maintained
898
+
899
+ ### v1.9.10 - September 27, 2025
900
+
901
+ **Enhanced Capability Index & Security**: Complete trigger extraction system and SonarCloud integration
902
+
903
+ #### ✨ Major Features
904
+ - **Enhanced Capability Index System** - NLP scoring with Jaccard similarity and Shannon entropy
905
+ - **Cross-Element Relationships** - GraphRAG-style relationship mapping
906
+ - **Complete Trigger Extraction** - All element types now support trigger extraction
907
+ - **SonarCloud Integration** - Quality gate PASSING with 0% duplication
908
+
909
+ #### 🔒 Security Improvements
910
+ - Fixed 16 SonarCloud BLOCKER issues
911
+ - GitHub Actions command injection vulnerabilities resolved
912
+ - Full SHA pinning for all Actions
913
+ - PATH manipulation vulnerability fixed
914
+
915
+ #### 🛠️ Improvements
916
+ - Extended Node compatibility fixes
917
+ - Enhanced Index stability improvements
918
+ - Type-safe relationship parsing
919
+ - Docker Hub rate limit mitigation
920
+ - Test isolation and CI improvements
921
+
922
+ #### 📊 Statistics
923
+ - 34 Pull Requests merged
924
+ - Test Coverage: 98.17%
925
+ - Security Hotspots: 100% reviewed
926
+ - Code Duplication: 0% on new code
927
+
928
+ ---
929
+
930
+ ### v1.9.9 - September 22, 2025
931
+
932
+ **Security & Stability**: Prototype pollution protection and memory timestamp fixes
933
+
934
+ #### ✨ Features
935
+ - **Security Utilities**: New reusable security module for prototype pollution protection
936
+ - **Memory Auto-Repair**: Corrupted memory timestamps now auto-repair during read operations
937
+ - **Enhanced Validation**: Comprehensive timestamp validation with detailed error reporting
938
+
939
+ #### 🔧 Fixed
940
+ - **Memory Timestamps**: Fixed toISOString errors when memory entries have string timestamps (#1069)
941
+ - **Security Badge**: Fixed broken security badge link in README pointing to wrong location
942
+ - **Prototype Pollution**: Added belt-and-suspenders protection to satisfy code scanners (#202-#205)
943
+
944
+ #### 🔒 Security
945
+ - Added `securityUtils.ts` module with reusable security patterns
946
+ - Implemented Object.create(null) for prototype-less objects
947
+ - Added Object.defineProperty() for secure property setting
948
+ - Proper CodeQL suppressions for validated false positives
949
+
950
+ ---
951
+
876
952
  ### v1.9.8 - September 20, 2025
877
953
 
878
954
  **Memory System Complete**: Full CRUD operations and enhanced memory management
@@ -138,7 +138,7 @@ export class PersonaSubmitter {
138
138
  */
139
139
  serializeMetadata(metadata) {
140
140
  return Object.entries(metadata)
141
- .map(([key, value]) => `${key}: ${Array.isArray(value) ? JSON.stringify(value) : JSON.stringify(value)}`)
141
+ .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
142
142
  .join('\n');
143
143
  }
144
144
  /**
@@ -190,4 +190,4 @@ export class PersonaSubmitter {
190
190
  `• The review typically takes 2-3 business days`;
191
191
  }
192
192
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVN1Ym1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xsZWN0aW9uL1BlcnNvbmFTdWJtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSwwQkFBMEI7QUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7QUFDbEUsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUM7QUFFMUMsNkJBQTZCO0FBQzdCLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsZUFBZSxFQUFFLElBQUk7SUFDckIsWUFBWSxFQUFFLElBQUk7SUFDbEIsUUFBUSxFQUFFLEdBQUc7SUFDYixZQUFZLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFWCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ25CLFdBQVcsQ0FBYztJQUVqQztRQUNFLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVM7WUFDbkMsVUFBVSxFQUFFLEtBQUssQ0FBQyx5Q0FBeUM7U0FDNUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLE9BQWdCO1FBTXRDLG1CQUFtQjtRQUNuQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXRELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsOEJBQThCO1lBQzlCLGVBQWUsQ0FBQyxnQkFBZ0Is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a0M7WUFDbEMsc0RBQXNEO1lBQ3RELG9EQUFvRDtZQUNwRCwrREFBK0Q7WUFDL0QsNkZBQTZGO1lBQzdGLHFGQUFxRixDQUFDO0lBQzFGLENBQUM7SUFFRDs7T0FFRztJQUNLLHVCQUF1QjtRQUM3QixPQUFPLDBCQUEwQjtZQUMvQixrREFBa0Q7WUFDbEQsNEVBQTRFO1lBQzVFLGdHQUFnRztZQUNoRyxnREFBZ0QsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN1Ym1pdCBwZXJzb25hcyB0byB0aGUgY29sbGVjdGlvblxuICogSGFuZGxlcyBib3RoIGF1dGhlbnRpY2F0ZWQgYW5kIGFub255bW91cyBzdWJtaXNzaW9uIHdvcmtmbG93c1xuICogXG4gKiBTZWN1cml0eSBGZWF0dXJlczpcbiAqIC0gUmF0ZSBsaW1pdGluZyB0byBwcmV2ZW50IHNwYW0gKDUgc3VibWlzc2lvbnMgcGVyIGhvdXIgcGVyIHNlc3Npb24pXG4gKiAtIFVSTCBsZW5ndGggdmFsaWRhdGlvbiBmb3IgR2l0SHViIGxpbWl0c1xuICogLSBObyBlbWFpbCBzdWJtaXNzaW9uIHBhdGh3YXkgKEdpdEh1YiBhY2NvdW50IHJlcXVpcmVkKVxuICovXG5cbmltcG9ydCB7IFBlcnNvbmEgfSBmcm9tICcuLi90eXBlcy9wZXJzb25hLmpzJztcbmltcG9ydCB7IFJhdGVMaW1pdGVyLCBSYXRlTGltaXRTdGF0dXMgfSBmcm9tICcuLi91dGlscy9SYXRlTGltaXRlci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuXG4vLyBDb25maWd1cmF0aW9uIGNvbnN0YW50c1xuY29uc3QgR0lUSFVCX1VSTF9MSU1JVCA9IDgxOTI7IC8vIEdpdEh1YidzIFVSTCBsZW5ndGggbGltaXQgKH44S0IpXG5jb25zdCBDT0xMRUNUSU9OX1JFUE9fT1dORVIgPSAnRG9sbGhvdXNlTUNQJztcbmNvbnN0IENPTExFQ1RJT05fUkVQT19OQU1FID0gJ2NvbGxlY3Rpb24nO1xuXG4vLyBDb21tb24gcmVzcG9uc2UgY29tcG9uZW50c1xuY29uc3QgUkVTUE9OU0VfQ09NUE9ORU5UUyA9IHtcbiAgU1VCTUlTU0lPTl9JQ09OOiAn8J+TpCcsXG4gIFBFUlNPTkFfSUNPTjogJ/Cfjq0nLFxuICBUSVBfSUNPTjogJ+KtkCcsXG4gIFBST19USVBfSUNPTjogJ/CfkqEnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgUGVyc29uYVN1Ym1pdHRlciB7XG4gIHByaXZhdGUgcmF0ZUxpbWl0ZXI6IFJhdGVMaW1pdGVyO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSByYXRlIGxpbWl0ZXI6IDUgc3VibWlzc2lvbnMgcGVyIGhvdXJcbiAgICB0aGlzLnJhdGVMaW1pdGVyID0gbmV3IFJhdGVMaW1pdGVyKHtcbiAgICAgIG1heFJlcXVlc3RzOiA1LFxuICAgICAgd2luZG93TXM6IDYwICogNjAgKiAxMDAwLCAvLyAxIGhvdXJcbiAgICAgIG1pbkRlbGF5TXM6IDEwMDAwIC8vIE1pbmltdW0gMTAgc2Vjb25kcyBiZXR3ZWVuIHN1Ym1pc3Npb25zXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEdlbmVyYXRlIEdpdEh1YiBpc3N1ZSBmb3IgcGVyc29uYSBzdWJtaXNzaW9uXG4gICAqIEluY2x1ZGVzIFVSTCBsZW5ndGggdmFsaWRhdGlvbiB0byBjb21wbHkgd2l0aCBHaXRIdWIncyB+OEtCIGxpbWl0XG4gICAqL1xuICBnZW5lcmF0ZVN1Ym1pc3Npb25Jc3N1ZShwZXJzb25hOiBQZXJzb25hKTogeyBcbiAgICBpc3N1ZVRpdGxlOiBzdHJpbmc7IFxuICAgIGlzc3VlQm9keTogc3RyaW5nOyBcbiAgICBnaXRodWJJc3N1ZVVybDogc3RyaW5nO1xuICAgIHJhdGVMaW1pdFN0YXR1cz86IFJhdGVMaW1pdFN0YXR1cztcbiAgfSB7XG4gICAgLy8gQ2hlY2sgcmF0ZSBsaW1pdFxuICAgIGNvbnN0IHJhdGVMaW1pdFN0YXR1cyA9IHRoaXMucmF0ZUxpbWl0ZXIuY2hlY2tMaW1pdCgpO1xuICAgIFxuICAgIGlmICghcmF0ZUxpbWl0U3RhdHVzLmFsbG93ZWQpIHtcbiAgICAgIC8vIExvZyBwb3RlbnRpYWwgYWJ1c2UgYXR0ZW1wdFxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnUkFURV9MSU1JVF9FWENFRURFRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUGVyc29uYVN1Ym1pdHRlci5nZW5lcmF0ZVN1Ym1pc3Npb25Jc3N1ZScsXG4gICAgICAgIGRldGFpbHM6IGBTdWJtaXNzaW9uIHJhdGUgbGltaXQgZXhjZWVkZWQuIFJldHJ5IGFmdGVyICR7cmF0ZUxpbWl0U3RhdHVzLnJldHJ5QWZ0ZXJNc31tc2BcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTdWJtaXNzaW9uIHJhdGUgbGltaXQgZXhjZWVkZWQuIFBsZWFzZSB3YWl0ICR7TWF0aC5jZWlsKHJhdGVMaW1pdFN0YXR1cy5yZXRyeUFmdGVyTXMhIC8gMTAwMCl9IHNlY29uZHMgYmVmb3JlIHN1Ym1pdHRpbmcgYWdhaW4uIGAgK1xuICAgICAgICBgVGhpcyBsaW1pdCBoZWxwcyBwcmV2ZW50IHNwYW0gYW5kIGVuc3VyZXMgcXVhbGl0eSBzdWJtaXNzaW9ucy5gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpc3N1ZVRpdGxlID0gYE5ldyBQZXJzb25hIFN1Ym1pc3Npb246ICR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfWA7XG4gICAgbGV0IGlzc3VlQm9keSA9IHRoaXMuYnVpbGRJc3N1ZUJvZHkocGVyc29uYSk7XG4gICAgXG4gICAgLy8gQ2hlY2sgVVJMIGxlbmd0aCBhbmQgdHJ1bmNhdGUgaWYgbmVjZXNzYXJ5XG4gICAgbGV0IGdpdGh1Yklzc3VlVXJsID0gdGhpcy5idWlsZEdpdEh1Yklzc3VlVXJsKGlzc3VlVGl0bGUsIGlzc3VlQm9keSk7XG4gICAgXG4gICAgLy8gSWYgVVJMIGV4Y2VlZHMgR2l0SHViJ3MgbGltaXQsIHRydW5jYXRlIHRoZSBjb250ZW50XG4gICAgaWYgKGdpdGh1Yklzc3VlVXJsLmxlbmd0aCA+PSBHSVRIVUJfVVJMX0xJTUlUKSB7XG4gICAgICBpc3N1ZUJvZHkgPSB0aGlzLmJ1aWxkVHJ1bmNhdGVkSXNzdWVCb2R5KHBlcnNvbmEpO1xuICAgICAgZ2l0aHViSXNzdWVVcmwgPSB0aGlzLmJ1aWxkR2l0SHViSXNzdWVVcmwoaXNzdWVUaXRsZSwgaXNzdWVCb2R5KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzc3VlVGl0bGUsXG4gICAgICBpc3N1ZUJvZHksXG4gICAgICBnaXRodWJJc3N1ZVVybCxcbiAgICAgIHJhdGVMaW1pdFN0YXR1c1xuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBGb3JtYXQgc3VibWlzc2lvbiByZXNwb25zZSBmb3IgYXV0aGVudGljYXRlZCB1c2Vyc1xuICAgKi9cbiAgZm9ybWF0U3VibWlzc2lvblJlc3BvbnNlKHBlcnNvbmE6IFBlcnNvbmEsIGdpdGh1Yklzc3VlVXJsOiBzdHJpbmcsIHBlcnNvbmFJbmRpY2F0b3I6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmJ1aWxkUmVzcG9uc2VIZWFkZXIoXG4gICAgICAnUGVyc29uYSBTdWJtaXNzaW9uIFByZXBhcmVkJyxcbiAgICAgIHBlcnNvbmEubWV0YWRhdGEubmFtZSxcbiAgICAgICdpcyByZWFkeSBmb3IgY29sbGVjdGlvbiBzdWJtaXNzaW9uIScsXG4gICAgICBwZXJzb25hSW5kaWNhdG9yXG4gICAgKTtcbiAgICBcbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuYnVpbGRTdGFuZGFyZFN1Ym1pc3Npb25TdGVwcyhnaXRodWJJc3N1ZVVybCk7XG4gICAgY29uc3QgdGlwID0gYCR7UkVTUE9OU0VfQ09NUE9ORU5UUy5USVBfSUNPTn0gKipUaXA6KiogWW91IGNhbiBhbHNvIHN1Ym1pdCB2aWEgcHVsbCByZXF1ZXN0IGlmIHlvdSdyZSBmYW1pbGlhciB3aXRoIEdpdCFgO1xuICAgIFxuICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuXFxuJHtzdGVwc31cXG5cXG4ke3RpcH1gO1xuICB9XG4gIFxuICAvKipcbiAgICogRm9ybWF0IGFub255bW91cyBzdWJtaXNzaW9uIHJlc3BvbnNlIGZvciB1bmF1dGhlbnRpY2F0ZWQgdXNlcnNcbiAgICovXG4gIGZvcm1hdEFub255bW91c1N1Ym1pc3Npb25SZXNwb25zZShwZXJzb25hOiBQZXJzb25hLCBnaXRodWJJc3N1ZVVybDogc3RyaW5nLCBwZXJzb25hSW5kaWNhdG9yOiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5idWlsZFJlc3BvbnNlSGVhZGVyKFxuICAgICAgJ0Fub255bW91cyBTdWJtaXNzaW9uIFBhdGggQXZhaWxhYmxlJyxcbiAgICAgIHBlcnNvbmEubWV0YWRhdGEubmFtZSxcbiAgICAgICdjYW4gYmUgc3VibWl0dGVkIHdpdGhvdXQgR2l0SHViIGF1dGhlbnRpY2F0aW9uIScsXG4gICAgICBwZXJzb25hSW5kaWNhdG9yXG4gICAgKTtcbiAgICBcbiAgICBjb25zdCBwcm9jZXNzID0gdGhpcy5idWlsZEFub255bW91c1N1Ym1pc3Npb25Qcm9jZXNzKGdpdGh1Yklzc3VlVXJsKTtcbiAgICBjb25zdCBuZXh0U3RlcHMgPSB0aGlzLmJ1aWxkQW5vbnltb3VzTmV4dFN0ZXBzKCk7XG4gICAgY29uc3QgcHJvVGlwID0gYCR7UkVTUE9OU0VfQ09NUE9ORU5UUy5QUk9fVElQX0lDT059ICoqUHJvIHRpcDoqKiBDcmVhdGluZyBhIGZyZWUgR2l0SHViIGFjY291bnQgdW5sb2NrcyBhZGRpdGlvbmFsIGZlYXR1cmVzLCBidXQgaXQncyBjb21wbGV0ZWx5IG9wdGlvbmFsIGZvciBzdWJtaXNzaW9ucyFgO1xuICAgIFxuICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuXFxuJHtwcm9jZXNzfVxcblxcbiR7bmV4dFN0ZXBzfVxcblxcbiR7cHJvVGlwfWA7XG4gIH1cblxuICAvLyBQcml2YXRlIGhlbHBlciBtZXRob2RzIGZvciBidWlsZGluZyByZXNwb25zZSBjb21wb25lbnRzXG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBmdWxsIGlzc3VlIGJvZHkgd2l0aCBhbGwgcGVyc29uYSBkZXRhaWxzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSXNzdWVCb2R5KHBlcnNvbmE6IFBlcnNvbmEpOiBzdHJpbmcge1xuICAgIHJldHVybiBgIyMgUGVyc29uYSBTdWJtaXNzaW9uXFxuXFxuYCArXG4gICAgICBgKipOYW1lOioqICR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfVxcbmAgK1xuICAgICAgYCoqQXV0aG9yOioqICR7cGVyc29uYS5tZXRhZGF0YS5hdXRob3IgfHwgJ1Vua25vd24nfVxcbmAgK1xuICAgICAgYCoqQ2F0ZWdvcnk6KiogJHtwZXJzb25hLm1ldGFkYXRhLmNhdGVnb3J5IHx8ICdHZW5lcmFsJ31cXG5gICtcbiAgICAgIGAqKkRlc2NyaXB0aW9uOioqICR7cGVyc29uYS5tZXRhZGF0YS5kZXNjcmlwdGlvbn1cXG5cXG5gICtcbiAgICAgIGAjIyMgUGVyc29uYSBDb250ZW50OlxcbmAgK1xuICAgICAgYFxcYFxcYFxcYG1hcmtkb3duXFxuYCArXG4gICAgICBgLS0tXFxuYCArXG4gICAgICBgJHt0aGlzLnNlcmlhbGl6ZU1ldGFkYXRhKHBlcnNvbmEubWV0YWRhdGEpfVxcbmAgK1xuICAgICAgYC0tLVxcblxcbmAgK1xuICAgICAgYCR7cGVyc29uYS5jb250ZW50fVxcbmAgK1xuICAgICAgYFxcYFxcYFxcYFxcblxcbmAgK1xuICAgICAgYCMjIyBTdWJtaXNzaW9uIERldGFpbHM6XFxuYCArXG4gICAgICBgLSBTdWJtaXR0ZWQgdmlhIERvbGxob3VzZU1DUCBjbGllbnRcXG5gICtcbiAgICAgIGAtIEZpbGVuYW1lOiAke3BlcnNvbmEuZmlsZW5hbWV9XFxuYCArXG4gICAgICBgLSBVbmlxdWUgSUQ6ICR7cGVyc29uYS51bmlxdWVfaWR9XFxuXFxuYCArXG4gICAgICBgLS0tXFxuYCArXG4gICAgICBgKlBsZWFzZSByZXZpZXcgdGhpcyBwZXJzb25hIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbGxlY3Rpb24uKmA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cnVuY2F0ZWQgaXNzdWUgYm9keSB0byBmaXQgd2l0aGluIFVSTCBsaW1pdHNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRUcnVuY2F0ZWRJc3N1ZUJvZHkocGVyc29uYTogUGVyc29uYSk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJ1bmNhdGVkQ29udGVudCA9IHBlcnNvbmEuY29udGVudC5sZW5ndGggPiA1MDAgXG4gICAgICA/IGAke3BlcnNvbmEuY29udGVudC5zdWJzdHJpbmcoMCwgNTAwKX0uLi5cXG5cXG5bQ29udGVudCB0cnVuY2F0ZWQgZHVlIHRvIGxlbmd0aF1gXG4gICAgICA6IHBlcnNvbmEuY29udGVudDtcbiAgICBcbiAgICByZXR1cm4gYCMjIFBlcnNvbmEgU3VibWlzc2lvblxcblxcbmAgK1xuICAgICAgYCoqTmFtZToqKiAke3BlcnNvbmEubWV0YWRhdGEubmFtZX1cXG5gICtcbiAgICAgIGAqKkF1dGhvcjoqKiAke3BlcnNvbmEubWV0YWRhdGEuYXV0aG9yIHx8ICdVbmtub3duJ31cXG5gICtcbiAgICAgIGAqKkNhdGVnb3J5OioqICR7cGVyc29uYS5tZXRhZGF0YS5jYXRlZ29yeSB8fCAnR2VuZXJhbCd9XFxuYCArXG4gICAgICBgKipEZXNjcmlwdGlvbjoqKiAke3BlcnNvbmEubWV0YWRhdGEuZGVzY3JpcHRpb259XFxuXFxuYCArXG4gICAgICBgIyMjIFBlcnNvbmEgQ29udGVudCAoVHJ1bmNhdGVkKTpcXG5gICtcbiAgICAgIGBcXGBcXGBcXGBtYXJrZG93blxcbmAgK1xuICAgICAgYC0tLVxcbmAgK1xuICAgICAgYCR7dGhpcy5zZXJpYWxpemVNZXRhZGF0YShwZXJzb25hLm1ldGFkYXRhKX1cXG5gICtcbiAgICAgIGAtLS1cXG5cXG5gICtcbiAgICAgIGAke3RydW5jYXRlZENvbnRlbnR9XFxuYCArXG4gICAgICBgXFxgXFxgXFxgXFxuXFxuYCArXG4gICAgICBgIyMjIFN1Ym1pc3Npb24gRGV0YWlsczpcXG5gICtcbiAgICAgIGAtIFN1Ym1pdHRlZCB2aWEgRG9sbGhvdXNlTUNQIGNsaWVudFxcbmAgK1xuICAgICAgYC0gRmlsZW5hbWU6ICR7cGVyc29uYS5maWxlbmFtZX1cXG5gICtcbiAgICAgIGAtIFVuaXF1ZSBJRDogJHtwZXJzb25hLnVuaXF1ZV9pZH1cXG5cXG5gICtcbiAgICAgIGAtLS1cXG5gICtcbiAgICAgIGAqUGxlYXNlIHJldmlldyB0aGlzIHBlcnNvbmEgZm9yIGluY2x1c2lvbiBpbiB0aGUgY29sbGVjdGlvbi4qYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgcGVyc29uYSBtZXRhZGF0YSB0byBZQU1MIGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSBzZXJpYWxpemVNZXRhZGF0YShtZXRhZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7QXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YClcbiAgICAgIC5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgR2l0SHViIGlzc3VlIFVSTFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEdpdEh1Yklzc3VlVXJsKHRpdGxlOiBzdHJpbmcsIGJvZHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHtDT0xMRUNUSU9OX1JFUE9fT1dORVJ9LyR7Q09MTEVDVElPTl9SRVBPX05BTUV9L2lzc3Vlcy9uZXc/dGl0bGU9JHtlbmNvZGVVUklDb21wb25lbnQodGl0bGUpfSZib2R5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGJvZHkpfWA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgY29tbW9uIHJlc3BvbnNlIGhlYWRlciB1c2VkIGJ5IGJvdGggYXV0aGVudGljYXRlZCBhbmQgYW5vbnltb3VzIHJlc3BvbnNlc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFJlc3BvbnNlSGVhZGVyKHRpdGxlOiBzdHJpbmcsIHBlcnNvbmFOYW1lOiBzdHJpbmcsIHN1YnRpdGxlOiBzdHJpbmcsIHBlcnNvbmFJbmRpY2F0b3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3BlcnNvbmFJbmRpY2F0b3J9JHtSRVNQT05TRV9DT01QT05FTlRTLlNVQk1JU1NJT05fSUNPTn0gKioke3RpdGxlfSoqXFxuXFxuYCArXG4gICAgICBgJHtSRVNQT05TRV9DT01QT05FTlRTLlBFUlNPTkFfSUNPTn0gKioke3BlcnNvbmFOYW1lfSoqICR7c3VidGl0bGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBzdGFuZGFyZCBzdWJtaXNzaW9uIHN0ZXBzIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkU3RhbmRhcmRTdWJtaXNzaW9uU3RlcHMoZ2l0aHViSXNzdWVVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAqKk5leHQgU3RlcHM6KipcXG5gICtcbiAgICAgIGAxLiBDbGljayB0aGlzIGxpbmsgdG8gY3JlYXRlIGEgR2l0SHViIGlzc3VlOiBcXG5gICtcbiAgICAgIGAgICAke2dpdGh1Yklzc3VlVXJsfVxcblxcbmAgK1xuICAgICAgYDIuIFJldmlldyB0aGUgcHJlLWZpbGxlZCBjb250ZW50XFxuYCArXG4gICAgICBgMy4gQ2xpY2sgXCJTdWJtaXQgbmV3IGlzc3VlXCJcXG5gICtcbiAgICAgIGA0LiBUaGUgbWFpbnRhaW5lcnMgd2lsbCByZXZpZXcgeW91ciBzdWJtaXNzaW9uYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbm9ueW1vdXMgc3VibWlzc2lvbiBwcm9jZXNzIGluc3RydWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFub255bW91c1N1Ym1pc3Npb25Qcm9jZXNzKGdpdGh1Yklzc3VlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgKipBbm9ueW1vdXMgU3VibWlzc2lvbiBQcm9jZXNzOioqXFxuYCArXG4gICAgICBgMS4gQ2xpY2sgdGhpcyBsaW5rIHRvIGNyZWF0ZSBhIEdpdEh1YiBpc3N1ZTpcXG5gICtcbiAgICAgIGAgICAke2dpdGh1Yklzc3VlVXJsfVxcblxcbmAgK1xuICAgICAgYDIuICoqVG8gc3VibWl0IHlvdXIgcGVyc29uYToqKlxcbmAgK1xuICAgICAgYCAgIOKAoiBZb3UnbGwgbmVlZCBhIEdpdEh1YiBhY2NvdW50IChmcmVlIHRvIGNyZWF0ZSlcXG5gICtcbiAgICAgIGAgICDigKIgQ2xpY2sgXCJTdWJtaXQgbmV3IGlzc3VlXCIgdG8gc3VibWl0IGRpcmVjdGx5XFxuYCArXG4gICAgICBgICAg4oCiIFRoZSBmb3JtIGlzIHByZS1maWxsZWQgd2l0aCBhbGwgeW91ciBwZXJzb25hIGRldGFpbHNcXG5cXG5gICtcbiAgICAgIGAqKk5vdGU6KiogR2l0SHViIGFjY291bnQgaXMgcmVxdWlyZWQgZm9yIHN1Ym1pc3Npb24gdG8gcHJldmVudCBzcGFtIGFuZCBtYWludGFpbiBxdWFsaXR5LlxcbmAgK1xuICAgICAgYENyZWF0aW5nIGFuIGFjY291bnQgaXMgZnJlZSBhbmQgdGFrZXMgbGVzcyB0aGFuIGEgbWludXRlOiBodHRwczovL2dpdGh1Yi5jb20vc2lnbnVwYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbm9ueW1vdXMgc3VibWlzc2lvbiBuZXh0IHN0ZXBzIGFuZCBleHBlY3RhdGlvbnNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRBbm9ueW1vdXNOZXh0U3RlcHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCoqV2hhdCBoYXBwZW5zIG5leHQ6KipcXG5gICtcbiAgICAgIGDigKIgQ29tbXVuaXR5IG1haW50YWluZXJzIHJldmlldyBhbGwgc3VibWlzc2lvbnNcXG5gICtcbiAgICAgIGDigKIgQW5vbnltb3VzIHN1Ym1pc3Npb25zIGdldCB0aGUgc2FtZSBjb25zaWRlcmF0aW9uIGFzIGF1dGhlbnRpY2F0ZWQgb25lc1xcbmAgK1xuICAgICAgYOKAoiBJZiBhY2NlcHRlZCwgeW91ciBwZXJzb25hIGpvaW5zIHRoZSBjb2xsZWN0aW9uIHdpdGggYXR0cmlidXRpb24gdG8gXCJDb21tdW5pdHkgQ29udHJpYnV0b3JcIlxcbmAgK1xuICAgICAgYOKAoiBUaGUgcmV2aWV3IHR5cGljYWxseSB0YWtlcyAyLTMgYnVzaW5lc3MgZGF5c2A7XG4gIH1cbn0iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYVN1Ym1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xsZWN0aW9uL1BlcnNvbmFTdWJtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSwwQkFBMEI7QUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7QUFDbEUsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUM7QUFFMUMsNkJBQTZCO0FBQzdCLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsZUFBZSxFQUFFLElBQUk7SUFDckIsWUFBWSxFQUFFLElBQUk7SUFDbEIsUUFBUSxFQUFFLEdBQUc7SUFDYixZQUFZLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFWCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ25CLFdBQVcsQ0FBYztJQUVqQztRQUNFLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVM7WUFDbkMsVUFBVSxFQUFFLEtBQUssQ0FBQyx5Q0FBeUM7U0FDNUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLE9BQWdCO1FBTXRDLG1CQUFtQjtRQUNuQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXRELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsOEJBQThCO1lBQzlCLGVBQWUsQ0FBQyxnQkFBZ0Is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T0FFRztJQUNLLHVCQUF1QjtRQUM3QixPQUFPLDBCQUEwQjtZQUMvQixrREFBa0Q7WUFDbEQsNEVBQTRFO1lBQzVFLGdHQUFnRztZQUNoRyxnREFBZ0QsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN1Ym1pdCBwZXJzb25hcyB0byB0aGUgY29sbGVjdGlvblxuICogSGFuZGxlcyBib3RoIGF1dGhlbnRpY2F0ZWQgYW5kIGFub255bW91cyBzdWJtaXNzaW9uIHdvcmtmbG93c1xuICogXG4gKiBTZWN1cml0eSBGZWF0dXJlczpcbiAqIC0gUmF0ZSBsaW1pdGluZyB0byBwcmV2ZW50IHNwYW0gKDUgc3VibWlzc2lvbnMgcGVyIGhvdXIgcGVyIHNlc3Npb24pXG4gKiAtIFVSTCBsZW5ndGggdmFsaWRhdGlvbiBmb3IgR2l0SHViIGxpbWl0c1xuICogLSBObyBlbWFpbCBzdWJtaXNzaW9uIHBhdGh3YXkgKEdpdEh1YiBhY2NvdW50IHJlcXVpcmVkKVxuICovXG5cbmltcG9ydCB7IFBlcnNvbmEgfSBmcm9tICcuLi90eXBlcy9wZXJzb25hLmpzJztcbmltcG9ydCB7IFJhdGVMaW1pdGVyLCBSYXRlTGltaXRTdGF0dXMgfSBmcm9tICcuLi91dGlscy9SYXRlTGltaXRlci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuXG4vLyBDb25maWd1cmF0aW9uIGNvbnN0YW50c1xuY29uc3QgR0lUSFVCX1VSTF9MSU1JVCA9IDgxOTI7IC8vIEdpdEh1YidzIFVSTCBsZW5ndGggbGltaXQgKH44S0IpXG5jb25zdCBDT0xMRUNUSU9OX1JFUE9fT1dORVIgPSAnRG9sbGhvdXNlTUNQJztcbmNvbnN0IENPTExFQ1RJT05fUkVQT19OQU1FID0gJ2NvbGxlY3Rpb24nO1xuXG4vLyBDb21tb24gcmVzcG9uc2UgY29tcG9uZW50c1xuY29uc3QgUkVTUE9OU0VfQ09NUE9ORU5UUyA9IHtcbiAgU1VCTUlTU0lPTl9JQ09OOiAn8J+TpCcsXG4gIFBFUlNPTkFfSUNPTjogJ/Cfjq0nLFxuICBUSVBfSUNPTjogJ+KtkCcsXG4gIFBST19USVBfSUNPTjogJ/CfkqEnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgUGVyc29uYVN1Ym1pdHRlciB7XG4gIHByaXZhdGUgcmF0ZUxpbWl0ZXI6IFJhdGVMaW1pdGVyO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSByYXRlIGxpbWl0ZXI6IDUgc3VibWlzc2lvbnMgcGVyIGhvdXJcbiAgICB0aGlzLnJhdGVMaW1pdGVyID0gbmV3IFJhdGVMaW1pdGVyKHtcbiAgICAgIG1heFJlcXVlc3RzOiA1LFxuICAgICAgd2luZG93TXM6IDYwICogNjAgKiAxMDAwLCAvLyAxIGhvdXJcbiAgICAgIG1pbkRlbGF5TXM6IDEwMDAwIC8vIE1pbmltdW0gMTAgc2Vjb25kcyBiZXR3ZWVuIHN1Ym1pc3Npb25zXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEdlbmVyYXRlIEdpdEh1YiBpc3N1ZSBmb3IgcGVyc29uYSBzdWJtaXNzaW9uXG4gICAqIEluY2x1ZGVzIFVSTCBsZW5ndGggdmFsaWRhdGlvbiB0byBjb21wbHkgd2l0aCBHaXRIdWIncyB+OEtCIGxpbWl0XG4gICAqL1xuICBnZW5lcmF0ZVN1Ym1pc3Npb25Jc3N1ZShwZXJzb25hOiBQZXJzb25hKTogeyBcbiAgICBpc3N1ZVRpdGxlOiBzdHJpbmc7IFxuICAgIGlzc3VlQm9keTogc3RyaW5nOyBcbiAgICBnaXRodWJJc3N1ZVVybDogc3RyaW5nO1xuICAgIHJhdGVMaW1pdFN0YXR1cz86IFJhdGVMaW1pdFN0YXR1cztcbiAgfSB7XG4gICAgLy8gQ2hlY2sgcmF0ZSBsaW1pdFxuICAgIGNvbnN0IHJhdGVMaW1pdFN0YXR1cyA9IHRoaXMucmF0ZUxpbWl0ZXIuY2hlY2tMaW1pdCgpO1xuICAgIFxuICAgIGlmICghcmF0ZUxpbWl0U3RhdHVzLmFsbG93ZWQpIHtcbiAgICAgIC8vIExvZyBwb3RlbnRpYWwgYWJ1c2UgYXR0ZW1wdFxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnUkFURV9MSU1JVF9FWENFRURFRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUGVyc29uYVN1Ym1pdHRlci5nZW5lcmF0ZVN1Ym1pc3Npb25Jc3N1ZScsXG4gICAgICAgIGRldGFpbHM6IGBTdWJtaXNzaW9uIHJhdGUgbGltaXQgZXhjZWVkZWQuIFJldHJ5IGFmdGVyICR7cmF0ZUxpbWl0U3RhdHVzLnJldHJ5QWZ0ZXJNc31tc2BcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTdWJtaXNzaW9uIHJhdGUgbGltaXQgZXhjZWVkZWQuIFBsZWFzZSB3YWl0ICR7TWF0aC5jZWlsKHJhdGVMaW1pdFN0YXR1cy5yZXRyeUFmdGVyTXMhIC8gMTAwMCl9IHNlY29uZHMgYmVmb3JlIHN1Ym1pdHRpbmcgYWdhaW4uIGAgK1xuICAgICAgICBgVGhpcyBsaW1pdCBoZWxwcyBwcmV2ZW50IHNwYW0gYW5kIGVuc3VyZXMgcXVhbGl0eSBzdWJtaXNzaW9ucy5gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpc3N1ZVRpdGxlID0gYE5ldyBQZXJzb25hIFN1Ym1pc3Npb246ICR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfWA7XG4gICAgbGV0IGlzc3VlQm9keSA9IHRoaXMuYnVpbGRJc3N1ZUJvZHkocGVyc29uYSk7XG4gICAgXG4gICAgLy8gQ2hlY2sgVVJMIGxlbmd0aCBhbmQgdHJ1bmNhdGUgaWYgbmVjZXNzYXJ5XG4gICAgbGV0IGdpdGh1Yklzc3VlVXJsID0gdGhpcy5idWlsZEdpdEh1Yklzc3VlVXJsKGlzc3VlVGl0bGUsIGlzc3VlQm9keSk7XG4gICAgXG4gICAgLy8gSWYgVVJMIGV4Y2VlZHMgR2l0SHViJ3MgbGltaXQsIHRydW5jYXRlIHRoZSBjb250ZW50XG4gICAgaWYgKGdpdGh1Yklzc3VlVXJsLmxlbmd0aCA+PSBHSVRIVUJfVVJMX0xJTUlUKSB7XG4gICAgICBpc3N1ZUJvZHkgPSB0aGlzLmJ1aWxkVHJ1bmNhdGVkSXNzdWVCb2R5KHBlcnNvbmEpO1xuICAgICAgZ2l0aHViSXNzdWVVcmwgPSB0aGlzLmJ1aWxkR2l0SHViSXNzdWVVcmwoaXNzdWVUaXRsZSwgaXNzdWVCb2R5KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzc3VlVGl0bGUsXG4gICAgICBpc3N1ZUJvZHksXG4gICAgICBnaXRodWJJc3N1ZVVybCxcbiAgICAgIHJhdGVMaW1pdFN0YXR1c1xuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBGb3JtYXQgc3VibWlzc2lvbiByZXNwb25zZSBmb3IgYXV0aGVudGljYXRlZCB1c2Vyc1xuICAgKi9cbiAgZm9ybWF0U3VibWlzc2lvblJlc3BvbnNlKHBlcnNvbmE6IFBlcnNvbmEsIGdpdGh1Yklzc3VlVXJsOiBzdHJpbmcsIHBlcnNvbmFJbmRpY2F0b3I6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmJ1aWxkUmVzcG9uc2VIZWFkZXIoXG4gICAgICAnUGVyc29uYSBTdWJtaXNzaW9uIFByZXBhcmVkJyxcbiAgICAgIHBlcnNvbmEubWV0YWRhdGEubmFtZSxcbiAgICAgICdpcyByZWFkeSBmb3IgY29sbGVjdGlvbiBzdWJtaXNzaW9uIScsXG4gICAgICBwZXJzb25hSW5kaWNhdG9yXG4gICAgKTtcbiAgICBcbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuYnVpbGRTdGFuZGFyZFN1Ym1pc3Npb25TdGVwcyhnaXRodWJJc3N1ZVVybCk7XG4gICAgY29uc3QgdGlwID0gYCR7UkVTUE9OU0VfQ09NUE9ORU5UUy5USVBfSUNPTn0gKipUaXA6KiogWW91IGNhbiBhbHNvIHN1Ym1pdCB2aWEgcHVsbCByZXF1ZXN0IGlmIHlvdSdyZSBmYW1pbGlhciB3aXRoIEdpdCFgO1xuICAgIFxuICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuXFxuJHtzdGVwc31cXG5cXG4ke3RpcH1gO1xuICB9XG4gIFxuICAvKipcbiAgICogRm9ybWF0IGFub255bW91cyBzdWJtaXNzaW9uIHJlc3BvbnNlIGZvciB1bmF1dGhlbnRpY2F0ZWQgdXNlcnNcbiAgICovXG4gIGZvcm1hdEFub255bW91c1N1Ym1pc3Npb25SZXNwb25zZShwZXJzb25hOiBQZXJzb25hLCBnaXRodWJJc3N1ZVVybDogc3RyaW5nLCBwZXJzb25hSW5kaWNhdG9yOiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5idWlsZFJlc3BvbnNlSGVhZGVyKFxuICAgICAgJ0Fub255bW91cyBTdWJtaXNzaW9uIFBhdGggQXZhaWxhYmxlJyxcbiAgICAgIHBlcnNvbmEubWV0YWRhdGEubmFtZSxcbiAgICAgICdjYW4gYmUgc3VibWl0dGVkIHdpdGhvdXQgR2l0SHViIGF1dGhlbnRpY2F0aW9uIScsXG4gICAgICBwZXJzb25hSW5kaWNhdG9yXG4gICAgKTtcbiAgICBcbiAgICBjb25zdCBwcm9jZXNzID0gdGhpcy5idWlsZEFub255bW91c1N1Ym1pc3Npb25Qcm9jZXNzKGdpdGh1Yklzc3VlVXJsKTtcbiAgICBjb25zdCBuZXh0U3RlcHMgPSB0aGlzLmJ1aWxkQW5vbnltb3VzTmV4dFN0ZXBzKCk7XG4gICAgY29uc3QgcHJvVGlwID0gYCR7UkVTUE9OU0VfQ09NUE9ORU5UUy5QUk9fVElQX0lDT059ICoqUHJvIHRpcDoqKiBDcmVhdGluZyBhIGZyZWUgR2l0SHViIGFjY291bnQgdW5sb2NrcyBhZGRpdGlvbmFsIGZlYXR1cmVzLCBidXQgaXQncyBjb21wbGV0ZWx5IG9wdGlvbmFsIGZvciBzdWJtaXNzaW9ucyFgO1xuICAgIFxuICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuXFxuJHtwcm9jZXNzfVxcblxcbiR7bmV4dFN0ZXBzfVxcblxcbiR7cHJvVGlwfWA7XG4gIH1cblxuICAvLyBQcml2YXRlIGhlbHBlciBtZXRob2RzIGZvciBidWlsZGluZyByZXNwb25zZSBjb21wb25lbnRzXG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBmdWxsIGlzc3VlIGJvZHkgd2l0aCBhbGwgcGVyc29uYSBkZXRhaWxzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSXNzdWVCb2R5KHBlcnNvbmE6IFBlcnNvbmEpOiBzdHJpbmcge1xuICAgIHJldHVybiBgIyMgUGVyc29uYSBTdWJtaXNzaW9uXFxuXFxuYCArXG4gICAgICBgKipOYW1lOioqICR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfVxcbmAgK1xuICAgICAgYCoqQXV0aG9yOioqICR7cGVyc29uYS5tZXRhZGF0YS5hdXRob3IgfHwgJ1Vua25vd24nfVxcbmAgK1xuICAgICAgYCoqQ2F0ZWdvcnk6KiogJHtwZXJzb25hLm1ldGFkYXRhLmNhdGVnb3J5IHx8ICdHZW5lcmFsJ31cXG5gICtcbiAgICAgIGAqKkRlc2NyaXB0aW9uOioqICR7cGVyc29uYS5tZXRhZGF0YS5kZXNjcmlwdGlvbn1cXG5cXG5gICtcbiAgICAgIGAjIyMgUGVyc29uYSBDb250ZW50OlxcbmAgK1xuICAgICAgYFxcYFxcYFxcYG1hcmtkb3duXFxuYCArXG4gICAgICBgLS0tXFxuYCArXG4gICAgICBgJHt0aGlzLnNlcmlhbGl6ZU1ldGFkYXRhKHBlcnNvbmEubWV0YWRhdGEpfVxcbmAgK1xuICAgICAgYC0tLVxcblxcbmAgK1xuICAgICAgYCR7cGVyc29uYS5jb250ZW50fVxcbmAgK1xuICAgICAgYFxcYFxcYFxcYFxcblxcbmAgK1xuICAgICAgYCMjIyBTdWJtaXNzaW9uIERldGFpbHM6XFxuYCArXG4gICAgICBgLSBTdWJtaXR0ZWQgdmlhIERvbGxob3VzZU1DUCBjbGllbnRcXG5gICtcbiAgICAgIGAtIEZpbGVuYW1lOiAke3BlcnNvbmEuZmlsZW5hbWV9XFxuYCArXG4gICAgICBgLSBVbmlxdWUgSUQ6ICR7cGVyc29uYS51bmlxdWVfaWR9XFxuXFxuYCArXG4gICAgICBgLS0tXFxuYCArXG4gICAgICBgKlBsZWFzZSByZXZpZXcgdGhpcyBwZXJzb25hIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbGxlY3Rpb24uKmA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cnVuY2F0ZWQgaXNzdWUgYm9keSB0byBmaXQgd2l0aGluIFVSTCBsaW1pdHNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRUcnVuY2F0ZWRJc3N1ZUJvZHkocGVyc29uYTogUGVyc29uYSk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJ1bmNhdGVkQ29udGVudCA9IHBlcnNvbmEuY29udGVudC5sZW5ndGggPiA1MDAgXG4gICAgICA/IGAke3BlcnNvbmEuY29udGVudC5zdWJzdHJpbmcoMCwgNTAwKX0uLi5cXG5cXG5bQ29udGVudCB0cnVuY2F0ZWQgZHVlIHRvIGxlbmd0aF1gXG4gICAgICA6IHBlcnNvbmEuY29udGVudDtcbiAgICBcbiAgICByZXR1cm4gYCMjIFBlcnNvbmEgU3VibWlzc2lvblxcblxcbmAgK1xuICAgICAgYCoqTmFtZToqKiAke3BlcnNvbmEubWV0YWRhdGEubmFtZX1cXG5gICtcbiAgICAgIGAqKkF1dGhvcjoqKiAke3BlcnNvbmEubWV0YWRhdGEuYXV0aG9yIHx8ICdVbmtub3duJ31cXG5gICtcbiAgICAgIGAqKkNhdGVnb3J5OioqICR7cGVyc29uYS5tZXRhZGF0YS5jYXRlZ29yeSB8fCAnR2VuZXJhbCd9XFxuYCArXG4gICAgICBgKipEZXNjcmlwdGlvbjoqKiAke3BlcnNvbmEubWV0YWRhdGEuZGVzY3JpcHRpb259XFxuXFxuYCArXG4gICAgICBgIyMjIFBlcnNvbmEgQ29udGVudCAoVHJ1bmNhdGVkKTpcXG5gICtcbiAgICAgIGBcXGBcXGBcXGBtYXJrZG93blxcbmAgK1xuICAgICAgYC0tLVxcbmAgK1xuICAgICAgYCR7dGhpcy5zZXJpYWxpemVNZXRhZGF0YShwZXJzb25hLm1ldGFkYXRhKX1cXG5gICtcbiAgICAgIGAtLS1cXG5cXG5gICtcbiAgICAgIGAke3RydW5jYXRlZENvbnRlbnR9XFxuYCArXG4gICAgICBgXFxgXFxgXFxgXFxuXFxuYCArXG4gICAgICBgIyMjIFN1Ym1pc3Npb24gRGV0YWlsczpcXG5gICtcbiAgICAgIGAtIFN1Ym1pdHRlZCB2aWEgRG9sbGhvdXNlTUNQIGNsaWVudFxcbmAgK1xuICAgICAgYC0gRmlsZW5hbWU6ICR7cGVyc29uYS5maWxlbmFtZX1cXG5gICtcbiAgICAgIGAtIFVuaXF1ZSBJRDogJHtwZXJzb25hLnVuaXF1ZV9pZH1cXG5cXG5gICtcbiAgICAgIGAtLS1cXG5gICtcbiAgICAgIGAqUGxlYXNlIHJldmlldyB0aGlzIHBlcnNvbmEgZm9yIGluY2x1c2lvbiBpbiB0aGUgY29sbGVjdGlvbi4qYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgcGVyc29uYSBtZXRhZGF0YSB0byBZQU1MIGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSBzZXJpYWxpemVNZXRhZGF0YShtZXRhZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApXG4gICAgICAuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIEdpdEh1YiBpc3N1ZSBVUkxcbiAgICovXG4gIHByaXZhdGUgYnVpbGRHaXRIdWJJc3N1ZVVybCh0aXRsZTogc3RyaW5nLCBib2R5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7Q09MTEVDVElPTl9SRVBPX09XTkVSfS8ke0NPTExFQ1RJT05fUkVQT19OQU1FfS9pc3N1ZXMvbmV3P3RpdGxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRpdGxlKX0mYm9keT0ke2VuY29kZVVSSUNvbXBvbmVudChib2R5KX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGNvbW1vbiByZXNwb25zZSBoZWFkZXIgdXNlZCBieSBib3RoIGF1dGhlbnRpY2F0ZWQgYW5kIGFub255bW91cyByZXNwb25zZXNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRSZXNwb25zZUhlYWRlcih0aXRsZTogc3RyaW5nLCBwZXJzb25hTmFtZTogc3RyaW5nLCBzdWJ0aXRsZTogc3RyaW5nLCBwZXJzb25hSW5kaWNhdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwZXJzb25hSW5kaWNhdG9yfSR7UkVTUE9OU0VfQ09NUE9ORU5UUy5TVUJNSVNTSU9OX0lDT059ICoqJHt0aXRsZX0qKlxcblxcbmAgK1xuICAgICAgYCR7UkVTUE9OU0VfQ09NUE9ORU5UUy5QRVJTT05BX0lDT059ICoqJHtwZXJzb25hTmFtZX0qKiAke3N1YnRpdGxlfWA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgc3RhbmRhcmQgc3VibWlzc2lvbiBzdGVwcyBmb3IgYXV0aGVudGljYXRlZCB1c2Vyc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFN0YW5kYXJkU3VibWlzc2lvblN0ZXBzKGdpdGh1Yklzc3VlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgKipOZXh0IFN0ZXBzOioqXFxuYCArXG4gICAgICBgMS4gQ2xpY2sgdGhpcyBsaW5rIHRvIGNyZWF0ZSBhIEdpdEh1YiBpc3N1ZTogXFxuYCArXG4gICAgICBgICAgJHtnaXRodWJJc3N1ZVVybH1cXG5cXG5gICtcbiAgICAgIGAyLiBSZXZpZXcgdGhlIHByZS1maWxsZWQgY29udGVudFxcbmAgK1xuICAgICAgYDMuIENsaWNrIFwiU3VibWl0IG5ldyBpc3N1ZVwiXFxuYCArXG4gICAgICBgNC4gVGhlIG1haW50YWluZXJzIHdpbGwgcmV2aWV3IHlvdXIgc3VibWlzc2lvbmA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5vbnltb3VzIHN1Ym1pc3Npb24gcHJvY2VzcyBpbnN0cnVjdGlvbnNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRBbm9ueW1vdXNTdWJtaXNzaW9uUHJvY2VzcyhnaXRodWJJc3N1ZVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCoqQW5vbnltb3VzIFN1Ym1pc3Npb24gUHJvY2VzczoqKlxcbmAgK1xuICAgICAgYDEuIENsaWNrIHRoaXMgbGluayB0byBjcmVhdGUgYSBHaXRIdWIgaXNzdWU6XFxuYCArXG4gICAgICBgICAgJHtnaXRodWJJc3N1ZVVybH1cXG5cXG5gICtcbiAgICAgIGAyLiAqKlRvIHN1Ym1pdCB5b3VyIHBlcnNvbmE6KipcXG5gICtcbiAgICAgIGAgICDigKIgWW91J2xsIG5lZWQgYSBHaXRIdWIgYWNjb3VudCAoZnJlZSB0byBjcmVhdGUpXFxuYCArXG4gICAgICBgICAg4oCiIENsaWNrIFwiU3VibWl0IG5ldyBpc3N1ZVwiIHRvIHN1Ym1pdCBkaXJlY3RseVxcbmAgK1xuICAgICAgYCAgIOKAoiBUaGUgZm9ybSBpcyBwcmUtZmlsbGVkIHdpdGggYWxsIHlvdXIgcGVyc29uYSBkZXRhaWxzXFxuXFxuYCArXG4gICAgICBgKipOb3RlOioqIEdpdEh1YiBhY2NvdW50IGlzIHJlcXVpcmVkIGZvciBzdWJtaXNzaW9uIHRvIHByZXZlbnQgc3BhbSBhbmQgbWFpbnRhaW4gcXVhbGl0eS5cXG5gICtcbiAgICAgIGBDcmVhdGluZyBhbiBhY2NvdW50IGlzIGZyZWUgYW5kIHRha2VzIGxlc3MgdGhhbiBhIG1pbnV0ZTogaHR0cHM6Ly9naXRodWIuY29tL3NpZ251cGA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5vbnltb3VzIHN1Ym1pc3Npb24gbmV4dCBzdGVwcyBhbmQgZXhwZWN0YXRpb25zXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQW5vbnltb3VzTmV4dFN0ZXBzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAqKldoYXQgaGFwcGVucyBuZXh0OioqXFxuYCArXG4gICAgICBg4oCiIENvbW11bml0eSBtYWludGFpbmVycyByZXZpZXcgYWxsIHN1Ym1pc3Npb25zXFxuYCArXG4gICAgICBg4oCiIEFub255bW91cyBzdWJtaXNzaW9ucyBnZXQgdGhlIHNhbWUgY29uc2lkZXJhdGlvbiBhcyBhdXRoZW50aWNhdGVkIG9uZXNcXG5gICtcbiAgICAgIGDigKIgSWYgYWNjZXB0ZWQsIHlvdXIgcGVyc29uYSBqb2lucyB0aGUgY29sbGVjdGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRvIFwiQ29tbXVuaXR5IENvbnRyaWJ1dG9yXCJcXG5gICtcbiAgICAgIGDigKIgVGhlIHJldmlldyB0eXBpY2FsbHkgdGFrZXMgMi0zIGJ1c2luZXNzIGRheXNgO1xuICB9XG59Il19
@@ -59,6 +59,29 @@ export interface CollectionConfig {
59
59
  require_review: boolean;
60
60
  add_attribution: boolean;
61
61
  }
62
+ export interface EnhancedIndexConfig {
63
+ enabled: boolean;
64
+ limits: {
65
+ maxTriggersPerElement: number;
66
+ maxTriggerLength: number;
67
+ maxKeywordsToCheck: number;
68
+ };
69
+ telemetry: {
70
+ enabled: boolean;
71
+ sampleRate: number;
72
+ metricsInterval: number;
73
+ };
74
+ verbPatterns?: {
75
+ customPrefixes?: string[];
76
+ customSuffixes?: string[];
77
+ excludedNouns?: string[];
78
+ };
79
+ backgroundAnalysis?: {
80
+ enabled: boolean;
81
+ scanInterval: number;
82
+ maxConcurrentScans: number;
83
+ };
84
+ }
62
85
  export interface ElementsConfig {
63
86
  auto_activate: {
64
87
  personas?: string[];
@@ -69,6 +92,7 @@ export interface ElementsConfig {
69
92
  ensembles?: string[];
70
93
  };
71
94
  default_element_dir: string;
95
+ enhanced_index?: EnhancedIndexConfig;
72
96
  }
73
97
  export interface DisplayConfig {
74
98
  persona_indicators: {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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"}