@skillsmith/cli 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +57 -0
  2. package/assets/skillsmith-skill/SKILL.md +235 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/commands/index.d.ts +2 -0
  5. package/dist/src/commands/index.d.ts.map +1 -1
  6. package/dist/src/commands/index.js +4 -0
  7. package/dist/src/commands/index.js.map +1 -1
  8. package/dist/src/commands/install-skill.d.ts +13 -0
  9. package/dist/src/commands/install-skill.d.ts.map +1 -0
  10. package/dist/src/commands/install-skill.js +137 -0
  11. package/dist/src/commands/install-skill.js.map +1 -0
  12. package/dist/src/commands/manage.d.ts +4 -1
  13. package/dist/src/commands/manage.d.ts.map +1 -1
  14. package/dist/src/commands/manage.js +60 -10
  15. package/dist/src/commands/manage.js.map +1 -1
  16. package/dist/src/commands/merge.d.ts +17 -0
  17. package/dist/src/commands/merge.d.ts.map +1 -0
  18. package/dist/src/commands/merge.js +160 -0
  19. package/dist/src/commands/merge.js.map +1 -0
  20. package/dist/src/commands/recommend-scoring.d.ts +29 -0
  21. package/dist/src/commands/recommend-scoring.d.ts.map +1 -0
  22. package/dist/src/commands/recommend-scoring.js +141 -0
  23. package/dist/src/commands/recommend-scoring.js.map +1 -0
  24. package/dist/src/commands/recommend.d.ts +1 -4
  25. package/dist/src/commands/recommend.d.ts.map +1 -1
  26. package/dist/src/commands/recommend.helpers.d.ts +40 -0
  27. package/dist/src/commands/recommend.helpers.d.ts.map +1 -0
  28. package/dist/src/commands/recommend.helpers.js +297 -0
  29. package/dist/src/commands/recommend.helpers.js.map +1 -0
  30. package/dist/src/commands/recommend.js +50 -372
  31. package/dist/src/commands/recommend.js.map +1 -1
  32. package/dist/src/commands/recommend.types.d.ts +66 -0
  33. package/dist/src/commands/recommend.types.d.ts.map +1 -0
  34. package/dist/src/commands/recommend.types.js +14 -0
  35. package/dist/src/commands/recommend.types.js.map +1 -0
  36. package/dist/src/commands/search-formatters.d.ts +35 -0
  37. package/dist/src/commands/search-formatters.d.ts.map +1 -0
  38. package/dist/src/commands/search-formatters.js +128 -0
  39. package/dist/src/commands/search-formatters.js.map +1 -0
  40. package/dist/src/commands/search-types.d.ts +46 -0
  41. package/dist/src/commands/search-types.d.ts.map +1 -0
  42. package/dist/src/commands/search-types.js +12 -0
  43. package/dist/src/commands/search-types.js.map +1 -0
  44. package/dist/src/commands/search.d.ts +3 -0
  45. package/dist/src/commands/search.d.ts.map +1 -1
  46. package/dist/src/commands/search.js +99 -89
  47. package/dist/src/commands/search.js.map +1 -1
  48. package/dist/src/config.d.ts +5 -0
  49. package/dist/src/config.d.ts.map +1 -1
  50. package/dist/src/config.js +7 -0
  51. package/dist/src/config.js.map +1 -1
  52. package/dist/src/index.d.ts +1 -0
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +11 -1
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/templates/mcp-server.template.d.ts +2 -17
  57. package/dist/src/templates/mcp-server.template.d.ts.map +1 -1
  58. package/dist/src/templates/mcp-server.template.js +9 -108
  59. package/dist/src/templates/mcp-server.template.js.map +1 -1
  60. package/dist/src/templates/mcp-template-handlers.d.ts +33 -0
  61. package/dist/src/templates/mcp-template-handlers.d.ts.map +1 -0
  62. package/dist/src/templates/mcp-template-handlers.js +106 -0
  63. package/dist/src/templates/mcp-template-handlers.js.map +1 -0
  64. package/dist/src/templates/mcp-template-types.d.ts +48 -0
  65. package/dist/src/templates/mcp-template-types.d.ts.map +1 -0
  66. package/dist/src/templates/mcp-template-types.js +18 -0
  67. package/dist/src/templates/mcp-template-types.js.map +1 -0
  68. package/dist/src/utils/license-types.d.ts +88 -0
  69. package/dist/src/utils/license-types.d.ts.map +1 -0
  70. package/dist/src/utils/license-types.js +60 -0
  71. package/dist/src/utils/license-types.js.map +1 -0
  72. package/dist/src/utils/license-validation.d.ts +61 -0
  73. package/dist/src/utils/license-validation.d.ts.map +1 -0
  74. package/dist/src/utils/license-validation.js +198 -0
  75. package/dist/src/utils/license-validation.js.map +1 -0
  76. package/dist/src/utils/license.d.ts +4 -71
  77. package/dist/src/utils/license.d.ts.map +1 -1
  78. package/dist/src/utils/license.js +7 -241
  79. package/dist/src/utils/license.js.map +1 -1
  80. package/dist/src/utils/license.test.js +6 -1
  81. package/dist/src/utils/license.test.js.map +1 -1
  82. package/dist/src/utils/node-version.d.ts +41 -0
  83. package/dist/src/utils/node-version.d.ts.map +1 -0
  84. package/dist/src/utils/node-version.js +123 -0
  85. package/dist/src/utils/node-version.js.map +1 -0
  86. package/dist/tests/e2e/search.e2e.test.js +62 -6
  87. package/dist/tests/e2e/search.e2e.test.js.map +1 -1
  88. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +1 -1
  89. package/dist/tests/e2e/utils/hardcoded-detector.js +44 -3
  90. package/dist/tests/e2e/utils/hardcoded-detector.js.map +1 -1
  91. package/dist/tests/install-skill.test.d.ts +8 -0
  92. package/dist/tests/install-skill.test.d.ts.map +1 -0
  93. package/dist/tests/install-skill.test.js +409 -0
  94. package/dist/tests/install-skill.test.js.map +1 -0
  95. package/dist/tests/manage.test.js +284 -8
  96. package/dist/tests/manage.test.js.map +1 -1
  97. package/dist/tests/node-version.test.d.ts +8 -0
  98. package/dist/tests/node-version.test.d.ts.map +1 -0
  99. package/dist/tests/node-version.test.js +200 -0
  100. package/dist/tests/node-version.test.js.map +1 -0
  101. package/dist/tests/recommend.test.js +94 -0
  102. package/dist/tests/recommend.test.js.map +1 -1
  103. package/package.json +9 -8
@@ -0,0 +1,61 @@
1
+ /**
2
+ * License Validation Helpers for Skillsmith CLI
3
+ *
4
+ * Handles license key decoding, validation, and enterprise package loading.
5
+ *
6
+ * @module @skillsmith/cli/utils/license-validation
7
+ */
8
+ import type { LicensePayload, LicenseStatus, EnterpriseLicenseValidator } from './license-types.js';
9
+ /**
10
+ * Attempt to load the enterprise license validator
11
+ * Returns null if the package is not installed (expected for community users)
12
+ *
13
+ * @returns Enterprise validator or null if not available
14
+ */
15
+ export declare function tryLoadEnterpriseValidator(): Promise<EnterpriseLicenseValidator | null>;
16
+ /**
17
+ * Reset the enterprise validator cache (for testing purposes)
18
+ * @internal
19
+ */
20
+ export declare function _resetEnterpriseValidatorCache(): void;
21
+ /**
22
+ * Decode and validate a license key using simple base64 JSON decoding
23
+ *
24
+ * @deprecated This function is used only when @skillsmith/enterprise is not available.
25
+ * For paid tiers, enterprise package with proper RS256 JWT validation should be used.
26
+ * Community users without a license key don't need validation.
27
+ *
28
+ * @param licenseKey - The license key to decode
29
+ * @returns Decoded payload or null if invalid
30
+ */
31
+ export declare function decodeLicenseKey(licenseKey: string): LicensePayload | null;
32
+ /**
33
+ * Check if a license has expired
34
+ *
35
+ * @param expiresAt - Expiration date
36
+ * @returns True if expired
37
+ */
38
+ export declare function isExpired(expiresAt: Date): boolean;
39
+ /**
40
+ * Get the current license status using legacy base64 decoding
41
+ *
42
+ * @deprecated Use getLicenseStatus() which properly uses enterprise JWT validation.
43
+ * This function is preserved only for backwards compatibility in tests.
44
+ *
45
+ * @returns Promise resolving to license status
46
+ */
47
+ export declare function getLicenseStatusLegacy(): Promise<LicenseStatus>;
48
+ /**
49
+ * Get the current license status
50
+ *
51
+ * Reads the license key from SKILLSMITH_LICENSE_KEY environment variable.
52
+ * If no key is set, returns community tier (not an error).
53
+ * If key is invalid or expired, returns status with error but continues.
54
+ *
55
+ * When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
56
+ * Otherwise, falls back to simple base64 JSON decoding (for development/testing only).
57
+ *
58
+ * @returns Promise resolving to license status
59
+ */
60
+ export declare function getLicenseStatus(): Promise<LicenseStatus>;
61
+ //# sourceMappingURL=license-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-validation.d.ts","sourceRoot":"","sources":["../../../src/utils/license-validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAMnG;;;;;GAKG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CA4B7F;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoB1E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAElD;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,aAAa,CAAC,CA4CrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CA0D/D"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * License Validation Helpers for Skillsmith CLI
3
+ *
4
+ * Handles license key decoding, validation, and enterprise package loading.
5
+ *
6
+ * @module @skillsmith/cli/utils/license-validation
7
+ */
8
+ import { TIER_FEATURES } from './license-types.js';
9
+ // Cache for the enterprise validator to avoid repeated dynamic imports
10
+ let enterpriseValidatorCache = undefined;
11
+ /**
12
+ * Attempt to load the enterprise license validator
13
+ * Returns null if the package is not installed (expected for community users)
14
+ *
15
+ * @returns Enterprise validator or null if not available
16
+ */
17
+ export async function tryLoadEnterpriseValidator() {
18
+ // Return cached result if already loaded
19
+ if (enterpriseValidatorCache !== undefined) {
20
+ return enterpriseValidatorCache;
21
+ }
22
+ try {
23
+ // Dynamic import with variable to prevent TypeScript from resolving at compile time
24
+ // This is an optional peer dependency that may not be installed
25
+ const packageName = '@skillsmith/enterprise';
26
+ const enterprise = (await import(/* webpackIgnore: true */ packageName));
27
+ if (enterprise['LicenseValidator']) {
28
+ const ValidatorClass = enterprise['LicenseValidator'];
29
+ enterpriseValidatorCache = new ValidatorClass();
30
+ return enterpriseValidatorCache;
31
+ }
32
+ enterpriseValidatorCache = null;
33
+ return null;
34
+ }
35
+ catch {
36
+ // Enterprise package not installed - this is expected for community users
37
+ enterpriseValidatorCache = null;
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Reset the enterprise validator cache (for testing purposes)
43
+ * @internal
44
+ */
45
+ export function _resetEnterpriseValidatorCache() {
46
+ enterpriseValidatorCache = undefined;
47
+ }
48
+ /**
49
+ * Decode and validate a license key using simple base64 JSON decoding
50
+ *
51
+ * @deprecated This function is used only when @skillsmith/enterprise is not available.
52
+ * For paid tiers, enterprise package with proper RS256 JWT validation should be used.
53
+ * Community users without a license key don't need validation.
54
+ *
55
+ * @param licenseKey - The license key to decode
56
+ * @returns Decoded payload or null if invalid
57
+ */
58
+ export function decodeLicenseKey(licenseKey) {
59
+ try {
60
+ // License key format: base64 encoded JSON
61
+ // In production, this would include cryptographic signature verification
62
+ const decoded = Buffer.from(licenseKey, 'base64').toString('utf-8');
63
+ const payload = JSON.parse(decoded);
64
+ // Validate required fields
65
+ if (!payload.tier || !['team', 'enterprise'].includes(payload.tier)) {
66
+ return null;
67
+ }
68
+ if (!payload.expiresAt || isNaN(Date.parse(payload.expiresAt))) {
69
+ return null;
70
+ }
71
+ return payload;
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ }
77
+ /**
78
+ * Check if a license has expired
79
+ *
80
+ * @param expiresAt - Expiration date
81
+ * @returns True if expired
82
+ */
83
+ export function isExpired(expiresAt) {
84
+ return expiresAt < new Date();
85
+ }
86
+ /**
87
+ * Get the current license status using legacy base64 decoding
88
+ *
89
+ * @deprecated Use getLicenseStatus() which properly uses enterprise JWT validation.
90
+ * This function is preserved only for backwards compatibility in tests.
91
+ *
92
+ * @returns Promise resolving to license status
93
+ */
94
+ export async function getLicenseStatusLegacy() {
95
+ const licenseKey = process.env['SKILLSMITH_LICENSE_KEY'];
96
+ // No license key = community tier (free, not an error)
97
+ if (!licenseKey) {
98
+ return {
99
+ valid: true,
100
+ tier: 'community',
101
+ features: TIER_FEATURES.community,
102
+ };
103
+ }
104
+ // Decode the license key
105
+ const payload = decodeLicenseKey(licenseKey);
106
+ if (!payload) {
107
+ return {
108
+ valid: false,
109
+ tier: 'community',
110
+ features: TIER_FEATURES.community,
111
+ error: 'Invalid license key format',
112
+ };
113
+ }
114
+ const expiresAt = new Date(payload.expiresAt);
115
+ // Check expiration
116
+ if (isExpired(expiresAt)) {
117
+ return {
118
+ valid: false,
119
+ tier: 'community',
120
+ expiresAt,
121
+ features: TIER_FEATURES.community,
122
+ error: `License expired on ${expiresAt.toISOString().split('T')[0]}`,
123
+ };
124
+ }
125
+ // Valid paid license
126
+ return {
127
+ valid: true,
128
+ tier: payload.tier,
129
+ expiresAt,
130
+ features: payload.features || TIER_FEATURES[payload.tier],
131
+ };
132
+ }
133
+ /**
134
+ * Get the current license status
135
+ *
136
+ * Reads the license key from SKILLSMITH_LICENSE_KEY environment variable.
137
+ * If no key is set, returns community tier (not an error).
138
+ * If key is invalid or expired, returns status with error but continues.
139
+ *
140
+ * When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
141
+ * Otherwise, falls back to simple base64 JSON decoding (for development/testing only).
142
+ *
143
+ * @returns Promise resolving to license status
144
+ */
145
+ export async function getLicenseStatus() {
146
+ const licenseKey = process.env['SKILLSMITH_LICENSE_KEY'];
147
+ // No license key = community tier (free, not an error)
148
+ if (!licenseKey) {
149
+ return {
150
+ valid: true,
151
+ tier: 'community',
152
+ features: TIER_FEATURES.community,
153
+ };
154
+ }
155
+ // Try to use enterprise validator for proper JWT verification
156
+ const validator = await tryLoadEnterpriseValidator();
157
+ if (validator) {
158
+ // Enterprise package available - use proper RS256 JWT validation
159
+ try {
160
+ const result = await validator.validate(licenseKey);
161
+ if (result.valid && result.license) {
162
+ return {
163
+ valid: true,
164
+ tier: result.license.tier,
165
+ expiresAt: result.license.expiresAt,
166
+ features: result.license.features.length > 0
167
+ ? result.license.features
168
+ : TIER_FEATURES[result.license.tier],
169
+ };
170
+ }
171
+ // Invalid license - return error with community fallback
172
+ return {
173
+ valid: false,
174
+ tier: 'community',
175
+ features: TIER_FEATURES.community,
176
+ error: result.error?.message || 'Invalid license key',
177
+ };
178
+ }
179
+ catch {
180
+ // Validation threw an error - treat as invalid
181
+ return {
182
+ valid: false,
183
+ tier: 'community',
184
+ features: TIER_FEATURES.community,
185
+ error: 'License validation failed',
186
+ };
187
+ }
188
+ }
189
+ // Enterprise package not available - fall back to community tier
190
+ // Note: We don't attempt base64 decoding for paid tiers without proper validation
191
+ // This ensures security by requiring the enterprise package for paid features
192
+ return {
193
+ valid: true,
194
+ tier: 'community',
195
+ features: TIER_FEATURES.community,
196
+ };
197
+ }
198
+ //# sourceMappingURL=license-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-validation.js","sourceRoot":"","sources":["../../../src/utils/license-validation.ts"],"names":[],"mappings":"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"}
@@ -11,77 +11,10 @@
11
11
  *
12
12
  * @see SMI-1090: CLI should use enterprise LicenseValidator when available
13
13
  */
14
- /**
15
- * Available license tiers
16
- * - community: Free tier (1,000 API calls/month)
17
- * - individual: Solo developers ($9.99/mo, 10,000 API calls/month)
18
- * - team: Teams ($25/user/mo, 100,000 API calls/month)
19
- * - enterprise: Full enterprise ($55/user/mo, unlimited)
20
- */
21
- export type LicenseTier = 'community' | 'individual' | 'team' | 'enterprise';
22
- /**
23
- * Quota information for display
24
- */
25
- export interface QuotaInfo {
26
- /** API calls used this period */
27
- used: number;
28
- /** API call limit (-1 for unlimited) */
29
- limit: number;
30
- /** Percentage used */
31
- percentUsed: number;
32
- /** When the quota resets */
33
- resetAt: Date;
34
- }
35
- /**
36
- * License status information returned by license check
37
- */
38
- export interface LicenseStatus {
39
- /** Whether the license is valid */
40
- valid: boolean;
41
- /** License tier level */
42
- tier: LicenseTier;
43
- /** Expiration date for paid tiers */
44
- expiresAt?: Date;
45
- /** List of enabled features for this tier */
46
- features: string[];
47
- /** Error message if license validation failed */
48
- error?: string;
49
- /** Optional quota information */
50
- quota?: QuotaInfo;
51
- }
52
- /**
53
- * Reset the enterprise validator cache (for testing purposes)
54
- * @internal
55
- */
56
- export declare function _resetEnterpriseValidatorCache(): void;
57
- /**
58
- * API call limits per tier (per month)
59
- * Note: These are reference values matching the enterprise package quotas.
60
- * Actual quota enforcement happens in the MCP server via QuotaEnforcementService.
61
- */
62
- export declare const TIER_QUOTAS: Record<LicenseTier, number>;
63
- /**
64
- * Get the current license status
65
- *
66
- * Reads the license key from SKILLSMITH_LICENSE_KEY environment variable.
67
- * If no key is set, returns community tier (not an error).
68
- * If key is invalid or expired, returns status with error but continues.
69
- *
70
- * When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
71
- * Otherwise, falls back to simple base64 JSON decoding (for development/testing only).
72
- *
73
- * @returns Promise resolving to license status
74
- */
75
- export declare function getLicenseStatus(): Promise<LicenseStatus>;
76
- /**
77
- * Get the current license status using legacy base64 decoding
78
- *
79
- * @deprecated Use getLicenseStatus() which properly uses enterprise JWT validation.
80
- * This function is preserved only for backwards compatibility in tests.
81
- *
82
- * @returns Promise resolving to license status
83
- */
84
- export declare function getLicenseStatusLegacy(): Promise<LicenseStatus>;
14
+ export type { LicenseTier, QuotaInfo, LicenseStatus, LicensePayload } from './license-types.js';
15
+ export { TIER_FEATURES, TIER_QUOTAS } from './license-types.js';
16
+ export { tryLoadEnterpriseValidator, _resetEnterpriseValidatorCache, decodeLicenseKey, isExpired, getLicenseStatus, getLicenseStatusLegacy, } from './license-validation.js';
17
+ import type { LicenseTier, QuotaInfo, LicenseStatus } from './license-types.js';
85
18
  /**
86
19
  * Format a tier badge with color
87
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,OAAO,EAAE,IAAI,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,yBAAyB;IACzB,IAAI,EAAE,WAAW,CAAA;IACjB,qCAAqC;IACrC,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAsED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AA4CD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAKnD,CAAA;AA4CD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CA0D/D;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,aAAa,CAAC,CA4CrE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAYzD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAa3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAyC7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAuDhE;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG/D,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAO/E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAYzD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAa3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAyC7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAuDhE;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE"}
@@ -12,247 +12,13 @@
12
12
  * @see SMI-1090: CLI should use enterprise LicenseValidator when available
13
13
  */
14
14
  import chalk from 'chalk';
15
- // Cache for the enterprise validator to avoid repeated dynamic imports
16
- let enterpriseValidatorCache = undefined;
17
- /**
18
- * Attempt to load the enterprise license validator
19
- * Returns null if the package is not installed (expected for community users)
20
- *
21
- * @returns Enterprise validator or null if not available
22
- */
23
- async function tryLoadEnterpriseValidator() {
24
- // Return cached result if already loaded
25
- if (enterpriseValidatorCache !== undefined) {
26
- return enterpriseValidatorCache;
27
- }
28
- try {
29
- // Dynamic import with variable to prevent TypeScript from resolving at compile time
30
- // This is an optional peer dependency that may not be installed
31
- const packageName = '@skillsmith/enterprise';
32
- const enterprise = (await import(/* webpackIgnore: true */ packageName));
33
- if (enterprise['LicenseValidator']) {
34
- const ValidatorClass = enterprise['LicenseValidator'];
35
- enterpriseValidatorCache = new ValidatorClass();
36
- return enterpriseValidatorCache;
37
- }
38
- enterpriseValidatorCache = null;
39
- return null;
40
- }
41
- catch {
42
- // Enterprise package not installed - this is expected for community users
43
- enterpriseValidatorCache = null;
44
- return null;
45
- }
46
- }
47
- /**
48
- * Reset the enterprise validator cache (for testing purposes)
49
- * @internal
50
- */
51
- export function _resetEnterpriseValidatorCache() {
52
- enterpriseValidatorCache = undefined;
53
- }
54
- /**
55
- * Default features by tier
56
- *
57
- * Note: Community tier uses CLI-specific display names for UI purposes.
58
- * Individual, Team and Enterprise tiers use canonical feature names from @skillsmith/enterprise.
59
- *
60
- * @see packages/enterprise/src/license/types.ts for canonical feature definitions
61
- */
62
- const TIER_FEATURES = {
63
- community: ['basic_search', 'skill_install', 'local_validation'],
64
- individual: ['basic_analytics', 'email_support'],
65
- team: [
66
- // Individual features (inherited)
67
- 'basic_analytics',
68
- 'email_support',
69
- // Team features
70
- 'team_workspaces',
71
- 'private_skills',
72
- 'usage_analytics',
73
- 'priority_support',
74
- ],
75
- enterprise: [
76
- // Individual features (inherited)
77
- 'basic_analytics',
78
- 'email_support',
79
- // Team features (inherited)
80
- 'team_workspaces',
81
- 'private_skills',
82
- 'usage_analytics',
83
- 'priority_support',
84
- // Enterprise-only features (canonical names from enterprise package)
85
- 'sso_saml',
86
- 'rbac',
87
- 'audit_logging',
88
- 'siem_export',
89
- 'compliance_reports',
90
- 'private_registry',
91
- 'custom_integrations',
92
- 'advanced_analytics',
93
- ],
94
- };
95
- /**
96
- * API call limits per tier (per month)
97
- * Note: These are reference values matching the enterprise package quotas.
98
- * Actual quota enforcement happens in the MCP server via QuotaEnforcementService.
99
- */
100
- export const TIER_QUOTAS = {
101
- community: 1_000,
102
- individual: 10_000,
103
- team: 100_000,
104
- enterprise: -1, // Unlimited
105
- };
106
- /**
107
- * Decode and validate a license key using simple base64 JSON decoding
108
- *
109
- * @deprecated This function is used only when @skillsmith/enterprise is not available.
110
- * For paid tiers, enterprise package with proper RS256 JWT validation should be used.
111
- * Community users without a license key don't need validation.
112
- *
113
- * @param licenseKey - The license key to decode
114
- * @returns Decoded payload or null if invalid
115
- */
116
- function decodeLicenseKey(licenseKey) {
117
- try {
118
- // License key format: base64 encoded JSON
119
- // In production, this would include cryptographic signature verification
120
- const decoded = Buffer.from(licenseKey, 'base64').toString('utf-8');
121
- const payload = JSON.parse(decoded);
122
- // Validate required fields
123
- if (!payload.tier || !['team', 'enterprise'].includes(payload.tier)) {
124
- return null;
125
- }
126
- if (!payload.expiresAt || isNaN(Date.parse(payload.expiresAt))) {
127
- return null;
128
- }
129
- return payload;
130
- }
131
- catch {
132
- return null;
133
- }
134
- }
135
- /**
136
- * Check if a license has expired
137
- *
138
- * @param expiresAt - Expiration date
139
- * @returns True if expired
140
- */
141
- function isExpired(expiresAt) {
142
- return expiresAt < new Date();
143
- }
144
- /**
145
- * Get the current license status
146
- *
147
- * Reads the license key from SKILLSMITH_LICENSE_KEY environment variable.
148
- * If no key is set, returns community tier (not an error).
149
- * If key is invalid or expired, returns status with error but continues.
150
- *
151
- * When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
152
- * Otherwise, falls back to simple base64 JSON decoding (for development/testing only).
153
- *
154
- * @returns Promise resolving to license status
155
- */
156
- export async function getLicenseStatus() {
157
- const licenseKey = process.env['SKILLSMITH_LICENSE_KEY'];
158
- // No license key = community tier (free, not an error)
159
- if (!licenseKey) {
160
- return {
161
- valid: true,
162
- tier: 'community',
163
- features: TIER_FEATURES.community,
164
- };
165
- }
166
- // Try to use enterprise validator for proper JWT verification
167
- const validator = await tryLoadEnterpriseValidator();
168
- if (validator) {
169
- // Enterprise package available - use proper RS256 JWT validation
170
- try {
171
- const result = await validator.validate(licenseKey);
172
- if (result.valid && result.license) {
173
- return {
174
- valid: true,
175
- tier: result.license.tier,
176
- expiresAt: result.license.expiresAt,
177
- features: result.license.features.length > 0
178
- ? result.license.features
179
- : TIER_FEATURES[result.license.tier],
180
- };
181
- }
182
- // Invalid license - return error with community fallback
183
- return {
184
- valid: false,
185
- tier: 'community',
186
- features: TIER_FEATURES.community,
187
- error: result.error?.message || 'Invalid license key',
188
- };
189
- }
190
- catch {
191
- // Validation threw an error - treat as invalid
192
- return {
193
- valid: false,
194
- tier: 'community',
195
- features: TIER_FEATURES.community,
196
- error: 'License validation failed',
197
- };
198
- }
199
- }
200
- // Enterprise package not available - fall back to community tier
201
- // Note: We don't attempt base64 decoding for paid tiers without proper validation
202
- // This ensures security by requiring the enterprise package for paid features
203
- return {
204
- valid: true,
205
- tier: 'community',
206
- features: TIER_FEATURES.community,
207
- };
208
- }
209
- /**
210
- * Get the current license status using legacy base64 decoding
211
- *
212
- * @deprecated Use getLicenseStatus() which properly uses enterprise JWT validation.
213
- * This function is preserved only for backwards compatibility in tests.
214
- *
215
- * @returns Promise resolving to license status
216
- */
217
- export async function getLicenseStatusLegacy() {
218
- const licenseKey = process.env['SKILLSMITH_LICENSE_KEY'];
219
- // No license key = community tier (free, not an error)
220
- if (!licenseKey) {
221
- return {
222
- valid: true,
223
- tier: 'community',
224
- features: TIER_FEATURES.community,
225
- };
226
- }
227
- // Decode the license key
228
- const payload = decodeLicenseKey(licenseKey);
229
- if (!payload) {
230
- return {
231
- valid: false,
232
- tier: 'community',
233
- features: TIER_FEATURES.community,
234
- error: 'Invalid license key format',
235
- };
236
- }
237
- const expiresAt = new Date(payload.expiresAt);
238
- // Check expiration
239
- if (isExpired(expiresAt)) {
240
- return {
241
- valid: false,
242
- tier: 'community',
243
- expiresAt,
244
- features: TIER_FEATURES.community,
245
- error: `License expired on ${expiresAt.toISOString().split('T')[0]}`,
246
- };
247
- }
248
- // Valid paid license
249
- return {
250
- valid: true,
251
- tier: payload.tier,
252
- expiresAt,
253
- features: payload.features || TIER_FEATURES[payload.tier],
254
- };
255
- }
15
+ export { TIER_FEATURES, TIER_QUOTAS } from './license-types.js';
16
+ // Re-export validation functions
17
+ export { tryLoadEnterpriseValidator, _resetEnterpriseValidatorCache, decodeLicenseKey, isExpired, getLicenseStatus, getLicenseStatusLegacy, } from './license-validation.js';
18
+ import { getLicenseStatus } from './license-validation.js';
19
+ // ============================================================================
20
+ // Display Helpers
21
+ // ============================================================================
256
22
  /**
257
23
  * Format a tier badge with color
258
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE/D,iCAAiC;AACjC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACzC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChC,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtC,KAAK,WAAW,CAAC;QACjB;YACE,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,KAAa;IACjE,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAE5B,6BAA6B;IAC7B,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IACvB,IAAI,OAAO,IAAI,EAAE;QAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAA;SAC/B,IAAI,OAAO,IAAI,EAAE;QAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;IAE5C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrE,OAAO,IAAI,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgB,EAAE,IAAiB;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IACrC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAA;IAEzD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAAA;QAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,cAAc,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;SAAM,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,eAAe,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAChI,CACF,CAAA;QACD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,0BAA0B,cAAc,EAAE,CACzF,CACF,CAAA;QACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;SAAM,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAA;QAC5D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CACnG,CACF,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAqB;IACxD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAE9C,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAA;IAC1F,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS;YAClC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3E,CAAC,CAAC,EAAE,CAAA;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,WAAW,EAAE,CAAC,CAAA;IACrD,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAA;QACrF,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;QAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1D,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ,wBAAwB,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,SAAS,CACjF,CACF,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,cAAc,wBAAwB,CAAC,CAAC,CAAA;QACnF,CAAC;aAAM,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,cAAc,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC7F,CACF,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,cAAc,EAAE,CAAC,CAAC,CAAA;QACnF,CAAC;aAAM,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,cAAc,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC7F,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,aAAa,CAAC,CACtF,CAAA;QACH,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,6CAA6C;IAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAe;IACxD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;IAEzC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACvC,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,EAAE,CAAA,CAAC,0BAA0B;AAC1C,CAAC"}