@get-technology-inc/jamf-docs-mcp-server 1.5.1 → 3.0.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.
- package/dist/{completions.d.ts → core/completions.d.ts} +3 -1
- package/dist/core/completions.d.ts.map +1 -0
- package/dist/{completions.js → core/completions.js} +5 -4
- package/dist/core/completions.js.map +1 -0
- package/dist/core/config.d.ts +56 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +59 -0
- package/dist/core/config.js.map +1 -0
- package/dist/{constants.d.ts → core/constants.d.ts} +3 -19
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/{constants.js → core/constants.js} +6 -86
- package/dist/core/constants.js.map +1 -0
- package/dist/core/create-server.d.ts +25 -0
- package/dist/core/create-server.d.ts.map +1 -0
- package/dist/core/create-server.js +80 -0
- package/dist/core/create-server.js.map +1 -0
- package/dist/core/http-client.d.ts +19 -0
- package/dist/core/http-client.d.ts.map +1 -0
- package/dist/core/http-client.js +62 -0
- package/dist/core/http-client.js.map +1 -0
- package/dist/core/index.d.ts +27 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +29 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/prompts/compare-versions.d.ts.map +1 -0
- package/dist/core/prompts/compare-versions.js.map +1 -0
- package/dist/core/prompts/index.d.ts.map +1 -0
- package/dist/core/prompts/index.js.map +1 -0
- package/dist/core/prompts/setup-guide.d.ts.map +1 -0
- package/dist/core/prompts/setup-guide.js.map +1 -0
- package/dist/core/prompts/troubleshoot.d.ts.map +1 -0
- package/dist/core/prompts/troubleshoot.js.map +1 -0
- package/dist/{resources → core/resources}/index.d.ts +2 -1
- package/dist/core/resources/index.d.ts.map +1 -0
- package/dist/{resources → core/resources}/index.js +6 -7
- package/dist/core/resources/index.js.map +1 -0
- package/dist/core/schemas/index.d.ts.map +1 -0
- package/dist/core/schemas/index.js.map +1 -0
- package/dist/core/schemas/output.d.ts.map +1 -0
- package/dist/core/schemas/output.js.map +1 -0
- package/dist/core/services/cache.d.ts +16 -0
- package/dist/core/services/cache.d.ts.map +1 -0
- package/dist/core/services/cache.js +16 -0
- package/dist/core/services/cache.js.map +1 -0
- package/dist/{services → core/services}/glossary.d.ts +2 -1
- package/dist/core/services/glossary.d.ts.map +1 -0
- package/dist/{services → core/services}/glossary.js +15 -11
- package/dist/core/services/glossary.js.map +1 -0
- package/dist/core/services/interfaces/cache.d.ts +23 -0
- package/dist/core/services/interfaces/cache.d.ts.map +1 -0
- package/dist/core/services/interfaces/cache.js +5 -0
- package/dist/core/services/interfaces/cache.js.map +1 -0
- package/dist/core/services/interfaces/index.d.ts +10 -0
- package/dist/core/services/interfaces/index.d.ts.map +1 -0
- package/dist/core/services/interfaces/index.js +7 -0
- package/dist/core/services/interfaces/index.js.map +1 -0
- package/dist/core/services/interfaces/logger.d.ts +25 -0
- package/dist/core/services/interfaces/logger.d.ts.map +1 -0
- package/dist/core/services/interfaces/logger.js +5 -0
- package/dist/core/services/interfaces/logger.js.map +1 -0
- package/dist/core/services/interfaces/metadata.d.ts +51 -0
- package/dist/core/services/interfaces/metadata.d.ts.map +1 -0
- package/dist/core/services/interfaces/metadata.js +5 -0
- package/dist/core/services/interfaces/metadata.js.map +1 -0
- package/dist/core/services/interfaces/providers.d.ts +48 -0
- package/dist/core/services/interfaces/providers.d.ts.map +1 -0
- package/dist/core/services/interfaces/providers.js +13 -0
- package/dist/core/services/interfaces/providers.js.map +1 -0
- package/dist/core/services/interfaces.d.ts +94 -0
- package/dist/core/services/interfaces.d.ts.map +1 -0
- package/dist/core/services/interfaces.js +8 -0
- package/dist/core/services/interfaces.js.map +1 -0
- package/dist/core/services/logging.d.ts.map +1 -0
- package/dist/core/services/logging.js.map +1 -0
- package/dist/{services → core/services}/metadata.d.ts +8 -7
- package/dist/core/services/metadata.d.ts.map +1 -0
- package/dist/{services → core/services}/metadata.js +43 -39
- package/dist/core/services/metadata.js.map +1 -0
- package/dist/{services → core/services}/scraper.d.ts +9 -4
- package/dist/core/services/scraper.d.ts.map +1 -0
- package/dist/{services → core/services}/scraper.js +119 -54
- package/dist/core/services/scraper.js.map +1 -0
- package/dist/core/services/search-suggestions.d.ts.map +1 -0
- package/dist/core/services/search-suggestions.js.map +1 -0
- package/dist/core/services/tokenizer.d.ts.map +1 -0
- package/dist/core/services/tokenizer.js.map +1 -0
- package/dist/{tools → core/tools}/batch-get-articles.d.ts +2 -1
- package/dist/core/tools/batch-get-articles.d.ts.map +1 -0
- package/dist/{tools → core/tools}/batch-get-articles.js +2 -2
- package/dist/core/tools/batch-get-articles.js.map +1 -0
- package/dist/{tools → core/tools}/get-article.d.ts +2 -1
- package/dist/core/tools/get-article.d.ts.map +1 -0
- package/dist/{tools → core/tools}/get-article.js +2 -2
- package/dist/core/tools/get-article.js.map +1 -0
- package/dist/core/tools/get-toc.d.ts +8 -0
- package/dist/core/tools/get-toc.d.ts.map +1 -0
- package/dist/{tools → core/tools}/get-toc.js +3 -3
- package/dist/core/tools/get-toc.js.map +1 -0
- package/dist/{tools → core/tools}/glossary-lookup.d.ts +2 -1
- package/dist/core/tools/glossary-lookup.d.ts.map +1 -0
- package/dist/{tools → core/tools}/glossary-lookup.js +2 -2
- package/dist/core/tools/glossary-lookup.js.map +1 -0
- package/dist/{tools → core/tools}/list-products.d.ts +2 -1
- package/dist/core/tools/list-products.d.ts.map +1 -0
- package/dist/{tools → core/tools}/list-products.js +5 -6
- package/dist/core/tools/list-products.js.map +1 -0
- package/dist/core/tools/search.d.ts +8 -0
- package/dist/core/tools/search.d.ts.map +1 -0
- package/dist/{tools → core/tools}/search.js +2 -2
- package/dist/core/tools/search.js.map +1 -0
- package/dist/core/types/context.d.ts +20 -0
- package/dist/core/types/context.d.ts.map +1 -0
- package/dist/core/types/context.js +8 -0
- package/dist/core/types/context.js.map +1 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils/bundle.d.ts.map +1 -0
- package/dist/core/utils/bundle.js.map +1 -0
- package/dist/core/utils/concurrency.d.ts.map +1 -0
- package/dist/core/utils/concurrency.js.map +1 -0
- package/dist/core/utils/doc-type.d.ts.map +1 -0
- package/dist/core/utils/doc-type.js.map +1 -0
- package/dist/core/utils/progress.d.ts.map +1 -0
- package/dist/core/utils/progress.js.map +1 -0
- package/dist/core/utils/sanitize.d.ts.map +1 -0
- package/dist/core/utils/sanitize.js.map +1 -0
- package/dist/core/utils/url.d.ts.map +1 -0
- package/dist/core/utils/url.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +26 -58
- package/dist/index.js.map +1 -1
- package/dist/{services → platforms/node}/cache.d.ts +16 -13
- package/dist/platforms/node/cache.d.ts.map +1 -0
- package/dist/{services → platforms/node}/cache.js +20 -18
- package/dist/platforms/node/cache.js.map +1 -0
- package/dist/platforms/node/config.d.ts +14 -0
- package/dist/platforms/node/config.d.ts.map +1 -0
- package/dist/platforms/node/config.js +99 -0
- package/dist/platforms/node/config.js.map +1 -0
- package/dist/platforms/node/index.d.ts +8 -0
- package/dist/platforms/node/index.d.ts.map +1 -0
- package/dist/platforms/node/index.js +8 -0
- package/dist/platforms/node/index.js.map +1 -0
- package/dist/platforms/node/logger.d.ts +12 -0
- package/dist/platforms/node/logger.d.ts.map +1 -0
- package/dist/platforms/node/logger.js +15 -0
- package/dist/platforms/node/logger.js.map +1 -0
- package/dist/platforms/node/metadata.d.ts +18 -0
- package/dist/platforms/node/metadata.d.ts.map +1 -0
- package/dist/platforms/node/metadata.js +35 -0
- package/dist/platforms/node/metadata.js.map +1 -0
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +3 -2
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/package.json +22 -4
- package/dist/completions.d.ts.map +0 -1
- package/dist/completions.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/prompts/compare-versions.d.ts.map +0 -1
- package/dist/prompts/compare-versions.js.map +0 -1
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/setup-guide.d.ts.map +0 -1
- package/dist/prompts/setup-guide.js.map +0 -1
- package/dist/prompts/troubleshoot.d.ts.map +0 -1
- package/dist/prompts/troubleshoot.js.map +0 -1
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js.map +0 -1
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/output.d.ts.map +0 -1
- package/dist/schemas/output.js.map +0 -1
- package/dist/services/cache.d.ts.map +0 -1
- package/dist/services/cache.js.map +0 -1
- package/dist/services/glossary.d.ts.map +0 -1
- package/dist/services/glossary.js.map +0 -1
- package/dist/services/logging.d.ts.map +0 -1
- package/dist/services/logging.js.map +0 -1
- package/dist/services/metadata.d.ts.map +0 -1
- package/dist/services/metadata.js.map +0 -1
- package/dist/services/scraper.d.ts.map +0 -1
- package/dist/services/scraper.js.map +0 -1
- package/dist/services/search-suggestions.d.ts.map +0 -1
- package/dist/services/search-suggestions.js.map +0 -1
- package/dist/services/tokenizer.d.ts.map +0 -1
- package/dist/services/tokenizer.js.map +0 -1
- package/dist/tools/batch-get-articles.d.ts.map +0 -1
- package/dist/tools/batch-get-articles.js.map +0 -1
- package/dist/tools/get-article.d.ts.map +0 -1
- package/dist/tools/get-article.js.map +0 -1
- package/dist/tools/get-toc.d.ts +0 -7
- package/dist/tools/get-toc.d.ts.map +0 -1
- package/dist/tools/get-toc.js.map +0 -1
- package/dist/tools/glossary-lookup.d.ts.map +0 -1
- package/dist/tools/glossary-lookup.js.map +0 -1
- package/dist/tools/list-products.d.ts.map +0 -1
- package/dist/tools/list-products.js.map +0 -1
- package/dist/tools/search.d.ts +0 -7
- package/dist/tools/search.d.ts.map +0 -1
- package/dist/tools/search.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/bundle.d.ts.map +0 -1
- package/dist/utils/bundle.js.map +0 -1
- package/dist/utils/concurrency.d.ts.map +0 -1
- package/dist/utils/concurrency.js.map +0 -1
- package/dist/utils/doc-type.d.ts.map +0 -1
- package/dist/utils/doc-type.js.map +0 -1
- package/dist/utils/progress.d.ts.map +0 -1
- package/dist/utils/progress.js.map +0 -1
- package/dist/utils/sanitize.d.ts.map +0 -1
- package/dist/utils/sanitize.js.map +0 -1
- package/dist/utils/url.d.ts.map +0 -1
- package/dist/utils/url.js.map +0 -1
- /package/dist/{prompts → core/prompts}/compare-versions.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/compare-versions.js +0 -0
- /package/dist/{prompts → core/prompts}/index.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/index.js +0 -0
- /package/dist/{prompts → core/prompts}/setup-guide.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/setup-guide.js +0 -0
- /package/dist/{prompts → core/prompts}/troubleshoot.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/troubleshoot.js +0 -0
- /package/dist/{schemas → core/schemas}/index.d.ts +0 -0
- /package/dist/{schemas → core/schemas}/index.js +0 -0
- /package/dist/{schemas → core/schemas}/output.d.ts +0 -0
- /package/dist/{schemas → core/schemas}/output.js +0 -0
- /package/dist/{services → core/services}/logging.d.ts +0 -0
- /package/dist/{services → core/services}/logging.js +0 -0
- /package/dist/{services → core/services}/search-suggestions.d.ts +0 -0
- /package/dist/{services → core/services}/search-suggestions.js +0 -0
- /package/dist/{services → core/services}/tokenizer.d.ts +0 -0
- /package/dist/{services → core/services}/tokenizer.js +0 -0
- /package/dist/{types.d.ts → core/types.d.ts} +0 -0
- /package/dist/{types.js → core/types.js} +0 -0
- /package/dist/{utils → core/utils}/bundle.d.ts +0 -0
- /package/dist/{utils → core/utils}/bundle.js +0 -0
- /package/dist/{utils → core/utils}/concurrency.d.ts +0 -0
- /package/dist/{utils → core/utils}/concurrency.js +0 -0
- /package/dist/{utils → core/utils}/doc-type.d.ts +0 -0
- /package/dist/{utils → core/utils}/doc-type.js +0 -0
- /package/dist/{utils → core/utils}/progress.d.ts +0 -0
- /package/dist/{utils → core/utils}/progress.js +0 -0
- /package/dist/{utils → core/utils}/sanitize.d.ts +0 -0
- /package/dist/{utils → core/utils}/sanitize.js +0 -0
- /package/dist/{utils → core/utils}/url.d.ts +0 -0
- /package/dist/{utils → core/utils}/url.js +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Completion utilities for argument autocompletion
|
|
3
|
+
*
|
|
4
|
+
* Uses only static data from constants — no runtime context needed.
|
|
3
5
|
*/
|
|
4
6
|
/**
|
|
5
7
|
* Two-tier matching: prefix matches first, then substring matches.
|
|
@@ -10,5 +12,5 @@ export declare function completeTopic(value: string | undefined): string[];
|
|
|
10
12
|
export declare function completeLanguage(value: string | undefined): string[];
|
|
11
13
|
export declare function completeVersion(value: string | undefined, context?: {
|
|
12
14
|
arguments?: Record<string, string>;
|
|
13
|
-
}):
|
|
15
|
+
}): string[];
|
|
14
16
|
//# sourceMappingURL=completions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/core/completions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOvE;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAEV;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAEV;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAEV;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC/C,MAAM,EAAE,CAOV"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Completion utilities for argument autocompletion
|
|
3
|
+
*
|
|
4
|
+
* Uses only static data from constants — no runtime context needed.
|
|
3
5
|
*/
|
|
4
6
|
import { JAMF_PRODUCTS, PRODUCT_IDS, TOPIC_IDS, SUPPORTED_LOCALE_IDS } from './constants.js';
|
|
5
|
-
import { getAvailableVersions } from './services/metadata.js';
|
|
6
7
|
/**
|
|
7
8
|
* Two-tier matching: prefix matches first, then substring matches.
|
|
8
9
|
*/
|
|
@@ -23,12 +24,12 @@ export function completeTopic(value) {
|
|
|
23
24
|
export function completeLanguage(value) {
|
|
24
25
|
return filterMatches(SUPPORTED_LOCALE_IDS, value ?? '');
|
|
25
26
|
}
|
|
26
|
-
export
|
|
27
|
+
export function completeVersion(value, context) {
|
|
27
28
|
const product = context?.arguments?.product;
|
|
28
29
|
if (product === undefined || !(product in JAMF_PRODUCTS)) {
|
|
29
30
|
return [];
|
|
30
31
|
}
|
|
31
|
-
const versions =
|
|
32
|
-
return filterMatches(versions, value ?? '');
|
|
32
|
+
const { versions } = JAMF_PRODUCTS[product];
|
|
33
|
+
return filterMatches([...versions], value ?? '');
|
|
33
34
|
}
|
|
34
35
|
//# sourceMappingURL=completions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/core/completions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAkB,MAAM,gBAAgB,CAAC;AAE7G;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAgB,EAAE,KAAa;IAC3D,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAyB;IAEzB,OAAO,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAyB;IAEzB,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAyB;IAEzB,OAAO,aAAa,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAyB,EACzB,OAAgD;IAEhD,MAAM,OAAO,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;IAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,OAAoB,CAAC,CAAC;IACzD,OAAO,aAAa,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core configuration types and defaults
|
|
3
|
+
*
|
|
4
|
+
* Platform-agnostic configuration that can be used across
|
|
5
|
+
* different runtimes without Node.js-specific dependencies.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Cache TTL configuration (in milliseconds)
|
|
9
|
+
*/
|
|
10
|
+
export interface CacheTtlConfig {
|
|
11
|
+
search: number;
|
|
12
|
+
article: number;
|
|
13
|
+
products: number;
|
|
14
|
+
toc: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* HTTP request configuration
|
|
18
|
+
*/
|
|
19
|
+
export interface RequestConfig {
|
|
20
|
+
timeout: number;
|
|
21
|
+
maxRetries: number;
|
|
22
|
+
retryDelay: number;
|
|
23
|
+
rateLimitDelay: number;
|
|
24
|
+
userAgent: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Cache storage configuration
|
|
28
|
+
*/
|
|
29
|
+
export interface CacheConfig {
|
|
30
|
+
maxEntries: number;
|
|
31
|
+
dir?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* CORS configuration for HTTP transport
|
|
35
|
+
*/
|
|
36
|
+
export interface CorsConfig {
|
|
37
|
+
allowedOrigins: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Combined server configuration
|
|
41
|
+
*/
|
|
42
|
+
export interface ServerConfig {
|
|
43
|
+
version: string;
|
|
44
|
+
cacheTtl: CacheTtlConfig;
|
|
45
|
+
request: RequestConfig;
|
|
46
|
+
cache: CacheConfig;
|
|
47
|
+
cors?: CorsConfig;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Create a ServerConfig with sensible defaults, allowing partial overrides.
|
|
51
|
+
*
|
|
52
|
+
* @param overrides - Partial config to merge over defaults
|
|
53
|
+
* @returns Complete ServerConfig
|
|
54
|
+
*/
|
|
55
|
+
export declare function createDefaultConfig(overrides?: Partial<ServerConfig>): ServerConfig;
|
|
56
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CA8CnF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core configuration types and defaults
|
|
3
|
+
*
|
|
4
|
+
* Platform-agnostic configuration that can be used across
|
|
5
|
+
* different runtimes without Node.js-specific dependencies.
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Default Configuration
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Create a ServerConfig with sensible defaults, allowing partial overrides.
|
|
12
|
+
*
|
|
13
|
+
* @param overrides - Partial config to merge over defaults
|
|
14
|
+
* @returns Complete ServerConfig
|
|
15
|
+
*/
|
|
16
|
+
export function createDefaultConfig(overrides) {
|
|
17
|
+
const defaults = {
|
|
18
|
+
version: '1.0.0',
|
|
19
|
+
cacheTtl: {
|
|
20
|
+
search: 30 * 60 * 1000, // 30 minutes
|
|
21
|
+
article: 24 * 60 * 60 * 1000, // 24 hours
|
|
22
|
+
products: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
23
|
+
toc: 24 * 60 * 60 * 1000, // 24 hours
|
|
24
|
+
},
|
|
25
|
+
request: {
|
|
26
|
+
timeout: 15000,
|
|
27
|
+
maxRetries: 3,
|
|
28
|
+
retryDelay: 1000,
|
|
29
|
+
rateLimitDelay: 500,
|
|
30
|
+
userAgent: 'JamfDocsMCP/1.0 (https://github.com/GET-Technology-Inc/jamf-docs-mcp-server)',
|
|
31
|
+
},
|
|
32
|
+
cache: {
|
|
33
|
+
maxEntries: 500,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
if (overrides === undefined) {
|
|
37
|
+
return defaults;
|
|
38
|
+
}
|
|
39
|
+
const merged = {
|
|
40
|
+
version: overrides.version ?? defaults.version,
|
|
41
|
+
cacheTtl: {
|
|
42
|
+
...defaults.cacheTtl,
|
|
43
|
+
...overrides.cacheTtl,
|
|
44
|
+
},
|
|
45
|
+
request: {
|
|
46
|
+
...defaults.request,
|
|
47
|
+
...overrides.request,
|
|
48
|
+
},
|
|
49
|
+
cache: {
|
|
50
|
+
...defaults.cache,
|
|
51
|
+
...overrides.cache,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
if (overrides.cors !== undefined) {
|
|
55
|
+
merged.cors = overrides.cors;
|
|
56
|
+
}
|
|
57
|
+
return merged;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqDH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiC;IACnE,MAAM,QAAQ,GAAiB;QAC7B,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE;YACR,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAW,aAAa;YAC9C,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAK,WAAW;YAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;YAC5C,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAS,WAAW;SAC7C;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,GAAG;YACnB,SAAS,EAAE,8EAA8E;SAC1F;QACD,KAAK,EAAE;YACL,UAAU,EAAE,GAAG;SAChB;KACF,CAAC;IAEF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;QAC9C,QAAQ,EAAE;YACR,GAAG,QAAQ,CAAC,QAAQ;YACpB,GAAG,SAAS,CAAC,QAAQ;SACtB;QACD,OAAO,EAAE;YACP,GAAG,QAAQ,CAAC,OAAO;YACnB,GAAG,SAAS,CAAC,OAAO;SACrB;QACD,KAAK,EAAE;YACL,GAAG,QAAQ,CAAC,KAAK;YACjB,GAAG,SAAS,CAAC,KAAK;SACnB;KACF,CAAC;IAEF,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Constants for Jamf Docs MCP Server
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Platform-agnostic static constants. No Node.js built-in imports,
|
|
5
|
+
* no process.env access. Runtime configuration is handled by
|
|
6
|
+
* src/core/config.ts and src/platforms/node/config.ts.
|
|
6
7
|
*/
|
|
7
|
-
export declare function getEnvNumber(key: string, defaultValue: number, min?: number, max?: number): number;
|
|
8
8
|
export declare const SERVER_ICON = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAiUlEQVR4nGNgGAU4QEpKxX9qYpItpwSA9N+58wyOSXYENR0AYw+IA9AdQr4DehgQmEgHYIsGujuA7IRIqQNwOYp8B1ABUOQAOat4svDwcQA1wNB2ACVBPzwcQA0wtB0w4NlwwB1ADTC0HUBu1hs+DqAGGNoOAAbxCVLx8HIANQBZvaMB65qNKAAA5fafYXNsHh0AAAAASUVORK5CYII=";
|
|
9
|
-
export declare const SERVER_VERSION: string;
|
|
10
9
|
export declare const DOCS_BASE_URL = "https://learn.jamf.com";
|
|
11
10
|
export declare const DOCS_API_URL = "https://learn-be.jamf.com";
|
|
12
11
|
export declare const DEFAULT_LOCALE = "en-US";
|
|
@@ -177,21 +176,6 @@ export declare enum OutputMode {
|
|
|
177
176
|
FULL = "full",
|
|
178
177
|
COMPACT = "compact"
|
|
179
178
|
}
|
|
180
|
-
export declare const CACHE_TTL: {
|
|
181
|
-
readonly SEARCH_RESULTS: number;
|
|
182
|
-
readonly ARTICLE_CONTENT: number;
|
|
183
|
-
readonly PRODUCT_LIST: number;
|
|
184
|
-
readonly TOC: number;
|
|
185
|
-
};
|
|
186
|
-
export declare const CACHE_MAX_ENTRIES: number;
|
|
187
|
-
export declare const CACHE_DIR: string;
|
|
188
|
-
export declare const REQUEST_CONFIG: {
|
|
189
|
-
readonly TIMEOUT: number;
|
|
190
|
-
readonly MAX_RETRIES: number;
|
|
191
|
-
readonly RETRY_DELAY: number;
|
|
192
|
-
readonly RATE_LIMIT_DELAY: number;
|
|
193
|
-
readonly USER_AGENT: string;
|
|
194
|
-
};
|
|
195
179
|
export declare const CONTENT_LIMITS: {
|
|
196
180
|
readonly MAX_SEARCH_RESULTS: 50;
|
|
197
181
|
readonly DEFAULT_SEARCH_RESULTS: 10;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,eAAO,MAAM,WAAW,+RAA+R,CAAC;AAGxT,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,YAAY,8BAA8B,CAAC;AAGxD,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CASpB,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,iBAAiB,CAAC;AACtD,eAAO,MAAM,oBAAoB,EAAqC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAE5F;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExE;AAGD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHhB,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AAGnD,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAGD,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAGD,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAGX,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAGX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAGX,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkMd,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,WAAW,CAAC;AAI/C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAGX,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAE3B,CAAC;AAG/B,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAE1B,CAAC;AAE/B,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,SAAS,CAAC;AAG/C,eAAO,MAAM,WAAW,EAAiC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAC/E,eAAO,MAAM,SAAS,EAA+B,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAC3E,eAAO,MAAM,YAAY,EAA6B,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAG5E,eAAO,MAAM,SAAS;;;;;;;CAcZ,CAAC"}
|
|
@@ -1,44 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Constants for Jamf Docs MCP Server
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Platform-agnostic static constants. No Node.js built-in imports,
|
|
5
|
+
* no process.env access. Runtime configuration is handled by
|
|
6
|
+
* src/core/config.ts and src/platforms/node/config.ts.
|
|
6
7
|
*/
|
|
7
|
-
import * as path from 'path';
|
|
8
|
-
import { createRequire } from 'module';
|
|
9
|
-
import { createLogger } from './services/logging.js';
|
|
10
|
-
const log = createLogger('config');
|
|
11
|
-
// Environment variable helpers
|
|
12
|
-
export function getEnvNumber(key, defaultValue, min, max) {
|
|
13
|
-
const value = process.env[key];
|
|
14
|
-
if (value === undefined) {
|
|
15
|
-
return defaultValue;
|
|
16
|
-
}
|
|
17
|
-
const parsed = parseInt(value, 10);
|
|
18
|
-
if (isNaN(parsed)) {
|
|
19
|
-
return defaultValue;
|
|
20
|
-
}
|
|
21
|
-
if (min !== undefined && parsed < min) {
|
|
22
|
-
log.warning(`${key}=${parsed} is below minimum ${min}. Using default ${defaultValue}.`);
|
|
23
|
-
return defaultValue;
|
|
24
|
-
}
|
|
25
|
-
if (max !== undefined && parsed > max) {
|
|
26
|
-
log.warning(`${key}=${parsed} exceeds maximum ${max}. Using default ${defaultValue}.`);
|
|
27
|
-
return defaultValue;
|
|
28
|
-
}
|
|
29
|
-
return parsed;
|
|
30
|
-
}
|
|
31
|
-
function getEnvString(key, defaultValue) {
|
|
32
|
-
const value = process.env[key] ?? defaultValue;
|
|
33
|
-
// Strip CRLF characters to prevent HTTP header injection
|
|
34
|
-
return value.replace(/[\r\n]/g, '');
|
|
35
|
-
}
|
|
36
8
|
// Server icon (32x32 PNG, document theme, base64 data URI)
|
|
37
9
|
export const SERVER_ICON = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAiUlEQVR4nGNgGAU4QEpKxX9qYpItpwSA9N+58wyOSXYENR0AYw+IA9AdQr4DehgQmEgHYIsGujuA7IRIqQNwOYp8B1ABUOQAOat4svDwcQA1wNB2ACVBPzwcQA0wtB0w4NlwwB1ADTC0HUBu1hs+DqAGGNoOAAbxCVLx8HIANQBZvaMB65qNKAAA5fafYXNsHh0AAAAASUVORK5CYII=';
|
|
38
|
-
// Server metadata (auto-read from package.json)
|
|
39
|
-
const require = createRequire(import.meta.url);
|
|
40
|
-
const pkg = require('../package.json');
|
|
41
|
-
export const SERVER_VERSION = pkg.version;
|
|
42
10
|
// Base URLs
|
|
43
11
|
export const DOCS_BASE_URL = 'https://learn.jamf.com';
|
|
44
12
|
export const DOCS_API_URL = 'https://learn-be.jamf.com';
|
|
@@ -202,59 +170,11 @@ export var OutputMode;
|
|
|
202
170
|
OutputMode["FULL"] = "full";
|
|
203
171
|
OutputMode["COMPACT"] = "compact";
|
|
204
172
|
})(OutputMode || (OutputMode = {}));
|
|
205
|
-
// Cache settings (in milliseconds) - configurable via environment variables
|
|
206
|
-
// Range: 1 minute to 30 days
|
|
207
|
-
const CACHE_TTL_MIN = 60_000;
|
|
208
|
-
const CACHE_TTL_MAX = 30 * 24 * 60 * 60 * 1000;
|
|
209
|
-
export const CACHE_TTL = {
|
|
210
|
-
SEARCH_RESULTS: getEnvNumber('CACHE_TTL_SEARCH', 30 * 60 * 1000, CACHE_TTL_MIN, CACHE_TTL_MAX),
|
|
211
|
-
ARTICLE_CONTENT: getEnvNumber('CACHE_TTL_ARTICLE', 24 * 60 * 60 * 1000, CACHE_TTL_MIN, CACHE_TTL_MAX),
|
|
212
|
-
PRODUCT_LIST: getEnvNumber('CACHE_TTL_PRODUCTS', 7 * 24 * 60 * 60 * 1000, CACHE_TTL_MIN, CACHE_TTL_MAX),
|
|
213
|
-
TOC: getEnvNumber('CACHE_TTL_TOC', 24 * 60 * 60 * 1000, CACHE_TTL_MIN, CACHE_TTL_MAX)
|
|
214
|
-
};
|
|
215
|
-
// Cache memory limits
|
|
216
|
-
export const CACHE_MAX_ENTRIES = getEnvNumber('CACHE_MAX_ENTRIES', 500, 10, 10000);
|
|
217
|
-
// Cache directory - configurable via environment variable with path traversal protection
|
|
218
|
-
const DEFAULT_CACHE_DIR = '.cache';
|
|
219
|
-
// System-sensitive directory prefixes that should not be used as cache directories
|
|
220
|
-
const SENSITIVE_DIR_PREFIXES = ['/etc', '/usr', '/var', '/sys', '/proc', '/dev', '/sbin', '/bin'];
|
|
221
|
-
function getValidatedCacheDir() {
|
|
222
|
-
const raw = getEnvString('CACHE_DIR', DEFAULT_CACHE_DIR);
|
|
223
|
-
const resolved = path.resolve(raw);
|
|
224
|
-
const cwd = process.cwd();
|
|
225
|
-
if (path.isAbsolute(raw)) {
|
|
226
|
-
// Reject absolute paths pointing to system-sensitive directories
|
|
227
|
-
const normalizedResolved = resolved.toLowerCase();
|
|
228
|
-
for (const prefix of SENSITIVE_DIR_PREFIXES) {
|
|
229
|
-
if (normalizedResolved === prefix || normalizedResolved.startsWith(`${prefix}/`)) {
|
|
230
|
-
log.warning(`CACHE_DIR "${raw}" points to a sensitive system directory. Using default "${DEFAULT_CACHE_DIR}".`);
|
|
231
|
-
return DEFAULT_CACHE_DIR;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
// Relative paths must resolve within cwd
|
|
237
|
-
if (!resolved.startsWith(cwd)) {
|
|
238
|
-
log.warning(`CACHE_DIR "${raw}" resolves outside project directory. Using default "${DEFAULT_CACHE_DIR}".`);
|
|
239
|
-
return DEFAULT_CACHE_DIR;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
return raw;
|
|
243
|
-
}
|
|
244
|
-
export const CACHE_DIR = getValidatedCacheDir();
|
|
245
|
-
// Request settings - configurable via environment variables
|
|
246
|
-
export const REQUEST_CONFIG = {
|
|
247
|
-
TIMEOUT: getEnvNumber('REQUEST_TIMEOUT', 15000, 1000, 60000), // 15s (1s-60s)
|
|
248
|
-
MAX_RETRIES: getEnvNumber('MAX_RETRIES', 3, 0, 10), // 3 (0-10)
|
|
249
|
-
RETRY_DELAY: getEnvNumber('RETRY_DELAY', 1000, 100, 30000), // 1s (100ms-30s)
|
|
250
|
-
RATE_LIMIT_DELAY: getEnvNumber('RATE_LIMIT_DELAY', 500, 0, 10000), // 500ms (0-10s)
|
|
251
|
-
USER_AGENT: getEnvString('USER_AGENT', 'JamfDocsMCP/1.0 (https://github.com/GET-Technology-Inc/jamf-docs-mcp-server)')
|
|
252
|
-
};
|
|
253
173
|
// Content limits
|
|
254
174
|
export const CONTENT_LIMITS = {
|
|
255
175
|
MAX_SEARCH_RESULTS: 50,
|
|
256
176
|
DEFAULT_SEARCH_RESULTS: 10,
|
|
257
|
-
FILTER_OVERFETCH_MULTIPLIER: 3, // fetch
|
|
177
|
+
FILTER_OVERFETCH_MULTIPLIER: 3, // fetch 3x when client-side filters need post-filtering
|
|
258
178
|
FILTER_OVERFETCH_CAP: 150, // absolute cap on over-fetched results
|
|
259
179
|
MAX_CONTENT_LENGTH: 100000, // 100KB
|
|
260
180
|
MAX_SNIPPET_LENGTH: 500
|
|
@@ -487,9 +407,9 @@ export const DOC_TYPES = {
|
|
|
487
407
|
labelKey: 'content-gettingstarted',
|
|
488
408
|
},
|
|
489
409
|
};
|
|
490
|
-
// Forward mapping: docType enum value
|
|
410
|
+
// Forward mapping: docType enum value -> API label key
|
|
491
411
|
export const DOC_TYPE_LABEL_MAP = Object.fromEntries(Object.entries(DOC_TYPES).map(([id, dt]) => [id, dt.labelKey]));
|
|
492
|
-
// Reverse mapping: API label key
|
|
412
|
+
// Reverse mapping: API label key -> docType enum value
|
|
493
413
|
export const LABEL_TO_DOC_TYPE = Object.fromEntries(Object.entries(DOC_TYPES).map(([id, dt]) => [dt.labelKey, id]));
|
|
494
414
|
// Derived ID arrays (shared by schemas, completions, etc.)
|
|
495
415
|
export const PRODUCT_IDS = Object.keys(JAMF_PRODUCTS);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,4RAA4R,CAAC;AAExT,YAAY;AACZ,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAExD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IACxB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;IAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;CAChB,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAA0B,CAAC;AAE5F;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAY;IACxE,OAAO,GAAG,aAAa,IAAI,MAAM,WAAW,QAAQ,SAAS,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,QAAgB;IAC9D,OAAO,GAAG,MAAM,WAAW,QAAQ,OAAO,CAAC;AAC7C,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE;QACV,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE,oCAAoC;QAChD,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,aAAa,EAAG,kCAAkC;QAC/D,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAE,0CAA0C;KAClE;IACD,aAAa,EAAE;QACb,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE,uCAAuC;QACnD,QAAQ,EAAE,2BAA2B;QACrC,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,cAAc,EAAE;QACd,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,gCAAgC;QAC7C,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,4BAA4B;QACtC,WAAW,EAAE,iBAAiB;QAC9B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,cAAc,EAAE;QACd,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,6BAA6B;QAC1C,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,4BAA4B;QACtC,WAAW,EAAE,iBAAiB;QAC9B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,UAAU,EAAE;QACV,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,qDAAqD;QAClE,UAAU,EAAE,oCAAoC;QAChD,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+DAA+D;QAC5E,UAAU,EAAE,8CAA8C;QAC1D,QAAQ,EAAE,kCAAkC;QAC5C,WAAW,EAAE,sBAAsB;QACnC,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,eAAe,EAAE;QACf,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,kDAAkD;QAC/D,UAAU,EAAE,yCAAyC;QACrD,QAAQ,EAAE,6BAA6B;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,8CAA8C;QAC1D,QAAQ,EAAE,kCAAkC;QAC5C,WAAW,EAAE,uBAAuB;QACpC,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,6CAA6C;QAC1D,UAAU,EAAE,sCAAsC;QAClD,QAAQ,EAAE,0BAA0B;QACpC,WAAW,EAAE,eAAe;QAC5B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,eAAe,EAAE;QACf,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wDAAwD;QACrE,UAAU,EAAE,yCAAyC;QACrD,QAAQ,EAAE,6BAA6B;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,mBAAmB,EAAE;QACnB,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,+CAA+C;QAC5D,UAAU,EAAE,6CAA6C;QACzD,QAAQ,EAAE,iCAAiC;QAC3C,WAAW,EAAE,sBAAsB;QACnC,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,kBAAkB,EAAE;QAClB,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qDAAqD;QAClE,UAAU,EAAE,8BAA8B;QAC1C,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,oBAAoB;QACjC,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACO,CAAC;AAIX,kBAAkB;AAClB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,6BAA6B;AAC7B,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;AACrB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB,EAAE,EAAE;IACtB,sBAAsB,EAAE,EAAE;IAC1B,2BAA2B,EAAE,CAAC,EAAQ,wDAAwD;IAC9F,oBAAoB,EAAE,GAAG,EAAa,uCAAuC;IAC7E,kBAAkB,EAAE,MAAM,EAAY,QAAQ;IAC9C,kBAAkB,EAAE,GAAG;CACf,CAAC;AAEX,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE,GAAG;IACf,eAAe,EAAE,CAAC,EAAG,mBAAmB;IACxC,oBAAoB,EAAE,CAAC,CAAE,wCAAwC;CACzD,CAAC;AAEX,2BAA2B;AAC3B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,EAAE;IACrB,QAAQ,EAAE,GAAG;CACL,CAAC;AAEX,yFAAyF;AACzF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,kCAAkC;IAClC,YAAY,EAAE;QACZ,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC;KACvJ;IAED,4BAA4B;IAC5B,qBAAqB,EAAE;QACrB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC;KAC1K;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;KACvG;IAED,wBAAwB;IACxB,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,CAAC,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,sBAAsB,CAAC;KAClJ;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,SAAS,CAAC;KAC9H;IAED,8BAA8B;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,WAAW,CAAC;KAC7F;IACD,SAAS,EAAE;QACT,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,CAAC;KAC/F;IACD,OAAO,EAAE;QACP,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,CAAC;KAChI;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC;KACzH;IAED,uBAAuB;IACvB,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC;KAC/F;IAED,mBAAmB;IACnB,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,CAAC;KACtH;IACD,WAAW,EAAE;QACX,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,CAAC;KACxH;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,CAAC;KAC3G;IAED,6CAA6C;IAC7C,mBAAmB,EAAE;QACnB,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,OAAO,CAAC;KACrH;IACD,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;KAC1F;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,CAAC;KAC9I;IAED,oCAAoC;IACpC,KAAK,EAAE;QACL,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC;KAC7F;IACD,MAAM,EAAE;QACN,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC;KACpG;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,CAAC;KACtH;IAED,uBAAuB;IACvB,eAAe,EAAE;QACf,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;KACvH;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;KAC7E;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,CAAC,qBAAqB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC;KACxF;IAED,2BAA2B;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,6BAA6B,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC;KACzH;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,CAAC;KACrG;IAED,gCAAgC;IAChC,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC,WAAW,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC;KACtI;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE,qBAAqB,CAAC;KACnG;IACD,SAAS,EAAE;QACT,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,CAAC;KACjH;IACD,SAAS,EAAE;QACT,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,CAAC;KAC3G;IAED,4BAA4B;IAC5B,KAAK,EAAE;QACL,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC;KACvG;IACD,SAAS,EAAE;QACT,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC;KACpE;IACD,UAAU,EAAE;QACV,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,OAAO,CAAC;KACrF;IAED,6BAA6B;IAC7B,SAAS,EAAE;QACT,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC;KACvF;IACD,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC;KAChF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;KAC9C;IAED,wBAAwB;IACxB,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,uBAAuB,CAAC;KAC3G;IAED,gCAAgC;IAChC,cAAc,EAAE;QACd,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC;KACnI;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC9E;IAED,6BAA6B;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,CAAC;KAC/F;IAED,kCAAkC;IAClC,WAAW,EAAE;QACX,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;KAC7H;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,CAAC;KACzF;CACO,CAAC;AAIX,kEAAkE;AAClE,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,kBAAkB;KAC7B;IACD,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,sBAAsB;KACjC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,kBAAkB;KAC7B;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,uBAAuB;KAClC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,kBAAkB;KAC7B;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,wBAAwB;KACnC;CACO,CAAC;AAEX,uDAAuD;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAA8B,MAAM,CAAC,WAAW,CAC7E,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAClC,CAAC;AAE/B,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAA8B,MAAM,CAAC,WAAW,CAC5E,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAClC,CAAC;AAI/B,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAA0B,CAAC;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAA0B,CAAC;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAA0B,CAAC;AAE5E,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,0DAA0D;IAC1D,OAAO,EAAE,mDAAmD;IAC5D,KAAK,EAAE,IAAI;IAEX,wCAAwC;IACxC,UAAU,EAAE,yDAAyD;IACrE,GAAG,EAAE,6DAA6D;IAElE,kBAAkB;IAClB,OAAO,EAAE,8DAA8D;IAEvE,+CAA+C;IAC/C,MAAM,EAAE,oHAAoH;CACpH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory function to create and configure a fully-registered MCP server.
|
|
3
|
+
*
|
|
4
|
+
* This is runtime-agnostic: it accepts a ServerContext (already wired to
|
|
5
|
+
* platform-specific cache, logger, and metadata implementations) and
|
|
6
|
+
* returns a ready-to-connect McpServer.
|
|
7
|
+
*/
|
|
8
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
import type { ServerContext } from './types/context.js';
|
|
10
|
+
/**
|
|
11
|
+
* Options for createMcpServer
|
|
12
|
+
*/
|
|
13
|
+
export interface CreateServerOptions {
|
|
14
|
+
/** Tool name whitelist. When provided, only listed tools are registered. */
|
|
15
|
+
tools?: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a fully-configured MCP server with all tools, resources, and prompts.
|
|
19
|
+
*
|
|
20
|
+
* @param ctx - Platform-specific server context (cache, metadata, logger, config)
|
|
21
|
+
* @param options - Optional configuration (e.g., tool whitelist)
|
|
22
|
+
* @returns An McpServer ready to be connected to a transport
|
|
23
|
+
*/
|
|
24
|
+
export declare function createMcpServer(ctx: ServerContext, options?: CreateServerOptions): McpServer;
|
|
25
|
+
//# sourceMappingURL=create-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/core/create-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAqCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAgC5F"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory function to create and configure a fully-registered MCP server.
|
|
3
|
+
*
|
|
4
|
+
* This is runtime-agnostic: it accepts a ServerContext (already wired to
|
|
5
|
+
* platform-specific cache, logger, and metadata implementations) and
|
|
6
|
+
* returns a ready-to-connect McpServer.
|
|
7
|
+
*/
|
|
8
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
import { SERVER_ICON } from './constants.js';
|
|
10
|
+
import { registerListProductsTool } from './tools/list-products.js';
|
|
11
|
+
import { registerSearchTool } from './tools/search.js';
|
|
12
|
+
import { registerGetArticleTool } from './tools/get-article.js';
|
|
13
|
+
import { registerGetTocTool } from './tools/get-toc.js';
|
|
14
|
+
import { registerGlossaryLookupTool } from './tools/glossary-lookup.js';
|
|
15
|
+
import { registerBatchGetArticlesTool } from './tools/batch-get-articles.js';
|
|
16
|
+
import { registerResources } from './resources/index.js';
|
|
17
|
+
import { registerPrompts } from './prompts/index.js';
|
|
18
|
+
/** Tool name → registration function mapping */
|
|
19
|
+
const TOOL_REGISTRY = {
|
|
20
|
+
jamf_docs_list_products: registerListProductsTool,
|
|
21
|
+
jamf_docs_search: registerSearchTool,
|
|
22
|
+
jamf_docs_get_article: registerGetArticleTool,
|
|
23
|
+
jamf_docs_get_toc: registerGetTocTool,
|
|
24
|
+
jamf_docs_glossary_lookup: registerGlossaryLookupTool,
|
|
25
|
+
jamf_docs_batch_get_articles: registerBatchGetArticlesTool,
|
|
26
|
+
};
|
|
27
|
+
const SERVER_INSTRUCTIONS = `This server provides access to Jamf official documentation (learn.jamf.com) for Jamf Pro, Jamf School, Jamf Connect, and Jamf Protect.
|
|
28
|
+
|
|
29
|
+
## Tool Usage Order
|
|
30
|
+
1. Use jamf_docs_list_products to discover available products and versions.
|
|
31
|
+
2. Use jamf_docs_search to find relevant articles by keyword. Always search before fetching a full article.
|
|
32
|
+
3. Use jamf_docs_get_article to retrieve full content of a specific article found via search.
|
|
33
|
+
4. Use jamf_docs_get_toc to browse the table of contents for a product.
|
|
34
|
+
5. Use jamf_docs_glossary_lookup to quickly look up Jamf terminology and definitions.
|
|
35
|
+
|
|
36
|
+
## Output Modes
|
|
37
|
+
- Use outputMode: "compact" when browsing or listing results to save tokens.
|
|
38
|
+
- Use outputMode: "full" when reading a specific article in detail.
|
|
39
|
+
|
|
40
|
+
## Token Management
|
|
41
|
+
- Use the maxTokens parameter to control response size (default: 5000, max: 20000).
|
|
42
|
+
- Start with a lower maxTokens value and increase only when more detail is needed.
|
|
43
|
+
- Use summaryOnly: true on jamf_docs_get_article to get an article outline before fetching full content.
|
|
44
|
+
|
|
45
|
+
## Product Filtering
|
|
46
|
+
- When the target Jamf product is known, filter by product ID to narrow results: jamf-pro, jamf-school, jamf-connect, jamf-protect.
|
|
47
|
+
- Combine product and topic filters on jamf_docs_search for the most relevant results.`;
|
|
48
|
+
/**
|
|
49
|
+
* Create a fully-configured MCP server with all tools, resources, and prompts.
|
|
50
|
+
*
|
|
51
|
+
* @param ctx - Platform-specific server context (cache, metadata, logger, config)
|
|
52
|
+
* @param options - Optional configuration (e.g., tool whitelist)
|
|
53
|
+
* @returns An McpServer ready to be connected to a transport
|
|
54
|
+
*/
|
|
55
|
+
export function createMcpServer(ctx, options) {
|
|
56
|
+
const server = new McpServer({
|
|
57
|
+
name: 'jamf-docs-mcp-server',
|
|
58
|
+
version: ctx.config.version,
|
|
59
|
+
icons: [{ src: SERVER_ICON, mimeType: 'image/png', sizes: ['32x32'] }],
|
|
60
|
+
}, {
|
|
61
|
+
instructions: SERVER_INSTRUCTIONS,
|
|
62
|
+
capabilities: {
|
|
63
|
+
logging: {},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
ctx.logger.setServer(server);
|
|
67
|
+
// Register tools (all by default, or filtered by whitelist)
|
|
68
|
+
const toolWhitelist = options?.tools;
|
|
69
|
+
for (const [name, register] of Object.entries(TOOL_REGISTRY)) {
|
|
70
|
+
if (toolWhitelist === undefined || toolWhitelist.includes(name)) {
|
|
71
|
+
register(server, ctx);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Register resources
|
|
75
|
+
registerResources(server, ctx);
|
|
76
|
+
// Register prompts
|
|
77
|
+
registerPrompts(server);
|
|
78
|
+
return server;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=create-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/core/create-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUrD,gDAAgD;AAChD,MAAM,aAAa,GAGf;IACF,uBAAuB,EAAE,wBAAwB;IACjD,gBAAgB,EAAE,kBAAkB;IACpC,qBAAqB,EAAE,sBAAsB;IAC7C,iBAAiB,EAAE,kBAAkB;IACrC,yBAAyB,EAAE,0BAA0B;IACrD,4BAA4B,EAAE,4BAA4B;CAC3D,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;uFAoB2D,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,GAAkB,EAAE,OAA6B;IAC/E,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO;QAC3B,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACvE,EACD;QACE,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE;YACZ,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAEF,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE7B,4DAA4D;IAC5D,MAAM,aAAa,GAAG,OAAO,EAAE,KAAK,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B,mBAAmB;IACnB,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-agnostic HTTP client using the global fetch API.
|
|
3
|
+
* No Node.js built-in imports — works in any environment with global fetch.
|
|
4
|
+
*/
|
|
5
|
+
export declare class HttpError extends Error {
|
|
6
|
+
readonly status: number;
|
|
7
|
+
readonly statusText: string;
|
|
8
|
+
readonly url: string;
|
|
9
|
+
constructor(status: number, statusText: string, url: string);
|
|
10
|
+
get isRetryable(): boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface HttpGetOptions {
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
timeout?: number;
|
|
15
|
+
params?: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
export declare function httpGetText(url: string, options?: HttpGetOptions): Promise<string>;
|
|
18
|
+
export declare function httpGetJson<T>(url: string, options?: HttpGetOptions): Promise<T>;
|
|
19
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/core/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAQ3D,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAYD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,WAAW,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC,CAsBZ"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-agnostic HTTP client using the global fetch API.
|
|
3
|
+
* No Node.js built-in imports — works in any environment with global fetch.
|
|
4
|
+
*/
|
|
5
|
+
export class HttpError extends Error {
|
|
6
|
+
status;
|
|
7
|
+
statusText;
|
|
8
|
+
url;
|
|
9
|
+
constructor(status, statusText, url) {
|
|
10
|
+
super(`HTTP ${status} ${statusText}: ${url}`);
|
|
11
|
+
this.name = 'HttpError';
|
|
12
|
+
this.status = status;
|
|
13
|
+
this.statusText = statusText;
|
|
14
|
+
this.url = url;
|
|
15
|
+
}
|
|
16
|
+
get isRetryable() {
|
|
17
|
+
return this.status === 429 || this.status >= 500;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const DEFAULT_TIMEOUT = 15000;
|
|
21
|
+
function appendQueryParams(url, params) {
|
|
22
|
+
const parsed = new URL(url);
|
|
23
|
+
for (const [key, value] of Object.entries(params)) {
|
|
24
|
+
parsed.searchParams.set(key, value);
|
|
25
|
+
}
|
|
26
|
+
return parsed.toString();
|
|
27
|
+
}
|
|
28
|
+
export async function httpGetText(url, options) {
|
|
29
|
+
const timeout = options?.timeout ?? DEFAULT_TIMEOUT;
|
|
30
|
+
const targetUrl = options?.params !== undefined
|
|
31
|
+
? appendQueryParams(url, options.params)
|
|
32
|
+
: url;
|
|
33
|
+
const response = await fetch(targetUrl, {
|
|
34
|
+
method: 'GET',
|
|
35
|
+
...(options?.headers !== undefined ? { headers: options.headers } : {}),
|
|
36
|
+
signal: AbortSignal.timeout(timeout),
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
throw new HttpError(response.status, response.statusText, targetUrl);
|
|
40
|
+
}
|
|
41
|
+
return await response.text();
|
|
42
|
+
}
|
|
43
|
+
export async function httpGetJson(url, options) {
|
|
44
|
+
const timeout = options?.timeout ?? DEFAULT_TIMEOUT;
|
|
45
|
+
const targetUrl = options?.params !== undefined
|
|
46
|
+
? appendQueryParams(url, options.params)
|
|
47
|
+
: url;
|
|
48
|
+
const headers = {
|
|
49
|
+
Accept: 'application/json',
|
|
50
|
+
...options?.headers,
|
|
51
|
+
};
|
|
52
|
+
const response = await fetch(targetUrl, {
|
|
53
|
+
method: 'GET',
|
|
54
|
+
headers,
|
|
55
|
+
signal: AbortSignal.timeout(timeout),
|
|
56
|
+
});
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
throw new HttpError(response.status, response.statusText, targetUrl);
|
|
59
|
+
}
|
|
60
|
+
return await response.json();
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/core/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core barrel file — public API for the runtime-agnostic core.
|
|
3
|
+
*
|
|
4
|
+
* Platform adapters (e.g. src/platforms/node/) and the entry-point
|
|
5
|
+
* (src/index.ts) should import from here rather than reaching into
|
|
6
|
+
* internal modules.
|
|
7
|
+
*/
|
|
8
|
+
export { createMcpServer } from './create-server.js';
|
|
9
|
+
export type { CreateServerOptions } from './create-server.js';
|
|
10
|
+
export type { CacheProvider, CacheStats, MetadataStore, ProductMetadata, TopicMetadata, TocEntry as TocEntryInterface, TocData, Logger, LoggerFactory, SearchProvider, ArticleProvider, GlossaryProvider, TocProvider, } from './services/interfaces/index.js';
|
|
11
|
+
export type { ServerConfig, CacheTtlConfig, RequestConfig, CacheConfig, CorsConfig, } from './config.js';
|
|
12
|
+
export { createDefaultConfig } from './config.js';
|
|
13
|
+
export type { ServerContext } from './types/context.js';
|
|
14
|
+
export { httpGetText, httpGetJson, HttpError } from './http-client.js';
|
|
15
|
+
export type { HttpGetOptions } from './http-client.js';
|
|
16
|
+
export { DOCS_BASE_URL, DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS, DOC_TYPES, DOC_TYPE_LABEL_MAP, LABEL_TO_DOC_TYPE, PRODUCT_IDS, TOPIC_IDS, DOC_TYPE_IDS, SELECTORS, SERVER_ICON, SUPPORTED_LOCALES, SUPPORTED_LOCALE_IDS, DEFAULT_LOCALE, ResponseFormat, OutputMode, CONTENT_LIMITS, TOKEN_CONFIG, PAGINATION_CONFIG, buildDocUrl, buildUrlPattern, } from './constants.js';
|
|
17
|
+
export type { ProductId, TopicId, DocTypeId, LocaleId, } from './constants.js';
|
|
18
|
+
export { registerSearchTool } from './tools/search.js';
|
|
19
|
+
export { registerGetArticleTool } from './tools/get-article.js';
|
|
20
|
+
export { registerListProductsTool } from './tools/list-products.js';
|
|
21
|
+
export { registerGetTocTool } from './tools/get-toc.js';
|
|
22
|
+
export { registerGlossaryLookupTool } from './tools/glossary-lookup.js';
|
|
23
|
+
export { registerBatchGetArticlesTool } from './tools/batch-get-articles.js';
|
|
24
|
+
export type { SearchDocumentationResult, FetchArticleResult, FetchArticleOptions, FetchTocResult, FetchTocOptions, } from './services/scraper.js';
|
|
25
|
+
export type { TokenInfo, PaginationInfo, ArticleSection, JamfProduct, ProductInfo, ProductListResponse, SearchParams, SearchResult, SearchResponse, FilterRelaxation, TruncatedContentInfo, GetArticleParams, ParsedArticle, ArticleResponse, GlossaryEntry, GlossaryLookupResult, GetTocParams, TocEntry, TocResponse, CacheEntry, CacheOptions, ToolResult, } from './types.js';
|
|
26
|
+
export { JamfDocsError, JamfDocsErrorCode, } from './types.js';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,YAAY,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,IAAI,iBAAiB,EAC7B,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,gCAAgC,CAAC;AAMxC,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,UAAU,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAM7E,YAAY,EACV,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAM/B,YAAY,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|