@get-technology-inc/jamf-docs-mcp-server 3.0.6 → 3.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -2
- package/dist/core/constants/doc-types.d.ts +48 -0
- package/dist/core/constants/doc-types.d.ts.map +1 -0
- package/dist/core/constants/doc-types.js +58 -0
- package/dist/core/constants/doc-types.js.map +1 -0
- package/dist/core/constants/index.d.ts +16 -0
- package/dist/core/constants/index.d.ts.map +1 -0
- package/dist/core/constants/index.js +12 -0
- package/dist/core/constants/index.js.map +1 -0
- package/dist/core/constants/limits.d.ts +39 -0
- package/dist/core/constants/limits.d.ts.map +1 -0
- package/dist/core/constants/limits.js +51 -0
- package/dist/core/constants/limits.js.map +1 -0
- package/dist/core/constants/locales.d.ts +34 -0
- package/dist/core/constants/locales.d.ts.map +1 -0
- package/dist/core/constants/locales.js +20 -0
- package/dist/core/constants/locales.js.map +1 -0
- package/dist/core/constants/products.d.ts +127 -0
- package/dist/core/constants/products.d.ts.map +1 -0
- package/dist/core/constants/products.js +135 -0
- package/dist/core/constants/products.js.map +1 -0
- package/dist/core/constants/topics.d.ts +168 -0
- package/dist/core/constants/topics.d.ts.map +1 -0
- package/dist/core/constants/topics.js +186 -0
- package/dist/core/constants/topics.js.map +1 -0
- package/dist/core/constants.d.ts +7 -404
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +16 -427
- package/dist/core/constants.js.map +1 -1
- package/dist/core/http-client.d.ts +14 -2
- package/dist/core/http-client.d.ts.map +1 -1
- package/dist/core/http-client.js +148 -17
- package/dist/core/http-client.js.map +1 -1
- package/dist/core/index.d.ts +12 -12
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12 -13
- package/dist/core/index.js.map +1 -1
- package/dist/core/resources/index.js +1 -1
- package/dist/core/resources/index.js.map +1 -1
- package/dist/core/schemas/index.d.ts +3 -1
- package/dist/core/schemas/index.d.ts.map +1 -1
- package/dist/core/schemas/index.js +13 -3
- package/dist/core/schemas/index.js.map +1 -1
- package/dist/core/schemas/output.d.ts +7 -0
- package/dist/core/schemas/output.d.ts.map +1 -1
- package/dist/core/schemas/output.js +7 -0
- package/dist/core/schemas/output.js.map +1 -1
- package/dist/core/services/article-service.d.ts +24 -0
- package/dist/core/services/article-service.d.ts.map +1 -0
- package/dist/core/services/article-service.js +140 -0
- package/dist/core/services/article-service.js.map +1 -0
- package/dist/core/services/content-parser.d.ts +38 -0
- package/dist/core/services/content-parser.d.ts.map +1 -0
- package/dist/core/services/content-parser.js +148 -0
- package/dist/core/services/content-parser.js.map +1 -0
- package/dist/core/services/ft-client.d.ts +52 -0
- package/dist/core/services/ft-client.d.ts.map +1 -0
- package/dist/core/services/ft-client.js +87 -0
- package/dist/core/services/ft-client.js.map +1 -0
- package/dist/core/services/glossary.d.ts +9 -5
- package/dist/core/services/glossary.d.ts.map +1 -1
- package/dist/core/services/glossary.js +175 -108
- package/dist/core/services/glossary.js.map +1 -1
- package/dist/core/services/interfaces/cache.d.ts +6 -6
- package/dist/core/services/interfaces/cache.d.ts.map +1 -1
- package/dist/core/services/interfaces/index.d.ts +3 -3
- package/dist/core/services/interfaces/index.d.ts.map +1 -1
- package/dist/core/services/interfaces/logger.d.ts +17 -10
- package/dist/core/services/interfaces/logger.d.ts.map +1 -1
- package/dist/core/services/interfaces/metadata.d.ts +0 -10
- package/dist/core/services/interfaces/metadata.d.ts.map +1 -1
- package/dist/core/services/interfaces/providers.d.ts +23 -10
- package/dist/core/services/interfaces/providers.d.ts.map +1 -1
- package/dist/core/services/logging.d.ts +38 -18
- package/dist/core/services/logging.d.ts.map +1 -1
- package/dist/core/services/logging.js +78 -29
- package/dist/core/services/logging.js.map +1 -1
- package/dist/core/services/maps-registry.d.ts +82 -0
- package/dist/core/services/maps-registry.d.ts.map +1 -0
- package/dist/core/services/maps-registry.js +232 -0
- package/dist/core/services/maps-registry.js.map +1 -0
- package/dist/core/services/metadata.d.ts +18 -9
- package/dist/core/services/metadata.d.ts.map +1 -1
- package/dist/core/services/metadata.js +113 -254
- package/dist/core/services/metadata.js.map +1 -1
- package/dist/core/services/search-service.d.ts +31 -0
- package/dist/core/services/search-service.d.ts.map +1 -0
- package/dist/core/services/search-service.js +462 -0
- package/dist/core/services/search-service.js.map +1 -0
- package/dist/core/services/toc-service.d.ts +30 -0
- package/dist/core/services/toc-service.d.ts.map +1 -0
- package/dist/core/services/toc-service.js +107 -0
- package/dist/core/services/toc-service.js.map +1 -0
- package/dist/core/services/tokenizer.d.ts +20 -1
- package/dist/core/services/tokenizer.d.ts.map +1 -1
- package/dist/core/services/tokenizer.js +32 -4
- package/dist/core/services/tokenizer.js.map +1 -1
- package/dist/core/services/topic-resolver.d.ts +74 -0
- package/dist/core/services/topic-resolver.d.ts.map +1 -0
- package/dist/core/services/topic-resolver.js +191 -0
- package/dist/core/services/topic-resolver.js.map +1 -0
- package/dist/core/tools/batch-get-articles.d.ts +0 -2
- package/dist/core/tools/batch-get-articles.d.ts.map +1 -1
- package/dist/core/tools/batch-get-articles.js +18 -46
- package/dist/core/tools/batch-get-articles.js.map +1 -1
- package/dist/core/tools/get-article.d.ts.map +1 -1
- package/dist/core/tools/get-article.js +29 -112
- package/dist/core/tools/get-article.js.map +1 -1
- package/dist/core/tools/get-toc.js +1 -1
- package/dist/core/tools/get-toc.js.map +1 -1
- package/dist/core/tools/glossary-lookup.d.ts.map +1 -1
- package/dist/core/tools/glossary-lookup.js +26 -7
- package/dist/core/tools/glossary-lookup.js.map +1 -1
- package/dist/core/tools/list-products.d.ts.map +1 -1
- package/dist/core/tools/list-products.js +5 -3
- package/dist/core/tools/list-products.js.map +1 -1
- package/dist/core/tools/search.js +5 -5
- package/dist/core/tools/search.js.map +1 -1
- package/dist/core/types/context.d.ts +5 -2
- package/dist/core/types/context.d.ts.map +1 -1
- package/dist/core/types.d.ts +141 -31
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/bundle.d.ts +14 -1
- package/dist/core/utils/bundle.d.ts.map +1 -1
- package/dist/core/utils/bundle.js +19 -2
- package/dist/core/utils/bundle.js.map +1 -1
- package/dist/core/utils/format-article.d.ts +49 -0
- package/dist/core/utils/format-article.d.ts.map +1 -0
- package/dist/core/utils/format-article.js +188 -0
- package/dist/core/utils/format-article.js.map +1 -0
- package/dist/core/utils/ft-metadata.d.ts +22 -0
- package/dist/core/utils/ft-metadata.d.ts.map +1 -0
- package/dist/core/utils/ft-metadata.js +30 -0
- package/dist/core/utils/ft-metadata.js.map +1 -0
- package/dist/core/utils/sanitize.d.ts.map +1 -1
- package/dist/core/utils/sanitize.js +0 -2
- package/dist/core/utils/sanitize.js.map +1 -1
- package/dist/core/utils/url.d.ts.map +1 -1
- package/dist/core/utils/url.js +0 -1
- package/dist/core/utils/url.js.map +1 -1
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/platforms/node/http-server.d.ts +13 -0
- package/dist/platforms/node/http-server.d.ts.map +1 -0
- package/dist/platforms/node/http-server.js +231 -0
- package/dist/platforms/node/http-server.js.map +1 -0
- package/dist/platforms/node/index.d.ts +1 -1
- package/dist/platforms/node/index.d.ts.map +1 -1
- package/dist/platforms/node/index.js +1 -1
- package/dist/platforms/node/index.js.map +1 -1
- package/dist/platforms/node/logger.d.ts +13 -2
- package/dist/platforms/node/logger.d.ts.map +1 -1
- package/dist/platforms/node/logger.js +17 -4
- package/dist/platforms/node/logger.js.map +1 -1
- package/dist/transport/http-handler.d.ts +25 -0
- package/dist/transport/http-handler.d.ts.map +1 -0
- package/dist/transport/http-handler.js +193 -0
- package/dist/transport/http-handler.js.map +1 -0
- package/dist/transport/http-types.d.ts +22 -0
- package/dist/transport/http-types.d.ts.map +1 -0
- package/dist/transport/http-types.js +65 -0
- package/dist/transport/http-types.js.map +1 -0
- package/dist/transport/http.d.ts +4 -8
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +4 -376
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/rate-limiter.d.ts +16 -0
- package/dist/transport/rate-limiter.d.ts.map +1 -0
- package/dist/transport/rate-limiter.js +55 -0
- package/dist/transport/rate-limiter.js.map +1 -0
- package/package.json +3 -3
- package/dist/core/services/interfaces.d.ts +0 -94
- package/dist/core/services/interfaces.d.ts.map +0 -1
- package/dist/core/services/interfaces.js +0 -8
- package/dist/core/services/interfaces.js.map +0 -1
- package/dist/core/services/scraper.d.ts +0 -90
- package/dist/core/services/scraper.d.ts.map +0 -1
- package/dist/core/services/scraper.js +0 -990
- package/dist/core/services/scraper.js.map +0 -1
- package/dist/core/utils/doc-type.d.ts +0 -12
- package/dist/core/utils/doc-type.d.ts.map +0 -1
- package/dist/core/utils/doc-type.js +0 -24
- package/dist/core/utils/doc-type.js.map +0 -1
- package/dist/platforms/node/metadata.d.ts +0 -18
- package/dist/platforms/node/metadata.d.ts.map +0 -1
- package/dist/platforms/node/metadata.js +0 -35
- package/dist/platforms/node/metadata.js.map +0 -1
|
@@ -1,148 +1,99 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Metadata service for Jamf documentation
|
|
3
3
|
*
|
|
4
|
-
* Dynamically fetches product versions and topic categories from the
|
|
5
|
-
* with fallback to static constants.
|
|
4
|
+
* Dynamically fetches product versions and topic categories from the
|
|
5
|
+
* Fluid Topics MapsRegistry with fallback to static constants.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import * as cheerio from 'cheerio';
|
|
9
|
-
import { DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS } from '../constants.js';
|
|
10
|
-
import { extractVersionFromBundleId } from '../utils/bundle.js';
|
|
7
|
+
import { JAMF_PRODUCTS, JAMF_TOPICS } from '../constants.js';
|
|
11
8
|
// ============================================================================
|
|
12
|
-
//
|
|
9
|
+
// Internal helpers
|
|
13
10
|
// ============================================================================
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
11
|
+
/**
|
|
12
|
+
* Map a JAMF_PRODUCTS key (ProductId) to its expected bundleStem
|
|
13
|
+
* (the value used in MapsRegistry).
|
|
14
|
+
* For most products this is the bundleId from constants, e.g.
|
|
15
|
+
* 'jamf-pro' -> 'jamf-pro-documentation'.
|
|
16
|
+
*/
|
|
17
|
+
function productIdToBundleStem(productId) {
|
|
18
|
+
return JAMF_PRODUCTS[productId].bundleId;
|
|
23
19
|
}
|
|
24
20
|
/**
|
|
25
|
-
*
|
|
21
|
+
* Build a ProductMetadata from MapsRegistry RegistryProductInfo + static constants.
|
|
22
|
+
* Returns null if the productId is not in JAMF_PRODUCTS.
|
|
26
23
|
*/
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (bundleId.startsWith(bundlePrefix) || bundleId === product.bundleId) {
|
|
43
|
-
const version = extractVersionFromBundleId(bundleId);
|
|
44
|
-
if (version !== null) {
|
|
45
|
-
versions.add(version);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
log.error(`Error discovering versions for ${productId}: ${String(error)}`);
|
|
52
|
-
}
|
|
53
|
-
// Sort versions in descending order (newest first)
|
|
54
|
-
return Array.from(versions).sort((a, b) => {
|
|
55
|
-
const partsA = a.split('.').map(Number);
|
|
56
|
-
const partsB = b.split('.').map(Number);
|
|
57
|
-
for (let i = 0; i < 3; i++) {
|
|
58
|
-
const diff = (partsB[i] ?? 0) - (partsA[i] ?? 0);
|
|
59
|
-
if (diff !== 0) {
|
|
60
|
-
return diff;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return 0;
|
|
64
|
-
});
|
|
24
|
+
function buildProductMetadata(productId, info) {
|
|
25
|
+
const staticProduct = JAMF_PRODUCTS[productId];
|
|
26
|
+
const latestVersion = info.versions[0] ?? 'current';
|
|
27
|
+
const bundleId = latestVersion !== 'current'
|
|
28
|
+
? `${staticProduct.bundleId}-${latestVersion}`
|
|
29
|
+
: staticProduct.bundleId;
|
|
30
|
+
return {
|
|
31
|
+
id: productId,
|
|
32
|
+
name: staticProduct.name,
|
|
33
|
+
description: staticProduct.description,
|
|
34
|
+
bundleId,
|
|
35
|
+
latestVersion,
|
|
36
|
+
availableVersions: info.versions.length > 0 ? info.versions : [latestVersion],
|
|
37
|
+
labelKey: staticProduct.searchLabel,
|
|
38
|
+
};
|
|
65
39
|
}
|
|
66
40
|
/**
|
|
67
|
-
*
|
|
41
|
+
* Build a static fallback ProductMetadata when MapsRegistry has no data
|
|
42
|
+
* for a given product.
|
|
68
43
|
*/
|
|
69
|
-
|
|
44
|
+
function buildFallbackMetadata(productId) {
|
|
70
45
|
const product = JAMF_PRODUCTS[productId];
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// Skip if no bundle_id or doesn't match our product
|
|
81
|
-
if (bundleId?.startsWith(product.bundleId) !== true) {
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
const latestVersion = extractVersionFromBundleId(bundleId) ?? 'current';
|
|
85
|
-
// Find product label key
|
|
86
|
-
const productLabel = result?.labels?.find(l => l.key.startsWith('product-') && !l.key.includes('-'));
|
|
87
|
-
const labelKey = productLabel?.key ?? product.searchLabel;
|
|
88
|
-
return {
|
|
89
|
-
id: productId,
|
|
90
|
-
name: product.name,
|
|
91
|
-
description: product.description,
|
|
92
|
-
bundleId,
|
|
93
|
-
latestVersion,
|
|
94
|
-
availableVersions: availableVersions.length > 0 ? availableVersions : [latestVersion],
|
|
95
|
-
labelKey
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
log.error(`Error fetching metadata for ${productId}: ${String(error)}`);
|
|
101
|
-
}
|
|
102
|
-
return null;
|
|
46
|
+
return {
|
|
47
|
+
id: productId,
|
|
48
|
+
name: product.name,
|
|
49
|
+
description: product.description,
|
|
50
|
+
bundleId: product.bundleId,
|
|
51
|
+
latestVersion: product.latestVersion,
|
|
52
|
+
availableVersions: [product.latestVersion],
|
|
53
|
+
labelKey: product.searchLabel,
|
|
54
|
+
};
|
|
103
55
|
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Product Metadata
|
|
58
|
+
// ============================================================================
|
|
104
59
|
/**
|
|
105
|
-
* Get all products with their latest metadata
|
|
106
|
-
* Uses
|
|
60
|
+
* Get all products with their latest metadata.
|
|
61
|
+
* Uses MapsRegistry to discover products and versions dynamically,
|
|
62
|
+
* with fallback to static JAMF_PRODUCTS constants.
|
|
107
63
|
*/
|
|
108
64
|
export async function getProductsMetadata(ctx) {
|
|
109
65
|
const log = ctx.logger.createLogger('metadata');
|
|
110
|
-
const fetchJson = makeFetchJson(ctx.config.request);
|
|
111
66
|
const cacheKey = 'metadata:products';
|
|
112
67
|
// Check cache
|
|
113
68
|
const cached = await ctx.cache.get(cacheKey);
|
|
114
69
|
if (cached !== null) {
|
|
115
70
|
return cached;
|
|
116
71
|
}
|
|
117
|
-
// Fetch metadata for all products concurrently
|
|
118
|
-
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
119
|
-
const fetchResults = await Promise.all(productIds.map(async (productId) => {
|
|
120
|
-
try {
|
|
121
|
-
const metadata = await fetchProductMetadata(productId, fetchJson, log);
|
|
122
|
-
return { productId, metadata };
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
log.error(`Failed to fetch metadata for ${productId}: ${String(error)}`);
|
|
126
|
-
return { productId, metadata: null };
|
|
127
|
-
}
|
|
128
|
-
}));
|
|
129
72
|
const products = [];
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
73
|
+
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
74
|
+
try {
|
|
75
|
+
const registryProducts = await ctx.mapsRegistry.getProducts();
|
|
76
|
+
// Build a lookup by bundleStem for quick matching
|
|
77
|
+
const registryMap = new Map();
|
|
78
|
+
for (const rp of registryProducts) {
|
|
79
|
+
registryMap.set(rp.bundleStem, rp);
|
|
80
|
+
}
|
|
81
|
+
for (const productId of productIds) {
|
|
82
|
+
const bundleStem = productIdToBundleStem(productId);
|
|
83
|
+
const info = registryMap.get(bundleStem);
|
|
84
|
+
if (info !== undefined) {
|
|
85
|
+
products.push(buildProductMetadata(productId, info));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
log.debug(`No registry entry for ${productId} (stem=${bundleStem}), using fallback`);
|
|
89
|
+
products.push(buildFallbackMetadata(productId));
|
|
90
|
+
}
|
|
133
91
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
name: product.name,
|
|
140
|
-
description: product.description,
|
|
141
|
-
bundleId: product.bundleId,
|
|
142
|
-
latestVersion: product.latestVersion,
|
|
143
|
-
availableVersions: [product.latestVersion],
|
|
144
|
-
labelKey: product.searchLabel
|
|
145
|
-
});
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
log.error(`MapsRegistry failed, using static fallback: ${String(error)}`);
|
|
95
|
+
for (const productId of productIds) {
|
|
96
|
+
products.push(buildFallbackMetadata(productId));
|
|
146
97
|
}
|
|
147
98
|
}
|
|
148
99
|
// Cache for 24 hours
|
|
@@ -150,8 +101,11 @@ export async function getProductsMetadata(ctx) {
|
|
|
150
101
|
return products;
|
|
151
102
|
}
|
|
152
103
|
/**
|
|
153
|
-
* Get the bundle ID for a specific product and version
|
|
154
|
-
* Returns the latest bundle ID if version is undefined or 'current'
|
|
104
|
+
* Get the bundle ID for a specific product and version.
|
|
105
|
+
* Returns the latest bundle ID if version is undefined or 'current'.
|
|
106
|
+
*
|
|
107
|
+
* The returned value is a legacy-compatible bundleId string
|
|
108
|
+
* (e.g. 'jamf-pro-documentation-11.24.0') used for URL construction.
|
|
155
109
|
*/
|
|
156
110
|
export async function getBundleIdForVersion(ctx, productId, version) {
|
|
157
111
|
const log = ctx.logger.createLogger('metadata');
|
|
@@ -160,13 +114,14 @@ export async function getBundleIdForVersion(ctx, productId, version) {
|
|
|
160
114
|
if (product === undefined) {
|
|
161
115
|
return null;
|
|
162
116
|
}
|
|
163
|
-
// If no version specified or 'current', return latest
|
|
117
|
+
// If no version specified or 'current'/'latest', return latest bundleId
|
|
164
118
|
if (version === undefined || version === 'current' || version === 'latest') {
|
|
165
119
|
return product.bundleId;
|
|
166
120
|
}
|
|
167
121
|
// Check if requested version is available
|
|
168
122
|
if (!product.availableVersions.includes(version)) {
|
|
169
|
-
log.warning(`Version ${version} not available for ${productId}.
|
|
123
|
+
log.warning(`Version ${version} not available for ${productId}. ` +
|
|
124
|
+
`Available: ${product.availableVersions.join(', ')}`);
|
|
170
125
|
return null;
|
|
171
126
|
}
|
|
172
127
|
// Construct versioned bundle ID
|
|
@@ -174,148 +129,49 @@ export async function getBundleIdForVersion(ctx, productId, version) {
|
|
|
174
129
|
return `${baseBundle}-${version}`;
|
|
175
130
|
}
|
|
176
131
|
/**
|
|
177
|
-
* Get available versions for a product
|
|
132
|
+
* Get available versions for a product.
|
|
133
|
+
*
|
|
134
|
+
* Uses MapsRegistry.getVersions() to fetch versions for a single product
|
|
135
|
+
* instead of loading the full product catalogue via getProductsMetadata().
|
|
136
|
+
* Falls back to the static JAMF_PRODUCTS constant on failure.
|
|
178
137
|
*/
|
|
179
138
|
export async function getAvailableVersions(ctx, productId) {
|
|
180
|
-
const
|
|
181
|
-
const
|
|
182
|
-
return product?.availableVersions ?? [];
|
|
183
|
-
}
|
|
184
|
-
// ============================================================================
|
|
185
|
-
// Topic Categories from TOC
|
|
186
|
-
// ============================================================================
|
|
187
|
-
/**
|
|
188
|
-
* Parse TOC HTML to extract categories
|
|
189
|
-
*/
|
|
190
|
-
function parseTocCategories(tocData) {
|
|
191
|
-
const categories = [];
|
|
192
|
-
// Sort by nav ID number
|
|
193
|
-
const sortedEntries = Object.entries(tocData)
|
|
194
|
-
.filter(([key]) => key.startsWith('nav-'))
|
|
195
|
-
.sort((a, b) => {
|
|
196
|
-
const numA = parseInt(a[0].replace('nav-', ''), 10);
|
|
197
|
-
const numB = parseInt(b[0].replace('nav-', ''), 10);
|
|
198
|
-
return numA - numB;
|
|
199
|
-
});
|
|
200
|
-
for (const [navId, html] of sortedEntries) {
|
|
201
|
-
if (typeof html !== 'string' || !html.includes('<ul')) {
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
const $ = cheerio.load(html);
|
|
205
|
-
const children = [];
|
|
206
|
-
// Get all article titles in this section
|
|
207
|
-
$('a').each((_, el) => {
|
|
208
|
-
const title = $(el).text().trim();
|
|
209
|
-
if (title !== '') {
|
|
210
|
-
children.push(title);
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
if (children.length > 0) {
|
|
214
|
-
// First child is usually the section title
|
|
215
|
-
const title = children[0] ?? 'Untitled';
|
|
216
|
-
categories.push({
|
|
217
|
-
navId,
|
|
218
|
-
title,
|
|
219
|
-
articleCount: children.length,
|
|
220
|
-
children: children.slice(1) // Exclude the title itself
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return categories;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Convert TOC category to topic ID (slug)
|
|
228
|
-
*/
|
|
229
|
-
function categoryToTopicId(title) {
|
|
230
|
-
return title
|
|
231
|
-
.toLowerCase()
|
|
232
|
-
.replace(/[^a-z0-9\s-]/g, '')
|
|
233
|
-
.replace(/\s+/g, '-')
|
|
234
|
-
.replace(/-+/g, '-')
|
|
235
|
-
.replace(/^-|-$/g, '')
|
|
236
|
-
.slice(0, 30); // Limit length
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Fetch topic categories from TOC for a product
|
|
240
|
-
*/
|
|
241
|
-
async function fetchTopicCategories(productId, ctx, fetchJson, log) {
|
|
139
|
+
const log = ctx.logger.createLogger('metadata');
|
|
140
|
+
const bundleStem = productIdToBundleStem(productId);
|
|
242
141
|
try {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
if (product === undefined) {
|
|
247
|
-
return [];
|
|
142
|
+
const versions = await ctx.mapsRegistry.getVersions(bundleStem);
|
|
143
|
+
if (versions.length > 0) {
|
|
144
|
+
return versions;
|
|
248
145
|
}
|
|
249
|
-
const tocUrl = `${DOCS_API_URL}/bundle/${product.bundleId}/toc`;
|
|
250
|
-
const tocData = await fetchJson(tocUrl);
|
|
251
|
-
return parseTocCategories(tocData);
|
|
252
146
|
}
|
|
253
147
|
catch (error) {
|
|
254
|
-
log.error(`
|
|
255
|
-
return [];
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Add or update a topic in the map
|
|
260
|
-
*/
|
|
261
|
-
function upsertTopic(topicsMap, category) {
|
|
262
|
-
const topicId = categoryToTopicId(category.title);
|
|
263
|
-
if (!topicsMap.has(topicId)) {
|
|
264
|
-
// Add new topic from TOC
|
|
265
|
-
topicsMap.set(topicId, {
|
|
266
|
-
id: topicId,
|
|
267
|
-
name: category.title,
|
|
268
|
-
source: 'toc',
|
|
269
|
-
articleCount: category.articleCount
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
// Update existing topic with article count (accumulate across products)
|
|
274
|
-
const existing = topicsMap.get(topicId);
|
|
275
|
-
if (existing !== undefined) {
|
|
276
|
-
existing.articleCount = (existing.articleCount ?? 0) + category.articleCount;
|
|
277
|
-
}
|
|
148
|
+
log.error(`MapsRegistry.getVersions failed for ${productId}: ${String(error)}`);
|
|
278
149
|
}
|
|
150
|
+
// Fallback: return the static latestVersion from constants
|
|
151
|
+
return [JAMF_PRODUCTS[productId].latestVersion];
|
|
279
152
|
}
|
|
153
|
+
// ============================================================================
|
|
154
|
+
// Topic Categories
|
|
155
|
+
// ============================================================================
|
|
280
156
|
/**
|
|
281
|
-
* Get all topics
|
|
157
|
+
* Get all topics. Returns manual topics from JAMF_TOPICS constants.
|
|
158
|
+
* The manual topics serve as the authoritative topic category list.
|
|
282
159
|
*/
|
|
283
160
|
export async function getTopicsMetadata(ctx) {
|
|
284
|
-
const log = ctx.logger.createLogger('metadata');
|
|
285
|
-
const fetchJson = makeFetchJson(ctx.config.request);
|
|
286
161
|
const cacheKey = 'metadata:topics';
|
|
287
162
|
// Check cache
|
|
288
163
|
const cached = await ctx.cache.get(cacheKey);
|
|
289
164
|
if (cached !== null) {
|
|
290
165
|
return cached;
|
|
291
166
|
}
|
|
292
|
-
const
|
|
293
|
-
// Start with manual topics as fallback
|
|
167
|
+
const topics = [];
|
|
294
168
|
for (const [id, topic] of Object.entries(JAMF_TOPICS)) {
|
|
295
|
-
|
|
169
|
+
topics.push({
|
|
296
170
|
id,
|
|
297
171
|
name: topic.name,
|
|
298
|
-
source: 'manual'
|
|
172
|
+
source: 'manual',
|
|
299
173
|
});
|
|
300
174
|
}
|
|
301
|
-
// Fetch TOC categories from ALL products concurrently
|
|
302
|
-
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
303
|
-
const tocResults = await Promise.all(productIds.map(async (productId) => {
|
|
304
|
-
try {
|
|
305
|
-
const categories = await fetchTopicCategories(productId, ctx, fetchJson, log);
|
|
306
|
-
return { productId, categories };
|
|
307
|
-
}
|
|
308
|
-
catch (error) {
|
|
309
|
-
log.error(`Error fetching TOC for ${productId}: ${String(error)}`);
|
|
310
|
-
return { productId, categories: [] };
|
|
311
|
-
}
|
|
312
|
-
}));
|
|
313
|
-
for (const { categories } of tocResults) {
|
|
314
|
-
for (const category of categories) {
|
|
315
|
-
upsertTopic(topicsMap, category);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
const topics = Array.from(topicsMap.values());
|
|
319
175
|
// Cache for 24 hours
|
|
320
176
|
await ctx.cache.set(cacheKey, topics, ctx.config.cacheTtl.article);
|
|
321
177
|
return topics;
|
|
@@ -324,11 +180,10 @@ export async function getTopicsMetadata(ctx) {
|
|
|
324
180
|
// Product Availability
|
|
325
181
|
// ============================================================================
|
|
326
182
|
/**
|
|
327
|
-
* Check which products have
|
|
183
|
+
* Check which products have documentation available via MapsRegistry.
|
|
328
184
|
*/
|
|
329
185
|
export async function getProductAvailability(ctx) {
|
|
330
186
|
const log = ctx.logger.createLogger('metadata');
|
|
331
|
-
const fetchJson = makeFetchJson(ctx.config.request);
|
|
332
187
|
const cacheKey = 'metadata:product-availability';
|
|
333
188
|
const cached = await ctx.cache.get(cacheKey);
|
|
334
189
|
if (cached !== null) {
|
|
@@ -336,17 +191,21 @@ export async function getProductAvailability(ctx) {
|
|
|
336
191
|
}
|
|
337
192
|
const availability = {};
|
|
338
193
|
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
194
|
+
try {
|
|
195
|
+
const registryProducts = await ctx.mapsRegistry.getProducts();
|
|
196
|
+
// Build a set of known bundleStems
|
|
197
|
+
const knownStems = new Set(registryProducts.map(rp => rp.bundleStem));
|
|
198
|
+
for (const productId of productIds) {
|
|
199
|
+
const bundleStem = productIdToBundleStem(productId);
|
|
200
|
+
availability[productId] = knownStems.has(bundleStem);
|
|
343
201
|
}
|
|
344
|
-
|
|
345
|
-
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
log.error(`MapsRegistry failed for availability check: ${String(error)}`);
|
|
205
|
+
// On failure, assume all products are available (optimistic)
|
|
206
|
+
for (const productId of productIds) {
|
|
207
|
+
availability[productId] = true;
|
|
346
208
|
}
|
|
347
|
-
}));
|
|
348
|
-
for (const { productId, hasContent } of results) {
|
|
349
|
-
availability[productId] = hasContent;
|
|
350
209
|
}
|
|
351
210
|
// Cache for 1 hour
|
|
352
211
|
await ctx.cache.set(cacheKey, availability, 60 * 60 * 1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/core/services/metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/core/services/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search service — Fluid Topics powered search
|
|
3
|
+
*/
|
|
4
|
+
import type { SearchResult, SearchParams, SearchDocumentationResult, FtSearchEntry, FtSearchFilter } from '../types.js';
|
|
5
|
+
import type { ServerContext } from '../types/context.js';
|
|
6
|
+
export type { SearchDocumentationResult } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Build Fluid Topics search filters from search params.
|
|
9
|
+
*
|
|
10
|
+
* - product → `zoominmetadata` filter using searchLabel
|
|
11
|
+
* - docType → `jamf:contentType` filter using DOC_TYPE_CONTENT_TYPE_MAP
|
|
12
|
+
* - version → `version` filter
|
|
13
|
+
* - auto-adds `latestVersion=yes` when no version specified
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildSearchFilters(params: Pick<SearchParams, 'product' | 'docType' | 'version'>): FtSearchFilter[];
|
|
16
|
+
/**
|
|
17
|
+
* Transform a Fluid Topics search entry into an enriched SearchResult.
|
|
18
|
+
*/
|
|
19
|
+
export declare function transformFtSearchResult(entry: FtSearchEntry): SearchResult;
|
|
20
|
+
/**
|
|
21
|
+
* Search Jamf documentation using the Fluid Topics clustered-search API.
|
|
22
|
+
*
|
|
23
|
+
* 1. Checks SearchProvider first (custom backend injection).
|
|
24
|
+
* 2. Calls ft-client.search() with constructed filters.
|
|
25
|
+
* 3. Transforms results and applies post-processing pipeline:
|
|
26
|
+
* - Client-side topic/docType filtering with progressive relaxation
|
|
27
|
+
* - Pagination
|
|
28
|
+
* - Token truncation
|
|
29
|
+
*/
|
|
30
|
+
export declare function searchDocumentation(ctx: ServerContext, params: SearchParams): Promise<SearchDocumentationResult>;
|
|
31
|
+
//# sourceMappingURL=search-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/search-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,cAAc,EAKf,MAAM,aAAa,CAAC;AAYrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiBzD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AA6F7D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,GAC5D,cAAc,EAAE,CAsClB;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,GACnB,YAAY,CAgBd;AA4QD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,yBAAyB,CAAC,CAuDpC"}
|