@get-technology-inc/jamf-docs-mcp-server 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/completions.d.ts +13 -0
  2. package/dist/completions.d.ts.map +1 -0
  3. package/dist/completions.js +31 -0
  4. package/dist/completions.js.map +1 -0
  5. package/dist/constants.d.ts +119 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +178 -13
  8. package/dist/constants.js.map +1 -1
  9. package/dist/index.js +43 -7
  10. package/dist/index.js.map +1 -1
  11. package/dist/prompts/compare-versions.d.ts +7 -0
  12. package/dist/prompts/compare-versions.d.ts.map +1 -0
  13. package/dist/prompts/compare-versions.js +56 -0
  14. package/dist/prompts/compare-versions.js.map +1 -0
  15. package/dist/prompts/index.d.ts +6 -0
  16. package/dist/prompts/index.d.ts.map +1 -0
  17. package/dist/prompts/index.js +12 -0
  18. package/dist/prompts/index.js.map +1 -0
  19. package/dist/prompts/setup-guide.d.ts +7 -0
  20. package/dist/prompts/setup-guide.d.ts.map +1 -0
  21. package/dist/prompts/setup-guide.js +53 -0
  22. package/dist/prompts/setup-guide.js.map +1 -0
  23. package/dist/prompts/troubleshoot.d.ts +7 -0
  24. package/dist/prompts/troubleshoot.d.ts.map +1 -0
  25. package/dist/prompts/troubleshoot.js +52 -0
  26. package/dist/prompts/troubleshoot.js.map +1 -0
  27. package/dist/resources/index.d.ts.map +1 -1
  28. package/dist/resources/index.js +78 -2
  29. package/dist/resources/index.js.map +1 -1
  30. package/dist/schemas/index.d.ts +10 -7
  31. package/dist/schemas/index.d.ts.map +1 -1
  32. package/dist/schemas/index.js +18 -16
  33. package/dist/schemas/index.js.map +1 -1
  34. package/dist/schemas/output.d.ts +63 -0
  35. package/dist/schemas/output.d.ts.map +1 -0
  36. package/dist/schemas/output.js +63 -0
  37. package/dist/schemas/output.js.map +1 -0
  38. package/dist/services/cache.d.ts +37 -3
  39. package/dist/services/cache.d.ts.map +1 -1
  40. package/dist/services/cache.js +139 -15
  41. package/dist/services/cache.js.map +1 -1
  42. package/dist/services/metadata.d.ts.map +1 -1
  43. package/dist/services/metadata.js +22 -9
  44. package/dist/services/metadata.js.map +1 -1
  45. package/dist/services/scraper.d.ts +1 -0
  46. package/dist/services/scraper.d.ts.map +1 -1
  47. package/dist/services/scraper.js +59 -10
  48. package/dist/services/scraper.js.map +1 -1
  49. package/dist/tools/get-article.d.ts.map +1 -1
  50. package/dist/tools/get-article.js +36 -10
  51. package/dist/tools/get-article.js.map +1 -1
  52. package/dist/tools/get-toc.d.ts.map +1 -1
  53. package/dist/tools/get-toc.js +37 -7
  54. package/dist/tools/get-toc.js.map +1 -1
  55. package/dist/tools/list-products.d.ts.map +1 -1
  56. package/dist/tools/list-products.js +23 -12
  57. package/dist/tools/list-products.js.map +1 -1
  58. package/dist/tools/search.d.ts.map +1 -1
  59. package/dist/tools/search.js +50 -17
  60. package/dist/tools/search.js.map +1 -1
  61. package/dist/transport/http.d.ts +12 -0
  62. package/dist/transport/http.d.ts.map +1 -0
  63. package/dist/transport/http.js +297 -0
  64. package/dist/transport/http.js.map +1 -0
  65. package/dist/transport/index.d.ts +13 -0
  66. package/dist/transport/index.d.ts.map +1 -0
  67. package/dist/transport/index.js +40 -0
  68. package/dist/transport/index.js.map +1 -0
  69. package/dist/types.d.ts +5 -2
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/types.js.map +1 -1
  72. package/dist/utils/doc-type.d.ts +9 -0
  73. package/dist/utils/doc-type.d.ts.map +1 -0
  74. package/dist/utils/doc-type.js +16 -0
  75. package/dist/utils/doc-type.js.map +1 -0
  76. package/dist/utils/progress.d.ts +13 -0
  77. package/dist/utils/progress.d.ts.map +1 -0
  78. package/dist/utils/progress.js +18 -0
  79. package/dist/utils/progress.js.map +1 -0
  80. package/dist/utils/sanitize.d.ts +30 -0
  81. package/dist/utils/sanitize.d.ts.map +1 -0
  82. package/dist/utils/sanitize.js +57 -0
  83. package/dist/utils/sanitize.js.map +1 -0
  84. package/dist/utils/url.d.ts +11 -0
  85. package/dist/utils/url.d.ts.map +1 -0
  86. package/dist/utils/url.js +23 -0
  87. package/dist/utils/url.js.map +1 -0
  88. package/package.json +7 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-versions.js","sourceRoot":"","sources":["../../src/prompts/compare-versions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,6BAA6B,CAAC,MAAiB;IAC7D,MAAM,CAAC,cAAc,CACnB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,kFAAkF;QACpF,UAAU,EAAE;YACV,OAAO,EAAE,WAAW,CAClB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAC1B,qEAAqE,CACtE,EACD,eAAe,CAChB;YACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACnF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;SACtF;KACF,EACD,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,kDAAkD,QAAQ,QAAQ,QAAQ,OAAO,OAAO;;;;;6CAK/D,OAAO,kBAAkB,QAAQ,+BAA+B,QAAQ;;;;6BAIxF,QAAQ;6BACR,QAAQ;;;;;;;;oCAQD,QAAQ;;;;;WAKjC,OAAO;aACL,QAAQ;aACR,QAAQ,EAAE;qBACV;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * MCP Prompt registration
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ export declare function registerPrompts(server: McpServer): void;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIvD"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MCP Prompt registration
3
+ */
4
+ import { registerTroubleshootPrompt } from './troubleshoot.js';
5
+ import { registerSetupGuidePrompt } from './setup-guide.js';
6
+ import { registerCompareVersionsPrompt } from './compare-versions.js';
7
+ export function registerPrompts(server) {
8
+ registerTroubleshootPrompt(server);
9
+ registerSetupGuidePrompt(server);
10
+ registerCompareVersionsPrompt(server);
11
+ }
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,6BAA6B,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * jamf_setup_guide prompt
3
+ * Guides AI through creating a setup guide from Jamf documentation.
4
+ */
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ export declare function registerSetupGuidePrompt(server: McpServer): void;
7
+ //# sourceMappingURL=setup-guide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-guide.d.ts","sourceRoot":"","sources":["../../src/prompts/setup-guide.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsDhE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * jamf_setup_guide prompt
3
+ * Guides AI through creating a setup guide from Jamf documentation.
4
+ */
5
+ import { z } from 'zod';
6
+ import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
7
+ import { completeProduct } from '../completions.js';
8
+ export function registerSetupGuidePrompt(server) {
9
+ server.registerPrompt('jamf_setup_guide', {
10
+ title: 'Jamf Setup Guide',
11
+ description: 'Generate a step-by-step setup guide for a Jamf feature using official documentation',
12
+ argsSchema: {
13
+ feature: z.string().max(2000).describe('The feature or capability to set up'),
14
+ product: completable(z.string().optional().describe('Jamf product ID (jamf-pro, jamf-school, jamf-connect, jamf-protect)'), completeProduct),
15
+ },
16
+ }, ({ feature, product }) => {
17
+ const productFilter = product !== undefined && product !== ''
18
+ ? `, product: "${product}"`
19
+ : '';
20
+ return {
21
+ messages: [
22
+ {
23
+ role: 'user',
24
+ content: {
25
+ type: 'text',
26
+ text: `I need a step-by-step setup guide for: "${feature}"
27
+
28
+ Please follow these steps using the Jamf documentation tools:
29
+
30
+ 1. **Search for setup documentation**
31
+ Use \`jamf_docs_search\` with query related to "${feature}" setup/configuration${productFilter !== '' ? ` and filter by ${productFilter}` : ''}.
32
+
33
+ 2. **Find the primary setup article**
34
+ Review search results and use \`jamf_docs_get_article\` with \`summaryOnly: true\` to identify the main setup/configuration article.
35
+
36
+ 3. **Extract detailed steps**
37
+ Use \`jamf_docs_get_article\` to get the full content of the primary article. If it's long, use the \`section\` parameter to fetch specific sections like "Prerequisites" or "Configuration".
38
+
39
+ 4. **Compile the setup guide**
40
+ Based on the documentation, provide:
41
+ - Prerequisites and requirements
42
+ - Step-by-step setup instructions
43
+ - Configuration options and recommendations
44
+ - Verification steps to confirm successful setup
45
+
46
+ Feature: ${feature}${product !== undefined && product !== '' ? `\nProduct: ${product}` : ''}`,
47
+ },
48
+ },
49
+ ],
50
+ };
51
+ });
52
+ }
53
+ //# sourceMappingURL=setup-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-guide.js","sourceRoot":"","sources":["../../src/prompts/setup-guide.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,cAAc,CACnB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,qFAAqF;QACvF,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC7E,OAAO,EAAE,WAAW,CAClB,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5B,qEAAqE,CACtE,EACD,eAAe,CAChB;SACF;KACF,EACD,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACvB,MAAM,aAAa,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;YAC3D,CAAC,CAAC,eAAe,OAAO,GAAG;YAC3B,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,2CAA2C,OAAO;;;;;qDAKjB,OAAO,wBAAwB,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;WAetI,OAAO,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;qBAChF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * jamf_troubleshoot prompt
3
+ * Guides AI through a troubleshooting workflow using Jamf documentation.
4
+ */
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ export declare function registerTroubleshootPrompt(server: McpServer): void;
7
+ //# sourceMappingURL=troubleshoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"troubleshoot.d.ts","sourceRoot":"","sources":["../../src/prompts/troubleshoot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDlE"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * jamf_troubleshoot prompt
3
+ * Guides AI through a troubleshooting workflow using Jamf documentation.
4
+ */
5
+ import { z } from 'zod';
6
+ import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
7
+ import { completeProduct } from '../completions.js';
8
+ export function registerTroubleshootPrompt(server) {
9
+ server.registerPrompt('jamf_troubleshoot', {
10
+ title: 'Troubleshoot Jamf Issue',
11
+ description: 'Guide through troubleshooting a Jamf issue using official documentation',
12
+ argsSchema: {
13
+ problem: z.string().max(2000).describe('Description of the issue to troubleshoot'),
14
+ product: completable(z.string().optional().describe('Jamf product ID (jamf-pro, jamf-school, jamf-connect, jamf-protect)'), completeProduct),
15
+ },
16
+ }, ({ problem, product }) => {
17
+ const productFilter = product !== undefined && product !== ''
18
+ ? `, product: "${product}"`
19
+ : '';
20
+ return {
21
+ messages: [
22
+ {
23
+ role: 'user',
24
+ content: {
25
+ type: 'text',
26
+ text: `I need help troubleshooting a Jamf issue: "${problem}"
27
+
28
+ Please follow these steps using the Jamf documentation tools:
29
+
30
+ 1. **Search for relevant documentation**
31
+ Use \`jamf_docs_search\` with query based on the problem description${productFilter !== '' ? ` and filter by ${productFilter}` : ''}.
32
+
33
+ 2. **Review the most relevant articles**
34
+ For each promising search result, use \`jamf_docs_get_article\` with \`summaryOnly: true\` to quickly assess relevance.
35
+
36
+ 3. **Deep dive into the solution**
37
+ For the most relevant article(s), use \`jamf_docs_get_article\` with the full content to find specific troubleshooting steps.
38
+
39
+ 4. **Provide a structured diagnosis**
40
+ Based on the documentation, provide:
41
+ - Likely root cause(s)
42
+ - Step-by-step resolution
43
+ - Related articles for further reference
44
+
45
+ Problem: ${problem}${product !== undefined && product !== '' ? `\nProduct: ${product}` : ''}`,
46
+ },
47
+ },
48
+ ],
49
+ };
50
+ });
51
+ }
52
+ //# sourceMappingURL=troubleshoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"troubleshoot.js","sourceRoot":"","sources":["../../src/prompts/troubleshoot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,cAAc,CACnB,mBAAmB,EACnB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,yEAAyE;QACtF,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YAClF,OAAO,EAAE,WAAW,CAClB,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5B,qEAAqE,CACtE,EACD,eAAe,CAChB;SACF;KACF,EACD,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACvB,MAAM,aAAa,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;YAC3D,CAAC,CAAC,eAAe,OAAO,GAAG;YAC3B,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8CAA8C,OAAO;;;;;yEAKA,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;WAc3H,OAAO,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;qBAChF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4CzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCzE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoHzD"}
@@ -5,7 +5,28 @@
5
5
  * without needing to call tools. Data is fetched from the API
6
6
  * with fallback to static constants.
7
7
  */
8
- import { getProductsResourceData, getTopicsResourceData } from '../services/metadata.js';
8
+ import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ import { JAMF_PRODUCTS } from '../constants.js';
10
+ import { getProductsResourceData, getTopicsResourceData, getAvailableVersions } from '../services/metadata.js';
11
+ import { fetchTableOfContents } from '../services/scraper.js';
12
+ import { completeProduct } from '../completions.js';
13
+ function validateProductId(productId, uri) {
14
+ const productIdStr = String(productId);
15
+ if (productIdStr in JAMF_PRODUCTS) {
16
+ return { valid: true, id: productIdStr };
17
+ }
18
+ const validIds = Object.keys(JAMF_PRODUCTS).join(', ');
19
+ return {
20
+ valid: false,
21
+ errorResponse: {
22
+ contents: [{
23
+ uri: uri.href,
24
+ mimeType: 'text/plain',
25
+ text: `Invalid product ID: "${productIdStr}". Valid products: ${validIds}`,
26
+ }],
27
+ },
28
+ };
29
+ }
9
30
  /**
10
31
  * Register all MCP resources
11
32
  */
@@ -40,6 +61,61 @@ export function registerResources(server) {
40
61
  }]
41
62
  };
42
63
  });
43
- console.error('Registered resources: jamf://products, jamf://topics');
64
+ // Resource template: Product-specific TOC
65
+ server.registerResource('product-toc', new ResourceTemplate('jamf://products/{productId}/toc', {
66
+ list: undefined,
67
+ complete: { productId: completeProduct },
68
+ }), {
69
+ title: 'Product Table of Contents',
70
+ description: 'Table of contents for a specific Jamf product documentation',
71
+ mimeType: 'application/json',
72
+ }, async (uri, { productId }) => {
73
+ const validation = validateProductId(productId, uri);
74
+ if (!validation.valid) {
75
+ return validation.errorResponse;
76
+ }
77
+ const tocResult = await fetchTableOfContents(validation.id, 'current', {
78
+ maxTokens: 20000,
79
+ });
80
+ return {
81
+ contents: [{
82
+ uri: uri.href,
83
+ mimeType: 'application/json',
84
+ text: JSON.stringify({
85
+ product: JAMF_PRODUCTS[validation.id].name,
86
+ totalEntries: tocResult.pagination.totalItems,
87
+ toc: tocResult.toc,
88
+ }, null, 2),
89
+ }],
90
+ };
91
+ });
92
+ // Resource template: Product-specific versions
93
+ server.registerResource('product-versions', new ResourceTemplate('jamf://products/{productId}/versions', {
94
+ list: undefined,
95
+ complete: { productId: completeProduct },
96
+ }), {
97
+ title: 'Product Documentation Versions',
98
+ description: 'Available documentation versions for a specific Jamf product',
99
+ mimeType: 'application/json',
100
+ }, async (uri, { productId }) => {
101
+ const validation = validateProductId(productId, uri);
102
+ if (!validation.valid) {
103
+ return validation.errorResponse;
104
+ }
105
+ const versions = await getAvailableVersions(validation.id);
106
+ return {
107
+ contents: [{
108
+ uri: uri.href,
109
+ mimeType: 'application/json',
110
+ text: JSON.stringify({
111
+ product: JAMF_PRODUCTS[validation.id].name,
112
+ productId: validation.id,
113
+ versions,
114
+ latestVersion: JAMF_PRODUCTS[validation.id].latestVersion,
115
+ }, null, 2),
116
+ }],
117
+ };
118
+ });
119
+ console.error('Registered resources: jamf://products, jamf://topics,', 'jamf://products/{productId}/toc, jamf://products/{productId}/versions');
44
120
  }
45
121
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,4CAA4C;IAC5C,MAAM,CAAC,gBAAgB,CACrB,UAAU,EACV,iBAAiB,EACjB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,uKAAuK;QACpL,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC7C,OAAO;YACL,QAAQ,EAAE,CAAC;oBACT,GAAG,EAAE,iBAAiB;oBACtB,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,0CAA0C;IAC1C,MAAM,CAAC,gBAAgB,CACrB,QAAQ,EACR,eAAe,EACf;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,iHAAiH;QAC9H,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC3C,OAAO;YACL,QAAQ,EAAE,CAAC;oBACT,GAAG,EAAE,eAAe;oBACpB,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
@@ -17,13 +17,16 @@ export type ListProductsInput = z.infer<typeof ListProductsInputSchema>;
17
17
  */
18
18
  export declare const SearchInputSchema: z.ZodObject<{
19
19
  query: z.ZodString;
20
- product: z.ZodOptional<z.ZodEnum<{
20
+ product: import("@modelcontextprotocol/sdk/server/completable.js").CompletableSchema<z.ZodOptional<z.ZodEnum<{
21
21
  [x: string]: string;
22
- }>>;
23
- topic: z.ZodOptional<z.ZodEnum<{
22
+ }>>>;
23
+ topic: import("@modelcontextprotocol/sdk/server/completable.js").CompletableSchema<z.ZodOptional<z.ZodEnum<{
24
+ [x: string]: string;
25
+ }>>>;
26
+ version: import("@modelcontextprotocol/sdk/server/completable.js").CompletableSchema<z.ZodOptional<z.ZodString>>;
27
+ docType: z.ZodOptional<z.ZodEnum<{
24
28
  [x: string]: string;
25
29
  }>>;
26
- version: z.ZodOptional<z.ZodString>;
27
30
  limit: z.ZodDefault<z.ZodNumber>;
28
31
  page: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
29
32
  maxTokens: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
@@ -48,10 +51,10 @@ export type GetArticleInput = z.infer<typeof GetArticleInputSchema>;
48
51
  * Schema for jamf_docs_get_toc
49
52
  */
50
53
  export declare const GetTocInputSchema: z.ZodObject<{
51
- product: z.ZodEnum<{
54
+ product: import("@modelcontextprotocol/sdk/server/completable.js").CompletableSchema<z.ZodEnum<{
52
55
  [x: string]: string;
53
- }>;
54
- version: z.ZodOptional<z.ZodString>;
56
+ }>>;
57
+ version: import("@modelcontextprotocol/sdk/server/completable.js").CompletableSchema<z.ZodOptional<z.ZodString>>;
55
58
  page: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
56
59
  maxTokens: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
57
60
  outputMode: z.ZodDefault<z.ZodEnum<typeof OutputMode>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EACd,UAAU,EAMX,MAAM,iBAAiB,CAAC;AA8BzB;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;kBAYzB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;kBAwCnB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;kBAgCvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;kBAuBnB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,UAAU,EAOX,MAAM,iBAAiB,CAAC;AA0BzB;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;kBAYzB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;kBAqDnB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;kBAgCvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;kBA6BnB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -2,11 +2,10 @@
2
2
  * Zod schemas for input validation
3
3
  */
4
4
  import { z } from 'zod';
5
- import { ResponseFormat, OutputMode, JAMF_PRODUCTS, CONTENT_LIMITS, TOKEN_CONFIG, PAGINATION_CONFIG, JAMF_TOPICS } from '../constants.js';
6
- // Valid product IDs
7
- const productIds = Object.keys(JAMF_PRODUCTS);
8
- // Valid topic IDs
9
- const topicIds = Object.keys(JAMF_TOPICS);
5
+ import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
6
+ import { ResponseFormat, OutputMode, CONTENT_LIMITS, TOKEN_CONFIG, PAGINATION_CONFIG, PRODUCT_IDS, TOPIC_IDS, DOC_TYPE_IDS } from '../constants.js';
7
+ import { completeProduct, completeTopic, completeVersion } from '../completions.js';
8
+ import { isAllowedHostname } from '../utils/url.js';
10
9
  // Response format enum
11
10
  const ResponseFormatSchema = z.nativeEnum(ResponseFormat);
12
11
  // Output mode enum
@@ -47,15 +46,18 @@ export const SearchInputSchema = z.object({
47
46
  .min(2, 'Query must be at least 2 characters')
48
47
  .max(200, 'Query must not exceed 200 characters')
49
48
  .describe('Search keywords to find in Jamf documentation'),
50
- product: z.enum(productIds)
49
+ product: completable(z.enum(PRODUCT_IDS)
51
50
  .optional()
52
- .describe('Filter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect'),
53
- topic: z.enum(topicIds)
51
+ .describe('Filter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect'), completeProduct),
52
+ topic: completable(z.enum(TOPIC_IDS)
54
53
  .optional()
55
- .describe('Filter by topic: enrollment, profiles, security, inventory, policies, smart-groups, apps, identity, api, network'),
56
- version: z.string()
54
+ .describe('Filter by topic: enrollment, profiles, security, inventory, policies, smart-groups, apps, identity, api, network'), completeTopic),
55
+ version: completable(z.string()
57
56
  .optional()
58
- .describe('Filter by version (e.g., "11.5.0", "10.x")'),
57
+ .describe('Filter by version (e.g., "11.5.0", "10.x")'), completeVersion),
58
+ docType: z.enum(DOC_TYPE_IDS)
59
+ .optional()
60
+ .describe('Filter by document type: documentation, release-notes, install-guide, technical-paper, configuration-guide, training'),
59
61
  limit: z.number()
60
62
  .int()
61
63
  .min(1)
@@ -81,7 +83,7 @@ export const SearchInputSchema = z.object({
81
83
  export const GetArticleInputSchema = z.object({
82
84
  url: z.string()
83
85
  .url('Must be a valid URL')
84
- .refine((url) => url.includes('docs.jamf.com') || url.includes('learn.jamf.com'), 'URL must be from docs.jamf.com or learn.jamf.com')
86
+ .refine((url) => isAllowedHostname(url), 'URL must be from docs.jamf.com or learn.jamf.com')
85
87
  .describe('Full URL of the Jamf documentation article'),
86
88
  section: z.string()
87
89
  .optional()
@@ -106,11 +108,11 @@ export const GetArticleInputSchema = z.object({
106
108
  * Schema for jamf_docs_get_toc
107
109
  */
108
110
  export const GetTocInputSchema = z.object({
109
- product: z.enum(productIds)
110
- .describe('Product ID: jamf-pro, jamf-school, jamf-connect, jamf-protect'),
111
- version: z.string()
111
+ product: completable(z.enum(PRODUCT_IDS)
112
+ .describe('Product ID: jamf-pro, jamf-school, jamf-connect, jamf-protect'), completeProduct),
113
+ version: completable(z.string()
112
114
  .optional()
113
- .describe('Specific version (defaults to latest)'),
115
+ .describe('Specific version (defaults to latest)'), completeVersion),
114
116
  page: PageSchema
115
117
  .optional()
116
118
  .describe(`Page number for pagination (1-${PAGINATION_CONFIG.MAX_PAGE}, default: 1)`),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Zod output schemas for structured tool output (outputSchema + structuredContent)
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const ProductListOutputSchema: z.ZodObject<{
6
+ products: z.ZodArray<z.ZodObject<{
7
+ id: z.ZodString;
8
+ name: z.ZodString;
9
+ description: z.ZodString;
10
+ currentVersion: z.ZodString;
11
+ availableVersions: z.ZodArray<z.ZodString>;
12
+ }, z.core.$strip>>;
13
+ topics: z.ZodArray<z.ZodObject<{
14
+ id: z.ZodString;
15
+ name: z.ZodString;
16
+ keywords: z.ZodArray<z.ZodString>;
17
+ }, z.core.$strip>>;
18
+ }, z.core.$strip>;
19
+ export declare const SearchOutputSchema: z.ZodObject<{
20
+ query: z.ZodString;
21
+ totalResults: z.ZodNumber;
22
+ page: z.ZodNumber;
23
+ totalPages: z.ZodNumber;
24
+ hasMore: z.ZodBoolean;
25
+ results: z.ZodArray<z.ZodObject<{
26
+ title: z.ZodString;
27
+ url: z.ZodString;
28
+ snippet: z.ZodString;
29
+ product: z.ZodString;
30
+ version: z.ZodOptional<z.ZodString>;
31
+ docType: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strip>>;
33
+ suggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ }, z.core.$strip>;
35
+ export declare const ArticleOutputSchema: z.ZodObject<{
36
+ title: z.ZodString;
37
+ url: z.ZodString;
38
+ content: z.ZodString;
39
+ product: z.ZodOptional<z.ZodString>;
40
+ version: z.ZodOptional<z.ZodString>;
41
+ lastUpdated: z.ZodOptional<z.ZodString>;
42
+ breadcrumb: z.ZodOptional<z.ZodArray<z.ZodString>>;
43
+ sections: z.ZodArray<z.ZodObject<{
44
+ id: z.ZodString;
45
+ title: z.ZodString;
46
+ level: z.ZodNumber;
47
+ tokenCount: z.ZodNumber;
48
+ }, z.core.$strip>>;
49
+ truncated: z.ZodBoolean;
50
+ }, z.core.$strip>;
51
+ export declare const TocOutputSchema: z.ZodObject<{
52
+ product: z.ZodString;
53
+ version: z.ZodString;
54
+ totalEntries: z.ZodNumber;
55
+ page: z.ZodNumber;
56
+ totalPages: z.ZodNumber;
57
+ hasMore: z.ZodBoolean;
58
+ entries: z.ZodArray<z.ZodObject<{
59
+ title: z.ZodString;
60
+ url: z.ZodString;
61
+ }, z.core.$strip>>;
62
+ }, z.core.$strip>;
63
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;iBAalC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;iBAe7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;iBAe9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;iBAW1B,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Zod output schemas for structured tool output (outputSchema + structuredContent)
3
+ */
4
+ import { z } from 'zod';
5
+ export const ProductListOutputSchema = z.object({
6
+ products: z.array(z.object({
7
+ id: z.string(),
8
+ name: z.string(),
9
+ description: z.string(),
10
+ currentVersion: z.string(),
11
+ availableVersions: z.array(z.string()),
12
+ })),
13
+ topics: z.array(z.object({
14
+ id: z.string(),
15
+ name: z.string(),
16
+ keywords: z.array(z.string()),
17
+ })),
18
+ });
19
+ export const SearchOutputSchema = z.object({
20
+ query: z.string(),
21
+ totalResults: z.number(),
22
+ page: z.number(),
23
+ totalPages: z.number(),
24
+ hasMore: z.boolean(),
25
+ results: z.array(z.object({
26
+ title: z.string(),
27
+ url: z.string(),
28
+ snippet: z.string(),
29
+ product: z.string(),
30
+ version: z.string().optional(),
31
+ docType: z.string().optional(),
32
+ })),
33
+ suggestions: z.array(z.string()).optional(),
34
+ });
35
+ export const ArticleOutputSchema = z.object({
36
+ title: z.string(),
37
+ url: z.string(),
38
+ content: z.string(),
39
+ product: z.string().optional(),
40
+ version: z.string().optional(),
41
+ lastUpdated: z.string().optional(),
42
+ breadcrumb: z.array(z.string()).optional(),
43
+ sections: z.array(z.object({
44
+ id: z.string(),
45
+ title: z.string(),
46
+ level: z.number(),
47
+ tokenCount: z.number(),
48
+ })),
49
+ truncated: z.boolean(),
50
+ });
51
+ export const TocOutputSchema = z.object({
52
+ product: z.string(),
53
+ version: z.string(),
54
+ totalEntries: z.number(),
55
+ page: z.number(),
56
+ totalPages: z.number(),
57
+ hasMore: z.boolean(),
58
+ entries: z.array(z.object({
59
+ title: z.string(),
60
+ url: z.string(),
61
+ })),
62
+ });
63
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/schemas/output.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,56 @@
1
1
  /**
2
2
  * Caching service for Jamf documentation
3
3
  *
4
- * Provides file-based caching with TTL support
4
+ * Provides file-based caching with TTL support and LRU memory eviction
5
5
  */
6
+ import { z } from 'zod';
6
7
  /**
7
- * File-based cache implementation
8
+ * Zod schema for validating cache entries read from disk
9
+ */
10
+ export declare const CacheEntrySchema: z.ZodObject<{
11
+ data: z.ZodUnknown;
12
+ timestamp: z.ZodNumber;
13
+ ttl: z.ZodNumber;
14
+ }, z.core.$strip>;
15
+ /**
16
+ * File-based cache implementation with LRU-bounded memory cache
8
17
  */
9
18
  declare class FileCache {
10
19
  private readonly cacheDir;
20
+ private readonly maxEntries;
11
21
  private readonly memoryCache;
12
- constructor(cacheDir?: string);
22
+ private readonly lruMap;
23
+ private readonly lruHead;
24
+ private readonly lruTail;
25
+ private dirCreated;
26
+ constructor(cacheDir?: string, maxEntries?: number);
13
27
  private static getCacheKey;
14
28
  private getCachePath;
15
29
  private ensureCacheDir;
30
+ /**
31
+ * Move a node to the front of the LRU list (most recently used)
32
+ */
33
+ private lruMoveToFront;
34
+ /**
35
+ * Add a key to the LRU list (at front)
36
+ */
37
+ private lruAdd;
38
+ /**
39
+ * Remove a key from the LRU list
40
+ */
41
+ private lruRemove;
42
+ /**
43
+ * Evict the least recently used entry from memory cache
44
+ */
45
+ private lruEvictLeast;
16
46
  /**
17
47
  * Get a value from cache
18
48
  */
19
49
  get<T>(key: string): Promise<T | null>;
50
+ /**
51
+ * Store in memory cache, evicting LRU entry if at capacity
52
+ */
53
+ private memoryCacheSet;
20
54
  /**
21
55
  * Set a value in cache
22
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,cAAM,SAAS;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;gBAE1D,QAAQ,GAAE,MAAkB;IAIxC,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,YAAY;YAIN,cAAc;IAI5B;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAiC5C;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAE,MAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7F;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBzF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAmC/B;AAGD,eAAO,MAAM,KAAK,WAAkB,CAAC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAWH;;GAEG;AACH,cAAM,SAAS;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAChF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAChF,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,GAAE,MAAkB,EAAE,UAAU,GAAE,MAA0B;IAOhF,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,YAAY;YAIN,cAAc;IAM5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,MAAM;IAWd;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA4C5C;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAE,MAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7F;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBzF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAoD/B;AAGD,eAAO,MAAM,KAAK,WAAkB,CAAC"}