@get-technology-inc/jamf-docs-mcp-server 1.3.0 → 1.4.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 (53) hide show
  1. package/dist/completions.d.ts +1 -0
  2. package/dist/completions.d.ts.map +1 -1
  3. package/dist/completions.js +4 -1
  4. package/dist/completions.js.map +1 -1
  5. package/dist/constants.d.ts +76 -34
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +67 -34
  8. package/dist/constants.js.map +1 -1
  9. package/dist/schemas/index.d.ts +9 -0
  10. package/dist/schemas/index.d.ts.map +1 -1
  11. package/dist/schemas/index.js +8 -3
  12. package/dist/schemas/index.js.map +1 -1
  13. package/dist/services/metadata.d.ts.map +1 -1
  14. package/dist/services/metadata.js +5 -8
  15. package/dist/services/metadata.js.map +1 -1
  16. package/dist/services/scraper.d.ts +4 -1
  17. package/dist/services/scraper.d.ts.map +1 -1
  18. package/dist/services/scraper.js +113 -40
  19. package/dist/services/scraper.js.map +1 -1
  20. package/dist/services/tokenizer.d.ts.map +1 -1
  21. package/dist/services/tokenizer.js +11 -5
  22. package/dist/services/tokenizer.js.map +1 -1
  23. package/dist/tools/get-article.d.ts.map +1 -1
  24. package/dist/tools/get-article.js +2 -1
  25. package/dist/tools/get-article.js.map +1 -1
  26. package/dist/tools/get-toc.d.ts.map +1 -1
  27. package/dist/tools/get-toc.js +2 -1
  28. package/dist/tools/get-toc.js.map +1 -1
  29. package/dist/tools/list-products.d.ts.map +1 -1
  30. package/dist/tools/list-products.js +5 -3
  31. package/dist/tools/list-products.js.map +1 -1
  32. package/dist/tools/search.d.ts.map +1 -1
  33. package/dist/tools/search.js +8 -8
  34. package/dist/tools/search.js.map +1 -1
  35. package/dist/transport/http.d.ts.map +1 -1
  36. package/dist/transport/http.js +39 -6
  37. package/dist/transport/http.js.map +1 -1
  38. package/dist/types.d.ts +4 -1
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/types.js.map +1 -1
  41. package/dist/utils/bundle.d.ts +9 -0
  42. package/dist/utils/bundle.d.ts.map +1 -0
  43. package/dist/utils/bundle.js +13 -0
  44. package/dist/utils/bundle.js.map +1 -0
  45. package/dist/utils/doc-type.d.ts +6 -3
  46. package/dist/utils/doc-type.d.ts.map +1 -1
  47. package/dist/utils/doc-type.js +15 -7
  48. package/dist/utils/doc-type.js.map +1 -1
  49. package/dist/utils/url.d.ts +9 -1
  50. package/dist/utils/url.d.ts.map +1 -1
  51. package/dist/utils/url.js +24 -2
  52. package/dist/utils/url.js.map +1 -1
  53. package/package.json +1 -1
@@ -3,8 +3,8 @@
3
3
  */
4
4
  import { z } from 'zod';
5
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';
6
+ import { ResponseFormat, OutputMode, CONTENT_LIMITS, TOKEN_CONFIG, PAGINATION_CONFIG, PRODUCT_IDS, TOPIC_IDS, DOC_TYPE_IDS, SUPPORTED_LOCALE_IDS, DEFAULT_LOCALE } from '../constants.js';
7
+ import { completeProduct, completeTopic, completeVersion, completeLanguage } from '../completions.js';
8
8
  import { isAllowedHostname } from '../utils/url.js';
9
9
  // Response format enum
10
10
  const ResponseFormatSchema = z.nativeEnum(ResponseFormat);
@@ -17,6 +17,8 @@ const MaxTokensSchema = z.number()
17
17
  .max(TOKEN_CONFIG.MAX_TOKENS_LIMIT)
18
18
  .default(TOKEN_CONFIG.DEFAULT_MAX_TOKENS)
19
19
  .describe(`Maximum tokens in response (${TOKEN_CONFIG.MIN_TOKENS}-${TOKEN_CONFIG.MAX_TOKENS_LIMIT}, default: ${TOKEN_CONFIG.DEFAULT_MAX_TOKENS})`);
20
+ // Common language/locale parameter (completable() mutates in place, so each call needs a fresh schema)
21
+ const LANGUAGE_DESCRIPTION = `Documentation language/locale (default: ${DEFAULT_LOCALE}). Options: ${SUPPORTED_LOCALE_IDS.join(', ')}`;
20
22
  // Common page parameter schema
21
23
  const PageSchema = z.number()
22
24
  .int()
@@ -55,9 +57,10 @@ export const SearchInputSchema = z.object({
55
57
  version: completable(z.string()
56
58
  .optional()
57
59
  .describe('Filter by version (e.g., "11.5.0", "10.x")'), completeVersion),
60
+ language: completable(z.enum(SUPPORTED_LOCALE_IDS).optional().describe(LANGUAGE_DESCRIPTION), completeLanguage),
58
61
  docType: z.enum(DOC_TYPE_IDS)
59
62
  .optional()
60
- .describe('Filter by document type: documentation, release-notes, install-guide, technical-paper, configuration-guide, training'),
63
+ .describe('Filter by document type: documentation, release-notes, training, solution-guide, glossary, getting-started, archive'),
61
64
  limit: z.number()
62
65
  .int()
63
66
  .min(1)
@@ -85,6 +88,7 @@ export const GetArticleInputSchema = z.object({
85
88
  .url('Must be a valid URL')
86
89
  .refine((url) => isAllowedHostname(url), 'URL must be from docs.jamf.com or learn.jamf.com')
87
90
  .describe('Full URL of the Jamf documentation article'),
91
+ language: completable(z.enum(SUPPORTED_LOCALE_IDS).optional().describe(LANGUAGE_DESCRIPTION), completeLanguage),
88
92
  section: z.string()
89
93
  .optional()
90
94
  .describe('Extract only a specific section by title or ID (e.g., "Prerequisites", "Configuration")'),
@@ -110,6 +114,7 @@ export const GetArticleInputSchema = z.object({
110
114
  export const GetTocInputSchema = z.object({
111
115
  product: completable(z.enum(PRODUCT_IDS)
112
116
  .describe('Product ID: jamf-pro, jamf-school, jamf-connect, jamf-protect'), completeProduct),
117
+ language: completable(z.enum(SUPPORTED_LOCALE_IDS).optional().describe(LANGUAGE_DESCRIPTION), completeLanguage),
113
118
  version: completable(z.string()
114
119
  .optional()
115
120
  .describe('Specific version (defaults to latest)'), completeVersion),
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/services/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAOzB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAmID;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CA+CtE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIlF;AAmHD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CA8ClE;AAMD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8B/E;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAgBD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAeD"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/services/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAQzB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA+HD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CA+CtE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIlF;AAmHD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CA8ClE;AAMD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8B/E;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAgBD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAeD"}
@@ -7,6 +7,7 @@
7
7
  import axios from 'axios';
8
8
  import * as cheerio from 'cheerio';
9
9
  import { DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS, REQUEST_CONFIG, CACHE_TTL } from '../constants.js';
10
+ import { extractVersionFromBundleId } from '../utils/bundle.js';
10
11
  import { cache } from './cache.js';
11
12
  // ============================================================================
12
13
  // API Helpers
@@ -31,7 +32,6 @@ async function discoverProductVersions(productId) {
31
32
  // Search with a broad query to find all bundle versions
32
33
  const apiUrl = `${DOCS_API_URL}/api/search?q=${encodeURIComponent(product.name)}&rpp=100`;
33
34
  const response = await fetchJson(apiUrl);
34
- const versionRegex = /-(\d+\.\d+\.\d+)$/;
35
35
  const bundlePrefix = `${product.bundleId}-`;
36
36
  for (const wrapper of response.Results) {
37
37
  const bundleId = wrapper.leading_result?.bundle_id;
@@ -41,9 +41,9 @@ async function discoverProductVersions(productId) {
41
41
  }
42
42
  // Check if this is a versioned documentation bundle for our product
43
43
  if (bundleId.startsWith(bundlePrefix) || bundleId === product.bundleId) {
44
- const match = versionRegex.exec(bundleId);
45
- if (match?.[1] !== undefined) {
46
- versions.add(match[1]);
44
+ const version = extractVersionFromBundleId(bundleId);
45
+ if (version !== null) {
46
+ versions.add(version);
47
47
  }
48
48
  }
49
49
  }
@@ -82,10 +82,7 @@ async function fetchProductMetadata(productId) {
82
82
  if (bundleId?.startsWith(product.bundleId) !== true) {
83
83
  continue;
84
84
  }
85
- // Extract version from bundle_id (e.g., "jamf-pro-documentation-11.24.0" → "11.24.0")
86
- const versionRegex = /-(\d+\.\d+\.\d+)$/;
87
- const versionMatch = versionRegex.exec(bundleId);
88
- const latestVersion = versionMatch?.[1] ?? 'current';
85
+ const latestVersion = extractVersionFromBundleId(bundleId) ?? 'current';
89
86
  // Find product label key
90
87
  const productLabel = result?.labels?.find(l => l.key.startsWith('product-') && !l.key.includes('-'));
91
88
  const labelKey = productLabel?.key ?? product.searchLabel;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/services/metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/services/metadata.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * This module handles fetching and parsing HTML from learn.jamf.com
5
5
  * (Jamf documentation has moved from docs.jamf.com to learn.jamf.com)
6
6
  */
7
- import { type ProductId } from '../constants.js';
7
+ import { type ProductId, type LocaleId } from '../constants.js';
8
8
  import { type SearchResult, type ParsedArticle, type TocEntry, type SearchParams, type TokenInfo, type PaginationInfo, type ArticleSection, type FilterRelaxation, type TruncatedContentInfo } from '../types.js';
9
9
  export { ALLOWED_HOSTNAMES, isAllowedHostname } from '../utils/url.js';
10
10
  /**
@@ -20,6 +20,7 @@ export interface SearchDocumentationResult {
20
20
  pagination: PaginationInfo;
21
21
  tokenInfo: TokenInfo;
22
22
  filterRelaxation?: FilterRelaxation;
23
+ versionNote?: string;
23
24
  truncatedContent?: TruncatedContentInfo;
24
25
  }
25
26
  /**
@@ -34,6 +35,7 @@ export interface FetchArticleOptions {
34
35
  section?: string;
35
36
  summaryOnly?: boolean;
36
37
  maxTokens?: number;
38
+ locale?: LocaleId | undefined;
37
39
  }
38
40
  /**
39
41
  * Article result with token and section info
@@ -53,6 +55,7 @@ export declare function fetchArticle(url: string, options?: FetchArticleOptions)
53
55
  export interface FetchTocOptions {
54
56
  page?: number;
55
57
  maxTokens?: number;
58
+ locale?: LocaleId | undefined;
56
59
  }
57
60
  /**
58
61
  * TOC result with pagination and token info
@@ -1 +1 @@
1
- {"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../src/services/scraper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAUL,KAAK,SAAS,EAEf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAoDrB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAmEvE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAe3F;AAsLD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAoMlG;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAmH7B;AAmFD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;CACtB;AAkBD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,SAAS,EAClB,OAAO,SAAY,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CA+FzB"}
1
+ {"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../src/services/scraper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAYL,KAAK,SAAS,EAEd,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,YAAY,EAGjB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAqDrB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAmEvE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAe3F;AAuOD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA4OlG;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AAmFD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;CACtB;AAkBD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,SAAS,EAClB,OAAO,SAAY,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAgGzB"}
@@ -9,9 +9,10 @@ import * as cheerio from 'cheerio';
9
9
  import { sanitizeErrorMessage } from '../utils/sanitize.js';
10
10
  import { isAllowedHostname } from '../utils/url.js';
11
11
  import TurndownService from 'turndown';
12
- import { DOCS_BASE_URL, DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS, REQUEST_CONFIG, SELECTORS, CONTENT_LIMITS, TOKEN_CONFIG, PAGINATION_CONFIG } from '../constants.js';
12
+ import { DOCS_BASE_URL, DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS, DOC_TYPE_LABEL_MAP, REQUEST_CONFIG, SELECTORS, CONTENT_LIMITS, TOKEN_CONFIG, PAGINATION_CONFIG, DEFAULT_LOCALE } from '../constants.js';
13
13
  import { JamfDocsError, JamfDocsErrorCode } from '../types.js';
14
- import { inferDocType } from '../utils/doc-type.js';
14
+ import { extractVersionFromBundleId } from '../utils/bundle.js';
15
+ import { docTypeFromLabels } from '../utils/doc-type.js';
15
16
  import { cache } from './cache.js';
16
17
  import { estimateTokens, createTokenInfo, extractSections, extractSection, extractSummary, truncateToTokenLimit, calculatePagination } from './tokenizer.js';
17
18
  import { getBundleIdForVersion } from './metadata.js';
@@ -136,10 +137,19 @@ function handleAxiosError(error, url, resourceType) {
136
137
  }
137
138
  throw new JamfDocsError(`Network error: ${sanitizeErrorMessage(error.message)}`, JamfDocsErrorCode.NETWORK_ERROR, url);
138
139
  }
140
+ /**
141
+ * Build Accept-Language header value for a given locale
142
+ */
143
+ function buildAcceptLanguage(locale) {
144
+ if (locale === 'en-US') {
145
+ return 'en-US,en;q=0.9';
146
+ }
147
+ return `${locale},en;q=0.5`;
148
+ }
139
149
  /**
140
150
  * Fetch data from a URL with error handling
141
151
  */
142
- async function fetchUrl(url, accept, resourceType) {
152
+ async function fetchUrl(url, accept, resourceType, locale) {
143
153
  await throttle();
144
154
  try {
145
155
  const response = await axios.get(url, {
@@ -147,7 +157,7 @@ async function fetchUrl(url, accept, resourceType) {
147
157
  headers: {
148
158
  'User-Agent': REQUEST_CONFIG.USER_AGENT,
149
159
  'Accept': accept,
150
- 'Accept-Language': 'en-US,en;q=0.9'
160
+ 'Accept-Language': buildAcceptLanguage(locale ?? DEFAULT_LOCALE)
151
161
  }
152
162
  });
153
163
  return response.data;
@@ -159,8 +169,8 @@ async function fetchUrl(url, accept, resourceType) {
159
169
  throw error;
160
170
  }
161
171
  }
162
- const fetchJson = async (url) => await fetchUrl(url, 'application/json', 'Resource');
163
- const fetchHtml = async (url) => await fetchUrl(url, 'text/html,application/xhtml+xml', 'Article');
172
+ const fetchJson = async (url, locale) => await fetchUrl(url, 'application/json', 'Resource', locale);
173
+ const fetchHtml = async (url, locale) => await fetchUrl(url, 'text/html,application/xhtml+xml', 'Article', locale);
164
174
  /**
165
175
  * Clean HTML content by removing unwanted elements
166
176
  */
@@ -186,7 +196,7 @@ function cleanHtml($) {
186
196
  * Supports both old docs.jamf.com and new learn.jamf.com URL structures
187
197
  */
188
198
  function extractProductInfo(url) {
189
- // learn.jamf.com structure: /en-US/bundle/{product}-documentation/page/{page}.html
199
+ // learn.jamf.com structure: /{locale}/bundle/{product}-documentation/page/{page}.html
190
200
  const bundleMatch = /\/bundle\/([^/]+)-documentation\//.exec(url);
191
201
  if (bundleMatch !== null) {
192
202
  const product = Object.values(JAMF_PRODUCTS).find(p => p.bundleId.includes(bundleMatch[1] ?? ''));
@@ -203,14 +213,12 @@ function extractProductInfo(url) {
203
213
  const matchedProduct = Object.values(JAMF_PRODUCTS).find(p => url.includes(p.bundleId) || url.includes(p.id));
204
214
  return { product: matchedProduct?.name, version: matchedProduct !== undefined ? 'current' : undefined };
205
215
  }
206
- /**
207
- * Check if a search result matches a topic based on keywords
208
- */
209
- function matchesTopic(result, topicId) {
210
- const topic = JAMF_TOPICS[topicId];
211
- const searchText = `${result.title} ${result.snippet}`.toLowerCase();
212
- return topic.keywords.some(keyword => searchText.includes(keyword.toLowerCase()));
213
- }
216
+ /** Pre-computed lowercase keywords per topic (avoids repeated toLowerCase on static data) */
217
+ const TOPIC_KEYWORDS_LOWER = Object.fromEntries(Object.keys(JAMF_TOPICS).map(id => [
218
+ id,
219
+ JAMF_TOPICS[id].keywords.map(k => k.toLowerCase())
220
+ ]));
221
+ const ALL_TOPIC_IDS = Object.keys(JAMF_TOPICS);
214
222
  /**
215
223
  * Apply filters with progressive relaxation when results are zero
216
224
  * Relaxation order: docType → topic → product
@@ -261,6 +269,32 @@ function applyFiltersWithFallback(allResults, activeFilters) {
261
269
  }
262
270
  return { filtered };
263
271
  }
272
+ /**
273
+ * Select the best result entry for the requested version from leading + followers.
274
+ * Returns the matching entry's URL, bundle_id, and whether the match was exact.
275
+ */
276
+ function selectVersionedEntry(leading, followers, requestedVersion) {
277
+ const leadingVersion = extractVersionFromBundleId(leading.bundle_id) ?? 'current';
278
+ // No version filter or 'current' — use leading
279
+ if (requestedVersion === undefined || requestedVersion === '' || requestedVersion === 'current') {
280
+ return { url: leading.url, bundleId: leading.bundle_id, version: leadingVersion, versionMatched: true };
281
+ }
282
+ // Check if leading already matches
283
+ if (leadingVersion === requestedVersion) {
284
+ return { url: leading.url, bundleId: leading.bundle_id, version: leadingVersion, versionMatched: true };
285
+ }
286
+ // Search followers for matching version
287
+ if (followers !== undefined && followers.length > 0) {
288
+ for (const follower of followers) {
289
+ const followerVersion = extractVersionFromBundleId(follower.bundle_id);
290
+ if (followerVersion === requestedVersion) {
291
+ return { url: follower.url, bundleId: follower.bundle_id, version: followerVersion, versionMatched: true };
292
+ }
293
+ }
294
+ }
295
+ // No match found — fallback to leading
296
+ return { url: leading.url, bundleId: leading.bundle_id, version: leadingVersion, versionMatched: false };
297
+ }
264
298
  /**
265
299
  * Search Jamf documentation using Zoomin Search API
266
300
  */
@@ -268,19 +302,30 @@ export async function searchDocumentation(params) {
268
302
  const page = params.page ?? PAGINATION_CONFIG.DEFAULT_PAGE;
269
303
  const pageSize = params.limit ?? CONTENT_LIMITS.DEFAULT_SEARCH_RESULTS;
270
304
  const maxTokens = params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS;
271
- const cacheKey = `search:${JSON.stringify({ ...params, page: 1 })}`; // Cache without page for full results
305
+ const locale = params.language ?? DEFAULT_LOCALE;
306
+ const cacheKey = `${locale}:search:${JSON.stringify({
307
+ query: params.query, product: params.product, topic: params.topic,
308
+ docType: params.docType, version: params.version, limit: params.limit,
309
+ maxTokens: params.maxTokens, page: 1
310
+ })}`;
272
311
  // Check cache for full results
273
312
  let allResults = await cache.get(cacheKey);
274
313
  if (allResults === null) {
275
- // Fetch more results to allow for filtering
276
- const fetchLimit = CONTENT_LIMITS.MAX_SEARCH_RESULTS;
314
+ // Over-fetch when client-side filters (docType/version) are active
315
+ const hasClientFilter = params.docType !== undefined || (params.version !== undefined && params.version !== 'current');
316
+ const fetchLimit = hasClientFilter
317
+ ? Math.min(CONTENT_LIMITS.MAX_SEARCH_RESULTS * CONTENT_LIMITS.FILTER_OVERFETCH_MULTIPLIER, CONTENT_LIMITS.FILTER_OVERFETCH_CAP)
318
+ : CONTENT_LIMITS.MAX_SEARCH_RESULTS;
277
319
  // Build API URL with query params
278
320
  const apiUrl = new URL(`${DOCS_API_URL}/api/search`);
279
321
  apiUrl.searchParams.set('q', params.query);
280
322
  apiUrl.searchParams.set('rpp', fetchLimit.toString());
281
- console.error(`[SEARCH] Query: "${params.query}", Product: ${params.product ?? 'all'}, Topic: ${params.topic ?? 'all'}, URL: ${apiUrl.toString()}`);
323
+ if (locale !== DEFAULT_LOCALE) {
324
+ apiUrl.searchParams.set('lang', locale);
325
+ }
326
+ console.error(`[SEARCH] Query: "${params.query}", Product: ${params.product ?? 'all'}, Topic: ${params.topic ?? 'all'}, Locale: ${locale}, URL: ${apiUrl.toString()}`);
282
327
  try {
283
- const response = await fetchJson(apiUrl.toString());
328
+ const response = await fetchJson(apiUrl.toString(), locale);
284
329
  // Transform Zoomin results to SearchResult format with metadata
285
330
  allResults = response.Results
286
331
  .filter((wrapper) => wrapper.leading_result !== null && wrapper.leading_result !== undefined)
@@ -294,32 +339,41 @@ export async function searchDocumentation(params) {
294
339
  return true;
295
340
  })
296
341
  .map(wrapper => {
297
- const result = wrapper.leading_result;
342
+ const leading = wrapper.leading_result;
343
+ // Select versioned entry (leading or matching follower)
344
+ const versioned = selectVersionedEntry(leading, wrapper.follower_result, params.version);
298
345
  // Extract product from bundle_id
299
- const bundleId = result.bundle_id;
346
+ const { bundleId } = versioned;
300
347
  const bundleMatch = /^(jamf-[a-z]+)-documentation/.exec(bundleId);
301
348
  const bundleSlug = bundleMatch?.[1] ?? null;
302
349
  const productEntry = bundleSlug !== null
303
350
  ? Object.entries(JAMF_PRODUCTS).find(([id]) => id === bundleSlug)
304
351
  : null;
305
- const resultTitle = result.title !== '' ? result.title : 'Untitled';
306
- const resultProduct = productEntry !== null && productEntry !== undefined ? productEntry[1].name : (result.publication_title !== '' ? result.publication_title : 'Jamf');
307
- const rawSnippet = stripHtml(result.snippet !== '' ? result.snippet : '').slice(0, CONTENT_LIMITS.MAX_SNIPPET_LENGTH);
352
+ const resultTitle = leading.title !== '' ? leading.title : 'Untitled';
353
+ const resultProduct = productEntry !== null && productEntry !== undefined ? productEntry[1].name : (leading.publication_title !== '' ? leading.publication_title : 'Jamf');
354
+ const rawSnippet = stripHtml(leading.snippet !== '' ? leading.snippet : '').slice(0, CONTENT_LIMITS.MAX_SNIPPET_LENGTH);
355
+ // Derive docType from labels instead of bundle_id regex
356
+ const { labels } = leading;
357
+ const labelKeys = (labels ?? []).map(l => l.key);
308
358
  const searchResult = {
309
359
  title: resultTitle,
310
- url: transformToFrontendUrl(result.url !== '' ? result.url : ''),
360
+ url: transformToFrontendUrl(versioned.url !== '' ? versioned.url : ''),
311
361
  snippet: cleanSnippet(rawSnippet, resultTitle, resultProduct),
312
362
  product: resultProduct,
313
- version: 'current',
314
- docType: inferDocType(bundleId)
363
+ version: versioned.version,
364
+ docType: docTypeFromLabels(labels)
315
365
  };
316
- if (result.score !== undefined) {
317
- searchResult.relevance = result.score;
366
+ if (leading.score !== undefined) {
367
+ searchResult.relevance = leading.score;
318
368
  }
319
- // Find matched topics
320
- const matchedTopics = Object.keys(JAMF_TOPICS)
321
- .filter(topicId => matchesTopic(searchResult, topicId));
322
- return { result: searchResult, bundleSlug, bundleId, matchedTopics };
369
+ // Find matched topics (searchText lowercased once, keywords pre-computed)
370
+ const searchText = `${searchResult.title} ${searchResult.snippet}`.toLowerCase();
371
+ const matchedTopics = ALL_TOPIC_IDS
372
+ .filter(topicId => TOPIC_KEYWORDS_LOWER[topicId].some(kw => searchText.includes(kw)));
373
+ return {
374
+ result: searchResult, bundleSlug, bundleId, matchedTopics, labelKeys,
375
+ versionMatched: versioned.versionMatched
376
+ };
323
377
  });
324
378
  // Cache full results
325
379
  await cache.set(cacheKey, allResults);
@@ -363,10 +417,17 @@ export async function searchDocumentation(params) {
363
417
  }
364
418
  if (params.docType !== undefined) {
365
419
  const docTypeFilter = params.docType;
420
+ const targetLabelKey = DOC_TYPE_LABEL_MAP[docTypeFilter];
366
421
  activeFilters.push({
367
422
  name: 'docType',
368
423
  value: docTypeFilter,
369
- apply: (results) => results.filter(r => r.result.docType === docTypeFilter)
424
+ apply: (results) => results.filter(r => {
425
+ // If result has no labels, include it (don't filter out)
426
+ if (r.labelKeys.length === 0) {
427
+ return true;
428
+ }
429
+ return r.labelKeys.includes(targetLabelKey);
430
+ })
370
431
  });
371
432
  }
372
433
  // Apply filters with progressive relaxation
@@ -413,6 +474,15 @@ export async function searchDocumentation(params) {
413
474
  }))
414
475
  };
415
476
  }
477
+ // Generate versionNote only when version was requested but not found in some results
478
+ const requestedVersion = params.version;
479
+ const hasVersionMismatch = requestedVersion !== undefined
480
+ && requestedVersion !== 'current'
481
+ && requestedVersion !== ''
482
+ && filteredResults.some(r => !r.versionMatched);
483
+ const versionNote = hasVersionMismatch
484
+ ? `Version "${requestedVersion}" was not available for some results. Showing the latest version instead.`
485
+ : undefined;
416
486
  return {
417
487
  results: finalResults,
418
488
  pagination: {
@@ -429,6 +499,7 @@ export async function searchDocumentation(params) {
429
499
  maxTokens
430
500
  },
431
501
  ...(filterRelaxation !== undefined ? { filterRelaxation } : {}),
502
+ ...(versionNote !== undefined ? { versionNote } : {}),
432
503
  ...(truncatedContent !== undefined ? { truncatedContent } : {})
433
504
  };
434
505
  }
@@ -438,15 +509,16 @@ export async function searchDocumentation(params) {
438
509
  */
439
510
  export async function fetchArticle(url, options = {}) {
440
511
  const maxTokens = options.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS;
512
+ const locale = options.locale ?? DEFAULT_LOCALE;
441
513
  // Store original URL for display, use backend URL for fetching
442
514
  const displayUrl = transformToFrontendUrl(url);
443
515
  const articleFetchUrl = transformToBackendUrl(url);
444
- const cacheKey = `article:${displayUrl}`;
516
+ const cacheKey = `${locale}:article:${displayUrl}`;
445
517
  // Check cache for raw article (without section/token processing)
446
518
  let rawArticle = await cache.get(cacheKey);
447
519
  if (rawArticle === null) {
448
520
  // Fetch HTML from backend URL (pre-rendered content, not SPA shell)
449
- const html = await fetchHtml(articleFetchUrl);
521
+ const html = await fetchHtml(articleFetchUrl, locale);
450
522
  const $ = cheerio.load(html);
451
523
  // Clean content
452
524
  cleanHtml($);
@@ -620,7 +692,8 @@ function countTocEntries(entries) {
620
692
  export async function fetchTableOfContents(product, version = 'current', options = {}) {
621
693
  const page = options.page ?? PAGINATION_CONFIG.DEFAULT_PAGE;
622
694
  const maxTokens = options.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS;
623
- const cacheKey = `toc:${product}:${version}`;
695
+ const locale = options.locale ?? DEFAULT_LOCALE;
696
+ const cacheKey = `${locale}:toc:${product}:${version}`;
624
697
  // Check cache
625
698
  let allToc = await cache.get(cacheKey);
626
699
  if (allToc === null) {
@@ -633,8 +706,8 @@ export async function fetchTableOfContents(product, version = 'current', options
633
706
  }
634
707
  // Fetch TOC from backend
635
708
  const tocUrl = `${DOCS_API_URL}/bundle/${bundleId}/toc`;
636
- console.error(`[TOC] Fetching TOC from: ${tocUrl}`);
637
- const tocJson = await fetchJson(tocUrl);
709
+ console.error(`[TOC] Fetching TOC from: ${tocUrl}, Locale: ${locale}`);
710
+ const tocJson = await fetchJson(tocUrl, locale);
638
711
  // Parse TOC
639
712
  allToc = [];
640
713
  for (const [, html] of Object.entries(tocJson)) {