playlist-data-engine 1.1.0

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 (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +352 -0
  3. package/dist/__vite-browser-external-DYxpcVy9.js +4 -0
  4. package/dist/constants/DefaultClasses.d.ts +46 -0
  5. package/dist/constants/DefaultClasses.d.ts.map +1 -0
  6. package/dist/constants/DefaultEnchantments.d.ts +337 -0
  7. package/dist/constants/DefaultEnchantments.d.ts.map +1 -0
  8. package/dist/constants/DefaultEnemies.d.ts +83 -0
  9. package/dist/constants/DefaultEnemies.d.ts.map +1 -0
  10. package/dist/constants/DefaultEquipment.d.ts +23 -0
  11. package/dist/constants/DefaultEquipment.d.ts.map +1 -0
  12. package/dist/constants/DefaultFeatures.d.ts +22 -0
  13. package/dist/constants/DefaultFeatures.d.ts.map +1 -0
  14. package/dist/constants/DefaultRaces.d.ts +102 -0
  15. package/dist/constants/DefaultRaces.d.ts.map +1 -0
  16. package/dist/constants/DefaultSkills.d.ts +26 -0
  17. package/dist/constants/DefaultSkills.d.ts.map +1 -0
  18. package/dist/constants/DefaultSpells.d.ts +41 -0
  19. package/dist/constants/DefaultSpells.d.ts.map +1 -0
  20. package/dist/constants/EncounterBalance.d.ts +208 -0
  21. package/dist/constants/EncounterBalance.d.ts.map +1 -0
  22. package/dist/constants/EnemyEquipment.d.ts +71 -0
  23. package/dist/constants/EnemyEquipment.d.ts.map +1 -0
  24. package/dist/constants/EnemyRarity.d.ts +79 -0
  25. package/dist/constants/EnemyRarity.d.ts.map +1 -0
  26. package/dist/constants/EnemyTemplates/Construct.d.ts +63 -0
  27. package/dist/constants/EnemyTemplates/Construct.d.ts.map +1 -0
  28. package/dist/constants/EnemyTemplates/Dragon.d.ts +68 -0
  29. package/dist/constants/EnemyTemplates/Dragon.d.ts.map +1 -0
  30. package/dist/constants/EnemyTemplates/Elemental.d.ts +64 -0
  31. package/dist/constants/EnemyTemplates/Elemental.d.ts.map +1 -0
  32. package/dist/constants/EnemyTemplates/Fiend.d.ts +62 -0
  33. package/dist/constants/EnemyTemplates/Fiend.d.ts.map +1 -0
  34. package/dist/constants/EnemyTemplates/Monstrosity.d.ts +63 -0
  35. package/dist/constants/EnemyTemplates/Monstrosity.d.ts.map +1 -0
  36. package/dist/constants/EnemyTemplates/Undead.d.ts +61 -0
  37. package/dist/constants/EnemyTemplates/Undead.d.ts.map +1 -0
  38. package/dist/constants/ItemTemplates.d.ts +40 -0
  39. package/dist/constants/ItemTemplates.d.ts.map +1 -0
  40. package/dist/constants/MagicItems.d.ts +30 -0
  41. package/dist/constants/MagicItems.d.ts.map +1 -0
  42. package/dist/constants/SpellSlots.d.ts +30 -0
  43. package/dist/constants/SpellSlots.d.ts.map +1 -0
  44. package/dist/constants/StatScaling.d.ts +113 -0
  45. package/dist/constants/StatScaling.d.ts.map +1 -0
  46. package/dist/core/analysis/AudioAnalyzer.d.ts +599 -0
  47. package/dist/core/analysis/AudioAnalyzer.d.ts.map +1 -0
  48. package/dist/core/analysis/ColorExtractor.d.ts +64 -0
  49. package/dist/core/analysis/ColorExtractor.d.ts.map +1 -0
  50. package/dist/core/analysis/EssentiaPitchDetector.d.ts +282 -0
  51. package/dist/core/analysis/EssentiaPitchDetector.d.ts.map +1 -0
  52. package/dist/core/analysis/LevelSerializer.d.ts +265 -0
  53. package/dist/core/analysis/LevelSerializer.d.ts.map +1 -0
  54. package/dist/core/analysis/MelodyContourAnalyzer.d.ts +283 -0
  55. package/dist/core/analysis/MelodyContourAnalyzer.d.ts.map +1 -0
  56. package/dist/core/analysis/MultiBandAnalyzer.d.ts +214 -0
  57. package/dist/core/analysis/MultiBandAnalyzer.d.ts.map +1 -0
  58. package/dist/core/analysis/MusicClassifier.d.ts +524 -0
  59. package/dist/core/analysis/MusicClassifier.d.ts.map +1 -0
  60. package/dist/core/analysis/PitchAnalyzer.d.ts +266 -0
  61. package/dist/core/analysis/PitchAnalyzer.d.ts.map +1 -0
  62. package/dist/core/analysis/PitchDetector.d.ts +251 -0
  63. package/dist/core/analysis/PitchDetector.d.ts.map +1 -0
  64. package/dist/core/analysis/SpectrumScanner.d.ts +52 -0
  65. package/dist/core/analysis/SpectrumScanner.d.ts.map +1 -0
  66. package/dist/core/analysis/beat/BeatInterpolator.d.ts +477 -0
  67. package/dist/core/analysis/beat/BeatInterpolator.d.ts.map +1 -0
  68. package/dist/core/analysis/beat/BeatMapGenerator.d.ts +170 -0
  69. package/dist/core/analysis/beat/BeatMapGenerator.d.ts.map +1 -0
  70. package/dist/core/analysis/beat/BeatStream.d.ts +316 -0
  71. package/dist/core/analysis/beat/BeatStream.d.ts.map +1 -0
  72. package/dist/core/analysis/beat/BeatSubdivider.d.ts +205 -0
  73. package/dist/core/analysis/beat/BeatSubdivider.d.ts.map +1 -0
  74. package/dist/core/analysis/beat/BeatTracker.d.ts +137 -0
  75. package/dist/core/analysis/beat/BeatTracker.d.ts.map +1 -0
  76. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts +180 -0
  77. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts.map +1 -0
  78. package/dist/core/analysis/beat/DensityAnalyzer.d.ts +246 -0
  79. package/dist/core/analysis/beat/DensityAnalyzer.d.ts.map +1 -0
  80. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts +1082 -0
  81. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts.map +1 -0
  82. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts +192 -0
  83. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts.map +1 -0
  84. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts +133 -0
  85. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts.map +1 -0
  86. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts +230 -0
  87. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts.map +1 -0
  88. package/dist/core/analysis/beat/RhythmQuantizer.d.ts +399 -0
  89. package/dist/core/analysis/beat/RhythmQuantizer.d.ts.map +1 -0
  90. package/dist/core/analysis/beat/RhythmicBalancer.d.ts +262 -0
  91. package/dist/core/analysis/beat/RhythmicBalancer.d.ts.map +1 -0
  92. package/dist/core/analysis/beat/StreamScorer.d.ts +275 -0
  93. package/dist/core/analysis/beat/StreamScorer.d.ts.map +1 -0
  94. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts +256 -0
  95. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts.map +1 -0
  96. package/dist/core/analysis/beat/TempoDetector.d.ts +220 -0
  97. package/dist/core/analysis/beat/TempoDetector.d.ts.map +1 -0
  98. package/dist/core/analysis/beat/TransientDetector.d.ts +303 -0
  99. package/dist/core/analysis/beat/TransientDetector.d.ts.map +1 -0
  100. package/dist/core/analysis/beat/beatKeyHelpers.d.ts +180 -0
  101. package/dist/core/analysis/beat/beatKeyHelpers.d.ts.map +1 -0
  102. package/dist/core/analysis/beat/index.d.ts +41 -0
  103. package/dist/core/analysis/beat/index.d.ts.map +1 -0
  104. package/dist/core/analysis/beat/utils/audioUtils.d.ts +204 -0
  105. package/dist/core/analysis/beat/utils/audioUtils.d.ts.map +1 -0
  106. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts +404 -0
  107. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts.map +1 -0
  108. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts +61 -0
  109. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts.map +1 -0
  110. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts +33 -0
  111. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts.map +1 -0
  112. package/dist/core/analysis/index.d.ts +18 -0
  113. package/dist/core/analysis/index.d.ts.map +1 -0
  114. package/dist/core/combat/AI/AICombatRunner.d.ts +108 -0
  115. package/dist/core/combat/AI/AICombatRunner.d.ts.map +1 -0
  116. package/dist/core/combat/AI/CombatAI.d.ts +179 -0
  117. package/dist/core/combat/AI/CombatAI.d.ts.map +1 -0
  118. package/dist/core/combat/AI/CombatMetricsTracker.d.ts +30 -0
  119. package/dist/core/combat/AI/CombatMetricsTracker.d.ts.map +1 -0
  120. package/dist/core/combat/Analysis/BalanceValidator.d.ts +170 -0
  121. package/dist/core/combat/Analysis/BalanceValidator.d.ts.map +1 -0
  122. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts +231 -0
  123. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts.map +1 -0
  124. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts +203 -0
  125. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts.map +1 -0
  126. package/dist/core/combat/Analysis/ParameterSweep.d.ts +201 -0
  127. package/dist/core/combat/Analysis/ParameterSweep.d.ts.map +1 -0
  128. package/dist/core/combat/AttackResolver.d.ts +220 -0
  129. package/dist/core/combat/AttackResolver.d.ts.map +1 -0
  130. package/dist/core/combat/CombatEngine.d.ts +388 -0
  131. package/dist/core/combat/CombatEngine.d.ts.map +1 -0
  132. package/dist/core/combat/DiceRoller.d.ts +115 -0
  133. package/dist/core/combat/DiceRoller.d.ts.map +1 -0
  134. package/dist/core/combat/InitiativeRoller.d.ts +62 -0
  135. package/dist/core/combat/InitiativeRoller.d.ts.map +1 -0
  136. package/dist/core/combat/PartyAnalyzer.d.ts +215 -0
  137. package/dist/core/combat/PartyAnalyzer.d.ts.map +1 -0
  138. package/dist/core/combat/SeededDiceRoller.d.ts +120 -0
  139. package/dist/core/combat/SeededDiceRoller.d.ts.map +1 -0
  140. package/dist/core/combat/Simulation/CombatSimulator.d.ts +366 -0
  141. package/dist/core/combat/Simulation/CombatSimulator.d.ts.map +1 -0
  142. package/dist/core/combat/SpellCaster.d.ts +113 -0
  143. package/dist/core/combat/SpellCaster.d.ts.map +1 -0
  144. package/dist/core/config/index.d.ts +24 -0
  145. package/dist/core/config/index.d.ts.map +1 -0
  146. package/dist/core/config/progressionConfig.d.ts +73 -0
  147. package/dist/core/config/progressionConfig.d.ts.map +1 -0
  148. package/dist/core/config/sensorConfig.d.ts +134 -0
  149. package/dist/core/config/sensorConfig.d.ts.map +1 -0
  150. package/dist/core/equipment/BoxOpener.d.ts +175 -0
  151. package/dist/core/equipment/BoxOpener.d.ts.map +1 -0
  152. package/dist/core/equipment/EquipmentEffectApplier.d.ts +189 -0
  153. package/dist/core/equipment/EquipmentEffectApplier.d.ts.map +1 -0
  154. package/dist/core/equipment/EquipmentModifier.d.ts +327 -0
  155. package/dist/core/equipment/EquipmentModifier.d.ts.map +1 -0
  156. package/dist/core/equipment/EquipmentSpawnHelper.d.ts +246 -0
  157. package/dist/core/equipment/EquipmentSpawnHelper.d.ts.map +1 -0
  158. package/dist/core/equipment/EquipmentValidator.d.ts +173 -0
  159. package/dist/core/equipment/EquipmentValidator.d.ts.map +1 -0
  160. package/dist/core/extensions/ExtensionManager.d.ts +517 -0
  161. package/dist/core/extensions/ExtensionManager.d.ts.map +1 -0
  162. package/dist/core/extensions/WeightedSelector.d.ts +156 -0
  163. package/dist/core/extensions/WeightedSelector.d.ts.map +1 -0
  164. package/dist/core/extensions/index.d.ts +11 -0
  165. package/dist/core/extensions/index.d.ts.map +1 -0
  166. package/dist/core/extensions/initializeDefaults.d.ts +170 -0
  167. package/dist/core/extensions/initializeDefaults.d.ts.map +1 -0
  168. package/dist/core/features/FeatureEffectApplier.d.ts +102 -0
  169. package/dist/core/features/FeatureEffectApplier.d.ts.map +1 -0
  170. package/dist/core/features/FeatureQuery.d.ts +368 -0
  171. package/dist/core/features/FeatureQuery.d.ts.map +1 -0
  172. package/dist/core/features/FeatureTypes.d.ts +199 -0
  173. package/dist/core/features/FeatureTypes.d.ts.map +1 -0
  174. package/dist/core/features/FeatureValidator.d.ts +149 -0
  175. package/dist/core/features/FeatureValidator.d.ts.map +1 -0
  176. package/dist/core/features/index.d.ts +12 -0
  177. package/dist/core/features/index.d.ts.map +1 -0
  178. package/dist/core/generation/AbilityScoreCalculator.d.ts +83 -0
  179. package/dist/core/generation/AbilityScoreCalculator.d.ts.map +1 -0
  180. package/dist/core/generation/AppearanceGenerator.d.ts +32 -0
  181. package/dist/core/generation/AppearanceGenerator.d.ts.map +1 -0
  182. package/dist/core/generation/BeatConverter.d.ts +127 -0
  183. package/dist/core/generation/BeatConverter.d.ts.map +1 -0
  184. package/dist/core/generation/ButtonMapper.d.ts +346 -0
  185. package/dist/core/generation/ButtonMapper.d.ts.map +1 -0
  186. package/dist/core/generation/ButtonPatternLibrary.d.ts +92 -0
  187. package/dist/core/generation/ButtonPatternLibrary.d.ts.map +1 -0
  188. package/dist/core/generation/CRLevelConverter.d.ts +242 -0
  189. package/dist/core/generation/CRLevelConverter.d.ts.map +1 -0
  190. package/dist/core/generation/CharacterGenerator.d.ts +194 -0
  191. package/dist/core/generation/CharacterGenerator.d.ts.map +1 -0
  192. package/dist/core/generation/ClassSuggester.d.ts +184 -0
  193. package/dist/core/generation/ClassSuggester.d.ts.map +1 -0
  194. package/dist/core/generation/EnemyEquipmentGenerator.d.ts +151 -0
  195. package/dist/core/generation/EnemyEquipmentGenerator.d.ts.map +1 -0
  196. package/dist/core/generation/EnemyGenerator.d.ts +595 -0
  197. package/dist/core/generation/EnemyGenerator.d.ts.map +1 -0
  198. package/dist/core/generation/EquipmentGenerator.d.ts +204 -0
  199. package/dist/core/generation/EquipmentGenerator.d.ts.map +1 -0
  200. package/dist/core/generation/LegendaryGenerator.d.ts +213 -0
  201. package/dist/core/generation/LegendaryGenerator.d.ts.map +1 -0
  202. package/dist/core/generation/LevelGenerator.d.ts +390 -0
  203. package/dist/core/generation/LevelGenerator.d.ts.map +1 -0
  204. package/dist/core/generation/NamingEngine.d.ts +136 -0
  205. package/dist/core/generation/NamingEngine.d.ts.map +1 -0
  206. package/dist/core/generation/PitchBeatLinker.d.ts +150 -0
  207. package/dist/core/generation/PitchBeatLinker.d.ts.map +1 -0
  208. package/dist/core/generation/RaceSelector.d.ts +58 -0
  209. package/dist/core/generation/RaceSelector.d.ts.map +1 -0
  210. package/dist/core/generation/RhythmGenerator.d.ts +597 -0
  211. package/dist/core/generation/RhythmGenerator.d.ts.map +1 -0
  212. package/dist/core/generation/SkillAssigner.d.ts +78 -0
  213. package/dist/core/generation/SkillAssigner.d.ts.map +1 -0
  214. package/dist/core/generation/SpellManager.d.ts +132 -0
  215. package/dist/core/generation/SpellManager.d.ts.map +1 -0
  216. package/dist/core/generation/SpellcastingGenerator.d.ts +255 -0
  217. package/dist/core/generation/SpellcastingGenerator.d.ts.map +1 -0
  218. package/dist/core/generation/index.d.ts +41 -0
  219. package/dist/core/generation/index.d.ts.map +1 -0
  220. package/dist/core/parser/MetadataExtractor.d.ts +66 -0
  221. package/dist/core/parser/MetadataExtractor.d.ts.map +1 -0
  222. package/dist/core/parser/PlaylistParser.d.ts +45 -0
  223. package/dist/core/parser/PlaylistParser.d.ts.map +1 -0
  224. package/dist/core/playback/SubdivisionPlaybackController.d.ts +333 -0
  225. package/dist/core/playback/SubdivisionPlaybackController.d.ts.map +1 -0
  226. package/dist/core/playback/index.d.ts +5 -0
  227. package/dist/core/playback/index.d.ts.map +1 -0
  228. package/dist/core/progression/CharacterUpdater.d.ts +203 -0
  229. package/dist/core/progression/CharacterUpdater.d.ts.map +1 -0
  230. package/dist/core/progression/LevelUpProcessor.d.ts +234 -0
  231. package/dist/core/progression/LevelUpProcessor.d.ts.map +1 -0
  232. package/dist/core/progression/PrestigeSystem.d.ts +217 -0
  233. package/dist/core/progression/PrestigeSystem.d.ts.map +1 -0
  234. package/dist/core/progression/RhythmXPCalculator.d.ts +182 -0
  235. package/dist/core/progression/RhythmXPCalculator.d.ts.map +1 -0
  236. package/dist/core/progression/SessionTracker.d.ts +169 -0
  237. package/dist/core/progression/SessionTracker.d.ts.map +1 -0
  238. package/dist/core/progression/XPCalculator.d.ts +128 -0
  239. package/dist/core/progression/XPCalculator.d.ts.map +1 -0
  240. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts +97 -0
  241. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts.map +1 -0
  242. package/dist/core/progression/stat/StatManager.d.ts +179 -0
  243. package/dist/core/progression/stat/StatManager.d.ts.map +1 -0
  244. package/dist/core/sensors/EnvironmentalSensors.d.ts +301 -0
  245. package/dist/core/sensors/EnvironmentalSensors.d.ts.map +1 -0
  246. package/dist/core/sensors/GamingPlatformSensors.d.ts +162 -0
  247. package/dist/core/sensors/GamingPlatformSensors.d.ts.map +1 -0
  248. package/dist/core/sensors/GeolocationProvider.d.ts +156 -0
  249. package/dist/core/sensors/GeolocationProvider.d.ts.map +1 -0
  250. package/dist/core/sensors/MotionDetector.d.ts +58 -0
  251. package/dist/core/sensors/MotionDetector.d.ts.map +1 -0
  252. package/dist/core/sensors/SteamAPIClient.d.ts +108 -0
  253. package/dist/core/sensors/SteamAPIClient.d.ts.map +1 -0
  254. package/dist/core/sensors/WeatherAPIClient.d.ts +360 -0
  255. package/dist/core/sensors/WeatherAPIClient.d.ts.map +1 -0
  256. package/dist/core/sensors/schemas/weather.schema.d.ts +144 -0
  257. package/dist/core/sensors/schemas/weather.schema.d.ts.map +1 -0
  258. package/dist/core/skills/SkillQuery.d.ts +159 -0
  259. package/dist/core/skills/SkillQuery.d.ts.map +1 -0
  260. package/dist/core/skills/SkillTypes.d.ts +233 -0
  261. package/dist/core/skills/SkillTypes.d.ts.map +1 -0
  262. package/dist/core/skills/SkillValidator.d.ts +146 -0
  263. package/dist/core/skills/SkillValidator.d.ts.map +1 -0
  264. package/dist/core/skills/index.d.ts +11 -0
  265. package/dist/core/skills/index.d.ts.map +1 -0
  266. package/dist/core/spells/SpellQuery.d.ts +194 -0
  267. package/dist/core/spells/SpellQuery.d.ts.map +1 -0
  268. package/dist/core/spells/SpellTypes.d.ts +71 -0
  269. package/dist/core/spells/SpellTypes.d.ts.map +1 -0
  270. package/dist/core/spells/SpellValidator.d.ts +129 -0
  271. package/dist/core/spells/SpellValidator.d.ts.map +1 -0
  272. package/dist/core/spells/index.d.ts +11 -0
  273. package/dist/core/spells/index.d.ts.map +1 -0
  274. package/dist/core/types/AudioProfile.d.ts +143 -0
  275. package/dist/core/types/AudioProfile.d.ts.map +1 -0
  276. package/dist/core/types/BeatMap.d.ts +1825 -0
  277. package/dist/core/types/BeatMap.d.ts.map +1 -0
  278. package/dist/core/types/ButtonMapping.d.ts +345 -0
  279. package/dist/core/types/ButtonMapping.d.ts.map +1 -0
  280. package/dist/core/types/Character.d.ts +397 -0
  281. package/dist/core/types/Character.d.ts.map +1 -0
  282. package/dist/core/types/ChartedBeatMap.d.ts +169 -0
  283. package/dist/core/types/ChartedBeatMap.d.ts.map +1 -0
  284. package/dist/core/types/Combat.d.ts +268 -0
  285. package/dist/core/types/Combat.d.ts.map +1 -0
  286. package/dist/core/types/CombatAI.d.ts +143 -0
  287. package/dist/core/types/CombatAI.d.ts.map +1 -0
  288. package/dist/core/types/Enemy.d.ts +447 -0
  289. package/dist/core/types/Enemy.d.ts.map +1 -0
  290. package/dist/core/types/Environmental.d.ts +213 -0
  291. package/dist/core/types/Environmental.d.ts.map +1 -0
  292. package/dist/core/types/Equipment.d.ts +309 -0
  293. package/dist/core/types/Equipment.d.ts.map +1 -0
  294. package/dist/core/types/ISessionTracker.d.ts +48 -0
  295. package/dist/core/types/ISessionTracker.d.ts.map +1 -0
  296. package/dist/core/types/LevelExport.d.ts +366 -0
  297. package/dist/core/types/LevelExport.d.ts.map +1 -0
  298. package/dist/core/types/Playlist.d.ts +70 -0
  299. package/dist/core/types/Playlist.d.ts.map +1 -0
  300. package/dist/core/types/Prestige.d.ts +94 -0
  301. package/dist/core/types/Prestige.d.ts.map +1 -0
  302. package/dist/core/types/Progression.d.ts +214 -0
  303. package/dist/core/types/Progression.d.ts.map +1 -0
  304. package/dist/core/types/RhythmXP.d.ts +398 -0
  305. package/dist/core/types/RhythmXP.d.ts.map +1 -0
  306. package/dist/core/utils/AbilityConstants.d.ts +31 -0
  307. package/dist/core/utils/AbilityConstants.d.ts.map +1 -0
  308. package/dist/core/utils/EffectApplierUtils.d.ts +56 -0
  309. package/dist/core/utils/EffectApplierUtils.d.ts.map +1 -0
  310. package/dist/core/utils/ImageValidator.d.ts +66 -0
  311. package/dist/core/utils/ImageValidator.d.ts.map +1 -0
  312. package/dist/core/utils/PrerequisiteValidator.d.ts +88 -0
  313. package/dist/core/utils/PrerequisiteValidator.d.ts.map +1 -0
  314. package/dist/essentia-wasm.es-BUEnKUts.js +2990 -0
  315. package/dist/essentia.js-model.es-CGA0xotH.js +306 -0
  316. package/dist/index.d.ts +176 -0
  317. package/dist/index.d.ts.map +1 -0
  318. package/dist/playlist-data-engine.js +124 -0
  319. package/dist/playlist-data-engine.mjs +49251 -0
  320. package/dist/utils/EnchantmentLibrary.d.ts +378 -0
  321. package/dist/utils/EnchantmentLibrary.d.ts.map +1 -0
  322. package/dist/utils/arweaveGatewayManager.d.ts +485 -0
  323. package/dist/utils/arweaveGatewayManager.d.ts.map +1 -0
  324. package/dist/utils/arweaveUtils.d.ts +118 -0
  325. package/dist/utils/arweaveUtils.d.ts.map +1 -0
  326. package/dist/utils/constants.d.ts +439 -0
  327. package/dist/utils/constants.d.ts.map +1 -0
  328. package/dist/utils/equipmentConstants.d.ts +60 -0
  329. package/dist/utils/equipmentConstants.d.ts.map +1 -0
  330. package/dist/utils/hash.d.ts +33 -0
  331. package/dist/utils/hash.d.ts.map +1 -0
  332. package/dist/utils/logger.d.ts +192 -0
  333. package/dist/utils/logger.d.ts.map +1 -0
  334. package/dist/utils/magicItemExamples.d.ts +46 -0
  335. package/dist/utils/magicItemExamples.d.ts.map +1 -0
  336. package/dist/utils/playlistUtils.d.ts +149 -0
  337. package/dist/utils/playlistUtils.d.ts.map +1 -0
  338. package/dist/utils/random.d.ts +34 -0
  339. package/dist/utils/random.d.ts.map +1 -0
  340. package/dist/utils/sensorDashboard.d.ts +60 -0
  341. package/dist/utils/sensorDashboard.d.ts.map +1 -0
  342. package/dist/utils/validators.d.ts +189 -0
  343. package/dist/utils/validators.d.ts.map +1 -0
  344. package/dist/vite.svg +1 -0
  345. package/package.json +82 -0
@@ -0,0 +1,366 @@
1
+ /**
2
+ * CombatSimulator — Monte Carlo combat simulation engine
3
+ *
4
+ * Runs N combat simulations with seeded RNG, aggregates statistical results,
5
+ * and returns structured data for balance analysis. Each simulation run gets
6
+ * a unique seed derived from the base seed, ensuring full determinism:
7
+ * same base seed + same config = identical results every time.
8
+ *
9
+ * Uses AICombatRunner internally for each run, so the AI makes all combat
10
+ * decisions. The simulator orchestrates running many fights and aggregating
11
+ * the outcomes into statistically meaningful summaries.
12
+ *
13
+ * Usage:
14
+ * ```ts
15
+ * const simulator = new CombatSimulator();
16
+ * const results = simulator.run(
17
+ * party, enemies,
18
+ * { runCount: 1000, baseSeed: 'my-sim', aiConfig: { playerStyle: 'normal', enemyStyle: 'aggressive' } },
19
+ * (completed, total) => console.log(`${completed}/${total}`)
20
+ * );
21
+ * console.log(results.summary.playerWinRate); // e.g., 0.73
22
+ * ```
23
+ */
24
+ import type { CharacterSheet } from '../../types/Character.js';
25
+ import type { CombatConfig, CombatInstance, CombatResult } from '../../types/Combat.js';
26
+ import type { AIConfig, CombatantMetrics } from '../../types/CombatAI.js';
27
+ import type { EncounterGenerationOptions } from '../../types/Enemy.js';
28
+ /**
29
+ * Configuration for a Monte Carlo combat simulation.
30
+ *
31
+ * Controls how many fights to run, what AI strategies to use, and
32
+ * whether to collect detailed per-run logs (memory-intensive).
33
+ */
34
+ export interface SimulationConfig {
35
+ /** Number of simulations to run (100–10000 recommended) */
36
+ runCount: number;
37
+ /** Base seed for determinism — each run gets baseSeed + index */
38
+ baseSeed: string;
39
+ /** AI play styles per side */
40
+ aiConfig: AIConfig;
41
+ /** Optional combat engine configuration (max turns, flee, etc.) */
42
+ combatConfig?: CombatConfig;
43
+ /** If true, save full combat log per run (memory-intensive for large runCount) */
44
+ collectDetailedLogs?: boolean;
45
+ /**
46
+ * If provided, regenerate enemies per run using these options instead of
47
+ * reusing the same pre-generated enemies for all runs.
48
+ *
49
+ * Each run gets a unique seed derived from `baseSeed + runIndex`, producing
50
+ * different enemy templates/stats per run while keeping determinism.
51
+ * This captures the variance in enemy generation (different templates, etc.)
52
+ * across Monte Carlo iterations.
53
+ *
54
+ * The `enemies` array passed to `run()` is still used for:
55
+ * - Aggregator initialization (combatant IDs, encounter config)
56
+ * - Per-combatant metric slot naming
57
+ */
58
+ enemyRegeneration?: EncounterGenerationOptions;
59
+ /** Progress callback — called after each run completes */
60
+ onProgress?: (completed: number, total: number) => void;
61
+ /** AbortSignal for cancelling long-running simulations. When aborted, returns partial results. */
62
+ abortSignal?: AbortSignal;
63
+ }
64
+ /**
65
+ * Summary statistics aggregated across all simulation runs.
66
+ *
67
+ * Answers the core question: "Given this party and these enemies,
68
+ * how often does each side win, and how long do fights last?"
69
+ */
70
+ export interface SimulationSummary {
71
+ /** Total simulation runs completed */
72
+ totalRuns: number;
73
+ /** Number of runs where all enemies were defeated */
74
+ playerWins: number;
75
+ /** Number of runs where all players were defeated */
76
+ enemyWins: number;
77
+ /** Number of runs that ended in a draw (max turns, mutual kill, etc.) */
78
+ draws: number;
79
+ /** Player win rate (0.0–1.0) */
80
+ playerWinRate: number;
81
+ /** Average number of rounds across all runs */
82
+ averageRounds: number;
83
+ /** Median number of rounds across all runs */
84
+ medianRounds: number;
85
+ /** Average rounds in runs where the player won */
86
+ averageRoundsOnWin: number;
87
+ /** Average rounds in runs where the player lost */
88
+ averageRoundsOnLoss: number;
89
+ /** Average remaining HP percent for player characters across winning runs */
90
+ averagePlayerHPPercentRemaining: number;
91
+ /** Total number of player character deaths across all runs */
92
+ totalPlayerDeaths: number;
93
+ /** Average rounds at which each player death occurred */
94
+ averageRoundsPerPlayerDeath: number;
95
+ /** Total number of enemy deaths across all runs */
96
+ totalEnemyDeaths: number;
97
+ /** Average rounds at which each enemy death occurred */
98
+ averageRoundsPerEnemyDeath: number;
99
+ }
100
+ /**
101
+ * Histogram bucket for distribution visualization.
102
+ *
103
+ * Used to build damage and HP distribution charts in the frontend.
104
+ */
105
+ export interface HistogramBucket {
106
+ /** Start of the range (inclusive) */
107
+ rangeStart: number;
108
+ /** End of the range (exclusive, except the last bucket) */
109
+ rangeEnd: number;
110
+ /** Number of data points in this bucket */
111
+ count: number;
112
+ /** Percentage of total data points (0–100) */
113
+ percent: number;
114
+ }
115
+ /**
116
+ * Per-combatant aggregate statistics across all simulation runs.
117
+ *
118
+ * Computed by accumulating CombatantMetrics from each run, then
119
+ * calculating averages, rates, and distributions.
120
+ */
121
+ export interface CombatantSimulationMetrics {
122
+ /** Combatant ID (from CharacterSheet) */
123
+ combatantId: string;
124
+ /** Combatant display name */
125
+ name: string;
126
+ /** Which side this combatant was on */
127
+ side: 'player' | 'enemy';
128
+ /** Average damage dealt per round across all runs */
129
+ averageDamagePerRound: number;
130
+ /** Median damage dealt per round across all runs */
131
+ medianDamagePerRound: number;
132
+ /** Average total damage dealt across all runs */
133
+ averageTotalDamageDealt: number;
134
+ /** Average total damage taken across all runs */
135
+ averageTotalDamageTaken: number;
136
+ /** Average healing done across all runs */
137
+ averageHealingDone: number;
138
+ /** Average number of rounds survived across all runs */
139
+ averageRoundsSurvived: number;
140
+ /** How often this combatant survived to combat end (0.0–1.0) */
141
+ survivalRate: number;
142
+ /** How often this combatant got the final blow on any enemy (0.0–1.0) */
143
+ killRate: number;
144
+ /** Rate of critical hits across all attack actions (0.0–1.0) */
145
+ criticalHitRate: number;
146
+ /** Average hit rate across all runs (0.0–1.0) */
147
+ averageHitRate: number;
148
+ /** Average number of hits per run */
149
+ averageHitsPerRun: number;
150
+ /** Average number of misses per run */
151
+ averageMissesPerRun: number;
152
+ /** Average number of spell slots consumed per run */
153
+ averageSpellSlotsUsed: number;
154
+ /** Most frequently used action type ('attack', 'castSpell', etc.) */
155
+ mostUsedAction: string;
156
+ /** Damage dealt per round histogram for visualization */
157
+ damageDistribution: HistogramBucket[];
158
+ /** HP remaining at combat end histogram for visualization */
159
+ hpRemainingDistribution: HistogramBucket[];
160
+ }
161
+ /**
162
+ * Detail record for a single simulation run.
163
+ * Only populated when `collectDetailedLogs` is true.
164
+ */
165
+ export interface SimulationRunDetail {
166
+ /** Run index (0-based) */
167
+ runIndex: number;
168
+ /** Seed used for this run */
169
+ seed: string;
170
+ /** Full combat instance with complete action history */
171
+ combat: CombatInstance;
172
+ /** Final combat result */
173
+ result: CombatResult;
174
+ /** Per-combatant metrics for this run */
175
+ metrics: Map<string, CombatantMetrics>;
176
+ }
177
+ /**
178
+ * Party and encounter configuration — stored alongside results for context.
179
+ */
180
+ export interface PartyConfig {
181
+ /** Number of party members */
182
+ memberCount: number;
183
+ /** Average party level */
184
+ averageLevel: number;
185
+ /** Party member names */
186
+ memberNames: string[];
187
+ }
188
+ export interface EncounterConfig {
189
+ /** Number of enemies */
190
+ enemyCount: number;
191
+ /** Average enemy CR */
192
+ averageCR: number;
193
+ /** Enemy names */
194
+ enemyNames: string[];
195
+ }
196
+ /**
197
+ * Complete results from a Monte Carlo combat simulation.
198
+ *
199
+ * Contains the aggregate summary, per-combatant metrics, and optionally
200
+ * the detailed per-run logs.
201
+ */
202
+ export interface SimulationResults {
203
+ /** The configuration used for this simulation */
204
+ config: SimulationConfig;
205
+ /** Aggregate statistics across all runs */
206
+ summary: SimulationSummary;
207
+ /** Party configuration snapshot */
208
+ party: PartyConfig;
209
+ /** Encounter configuration snapshot */
210
+ encounter: EncounterConfig;
211
+ /** Per-combatant aggregate metrics keyed by combatant ID */
212
+ perCombatantMetrics: Map<string, CombatantSimulationMetrics>;
213
+ /**
214
+ * When enemyRegeneration is enabled, tracks per-enemy-type statistics
215
+ * aggregated across all runs. Each entry represents a unique enemy name
216
+ * that appeared during the simulation, with occurrence count and stat ranges.
217
+ */
218
+ enemyGenerationStats?: EnemyGenerationRecord[];
219
+ /** Detailed per-run data (only if collectDetailedLogs was true) */
220
+ runDetails?: SimulationRunDetail[];
221
+ /** Whether the simulation was cancelled before completing all requested runs */
222
+ wasCancelled: boolean;
223
+ }
224
+ /**
225
+ * Aggregated statistics for a unique enemy type across all simulation runs
226
+ * where enemyRegeneration was enabled.
227
+ */
228
+ export interface EnemyGenerationRecord {
229
+ /** Enemy name (e.g., "Goblin Scout", "Orc Brute") */
230
+ name: string;
231
+ /** Number of runs this enemy appeared in */
232
+ count: number;
233
+ /** HP values observed across runs */
234
+ hpRange: {
235
+ min: number;
236
+ max: number;
237
+ avg: number;
238
+ };
239
+ /** AC values observed across runs */
240
+ acRange: {
241
+ min: number;
242
+ max: number;
243
+ avg: number;
244
+ };
245
+ /** CR values observed across runs */
246
+ crRange: {
247
+ min: number;
248
+ max: number;
249
+ avg: number;
250
+ };
251
+ }
252
+ /**
253
+ * CombatSimulator — Orchestrates Monte Carlo combat simulations.
254
+ *
255
+ * Runs N independent combat encounters using AI-controlled combatants,
256
+ * each with a unique seeded RNG for full determinism. Aggregates results
257
+ * into statistical summaries and per-combatant metrics.
258
+ *
259
+ * The simulator is stateless between `run()` calls — each call produces
260
+ * a fresh set of results.
261
+ */
262
+ export declare class CombatSimulator {
263
+ /**
264
+ * Run a Monte Carlo combat simulation.
265
+ *
266
+ * Executes `config.runCount` independent combat simulations, each with
267
+ * a unique seed (`config.baseSeed + runIndex`). Results are aggregated
268
+ * into statistical summaries and per-combatant metrics.
269
+ *
270
+ * @param players - Player character sheets
271
+ * @param enemies - Enemy character sheets
272
+ * @param config - Simulation configuration (run count, seed, AI styles, etc.)
273
+ * @returns Complete simulation results with summary and per-combatant metrics
274
+ *
275
+ * @example
276
+ * ```ts
277
+ * const simulator = new CombatSimulator();
278
+ * const results = simulator.run(
279
+ * myParty, myEnemies,
280
+ * {
281
+ * runCount: 1000,
282
+ * baseSeed: 'balance-test-1',
283
+ * aiConfig: { playerStyle: 'normal', enemyStyle: 'aggressive' },
284
+ * onProgress: (done, total) => updateProgressBar(done / total),
285
+ * }
286
+ * );
287
+ * console.log(`Player win rate: ${(results.summary.playerWinRate * 100).toFixed(1)}%`);
288
+ * ```
289
+ */
290
+ run(players: CharacterSheet[], enemies: CharacterSheet[], config: SimulationConfig): SimulationResults;
291
+ }
292
+ /**
293
+ * Accumulates per-run results and computes final aggregated statistics.
294
+ *
295
+ * Internal to CombatSimulator — not exported. Processes each run's
296
+ * CombatResult and CombatantMetrics, building up running totals that
297
+ * are finalized into SimulationResults when `getResults()` is called.
298
+ */
299
+ export declare class SimulationAggregator {
300
+ private readonly config;
301
+ private readonly party;
302
+ private readonly encounter;
303
+ private playerWins;
304
+ private enemyWins;
305
+ private draws;
306
+ private roundsList;
307
+ private roundsOnWin;
308
+ private roundsOnLoss;
309
+ private playerHPPercentRemainingOnWin;
310
+ private playerDeathRounds;
311
+ private enemyDeathRounds;
312
+ private combatantAccumulators;
313
+ private runDetails;
314
+ private enemyGenTracker;
315
+ private readonly combatantIds;
316
+ constructor(config: SimulationConfig, players: CharacterSheet[], enemies: CharacterSheet[]);
317
+ /**
318
+ * Accumulate results from a single simulation run.
319
+ */
320
+ aggregateRun(runResult: {
321
+ combat: import('../../types/Combat.js').CombatInstance;
322
+ result: CombatResult;
323
+ metrics: Map<string, CombatantMetrics>;
324
+ }, runIndex: number, seed: string): void;
325
+ /**
326
+ * Compute final aggregated results from all accumulated runs.
327
+ */
328
+ getResults(wasCancelled?: boolean): SimulationResults;
329
+ private average;
330
+ private median;
331
+ }
332
+ /**
333
+ * Accumulates metrics for a single combatant across many simulation runs.
334
+ * Produces CombatantSimulationMetrics when finalized.
335
+ */
336
+ export declare class CombatantAccumulator {
337
+ readonly id: string;
338
+ readonly name: string;
339
+ readonly side: 'player' | 'enemy';
340
+ private totalDamageDealtSum;
341
+ private totalDamageTakenSum;
342
+ private totalHealingDoneSum;
343
+ private roundsSurvivedSum;
344
+ private survivalCount;
345
+ private killCount;
346
+ private criticalHitSum;
347
+ private hitsSum;
348
+ private missesSum;
349
+ private totalAttackActions;
350
+ private spellsCastSum;
351
+ private actionTypeCounts;
352
+ private damagePerRoundList;
353
+ private hpRemainingList;
354
+ constructor(id: string, name: string, side: 'player' | 'enemy');
355
+ /**
356
+ * Accumulate metrics from a single run.
357
+ */
358
+ accumulate(m: CombatantMetrics, totalRounds: number): void;
359
+ /**
360
+ * Produce final aggregated metrics for this combatant.
361
+ */
362
+ toSimulationMetrics(totalRuns: number): CombatantSimulationMetrics;
363
+ private average;
364
+ private median;
365
+ }
366
+ //# sourceMappingURL=CombatSimulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CombatSimulator.d.ts","sourceRoot":"","sources":["../../../../src/core/combat/Simulation/CombatSimulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * SpellCaster - Handles spell casting mechanics
3
+ * Manages spell slots, saving throws, and spell damage
4
+ */
5
+ import type { Combatant, SpellCastResult, StatusEffectMechanics, DiceRollerAPI } from '../types/Combat';
6
+ import type { Spell } from '../types/Character';
7
+ /**
8
+ * SpellCaster - D&D 5e spell casting system
9
+ */
10
+ export declare class SpellCaster {
11
+ private diceRoller?;
12
+ constructor(diceRoller?: DiceRollerAPI);
13
+ /**
14
+ * Cast a spell at one or more targets
15
+ * Handles:
16
+ * - Spell slot consumption
17
+ * - Spell attack rolls (if applicable)
18
+ * - Saving throws (if applicable)
19
+ * - Damage calculation
20
+ */
21
+ castSpell(caster: Combatant, spell: Spell, targets: Combatant[]): SpellCastResult;
22
+ /**
23
+ * Check if caster has a spell slot of the given level
24
+ */
25
+ hasSpellSlot(caster: Combatant, spellLevel: number): boolean;
26
+ /**
27
+ * Consume a spell slot
28
+ */
29
+ consumeSpellSlot(caster: Combatant, spellLevel: number): void;
30
+ /**
31
+ * Restore spell slots (e.g., after long rest)
32
+ * For simplicity, restores ALL spell slots to maximum
33
+ */
34
+ restoreSpellSlots(caster: Combatant): void;
35
+ /**
36
+ * Calculate spell save DC
37
+ * DC = 8 + spellcasting ability modifier + proficiency bonus
38
+ */
39
+ calculateSaveDC(caster: Combatant, ability: string): number;
40
+ /**
41
+ * Make a saving throw against a spell
42
+ * Returns true if save succeeds, false if fails
43
+ *
44
+ * @param target - The combatant making the save
45
+ * @param saveAbility - The ability score used for the save (e.g., 'dexterity')
46
+ * @param saveDC - The difficulty class to meet or exceed
47
+ * @param disadvantage - If true, roll with disadvantage (roll twice, take lower)
48
+ */
49
+ makeSavingThrow(target: Combatant, saveAbility: string, saveDC: number, disadvantage?: boolean): boolean;
50
+ /**
51
+ * Get spell slot information for a caster
52
+ */
53
+ getSpellSlotInfo(caster: Combatant): string;
54
+ /**
55
+ * Check if a spell can be upcast
56
+ * Upcasting is when a spell is cast using a higher-level spell slot
57
+ */
58
+ canUpcast(caster: Combatant, spell: Spell, targetSlotLevel: number): boolean;
59
+ /**
60
+ * Upcast a spell (cast it using a higher spell slot)
61
+ */
62
+ upcastSpell(caster: Combatant, spell: Spell, targets: Combatant[], slotLevelUsed: number): SpellCastResult;
63
+ /**
64
+ * Check if a spell has a specific tag.
65
+ * Tags are set on enemy InnateSpell objects and used by the AI
66
+ * for spell classification and decision-making.
67
+ */
68
+ static hasSpellTag(spell: Spell, tag: string): boolean;
69
+ /**
70
+ * Get all tags for a spell.
71
+ * Returns an empty array if the spell has no tags.
72
+ */
73
+ static getSpellTags(spell: Spell): string[];
74
+ /**
75
+ * Check if a spell deals damage.
76
+ * Uses tags (preferred) or falls back to checking damage dice fields.
77
+ */
78
+ static isDamageSpell(spell: Spell): boolean;
79
+ /**
80
+ * Check if a spell requires concentration.
81
+ */
82
+ static requiresConcentration(spell: Spell): boolean;
83
+ /**
84
+ * Check if a spell has an area-of-effect component.
85
+ */
86
+ static isAOESpell(spell: Spell): boolean;
87
+ /**
88
+ * Check if a spell targets multiple creatures.
89
+ */
90
+ static isMultiTargetSpell(spell: Spell): boolean;
91
+ /**
92
+ * Check if a spell can be used as a bonus action.
93
+ */
94
+ static isBonusActionSpell(spell: Spell): boolean;
95
+ /**
96
+ * Check if a spell can only target allies (healing, buffs).
97
+ */
98
+ static isAllySpell(spell: Spell): boolean;
99
+ /**
100
+ * Check if a spell only targets the caster.
101
+ */
102
+ static isSelfSpell(spell: Spell): boolean;
103
+ /**
104
+ * Get the tag-to-status-effect mapping.
105
+ * Used by tests and the AI to understand which tags produce which effects.
106
+ */
107
+ static getStatusEffectTags(): Readonly<Record<string, {
108
+ name: string;
109
+ requiresConcentration: boolean;
110
+ mechanicalEffects?: StatusEffectMechanics;
111
+ }>>;
112
+ }
113
+ //# sourceMappingURL=SpellCaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpellCaster.d.ts","sourceRoot":"","sources":["../../../src/core/combat/SpellCaster.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAgB,qBAAqB,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAoFhD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAC,CAAgB;gBAEvB,UAAU,CAAC,EAAE,aAAa;IAGtC;;;;;;;OAOG;IACH,SAAS,CACP,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,EAAE,GACnB,eAAe;IAuIlB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAY5D;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAgB7D;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI1C;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAQ3D;;;;;;;;OAQG;IACH,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO;IA2B/G;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAgB3C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO;IAS5E;;OAEG;IACH,WAAW,CACT,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,EAAE,EACpB,aAAa,EAAE,MAAM,GACpB,eAAe;IA4BlB;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAItD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;IAI3C;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAK3C;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAInD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIxC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIhD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIhD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIzC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QACpD,IAAI,EAAE,MAAM,CAAC;QACb,qBAAqB,EAAE,OAAO,CAAC;QAC/B,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;KAC3C,CAAC,CAAC;CAGJ"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Sensor Configuration Module
3
+ *
4
+ * Centralized configuration for all sensor modules including:
5
+ * - Environmental sensors (geolocation, weather, motion)
6
+ * - Gaming platform sensors (Steam)
7
+ * - XP modifier calculation
8
+ * - Caching and retry behavior
9
+ *
10
+ * @example
11
+ * import { SensorConfig, mergeConfig, DEFAULT_SENSOR_CONFIG } from './core/config';
12
+ *
13
+ * // Use defaults
14
+ * const config = mergeConfig();
15
+ *
16
+ * // Override specific values
17
+ * const customConfig = mergeConfig({
18
+ * weather: { cacheTTL: 15 * 60 * 1000 }, // 15 minutes
19
+ * xpModifier: { maxModifier: 2.5 }
20
+ * });
21
+ */
22
+ export type { SensorConfig, CacheConfig, GeolocationSensorConfig, WeatherSensorConfig, GamingSensorConfig, XPModifierConfig, RetryConfig, } from './sensorConfig.js';
23
+ export { DEFAULT_SENSOR_CONFIG, loadConfigFromEnv, mergeConfig, } from './sensorConfig.js';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,YAAY,EACR,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,GACd,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Progression System Configuration
3
+ *
4
+ * Centralized configuration for the progression system including:
5
+ * - XP calculation settings
6
+ * - Stat increase settings
7
+ * - Level up settings
8
+ * - Rhythm game XP settings
9
+ *
10
+ * Follows the pattern of sensorConfig.ts for consistency
11
+ */
12
+ import type { StatIncreaseConfig } from '../types/Progression.js';
13
+ import type { RhythmXPConfig } from '../types/RhythmXP.js';
14
+ /**
15
+ * Complete progression system configuration
16
+ */
17
+ export interface ProgressionConfig {
18
+ /** XP calculation configuration */
19
+ xp: {
20
+ level_thresholds: number[];
21
+ xp_per_second: number;
22
+ xp_per_track_completion: number;
23
+ activity_bonuses: {
24
+ stationary: number;
25
+ walking: number;
26
+ running: number;
27
+ driving: number;
28
+ night_time: number;
29
+ extreme_weather: number;
30
+ high_altitude: number;
31
+ rhythm_game_base: number;
32
+ rhythm_game_combo: number;
33
+ rhythm_game_groove: number;
34
+ };
35
+ track_mastery_threshold: number;
36
+ mastery_bonus_xp: number;
37
+ /** Rhythm game XP configuration (optional) */
38
+ rhythmXP?: Partial<RhythmXPConfig>;
39
+ };
40
+ /** Stat increase configuration */
41
+ statIncrease: Partial<StatIncreaseConfig>;
42
+ /** Level up configuration */
43
+ levelUp: {
44
+ /** Use average HP instead of rolling (default: false) */
45
+ useAverageHP: boolean;
46
+ /** Allow manual selection of stats during level up (default: true) */
47
+ allowManualStatSelection: boolean;
48
+ /** Show level up notifications (default: true) */
49
+ showNotifications: boolean;
50
+ };
51
+ }
52
+ /**
53
+ * Default progression configuration
54
+ */
55
+ export declare const DEFAULT_PROGRESSION_CONFIG: Required<ProgressionConfig>;
56
+ /**
57
+ * Merge user config with defaults
58
+ *
59
+ * @param userConfig - Partial configuration to override defaults
60
+ * @returns Merged configuration
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const config = mergeProgressionConfig({
65
+ * statIncrease: {
66
+ * strategy: 'dnD5e_smart',
67
+ * autoApply: true
68
+ * }
69
+ * });
70
+ * ```
71
+ */
72
+ export declare function mergeProgressionConfig(userConfig?: Partial<ProgressionConfig>): Required<ProgressionConfig>;
73
+ //# sourceMappingURL=progressionConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressionConfig.d.ts","sourceRoot":"","sources":["../../../src/core/config/progressionConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,mCAAmC;IACnC,EAAE,EAAE;QACA,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,uBAAuB,EAAE,MAAM,CAAC;QAChC,gBAAgB,EAAE;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,UAAU,EAAE,MAAM,CAAC;YACnB,eAAe,EAAE,MAAM,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC;YAEtB,gBAAgB,EAAE,MAAM,CAAC;YACzB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,kBAAkB,EAAE,MAAM,CAAC;SAC9B,CAAC;QACF,uBAAuB,EAAE,MAAM,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC;QACzB,8CAA8C;QAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACtC,CAAC;IAEF,kCAAkC;IAClC,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE1C,6BAA6B;IAC7B,OAAO,EAAE;QACL,yDAAyD;QACzD,YAAY,EAAE,OAAO,CAAC;QAEtB,sEAAsE;QACtE,wBAAwB,EAAE,OAAO,CAAC;QAElC,kDAAkD;QAClD,iBAAiB,EAAE,OAAO,CAAC;KAC9B,CAAC;CACL;AAUD;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,iBAAiB,CAiClE,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAClC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACxC,QAAQ,CAAC,iBAAiB,CAAC,CAuB7B"}