/** * Glossary service for parsing and looking up Jamf documentation glossary terms * * Uses Fluid Topics API on learn.jamf.com: * - GET /api/khub/maps/{mapId}/toc — list all glossary terms * - GET /api/khub/maps/{mapId}/topics/{contentId}/content — term HTML * * Jamf's glossary uses DITA glossentry format where each term is a separate topic: *
Definition text
) * * Uses fuse.js for fuzzy ranking of collected entries. */ import { type ProductId, type LocaleId } from '../constants.js'; import type { GlossaryEntry, GlossaryLookupResult } from '../types.js'; import type { ServerContext } from '../types/context.js'; /** * Parse glossary entries from HTML content. * * Priority order: * 1. DITA glossentry format (h1.glossterm + .glossdef) — Jamf's actual format * 2. Definition list (
)
* 4. Fallback: h1 title + article body content
*/
export declare function parseGlossaryEntries(html: string, sourceUrl: string, product?: string): GlossaryEntry[];
/**
* Search for matching glossary entries using fuse.js fuzzy matching.
* Used to rank and filter entries collected from multiple glossary pages.
*/
export declare function searchGlossaryEntries(entries: GlossaryEntry[], term: string): GlossaryEntry[];
/**
* Look up a glossary term across Jamf documentation.
*
* Strategy:
* 1. Fetch glossary TOC from Fluid Topics API (cached)
* 2. Fuzzy-match term against TOC titles
* 3. Fetch and parse matching glossary topics
* 4. Rank results with fuse.js and apply token limit
*/
export declare function lookupGlossaryTerm(ctx: ServerContext, params: {
term: string;
product?: ProductId | undefined;
language?: LocaleId | undefined;
maxTokens?: number | undefined;
}): Promise