@skillsmith/mcp-server 0.2.0 → 0.2.1
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.
- package/README.md +30 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/test-utils.d.ts +1 -0
- package/dist/src/__tests__/test-utils.d.ts.map +1 -1
- package/dist/src/__tests__/test-utils.js +5 -1
- package/dist/src/__tests__/test-utils.js.map +1 -1
- package/dist/src/context.d.ts +40 -5
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +38 -4
- package/dist/src/context.js.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/middleware/degradation.d.ts +7 -1
- package/dist/src/middleware/degradation.d.ts.map +1 -1
- package/dist/src/middleware/degradation.js +4 -0
- package/dist/src/middleware/degradation.js.map +1 -1
- package/dist/src/middleware/index.d.ts +2 -1
- package/dist/src/middleware/index.d.ts.map +1 -1
- package/dist/src/middleware/index.js +2 -0
- package/dist/src/middleware/index.js.map +1 -1
- package/dist/src/middleware/license.d.ts +10 -2
- package/dist/src/middleware/license.d.ts.map +1 -1
- package/dist/src/middleware/license.js +13 -2
- package/dist/src/middleware/license.js.map +1 -1
- package/dist/src/middleware/quota.d.ts +182 -0
- package/dist/src/middleware/quota.d.ts.map +1 -0
- package/dist/src/middleware/quota.js +309 -0
- package/dist/src/middleware/quota.js.map +1 -0
- package/dist/src/middleware/toolFeatureMapping.d.ts +2 -2
- package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
- package/dist/src/middleware/toolFeatureMapping.js +6 -0
- package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
- package/dist/src/tools/compare.js +2 -2
- package/dist/src/tools/compare.js.map +1 -1
- package/dist/src/tools/get-skill.d.ts +4 -13
- package/dist/src/tools/get-skill.d.ts.map +1 -1
- package/dist/src/tools/get-skill.js +55 -19
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.js +13 -1
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/recommend.d.ts +4 -6
- package/dist/src/tools/recommend.d.ts.map +1 -1
- package/dist/src/tools/recommend.js +73 -41
- package/dist/src/tools/recommend.js.map +1 -1
- package/dist/src/tools/search.d.ts +5 -12
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.js +65 -67
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/tools/suggest.d.ts +4 -4
- package/dist/src/tools/suggest.d.ts.map +1 -1
- package/dist/src/tools/suggest.js +1 -33
- package/dist/src/tools/suggest.js.map +1 -1
- package/dist/src/utils/validation.d.ts +29 -10
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/validation.js +52 -19
- package/dist/src/utils/validation.js.map +1 -1
- package/dist/tests/e2e/compare.e2e.test.js +11 -1
- package/dist/tests/e2e/compare.e2e.test.js.map +1 -1
- package/dist/tests/e2e/install-flow.e2e.test.js +22 -2
- package/dist/tests/e2e/install-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/recommend.e2e.test.js +12 -2
- package/dist/tests/e2e/recommend.e2e.test.js.map +1 -1
- package/dist/tests/e2e/skill-flow.e2e.test.js +35 -4
- package/dist/tests/e2e/skill-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/suggest.e2e.test.js +22 -2
- package/dist/tests/e2e/suggest.e2e.test.js.map +1 -1
- package/dist/tests/integration/recommend.integration.test.js +2 -0
- package/dist/tests/integration/recommend.integration.test.js.map +1 -1
- package/dist/tests/integration/setup.d.ts +4 -1
- package/dist/tests/integration/setup.d.ts.map +1 -1
- package/dist/tests/integration/setup.js +8 -1
- package/dist/tests/integration/setup.js.map +1 -1
- package/dist/tests/performance/search-performance.test.js +6 -2
- package/dist/tests/performance/search-performance.test.js.map +1 -1
- package/dist/tests/recommend.test.js +2 -0
- package/dist/tests/recommend.test.js.map +1 -1
- package/package.json +8 -8
- package/dist/src/__tests__/compare.test.d.ts +0 -5
- package/dist/src/__tests__/compare.test.d.ts.map +0 -1
- package/dist/src/__tests__/compare.test.js +0 -254
- package/dist/src/__tests__/compare.test.js.map +0 -1
- package/dist/src/__tests__/recommend.test.d.ts +0 -5
- package/dist/src/__tests__/recommend.test.d.ts.map +0 -1
- package/dist/src/__tests__/recommend.test.js +0 -181
- package/dist/src/__tests__/recommend.test.js.map +0 -1
- package/dist/src/__tests__/validate.test.d.ts +0 -5
- package/dist/src/__tests__/validate.test.d.ts.map +0 -1
- package/dist/src/__tests__/validate.test.js +0 -303
- package/dist/src/__tests__/validate.test.js.map +0 -1
|
@@ -6,6 +6,7 @@ import { type ToolContext } from '../context.js';
|
|
|
6
6
|
export type { ToolContext };
|
|
7
7
|
/**
|
|
8
8
|
* Create a test context with in-memory database
|
|
9
|
+
* SMI-1183: Uses offline mode to avoid API calls during tests
|
|
9
10
|
*/
|
|
10
11
|
export declare function createTestContext(): ToolContext;
|
|
11
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnE,YAAY,EAAE,WAAW,EAAE,CAAA;AAE3B
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnE,YAAY,EAAE,WAAW,EAAE,CAAA;AAE3B;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAK/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAqEvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,WAAW,CAIrD"}
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
import { createToolContext } from '../context.js';
|
|
6
6
|
/**
|
|
7
7
|
* Create a test context with in-memory database
|
|
8
|
+
* SMI-1183: Uses offline mode to avoid API calls during tests
|
|
8
9
|
*/
|
|
9
10
|
export function createTestContext() {
|
|
10
|
-
return createToolContext({
|
|
11
|
+
return createToolContext({
|
|
12
|
+
dbPath: ':memory:',
|
|
13
|
+
apiClientConfig: { offlineMode: true },
|
|
14
|
+
});
|
|
11
15
|
}
|
|
12
16
|
/**
|
|
13
17
|
* Seed test data into the context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAA;AAInE
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAA;AAInE;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,iBAAiB,CAAC;QACvB,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KACvC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAoB;IAC/C,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAA;IAEnC,kBAAkB;IAClB,eAAe,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kEAAkE;QAC/E,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,kDAAkD;QAC3D,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,UAAU;QACrB,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,CAAC;KAC9D,CAAC,CAAA;IAEF,eAAe,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,kDAAkD;QAC/D,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,qDAAqD;QAC9D,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,UAAU;QACrB,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,CAAC;KACxD,CAAC,CAAA;IAEF,eAAe,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,qDAAqD;QAC9D,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC;KACjD,CAAC,CAAA;IAEF,eAAe,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,yDAAyD;QACtE,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,uDAAuD;QAChE,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC;KACxD,CAAC,CAAA;IAEF,eAAe,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,mDAAmD;QAChE,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,wDAAwD;QACjE,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,CAAC;KAC3D,CAAC,CAAA;IAEF,eAAe,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0CAA0C;QACvD,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,kDAAkD;QAC3D,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,cAAc;QACzB,IAAI,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC;KAC1C,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;IACnC,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/dist/src/context.d.ts
CHANGED
|
@@ -18,17 +18,43 @@
|
|
|
18
18
|
* const result = await executeSearch(input, context);
|
|
19
19
|
*/
|
|
20
20
|
import type { Database as DatabaseType } from 'better-sqlite3';
|
|
21
|
-
import { SearchService, SkillRepository } from '@skillsmith/core';
|
|
21
|
+
import { SearchService, SkillRepository, SkillsmithApiClient, type ApiClientConfig } from '@skillsmith/core';
|
|
22
22
|
/**
|
|
23
23
|
* Shared context for MCP tool handlers
|
|
24
|
+
* SMI-1183: Added apiClient for live API access with local fallback
|
|
25
|
+
* SMI-1184: Added distinctId for telemetry tracking
|
|
24
26
|
*/
|
|
25
27
|
export interface ToolContext {
|
|
26
28
|
/** SQLite database connection */
|
|
27
29
|
db: DatabaseType;
|
|
28
|
-
/** Search service with FTS5/BM25 */
|
|
30
|
+
/** Search service with FTS5/BM25 (fallback) */
|
|
29
31
|
searchService: SearchService;
|
|
30
|
-
/** Skill repository for CRUD operations */
|
|
32
|
+
/** Skill repository for CRUD operations (fallback) */
|
|
31
33
|
skillRepository: SkillRepository;
|
|
34
|
+
/** API client for live Supabase API (primary) */
|
|
35
|
+
apiClient: SkillsmithApiClient;
|
|
36
|
+
/** Anonymous user ID for telemetry (undefined if telemetry disabled) */
|
|
37
|
+
distinctId?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Telemetry configuration for PostHog (SMI-1184)
|
|
41
|
+
* Privacy-first: disabled by default (opt-in)
|
|
42
|
+
*/
|
|
43
|
+
export interface TelemetryConfig {
|
|
44
|
+
/**
|
|
45
|
+
* Enable telemetry collection (default: false for privacy)
|
|
46
|
+
* Can also be set via SKILLSMITH_TELEMETRY_ENABLED env var
|
|
47
|
+
*/
|
|
48
|
+
enabled?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* PostHog API key (starts with phc_)
|
|
51
|
+
* Can also be set via POSTHOG_API_KEY env var
|
|
52
|
+
*/
|
|
53
|
+
postHogApiKey?: string;
|
|
54
|
+
/**
|
|
55
|
+
* PostHog host URL (default: https://app.posthog.com)
|
|
56
|
+
*/
|
|
57
|
+
postHogHost?: string;
|
|
32
58
|
}
|
|
33
59
|
/**
|
|
34
60
|
* Options for creating tool context
|
|
@@ -38,6 +64,13 @@ export interface ToolContextOptions {
|
|
|
38
64
|
dbPath?: string;
|
|
39
65
|
/** Search cache TTL in seconds (default: 300) */
|
|
40
66
|
searchCacheTtl?: number;
|
|
67
|
+
/** API client configuration (SMI-1183) */
|
|
68
|
+
apiClientConfig?: ApiClientConfig;
|
|
69
|
+
/**
|
|
70
|
+
* Telemetry configuration (SMI-1184)
|
|
71
|
+
* Privacy-first: telemetry is OPT-IN and disabled by default
|
|
72
|
+
*/
|
|
73
|
+
telemetryConfig?: TelemetryConfig;
|
|
41
74
|
}
|
|
42
75
|
/**
|
|
43
76
|
* Get the default database path
|
|
@@ -78,10 +111,11 @@ export declare function getDefaultDbPath(): string;
|
|
|
78
111
|
export declare function createToolContext(options?: ToolContextOptions): ToolContext;
|
|
79
112
|
/**
|
|
80
113
|
* Close the tool context and release resources
|
|
114
|
+
* SMI-1184: Also shuts down PostHog telemetry if initialized
|
|
81
115
|
*
|
|
82
116
|
* @param context - Tool context to close
|
|
83
117
|
*/
|
|
84
|
-
export declare function closeToolContext(context: ToolContext): void
|
|
118
|
+
export declare function closeToolContext(context: ToolContext): Promise<void>;
|
|
85
119
|
/**
|
|
86
120
|
* Get or create the global tool context
|
|
87
121
|
* Uses singleton pattern for MCP server lifecycle
|
|
@@ -95,6 +129,7 @@ export declare function closeToolContext(context: ToolContext): void;
|
|
|
95
129
|
export declare function getToolContext(options?: ToolContextOptions): ToolContext;
|
|
96
130
|
/**
|
|
97
131
|
* Reset the global context (for testing)
|
|
132
|
+
* SMI-1184: Made async to properly shutdown PostHog
|
|
98
133
|
*/
|
|
99
|
-
export declare function resetToolContext(): void
|
|
134
|
+
export declare function resetToolContext(): Promise<void>;
|
|
100
135
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAEL,aAAa,EACb,eAAe,EAEf,mBAAmB,EAInB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAA;AAEzB;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,EAAE,EAAE,YAAY,CAAA;IAChB,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAA;IAC5B,sDAAsD;IACtD,eAAe,EAAE,eAAe,CAAA;IAChC,iDAAiD;IACjD,SAAS,EAAE,mBAAmB,CAAA;IAC9B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAqBzC;AAYD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CA4E/E;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E;AAKD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAUxE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD"}
|
package/dist/src/context.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
import { homedir } from 'os';
|
|
21
21
|
import { join, dirname } from 'path';
|
|
22
22
|
import { mkdirSync, existsSync } from 'fs';
|
|
23
|
-
import { createDatabase, SearchService, SkillRepository, validateDbPath } from '@skillsmith/core';
|
|
23
|
+
import { createDatabase, SearchService, SkillRepository, validateDbPath, SkillsmithApiClient, initializePostHog, shutdownPostHog, generateAnonymousId, } from '@skillsmith/core';
|
|
24
24
|
/**
|
|
25
25
|
* Get the default database path
|
|
26
26
|
* Respects SKILLSMITH_DB_PATH environment variable
|
|
@@ -109,19 +109,52 @@ export function createToolContext(options = {}) {
|
|
|
109
109
|
cacheTtl: options.searchCacheTtl ?? 300,
|
|
110
110
|
});
|
|
111
111
|
const skillRepository = new SkillRepository(db);
|
|
112
|
+
// SMI-1183: Initialize API client with configuration
|
|
113
|
+
// API is primary data source; local DB is fallback
|
|
114
|
+
const apiClient = new SkillsmithApiClient({
|
|
115
|
+
baseUrl: options.apiClientConfig?.baseUrl,
|
|
116
|
+
anonKey: options.apiClientConfig?.anonKey,
|
|
117
|
+
timeout: options.apiClientConfig?.timeout ?? 10000, // 10s default
|
|
118
|
+
maxRetries: options.apiClientConfig?.maxRetries ?? 3,
|
|
119
|
+
debug: options.apiClientConfig?.debug,
|
|
120
|
+
offlineMode: options.apiClientConfig?.offlineMode,
|
|
121
|
+
});
|
|
122
|
+
// SMI-1184: Initialize PostHog telemetry (opt-in, privacy first)
|
|
123
|
+
let distinctId;
|
|
124
|
+
// Check env vars first, then fall back to config
|
|
125
|
+
const telemetryEnabled = process.env.SKILLSMITH_TELEMETRY_ENABLED === 'true' || options.telemetryConfig?.enabled === true;
|
|
126
|
+
const postHogApiKey = process.env.POSTHOG_API_KEY || options.telemetryConfig?.postHogApiKey;
|
|
127
|
+
if (telemetryEnabled && postHogApiKey) {
|
|
128
|
+
// Generate anonymous user ID for telemetry
|
|
129
|
+
distinctId = generateAnonymousId();
|
|
130
|
+
// Initialize PostHog client
|
|
131
|
+
initializePostHog({
|
|
132
|
+
apiKey: postHogApiKey,
|
|
133
|
+
host: options.telemetryConfig?.postHogHost,
|
|
134
|
+
disabled: false,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
112
137
|
return {
|
|
113
138
|
db,
|
|
114
139
|
searchService,
|
|
115
140
|
skillRepository,
|
|
141
|
+
apiClient,
|
|
142
|
+
distinctId,
|
|
116
143
|
};
|
|
117
144
|
}
|
|
118
145
|
/**
|
|
119
146
|
* Close the tool context and release resources
|
|
147
|
+
* SMI-1184: Also shuts down PostHog telemetry if initialized
|
|
120
148
|
*
|
|
121
149
|
* @param context - Tool context to close
|
|
122
150
|
*/
|
|
123
|
-
export function closeToolContext(context) {
|
|
151
|
+
export async function closeToolContext(context) {
|
|
152
|
+
// Close database connection
|
|
124
153
|
context.db.close();
|
|
154
|
+
// SMI-1184: Shutdown PostHog if telemetry was enabled
|
|
155
|
+
if (context.distinctId) {
|
|
156
|
+
await shutdownPostHog();
|
|
157
|
+
}
|
|
125
158
|
}
|
|
126
159
|
// Singleton context for the MCP server
|
|
127
160
|
let globalContext = null;
|
|
@@ -147,10 +180,11 @@ export function getToolContext(options) {
|
|
|
147
180
|
}
|
|
148
181
|
/**
|
|
149
182
|
* Reset the global context (for testing)
|
|
183
|
+
* SMI-1184: Made async to properly shutdown PostHog
|
|
150
184
|
*/
|
|
151
|
-
export function resetToolContext() {
|
|
185
|
+
export async function resetToolContext() {
|
|
152
186
|
if (globalContext) {
|
|
153
|
-
closeToolContext(globalContext);
|
|
187
|
+
await closeToolContext(globalContext);
|
|
154
188
|
globalContext = null;
|
|
155
189
|
}
|
|
156
190
|
}
|
package/dist/src/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAE1C,OAAO,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { type LicenseMiddleware } from './license.js';
|
|
9
9
|
import { type FeatureFlag } from './toolFeatureMapping.js';
|
|
10
|
+
/**
|
|
11
|
+
* License tiers for degradation middleware
|
|
12
|
+
* Matches the LicenseTier type from license.ts
|
|
13
|
+
*/
|
|
14
|
+
type DegradationLicenseTier = 'community' | 'individual' | 'team' | 'enterprise';
|
|
10
15
|
/**
|
|
11
16
|
* MCP tool request structure
|
|
12
17
|
*/
|
|
@@ -36,7 +41,7 @@ export interface DegradationLogEvent {
|
|
|
36
41
|
timestamp: string;
|
|
37
42
|
toolName: string;
|
|
38
43
|
feature: FeatureFlag | null;
|
|
39
|
-
tier:
|
|
44
|
+
tier: DegradationLicenseTier;
|
|
40
45
|
action: 'allowed' | 'degraded' | 'error';
|
|
41
46
|
message?: string;
|
|
42
47
|
}
|
|
@@ -96,4 +101,5 @@ export declare function createDegradationMiddleware(options?: DegradationMiddlew
|
|
|
96
101
|
licenseMiddleware: LicenseMiddleware;
|
|
97
102
|
};
|
|
98
103
|
export type DegradationMiddleware = ReturnType<typeof createDegradationMiddleware>;
|
|
104
|
+
export {};
|
|
99
105
|
//# sourceMappingURL=degradation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"degradation.d.ts","sourceRoot":"","sources":["../../../src/middleware/degradation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,iBAAiB,EAIvB,MAAM,cAAc,CAAA;AACrB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"degradation.d.ts","sourceRoot":"","sources":["../../../src/middleware/degradation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,iBAAiB,EAIvB,MAAM,cAAc,CAAA;AACrB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAA;AAQhC;;;GAGG;AACH,KAAK,sBAAsB,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,CAAA;AAwChF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAE9E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,IAAI,EAAE,sBAAsB,CAAA;IAC5B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,oCAAoC;IACpC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAaD;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAMtC,CAAA;AA2CD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAyBjD;AAyFD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,4BAAiC;kBAOzD,CAAC,YAChB,MAAM,WACP,WAAW,CAAC,CAAC,CAAC,WACd,cAAc,KACtB,OAAO,CAAC,CAAC,GAAG,eAAe,CAAC;2BAyDD,CAAC,YACnB,MAAM,WACP,WAAW,CAAC,CAAC,CAAC,KACtB,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,GAAG,eAAe,CAAC;6BAStB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;gCAYxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iCAa1B,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;EAqB1E;AAMD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
|
|
@@ -16,6 +16,7 @@ const BASE_URL = 'https://skillsmith.app';
|
|
|
16
16
|
*/
|
|
17
17
|
const TIER_PRICING = {
|
|
18
18
|
community: '$0/month',
|
|
19
|
+
individual: '$9.99/month',
|
|
19
20
|
team: '$25/user/month',
|
|
20
21
|
enterprise: '$55/user/month',
|
|
21
22
|
};
|
|
@@ -23,6 +24,9 @@ const TIER_PRICING = {
|
|
|
23
24
|
* Feature descriptions for upgrade prompts
|
|
24
25
|
*/
|
|
25
26
|
const FEATURE_DESCRIPTIONS = {
|
|
27
|
+
// Individual tier features
|
|
28
|
+
basic_analytics: 'Track your personal skill usage and activity',
|
|
29
|
+
email_support: 'Get help from our support team via email',
|
|
26
30
|
// Team tier features
|
|
27
31
|
private_skills: 'Create and manage private skills for your organization',
|
|
28
32
|
team_workspaces: 'Collaborate with your team on shared skill collections',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"degradation.js","sourceRoot":"","sources":["../../../src/middleware/degradation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,GAEd,MAAM,yBAAyB,CAAA;AAEhC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,QAAQ,GAAG,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"degradation.js","sourceRoot":"","sources":["../../../src/middleware/degradation.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Exports all middleware for the Skillsmith MCP server.
|
|
5
5
|
*/
|
|
6
6
|
export { cspMiddleware, buildCspHeader, generateNonce, validateCspHeader, validateCspHeaderDetailed, getCspForEnvironment, DEFAULT_CSP_DIRECTIVES, STRICT_CSP_DIRECTIVES, type CspDirectives, type CspValidationResult, } from './csp.js';
|
|
7
|
-
export { createLicenseMiddleware, requireFeature, isEnterpriseFeature, requiresLicense, getRequiredFeature, createLicenseErrorResponse, type LicenseMiddleware, type LicenseMiddlewareContext, type LicenseValidationResult, type LicenseInfo, type FeatureFlag, TOOL_FEATURES, FEATURE_DISPLAY_NAMES, FEATURE_TIERS, } from './license.js';
|
|
7
|
+
export { createLicenseMiddleware, requireFeature, isEnterpriseFeature, requiresLicense, getRequiredFeature, createLicenseErrorResponse, type LicenseMiddleware, type LicenseMiddlewareContext, type LicenseValidationResult, type LicenseInfo, type LicenseTier, type FeatureFlag, TOOL_FEATURES, FEATURE_DISPLAY_NAMES, FEATURE_TIERS, } from './license.js';
|
|
8
|
+
export { createQuotaMiddleware, withQuotaEnforcement, isUnlimitedTier, getQuotaLimit, formatQuotaRemaining, type QuotaMiddleware, type QuotaMiddlewareOptions, type QuotaCheckResult, type QuotaMetadata, type QuotaStorage, } from './quota.js';
|
|
8
9
|
export { createDegradationMiddleware, getTierComparisonMessage, consoleDegradationLogger, type DegradationMiddleware, type DegradationMiddlewareOptions, type DegradationLogger, type DegradationLogEvent, type McpToolRequest, type McpToolResponse, type ToolHandler, } from './degradation.js';
|
|
9
10
|
export { formatLicenseError, formatGenericError, getUserFriendlyMessage, generateUpgradeUrl, buildUpgradeRequiredResponse, buildLicenseExpiredResponse, buildQuotaExceededResponse, isLicenseErrorLike, safeFormatError, type MCPErrorContent, type MCPErrorResponse, type LicenseErrorDetails as MCPLicenseErrorDetails, type LicenseErrorLike, type UpgradeUrlConfig, } from './errorFormatter.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,aAAa,EACb,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,IAAI,sBAAsB,EAClD,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,aAAa,EACb,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,IAAI,sBAAsB,EAClD,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAA"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
export { cspMiddleware, buildCspHeader, generateNonce, validateCspHeader, validateCspHeaderDetailed, getCspForEnvironment, DEFAULT_CSP_DIRECTIVES, STRICT_CSP_DIRECTIVES, } from './csp.js';
|
|
8
8
|
// License middleware
|
|
9
9
|
export { createLicenseMiddleware, requireFeature, isEnterpriseFeature, requiresLicense, getRequiredFeature, createLicenseErrorResponse, TOOL_FEATURES, FEATURE_DISPLAY_NAMES, FEATURE_TIERS, } from './license.js';
|
|
10
|
+
// Quota enforcement middleware (SMI-1091)
|
|
11
|
+
export { createQuotaMiddleware, withQuotaEnforcement, isUnlimitedTier, getQuotaLimit, formatQuotaRemaining, } from './quota.js';
|
|
10
12
|
// Degradation middleware (SMI-1060)
|
|
11
13
|
export { createDegradationMiddleware, getTierComparisonMessage, consoleDegradationLogger, } from './degradation.js';
|
|
12
14
|
// MCP Error Formatter (SMI-1061)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GAGtB,MAAM,UAAU,CAAA;AAEjB,qBAAqB;AACrB,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GAGtB,MAAM,UAAU,CAAA;AAEjB,qBAAqB;AACrB,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAO1B,aAAa,EACb,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAA;AAErB,0CAA0C;AAC1C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,oBAAoB,GAMrB,MAAM,YAAY,CAAA;AAEnB,oCAAoC;AACpC,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,GAQzB,MAAM,kBAAkB,CAAA;AAEzB,iCAAiC;AACjC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,GAMhB,MAAM,qBAAqB,CAAA"}
|
|
@@ -17,12 +17,20 @@ export interface LicenseValidationResult {
|
|
|
17
17
|
upgradeUrl?: string;
|
|
18
18
|
warning?: string;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* License tiers available in Skillsmith
|
|
22
|
+
* - community: Free tier (1,000 API calls/month)
|
|
23
|
+
* - individual: Solo developers ($9.99/mo, 10,000 API calls/month)
|
|
24
|
+
* - team: Development teams ($25/user/mo, 100,000 API calls/month)
|
|
25
|
+
* - enterprise: Full enterprise ($55/user/mo, unlimited)
|
|
26
|
+
*/
|
|
27
|
+
export type LicenseTier = 'community' | 'individual' | 'team' | 'enterprise';
|
|
20
28
|
/**
|
|
21
29
|
* License information interface (mirrors @skillsmith/enterprise LicenseInfo)
|
|
22
30
|
*/
|
|
23
31
|
export interface LicenseInfo {
|
|
24
32
|
valid: boolean;
|
|
25
|
-
tier:
|
|
33
|
+
tier: LicenseTier;
|
|
26
34
|
features: FeatureFlag[];
|
|
27
35
|
expiresAt?: Date;
|
|
28
36
|
organizationId?: string;
|
|
@@ -31,7 +39,7 @@ export interface LicenseInfo {
|
|
|
31
39
|
* License from enterprise package validation
|
|
32
40
|
*/
|
|
33
41
|
interface EnterpriseLicense {
|
|
34
|
-
tier:
|
|
42
|
+
tier: LicenseTier;
|
|
35
43
|
features: FeatureFlag[];
|
|
36
44
|
customerId: string;
|
|
37
45
|
issuedAt: Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/middleware/license.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAA;AAOhC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/middleware/license.ts"],"names":[],"mappings":"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"}
|
|
@@ -186,8 +186,19 @@ export function createLicenseMiddleware(options) {
|
|
|
186
186
|
upgradeUrl: `${UPGRADE_URL}?feature=${feature}¤t=community`,
|
|
187
187
|
};
|
|
188
188
|
}
|
|
189
|
-
//
|
|
190
|
-
|
|
189
|
+
// Individual tier - only individual features (basic_analytics, email_support)
|
|
190
|
+
const featureTier = FEATURE_TIERS[feature];
|
|
191
|
+
if (license.tier === 'individual' && (featureTier === 'team' || featureTier === 'enterprise')) {
|
|
192
|
+
const displayName = FEATURE_DISPLAY_NAMES[feature];
|
|
193
|
+
return {
|
|
194
|
+
valid: false,
|
|
195
|
+
feature,
|
|
196
|
+
message: `The "${displayName}" feature requires a ${featureTier} license. You are currently on the individual tier.`,
|
|
197
|
+
upgradeUrl: `${UPGRADE_URL}?feature=${feature}¤t=individual`,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// Team tier - only team features (not enterprise)
|
|
201
|
+
if (license.tier === 'team' && featureTier === 'enterprise') {
|
|
191
202
|
const displayName = FEATURE_DISPLAY_NAMES[feature];
|
|
192
203
|
return {
|
|
193
204
|
valid: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/middleware/license.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,GAEd,MAAM,yBAAyB,CAAA;AAEhC;;GAEG;AACH,MAAM,WAAW,GAAG,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/middleware/license.ts"],"names":[],"mappings":"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"}
|