@x12i/ai-profiles 1.4.0 → 1.6.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 (148) hide show
  1. package/README.md +237 -21
  2. package/dist/buildCatalogFromOpenRouterApi.d.ts +29 -0
  3. package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -0
  4. package/dist/buildCatalogFromOpenRouterApi.js +113 -0
  5. package/dist/buildCatalogFromOpenRouterApi.js.map +1 -0
  6. package/dist/buildModelsRegistry.d.ts +25 -0
  7. package/dist/buildModelsRegistry.d.ts.map +1 -0
  8. package/dist/buildModelsRegistry.js +190 -0
  9. package/dist/buildModelsRegistry.js.map +1 -0
  10. package/dist/buildResolvedProfile.d.ts +3 -1
  11. package/dist/buildResolvedProfile.d.ts.map +1 -1
  12. package/dist/buildResolvedProfile.js +94 -11
  13. package/dist/buildResolvedProfile.js.map +1 -1
  14. package/dist/catalogEnrichment.d.ts +19 -0
  15. package/dist/catalogEnrichment.d.ts.map +1 -0
  16. package/dist/catalogEnrichment.js +87 -0
  17. package/dist/catalogEnrichment.js.map +1 -0
  18. package/dist/computeRegistryStatistics.d.ts +15 -0
  19. package/dist/computeRegistryStatistics.d.ts.map +1 -0
  20. package/dist/computeRegistryStatistics.js +168 -0
  21. package/dist/computeRegistryStatistics.js.map +1 -0
  22. package/dist/constants.d.ts +6 -0
  23. package/dist/constants.d.ts.map +1 -1
  24. package/dist/constants.js +10 -0
  25. package/dist/constants.js.map +1 -1
  26. package/dist/data/models-catalog.json +2219 -0
  27. package/dist/data/models-profiles.json +1361 -193
  28. package/dist/data/models-profiles.schema.json +130 -0
  29. package/dist/data/models-registry.json +1606 -0
  30. package/dist/data/openrouter-models-catalog.json +857 -0
  31. package/dist/data/profiles-shortcuts.json +101 -2
  32. package/dist/errors.d.ts +1 -1
  33. package/dist/errors.d.ts.map +1 -1
  34. package/dist/errors.js.map +1 -1
  35. package/dist/formatRegistryStatistics.d.ts +4 -0
  36. package/dist/formatRegistryStatistics.d.ts.map +1 -0
  37. package/dist/formatRegistryStatistics.js +34 -0
  38. package/dist/formatRegistryStatistics.js.map +1 -0
  39. package/dist/getAIRegistryStatistics.d.ts +11 -0
  40. package/dist/getAIRegistryStatistics.d.ts.map +1 -0
  41. package/dist/getAIRegistryStatistics.js +52 -0
  42. package/dist/getAIRegistryStatistics.js.map +1 -0
  43. package/dist/index.d.ts +26 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +21 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/listAIProfiles.d.ts +6 -0
  48. package/dist/listAIProfiles.d.ts.map +1 -1
  49. package/dist/listAIProfiles.js +6 -0
  50. package/dist/listAIProfiles.js.map +1 -1
  51. package/dist/loadModelsRegistry.d.ts +6 -0
  52. package/dist/loadModelsRegistry.d.ts.map +1 -0
  53. package/dist/loadModelsRegistry.js +43 -0
  54. package/dist/loadModelsRegistry.js.map +1 -0
  55. package/dist/loader/catalogMemoryCache.d.ts +12 -0
  56. package/dist/loader/catalogMemoryCache.d.ts.map +1 -0
  57. package/dist/loader/catalogMemoryCache.js +14 -0
  58. package/dist/loader/catalogMemoryCache.js.map +1 -0
  59. package/dist/loader/loadBundledModelsCatalog.d.ts +3 -0
  60. package/dist/loader/loadBundledModelsCatalog.d.ts.map +1 -0
  61. package/dist/loader/loadBundledModelsCatalog.js +20 -0
  62. package/dist/loader/loadBundledModelsCatalog.js.map +1 -0
  63. package/dist/loader/loadBundledModelsProfiles.d.ts +4 -0
  64. package/dist/loader/loadBundledModelsProfiles.d.ts.map +1 -0
  65. package/dist/loader/loadBundledModelsProfiles.js +14 -0
  66. package/dist/loader/loadBundledModelsProfiles.js.map +1 -0
  67. package/dist/loader/loadBundledRegistry.d.ts.map +1 -1
  68. package/dist/loader/loadBundledRegistry.js +2 -1
  69. package/dist/loader/loadBundledRegistry.js.map +1 -1
  70. package/dist/loader/loadModelsCatalog.d.ts +9 -0
  71. package/dist/loader/loadModelsCatalog.d.ts.map +1 -0
  72. package/dist/loader/loadModelsCatalog.js +72 -0
  73. package/dist/loader/loadModelsCatalog.js.map +1 -0
  74. package/dist/loader/loadModelsProfilesJson.d.ts +3 -0
  75. package/dist/loader/loadModelsProfilesJson.d.ts.map +1 -0
  76. package/dist/loader/loadModelsProfilesJson.js +18 -0
  77. package/dist/loader/loadModelsProfilesJson.js.map +1 -0
  78. package/dist/loader/loadRemoteModelsCatalog.d.ts +3 -0
  79. package/dist/loader/loadRemoteModelsCatalog.d.ts.map +1 -0
  80. package/dist/loader/loadRemoteModelsCatalog.js +23 -0
  81. package/dist/loader/loadRemoteModelsCatalog.js.map +1 -0
  82. package/dist/loader/loadRemoteModelsProfiles.d.ts +3 -0
  83. package/dist/loader/loadRemoteModelsProfiles.d.ts.map +1 -0
  84. package/dist/loader/loadRemoteModelsProfiles.js +21 -0
  85. package/dist/loader/loadRemoteModelsProfiles.js.map +1 -0
  86. package/dist/loader/loadRemoteRegistry.d.ts.map +1 -1
  87. package/dist/loader/loadRemoteRegistry.js +2 -1
  88. package/dist/loader/loadRemoteRegistry.js.map +1 -1
  89. package/dist/mergeCatalogSupplement.d.ts +4 -0
  90. package/dist/mergeCatalogSupplement.d.ts.map +1 -0
  91. package/dist/mergeCatalogSupplement.js +26 -0
  92. package/dist/mergeCatalogSupplement.js.map +1 -0
  93. package/dist/modelIdentity.d.ts +33 -0
  94. package/dist/modelIdentity.d.ts.map +1 -0
  95. package/dist/modelIdentity.js +161 -0
  96. package/dist/modelIdentity.js.map +1 -0
  97. package/dist/modelsCatalog.d.ts +21 -0
  98. package/dist/modelsCatalog.d.ts.map +1 -0
  99. package/dist/modelsCatalog.js +187 -0
  100. package/dist/modelsCatalog.js.map +1 -0
  101. package/dist/profileCatalogSupplement.d.ts +7 -0
  102. package/dist/profileCatalogSupplement.d.ts.map +1 -0
  103. package/dist/profileCatalogSupplement.js +292 -0
  104. package/dist/profileCatalogSupplement.js.map +1 -0
  105. package/dist/profileRegistryV2.d.ts +19 -0
  106. package/dist/profileRegistryV2.d.ts.map +1 -0
  107. package/dist/profileRegistryV2.js +257 -0
  108. package/dist/profileRegistryV2.js.map +1 -0
  109. package/dist/profileRegistryV3.d.ts +11 -0
  110. package/dist/profileRegistryV3.d.ts.map +1 -0
  111. package/dist/profileRegistryV3.js +526 -0
  112. package/dist/profileRegistryV3.js.map +1 -0
  113. package/dist/resolveAIProfile.d.ts +8 -0
  114. package/dist/resolveAIProfile.d.ts.map +1 -1
  115. package/dist/resolveAIProfile.js +62 -18
  116. package/dist/resolveAIProfile.js.map +1 -1
  117. package/dist/resolveModelIdentity.d.ts +17 -0
  118. package/dist/resolveModelIdentity.d.ts.map +1 -0
  119. package/dist/resolveModelIdentity.js +107 -0
  120. package/dist/resolveModelIdentity.js.map +1 -0
  121. package/dist/resolveModelRouting.d.ts +2 -1
  122. package/dist/resolveModelRouting.d.ts.map +1 -1
  123. package/dist/resolveModelRouting.js +9 -10
  124. package/dist/resolveModelRouting.js.map +1 -1
  125. package/dist/types.d.ts +339 -4
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/types.js +10 -0
  128. package/dist/types.js.map +1 -1
  129. package/dist/validateProfileVendorCoverage.d.ts +12 -0
  130. package/dist/validateProfileVendorCoverage.d.ts.map +1 -0
  131. package/dist/validateProfileVendorCoverage.js +58 -0
  132. package/dist/validateProfileVendorCoverage.js.map +1 -0
  133. package/dist/validation/openRouterAlignment.d.ts +6 -15
  134. package/dist/validation/openRouterAlignment.d.ts.map +1 -1
  135. package/dist/validation/openRouterAlignment.js +9 -57
  136. package/dist/validation/openRouterAlignment.js.map +1 -1
  137. package/dist/validation/validateModelsCatalog.d.ts +3 -0
  138. package/dist/validation/validateModelsCatalog.d.ts.map +1 -0
  139. package/dist/validation/validateModelsCatalog.js +42 -0
  140. package/dist/validation/validateModelsCatalog.js.map +1 -0
  141. package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
  142. package/dist/validation/validateModelsProfilesJson.js +38 -2
  143. package/dist/validation/validateModelsProfilesJson.js.map +1 -1
  144. package/dist/vendorPolicy.d.ts +20 -0
  145. package/dist/vendorPolicy.d.ts.map +1 -0
  146. package/dist/vendorPolicy.js +71 -0
  147. package/dist/vendorPolicy.js.map +1 -0
  148. package/package.json +12 -2
@@ -0,0 +1,168 @@
1
+ import { buildModelsRegistry } from "./buildModelsRegistry.js";
2
+ function countBy(values) {
3
+ const counts = {};
4
+ for (const value of values) {
5
+ counts[value] = (counts[value] ?? 0) + 1;
6
+ }
7
+ return counts;
8
+ }
9
+ function sortedKeys(counts) {
10
+ return Object.keys(counts).sort((a, b) => a.localeCompare(b));
11
+ }
12
+ function profilePassesFilter(status, filter) {
13
+ const normalized = status ?? "active";
14
+ if (!filter.includeDeprecated && normalized === "deprecated") {
15
+ return false;
16
+ }
17
+ if (!filter.includeExperimental && normalized === "experimental") {
18
+ return false;
19
+ }
20
+ return true;
21
+ }
22
+ export function computeProfilesStatistics(registry, filter = {}) {
23
+ const providers = new Set();
24
+ const modelKeys = new Set();
25
+ const vendorModelIds = new Set();
26
+ const statuses = [];
27
+ const categories = [];
28
+ let profileCount = 0;
29
+ let choiceCount = 0;
30
+ let aliasCount = 0;
31
+ for (const profile of Object.values(registry.profiles)) {
32
+ if (!profilePassesFilter(profile.status, filter)) {
33
+ continue;
34
+ }
35
+ if (filter.category && profile.category !== filter.category) {
36
+ continue;
37
+ }
38
+ profileCount += 1;
39
+ aliasCount += profile.aliases?.length ?? 0;
40
+ statuses.push(profile.status ?? "active");
41
+ categories.push(profile.category);
42
+ for (const choice of Object.values(profile.choices)) {
43
+ if (!filter.includeDeprecated &&
44
+ choice.status === "deprecated") {
45
+ continue;
46
+ }
47
+ if (!filter.includeExperimental &&
48
+ choice.status === "experimental") {
49
+ continue;
50
+ }
51
+ choiceCount += 1;
52
+ providers.add(choice.provider);
53
+ modelKeys.add(`${choice.provider}:${choice.modelId}`);
54
+ vendorModelIds.add(choice.modelId);
55
+ }
56
+ }
57
+ const byStatus = countBy(statuses);
58
+ const byCategory = countBy(categories);
59
+ return {
60
+ total: profileCount,
61
+ choices: choiceCount,
62
+ aliases: aliasCount,
63
+ uniqueProviders: providers.size,
64
+ providers: [...providers].sort((a, b) => a.localeCompare(b)),
65
+ uniqueModelKeys: modelKeys.size,
66
+ uniqueVendorModelIds: vendorModelIds.size,
67
+ byStatus,
68
+ byCategory,
69
+ categories: sortedKeys(byCategory),
70
+ averageChoicesPerProfile: profileCount > 0 ? Math.round((choiceCount / profileCount) * 100) / 100 : 0,
71
+ };
72
+ }
73
+ export function computeShortcutsStatistics(registry) {
74
+ return {
75
+ total: Object.keys(registry.shortcuts).length,
76
+ };
77
+ }
78
+ export function computeCatalogStatistics(catalog) {
79
+ const directProviders = new Set();
80
+ let withPricing = 0;
81
+ let withReasoning = 0;
82
+ let active = 0;
83
+ let deprecated = 0;
84
+ for (const entry of catalog.models) {
85
+ directProviders.add(entry.direct.provider);
86
+ const status = entry.status ?? entry.openrouter.status ?? "active";
87
+ if (status === "deprecated") {
88
+ deprecated += 1;
89
+ }
90
+ else {
91
+ active += 1;
92
+ }
93
+ const pricing = entry.openrouter.pricing;
94
+ if (pricing &&
95
+ (pricing.input !== undefined ||
96
+ pricing.output !== undefined ||
97
+ pricing.cachedInput !== undefined)) {
98
+ withPricing += 1;
99
+ }
100
+ if (entry.openrouter.capabilities?.reasoning) {
101
+ withReasoning += 1;
102
+ }
103
+ }
104
+ return {
105
+ totalModels: catalog.models.length,
106
+ uniqueDirectProviders: directProviders.size,
107
+ directProviders: [...directProviders].sort((a, b) => a.localeCompare(b)),
108
+ active,
109
+ deprecated,
110
+ withPricing,
111
+ withReasoningCapability: withReasoning,
112
+ catalogVersion: catalog.version,
113
+ generatedAt: catalog.generatedAt,
114
+ };
115
+ }
116
+ export function computeLinkageStatistics(linkageRegistry) {
117
+ const byStatus = {};
118
+ const byKind = {};
119
+ let profileChoiceRefs = 0;
120
+ for (const entry of Object.values(linkageRegistry.models)) {
121
+ const status = entry.linkage.status;
122
+ byStatus[status] = (byStatus[status] ?? 0) + 1;
123
+ byKind[entry.kind] = (byKind[entry.kind] ?? 0) + 1;
124
+ profileChoiceRefs += entry.usage.profileChoices.length;
125
+ }
126
+ return {
127
+ registryEntries: Object.keys(linkageRegistry.models).length,
128
+ profileChoiceReferences: profileChoiceRefs,
129
+ byLinkageStatus: byStatus,
130
+ byKind,
131
+ matched: byStatus.matched ?? 0,
132
+ faulty: byStatus.faulty ?? 0,
133
+ catalogMiss: byStatus["catalog-miss"] ?? 0,
134
+ skipped: byStatus.skipped ?? 0,
135
+ };
136
+ }
137
+ export function buildRegistryStatistics(input) {
138
+ const generatedAt = new Date().toISOString();
139
+ const stats = {
140
+ schema: "x12i.ai-profiles.registry-statistics",
141
+ generatedAt,
142
+ sources: {
143
+ profiles: input.profilesSource,
144
+ ...(input.catalogSource !== undefined
145
+ ? { catalog: input.catalogSource }
146
+ : {}),
147
+ },
148
+ profiles: computeProfilesStatistics(input.registry, input.filter),
149
+ shortcuts: computeShortcutsStatistics(input.registry),
150
+ registry: {
151
+ version: input.registry.version,
152
+ loadedAt: input.registry.loadedAt,
153
+ currency: input.registry.currency,
154
+ pricingUnit: input.registry.pricingUnit,
155
+ },
156
+ };
157
+ if (input.catalog) {
158
+ stats.catalog = computeCatalogStatistics(input.catalog);
159
+ }
160
+ if (input.linkageRegistry) {
161
+ stats.linkage = computeLinkageStatistics(input.linkageRegistry);
162
+ }
163
+ return stats;
164
+ }
165
+ export function buildLinkageRegistryFromAssets(profiles, catalog) {
166
+ return buildModelsRegistry(profiles, catalog).registry;
167
+ }
168
+ //# sourceMappingURL=computeRegistryStatistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeRegistryStatistics.js","sourceRoot":"","sources":["../src/computeRegistryStatistics.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,13 @@ export declare const DEFAULT_CACHE_TTL_MS: number;
3
3
  export declare const DEFAULT_FETCH_TIMEOUT_MS = 5000;
4
4
  export declare const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.json";
5
5
  export declare const REMOTE_PROFILES_SHORTCUTS_URL = "https://open-assets.x12i.com/profiles-shortcuts.json";
6
+ export declare const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
7
+ /** Public OpenRouter model list (used by maintainers to regenerate the catalog). */
8
+ export declare const OPENROUTER_MODELS_API_URL = "https://openrouter.ai/api/v1/models";
6
9
  export declare const MODELS_PROFILES_SCHEMA: "x12i.ai-profiles.models-profiles";
10
+ export declare const MODELS_PROFILES_SCHEMA_V2: "x12i.ai-profiles.model-registry.v2";
11
+ export declare const MODELS_PROFILES_SCHEMA_V3: "x12i.ai-profiles.model-registry.v3";
12
+ export declare const MODELS_PROFILES_SCHEMAS: readonly ["x12i.ai-profiles.models-profiles", "x12i.ai-profiles.model-registry.v2", "x12i.ai-profiles.model-registry.v3"];
7
13
  export declare const PROFILES_SHORTCUTS_SCHEMA: "x12i.ai-profiles.shortcuts";
8
14
  export declare const INSTRUCTION_TIERS: readonly ["default", "cpu", "reasoning"];
9
15
  export declare const AI_PROFILE_BACKENDS: readonly ["openrouter", "llama-cpp", "transformersjs", "custom"];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,0BAA0B,sDACc,CAAC;AAEtD,eAAO,MAAM,6BAA6B,yDACc,CAAC;AAEzD,eAAO,MAAM,sBAAsB,EAAG,kCAA2C,CAAC;AAClF,eAAO,MAAM,yBAAyB,EAAG,4BAAqC,CAAC;AAE/E,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,kEAKtB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAahE,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,0BAA0B,sDACc,CAAC;AAEtD,eAAO,MAAM,6BAA6B,yDACc,CAAC;AAEzD,eAAO,MAAM,yBAAyB,qDACc,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,wCACC,CAAC;AAExC,eAAO,MAAM,sBAAsB,EAAG,kCAA2C,CAAC;AAClF,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAChD,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,eAAO,MAAM,uBAAuB,2HAI1B,CAAC;AACX,eAAO,MAAM,yBAAyB,EAAG,4BAAqC,CAAC;AAE/E,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,kEAKtB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAahE,CAAC"}
package/dist/constants.js CHANGED
@@ -2,7 +2,17 @@ export const DEFAULT_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
2
2
  export const DEFAULT_FETCH_TIMEOUT_MS = 5000;
3
3
  export const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.json";
4
4
  export const REMOTE_PROFILES_SHORTCUTS_URL = "https://open-assets.x12i.com/profiles-shortcuts.json";
5
+ export const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
6
+ /** Public OpenRouter model list (used by maintainers to regenerate the catalog). */
7
+ export const OPENROUTER_MODELS_API_URL = "https://openrouter.ai/api/v1/models";
5
8
  export const MODELS_PROFILES_SCHEMA = "x12i.ai-profiles.models-profiles";
9
+ export const MODELS_PROFILES_SCHEMA_V2 = "x12i.ai-profiles.model-registry.v2";
10
+ export const MODELS_PROFILES_SCHEMA_V3 = "x12i.ai-profiles.model-registry.v3";
11
+ export const MODELS_PROFILES_SCHEMAS = [
12
+ MODELS_PROFILES_SCHEMA,
13
+ MODELS_PROFILES_SCHEMA_V2,
14
+ MODELS_PROFILES_SCHEMA_V3,
15
+ ];
6
16
  export const PROFILES_SHORTCUTS_SCHEMA = "x12i.ai-profiles.shortcuts";
7
17
  export const INSTRUCTION_TIERS = ["default", "cpu", "reasoning"];
8
18
  export const AI_PROFILE_BACKENDS = [
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,0BAA0B,GACrC,mDAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,6BAA6B,GACxC,sDAAsD,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAA2C,CAAC;AAClF,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAAqC,CAAC;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACnE,eAAe,EAAE,QAAQ;IACzB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,YAAY;CACtB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,0BAA0B,GACrC,mDAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,6BAA6B,GACxC,sDAAsD,CAAC;AAEzD,MAAM,CAAC,MAAM,yBAAyB,GACpC,kDAAkD,CAAC;AAErD,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qCAAqC,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAA2C,CAAC;AAClF,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,sBAAsB;IACtB,yBAAyB;IACzB,yBAAyB;CACjB,CAAC;AACX,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAAqC,CAAC;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACnE,eAAe,EAAE,QAAQ;IACzB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,YAAY;CACtB,CAAC"}