@get-technology-inc/jamf-docs-mcp-server 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +233 -21
- package/dist/completions.d.ts +13 -0
- package/dist/completions.d.ts.map +1 -0
- package/dist/completions.js +31 -0
- package/dist/completions.js.map +1 -0
- package/dist/constants.d.ts +125 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +187 -14
- package/dist/constants.js.map +1 -1
- package/dist/index.js +43 -7
- package/dist/index.js.map +1 -1
- package/dist/prompts/compare-versions.d.ts +7 -0
- package/dist/prompts/compare-versions.d.ts.map +1 -0
- package/dist/prompts/compare-versions.js +56 -0
- package/dist/prompts/compare-versions.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +12 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/setup-guide.d.ts +7 -0
- package/dist/prompts/setup-guide.d.ts.map +1 -0
- package/dist/prompts/setup-guide.js +53 -0
- package/dist/prompts/setup-guide.js.map +1 -0
- package/dist/prompts/troubleshoot.d.ts +7 -0
- package/dist/prompts/troubleshoot.d.ts.map +1 -0
- package/dist/prompts/troubleshoot.js +52 -0
- package/dist/prompts/troubleshoot.js.map +1 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +78 -2
- package/dist/resources/index.js.map +1 -1
- package/dist/schemas/index.d.ts +10 -7
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +18 -16
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/output.d.ts +78 -0
- package/dist/schemas/output.d.ts.map +1 -0
- package/dist/schemas/output.js +78 -0
- package/dist/schemas/output.js.map +1 -0
- package/dist/services/cache.d.ts +37 -3
- package/dist/services/cache.d.ts.map +1 -1
- package/dist/services/cache.js +139 -15
- package/dist/services/cache.js.map +1 -1
- package/dist/services/metadata.d.ts +4 -0
- package/dist/services/metadata.d.ts.map +1 -1
- package/dist/services/metadata.js +52 -9
- package/dist/services/metadata.js.map +1 -1
- package/dist/services/scraper.d.ts +9 -1
- package/dist/services/scraper.d.ts.map +1 -1
- package/dist/services/scraper.js +171 -20
- package/dist/services/scraper.js.map +1 -1
- package/dist/services/tokenizer.d.ts +5 -0
- package/dist/services/tokenizer.d.ts.map +1 -1
- package/dist/services/tokenizer.js +20 -5
- package/dist/services/tokenizer.js.map +1 -1
- package/dist/tools/get-article.d.ts.map +1 -1
- package/dist/tools/get-article.js +37 -11
- package/dist/tools/get-article.js.map +1 -1
- package/dist/tools/get-toc.d.ts.map +1 -1
- package/dist/tools/get-toc.js +54 -10
- package/dist/tools/get-toc.js.map +1 -1
- package/dist/tools/list-products.d.ts.map +1 -1
- package/dist/tools/list-products.js +34 -15
- package/dist/tools/list-products.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +83 -22
- package/dist/tools/search.js.map +1 -1
- package/dist/transport/http.d.ts +12 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +297 -0
- package/dist/transport/http.js.map +1 -0
- package/dist/transport/index.d.ts +13 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +40 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/types.d.ts +30 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/doc-type.d.ts +9 -0
- package/dist/utils/doc-type.d.ts.map +1 -0
- package/dist/utils/doc-type.js +16 -0
- package/dist/utils/doc-type.js.map +1 -0
- package/dist/utils/progress.d.ts +13 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +18 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/sanitize.d.ts +30 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +57 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/url.d.ts +11 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +23 -0
- package/dist/utils/url.js.map +1 -0
- package/package.json +11 -4
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
* Retrieve the full content of a specific Jamf documentation article.
|
|
4
4
|
*/
|
|
5
5
|
import { GetArticleInputSchema } from '../schemas/index.js';
|
|
6
|
+
import { reportProgress } from '../utils/progress.js';
|
|
7
|
+
import { ArticleOutputSchema } from '../schemas/output.js';
|
|
6
8
|
import { ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
|
|
7
9
|
import { fetchArticle } from '../services/scraper.js';
|
|
10
|
+
import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
|
|
8
11
|
function formatBreadcrumb(breadcrumb) {
|
|
9
12
|
if (breadcrumb === undefined || breadcrumb.length === 0) {
|
|
10
13
|
return '';
|
|
@@ -49,16 +52,17 @@ function formatRelatedArticles(articles) {
|
|
|
49
52
|
}
|
|
50
53
|
let result = '\n\n---\n\n## Related Articles\n\n';
|
|
51
54
|
for (const related of articles) {
|
|
52
|
-
result += `- [${related.title}](${related.url})\n`;
|
|
55
|
+
result += `- [${sanitizeMarkdownText(related.title)}](${sanitizeMarkdownUrl(related.url)})\n`;
|
|
53
56
|
}
|
|
54
57
|
return result;
|
|
55
58
|
}
|
|
56
59
|
function formatFooter(url, tokenInfo, compact = false) {
|
|
60
|
+
const safeUrl = sanitizeMarkdownUrl(url);
|
|
57
61
|
if (compact) {
|
|
58
|
-
return `\n---\n*[Source](${
|
|
62
|
+
return `\n---\n*[Source](${safeUrl}) | ${tokenInfo.tokenCount} tokens${tokenInfo.truncated ? ' (truncated)' : ''}*\n`;
|
|
59
63
|
}
|
|
60
64
|
let result = '\n\n---\n\n';
|
|
61
|
-
result += `*Source: [${url}](${
|
|
65
|
+
result += `*Source: [${sanitizeMarkdownText(url)}](${safeUrl})*\n`;
|
|
62
66
|
result += `*${tokenInfo.tokenCount.toLocaleString()} tokens`;
|
|
63
67
|
if (tokenInfo.truncated) {
|
|
64
68
|
result += ` (truncated from original, max: ${tokenInfo.maxTokens.toLocaleString()})`;
|
|
@@ -69,7 +73,7 @@ function formatFooter(url, tokenInfo, compact = false) {
|
|
|
69
73
|
/**
|
|
70
74
|
* Format article in compact mode
|
|
71
75
|
*/
|
|
72
|
-
function formatArticleAsCompact(article, tokenInfo
|
|
76
|
+
function formatArticleAsCompact(article, tokenInfo) {
|
|
73
77
|
let markdown = `# ${article.title}\n\n`;
|
|
74
78
|
// Compact metadata
|
|
75
79
|
const meta = [];
|
|
@@ -118,7 +122,7 @@ Args:
|
|
|
118
122
|
- section (string, optional): Extract only a specific section by title or ID (e.g., "Prerequisites", "Configuration")
|
|
119
123
|
- summaryOnly (boolean, optional): Return only article summary and outline instead of full content (default: false). Token-efficient way to preview an article
|
|
120
124
|
- includeRelated (boolean, optional): Include links to related articles (default: false)
|
|
121
|
-
- maxTokens (number, optional): Maximum tokens in response 100-
|
|
125
|
+
- maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)
|
|
122
126
|
- outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief output
|
|
123
127
|
- responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
|
|
124
128
|
|
|
@@ -167,13 +171,14 @@ export function registerGetArticleTool(server) {
|
|
|
167
171
|
title: 'Get Jamf Documentation Article',
|
|
168
172
|
description: TOOL_DESCRIPTION,
|
|
169
173
|
inputSchema: GetArticleInputSchema,
|
|
174
|
+
outputSchema: ArticleOutputSchema,
|
|
170
175
|
annotations: {
|
|
171
176
|
readOnlyHint: true,
|
|
172
177
|
destructiveHint: false,
|
|
173
178
|
idempotentHint: true,
|
|
174
179
|
openWorldHint: true
|
|
175
180
|
}
|
|
176
|
-
}, async (args) => {
|
|
181
|
+
}, async (args, extra) => {
|
|
177
182
|
// Parse and validate input
|
|
178
183
|
const parseResult = GetArticleInputSchema.safeParse(args);
|
|
179
184
|
if (!parseResult.success) {
|
|
@@ -184,12 +189,14 @@ export function registerGetArticleTool(server) {
|
|
|
184
189
|
}
|
|
185
190
|
const params = parseResult.data;
|
|
186
191
|
try {
|
|
192
|
+
await reportProgress(extra, 0, 100);
|
|
187
193
|
const article = await fetchArticle(params.url, {
|
|
188
194
|
includeRelated: params.includeRelated,
|
|
189
195
|
summaryOnly: params.summaryOnly,
|
|
190
196
|
...(params.section !== undefined && { section: params.section }),
|
|
191
197
|
maxTokens: params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS
|
|
192
198
|
});
|
|
199
|
+
await reportProgress(extra, 70, 100);
|
|
193
200
|
const { tokenInfo, sections } = article;
|
|
194
201
|
// Build response
|
|
195
202
|
const response = {
|
|
@@ -198,31 +205,50 @@ export function registerGetArticleTool(server) {
|
|
|
198
205
|
tokenInfo,
|
|
199
206
|
sections
|
|
200
207
|
};
|
|
201
|
-
|
|
208
|
+
const structuredContent = {
|
|
209
|
+
title: article.title,
|
|
210
|
+
url: article.url,
|
|
211
|
+
content: article.content,
|
|
212
|
+
...(article.product !== undefined ? { product: article.product } : {}),
|
|
213
|
+
...(article.version !== undefined ? { version: article.version } : {}),
|
|
214
|
+
...(article.lastUpdated !== undefined ? { lastUpdated: article.lastUpdated } : {}),
|
|
215
|
+
...(article.breadcrumb !== undefined ? { breadcrumb: article.breadcrumb } : {}),
|
|
216
|
+
sections: sections.map(s => ({
|
|
217
|
+
id: s.id,
|
|
218
|
+
title: s.title,
|
|
219
|
+
level: s.level,
|
|
220
|
+
tokenCount: s.tokenCount
|
|
221
|
+
})),
|
|
222
|
+
truncated: tokenInfo.truncated
|
|
223
|
+
};
|
|
202
224
|
if (params.responseFormat === ResponseFormat.JSON) {
|
|
225
|
+
await reportProgress(extra, 100, 100);
|
|
203
226
|
return {
|
|
204
227
|
content: [{
|
|
205
228
|
type: 'text',
|
|
206
229
|
text: JSON.stringify(response, null, 2)
|
|
207
|
-
}]
|
|
230
|
+
}],
|
|
231
|
+
structuredContent
|
|
208
232
|
};
|
|
209
233
|
}
|
|
210
234
|
// Markdown format (full or compact)
|
|
211
235
|
const markdown = params.outputMode === OutputMode.COMPACT
|
|
212
|
-
? formatArticleAsCompact(article, tokenInfo
|
|
236
|
+
? formatArticleAsCompact(article, tokenInfo)
|
|
213
237
|
: formatArticleAsMarkdown(article, tokenInfo, sections, {
|
|
214
238
|
section: params.section,
|
|
215
239
|
includeRelated: params.includeRelated
|
|
216
240
|
});
|
|
241
|
+
await reportProgress(extra, 100, 100);
|
|
217
242
|
return {
|
|
218
243
|
content: [{
|
|
219
244
|
type: 'text',
|
|
220
245
|
text: markdown
|
|
221
|
-
}]
|
|
246
|
+
}],
|
|
247
|
+
structuredContent
|
|
222
248
|
};
|
|
223
249
|
}
|
|
224
250
|
catch (error) {
|
|
225
|
-
const errorMessage = error
|
|
251
|
+
const errorMessage = getSafeErrorMessage(error);
|
|
226
252
|
// Provide helpful error messages
|
|
227
253
|
let helpText = '';
|
|
228
254
|
if (errorMessage.includes('404')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../src/tools/get-article.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../src/tools/get-article.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-toc.d.ts","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-toc.d.ts","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmJzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2I1D"}
|
package/dist/tools/get-toc.js
CHANGED
|
@@ -3,15 +3,18 @@
|
|
|
3
3
|
* Get the table of contents for a Jamf product's documentation.
|
|
4
4
|
*/
|
|
5
5
|
import { GetTocInputSchema } from '../schemas/index.js';
|
|
6
|
+
import { reportProgress } from '../utils/progress.js';
|
|
7
|
+
import { TocOutputSchema } from '../schemas/output.js';
|
|
6
8
|
import { ResponseFormat, OutputMode, JAMF_PRODUCTS, TOKEN_CONFIG } from '../constants.js';
|
|
7
9
|
import { fetchTableOfContents } from '../services/scraper.js';
|
|
8
10
|
import { getAvailableVersions } from '../services/metadata.js';
|
|
11
|
+
import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
|
|
9
12
|
/**
|
|
10
13
|
* Render a single TOC entry as markdown
|
|
11
14
|
*/
|
|
12
15
|
function renderTocEntry(entry, depth = 0, compact = false) {
|
|
13
16
|
const indent = ' '.repeat(depth);
|
|
14
|
-
let result = `${indent}- [${entry.title}](${entry.url})\n`;
|
|
17
|
+
let result = `${indent}- [${sanitizeMarkdownText(entry.title)}](${sanitizeMarkdownUrl(entry.url)})\n`;
|
|
15
18
|
if (!compact && entry.children !== undefined && entry.children.length > 0) {
|
|
16
19
|
for (const child of entry.children) {
|
|
17
20
|
result += renderTocEntry(child, depth + 1, compact);
|
|
@@ -56,6 +59,19 @@ function formatTocFull(productName, version, toc, pagination, tokenInfo) {
|
|
|
56
59
|
markdown += '\n\n*Use `jamf_docs_get_article` with any URL above to read the full content.*\n';
|
|
57
60
|
return markdown;
|
|
58
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Flatten nested TOC entries into a flat list
|
|
64
|
+
*/
|
|
65
|
+
function flattenTocEntries(entries) {
|
|
66
|
+
const flat = [];
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
flat.push({ title: entry.title, url: entry.url });
|
|
69
|
+
if (entry.children !== undefined && entry.children.length > 0) {
|
|
70
|
+
flat.push(...flattenTocEntries(entry.children));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return flat;
|
|
74
|
+
}
|
|
59
75
|
const TOOL_NAME = 'jamf_docs_get_toc';
|
|
60
76
|
const TOOL_DESCRIPTION = `Get the table of contents for a Jamf product's documentation.
|
|
61
77
|
|
|
@@ -66,7 +82,7 @@ Args:
|
|
|
66
82
|
- product (string, required): Product ID - one of: jamf-pro, jamf-school, jamf-connect, jamf-protect
|
|
67
83
|
- version (string, optional): Specific version (defaults to latest)
|
|
68
84
|
- page (number, optional): Page number for pagination 1-100 (default: 1)
|
|
69
|
-
- maxTokens (number, optional): Maximum tokens in response 100-
|
|
85
|
+
- maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)
|
|
70
86
|
- outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for flat list without nested children
|
|
71
87
|
- responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
|
|
72
88
|
|
|
@@ -110,13 +126,14 @@ export function registerGetTocTool(server) {
|
|
|
110
126
|
title: 'Get Documentation Table of Contents',
|
|
111
127
|
description: TOOL_DESCRIPTION,
|
|
112
128
|
inputSchema: GetTocInputSchema,
|
|
129
|
+
outputSchema: TocOutputSchema,
|
|
113
130
|
annotations: {
|
|
114
131
|
readOnlyHint: true,
|
|
115
132
|
destructiveHint: false,
|
|
116
133
|
idempotentHint: true,
|
|
117
134
|
openWorldHint: true
|
|
118
135
|
}
|
|
119
|
-
}, async (args) => {
|
|
136
|
+
}, async (args, extra) => {
|
|
120
137
|
// Parse and validate input
|
|
121
138
|
const parseResult = GetTocInputSchema.safeParse(args);
|
|
122
139
|
if (!parseResult.success) {
|
|
@@ -154,10 +171,12 @@ export function registerGetTocTool(server) {
|
|
|
154
171
|
};
|
|
155
172
|
}
|
|
156
173
|
}
|
|
174
|
+
await reportProgress(extra, 0, 100);
|
|
157
175
|
const tocResult = await fetchTableOfContents(productId, version, {
|
|
158
176
|
...(params.page !== undefined && { page: params.page }),
|
|
159
177
|
maxTokens: params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS
|
|
160
178
|
});
|
|
179
|
+
await reportProgress(extra, 50, 100);
|
|
161
180
|
const { toc, pagination, tokenInfo } = tocResult;
|
|
162
181
|
// Build response
|
|
163
182
|
const response = {
|
|
@@ -167,33 +186,58 @@ export function registerGetTocTool(server) {
|
|
|
167
186
|
tokenInfo,
|
|
168
187
|
pagination
|
|
169
188
|
};
|
|
170
|
-
|
|
189
|
+
const structuredContent = {
|
|
190
|
+
product: productInfo.name,
|
|
191
|
+
version,
|
|
192
|
+
totalEntries: pagination.totalItems,
|
|
193
|
+
page: pagination.page,
|
|
194
|
+
totalPages: pagination.totalPages,
|
|
195
|
+
hasMore: pagination.hasNext,
|
|
196
|
+
entries: flattenTocEntries(toc)
|
|
197
|
+
};
|
|
198
|
+
// Version transparency note
|
|
199
|
+
const versionNote = (params.version !== undefined && params.version !== '' && params.version !== 'current')
|
|
200
|
+
? 'The Jamf documentation API only provides current version content. Results shown are from the latest version.'
|
|
201
|
+
: undefined;
|
|
171
202
|
if (params.responseFormat === ResponseFormat.JSON) {
|
|
203
|
+
await reportProgress(extra, 100, 100);
|
|
204
|
+
const jsonResponse = versionNote !== undefined
|
|
205
|
+
? { ...response, versionNote }
|
|
206
|
+
: response;
|
|
172
207
|
return {
|
|
173
208
|
content: [{
|
|
174
209
|
type: 'text',
|
|
175
|
-
text: JSON.stringify(
|
|
176
|
-
}]
|
|
210
|
+
text: JSON.stringify(jsonResponse, null, 2)
|
|
211
|
+
}],
|
|
212
|
+
structuredContent: versionNote !== undefined
|
|
213
|
+
? { ...structuredContent, versionNote }
|
|
214
|
+
: structuredContent
|
|
177
215
|
};
|
|
178
216
|
}
|
|
179
217
|
// Format as markdown (compact or full)
|
|
180
|
-
|
|
218
|
+
let markdown = params.outputMode === OutputMode.COMPACT
|
|
181
219
|
? formatTocCompact(productInfo.name, toc, pagination)
|
|
182
220
|
: formatTocFull(productInfo.name, version, toc, pagination, tokenInfo);
|
|
221
|
+
if (versionNote !== undefined) {
|
|
222
|
+
markdown += `\n> **Version Note:** ${versionNote}\n`;
|
|
223
|
+
}
|
|
224
|
+
await reportProgress(extra, 100, 100);
|
|
183
225
|
return {
|
|
184
226
|
content: [{
|
|
185
227
|
type: 'text',
|
|
186
228
|
text: markdown
|
|
187
|
-
}]
|
|
229
|
+
}],
|
|
230
|
+
structuredContent: versionNote !== undefined
|
|
231
|
+
? { ...structuredContent, versionNote }
|
|
232
|
+
: structuredContent
|
|
188
233
|
};
|
|
189
234
|
}
|
|
190
235
|
catch (error) {
|
|
191
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
192
236
|
return {
|
|
193
237
|
isError: true,
|
|
194
238
|
content: [{
|
|
195
239
|
type: 'text',
|
|
196
|
-
text: `Error fetching table of contents: ${
|
|
240
|
+
text: `Error fetching table of contents: ${getSafeErrorMessage(error)}`
|
|
197
241
|
}]
|
|
198
242
|
};
|
|
199
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-toc.js","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-toc.js","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEtG;;GAEG;AACH,SAAS,cAAc,CAAC,KAAe,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,GAAG,MAAM,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAEtG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,WAAmB,EACnB,GAAe,EACf,UAA0B;IAE1B,IAAI,QAAQ,GAAG,MAAM,WAAW,SAAS,UAAU,CAAC,UAAU,eAAe,CAAC;IAE9E,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,IAAI,gBAAgB,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;IACvE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,QAAQ,IAAI,WAAW,UAAU,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;IACxD,CAAC;IACD,QAAQ,IAAI,KAAK,CAAC;IAElB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,WAAmB,EACnB,OAAe,EACf,GAAe,EACf,UAA0B,EAC1B,SAAoB;IAEpB,IAAI,QAAQ,GAAG,KAAK,WAAW,oBAAoB,CAAC;IACpD,QAAQ,IAAI,gBAAgB,OAAO,aAAa,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,UAAU,QAAQ,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,aAAa,CAAC;IACtJ,QAAQ,IAAI,SAAS,CAAC;IACtB,QAAQ,IAAI,0BAA0B,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,IAAI,WAAW,CAAC;IACxB,QAAQ,IAAI,UAAU,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,UAAU,OAAO,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY,UAAU,CAAC,UAAU,iBAAiB,CAAC;IAChK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,QAAQ,IAAI,iBAAiB,UAAU,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC;IAChE,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,QAAQ,IAAI,qFAAqF,CAAC;IACpG,CAAC;IACD,QAAQ,IAAI,kFAAkF,CAAC;IAE/F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAmB;IAC5C,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DA+CkC,CAAC;AAE5D,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAuB,EAAE;QACzC,2BAA2B;QAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;aACjF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC;YACH,mBAAmB;YACnB,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC;gBACvC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,wBAAwB,MAAM,CAAC,OAAO,yBAAyB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC3J,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,OAAoB,CAAC;YAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;YAE7C,qCAAqC;YACrC,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;YAE5C,gCAAgC;YAChC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1F,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,YAAY,MAAM,CAAC,OAAO,mBAAmB,WAAW,CAAC,IAAI,4BAA4B,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;6BACzK,CAAC;qBACH,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC/D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBACvD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC,kBAAkB;aAC/D,CAAC,CAAC;YAEH,MAAM,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAErC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;YAEjD,iBAAiB;YACjB,MAAM,QAAQ,GAAgB;gBAC5B,OAAO,EAAE,WAAW,CAAC,IAAI;gBACzB,OAAO;gBACP,GAAG;gBACH,SAAS;gBACT,UAAU;aACX,CAAC;YAEF,MAAM,iBAAiB,GAAG;gBACxB,OAAO,EAAE,WAAW,CAAC,IAAI;gBACzB,OAAO;gBACP,YAAY,EAAE,UAAU,CAAC,UAAU;gBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC;aAChC,CAAC;YAEF,4BAA4B;YAC5B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;gBACzG,CAAC,CAAC,8GAA8G;gBAChH,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;gBAClD,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM,YAAY,GAAG,WAAW,KAAK,SAAS;oBAC5C,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE;oBAC9B,CAAC,CAAC,QAAQ,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC5C,CAAC;oBACF,iBAAiB,EAAE,WAAW,KAAK,SAAS;wBAC1C,CAAC,CAAC,EAAE,GAAG,iBAAiB,EAAE,WAAW,EAAE;wBACvC,CAAC,CAAC,iBAAiB;iBACtB,CAAC;YACJ,CAAC;YAED,uCAAuC;YACvC,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO;gBACrD,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC;gBACrD,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAEzE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,QAAQ,IAAI,yBAAyB,WAAW,IAAI,CAAC;YACvD,CAAC;YAED,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,QAAQ;qBACf,CAAC;gBACF,iBAAiB,EAAE,WAAW,KAAK,SAAS;oBAC1C,CAAC,CAAC,EAAE,GAAG,iBAAiB,EAAE,WAAW,EAAE;oBACvC,CAAC,CAAC,iBAAiB;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qCAAqC,mBAAmB,CAAC,KAAK,CAAC,EAAE;qBACxE,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+IhE"}
|
|
@@ -3,14 +3,17 @@
|
|
|
3
3
|
* Lists all available Jamf products and their documentation versions.
|
|
4
4
|
*/
|
|
5
5
|
import { ListProductsInputSchema } from '../schemas/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { ProductListOutputSchema } from '../schemas/output.js';
|
|
7
|
+
import { JAMF_PRODUCTS, JAMF_TOPICS, DOC_TYPES, ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
|
|
7
8
|
import { estimateTokens, createTokenInfo } from '../services/tokenizer.js';
|
|
9
|
+
import { getProductAvailability } from '../services/metadata.js';
|
|
10
|
+
import { getSafeErrorMessage } from '../utils/sanitize.js';
|
|
8
11
|
const TOOL_NAME = 'jamf_docs_list_products';
|
|
9
12
|
const TOOL_DESCRIPTION = `List all available Jamf products, topics, and their documentation versions.
|
|
10
13
|
|
|
11
14
|
This tool returns information about all Jamf products with available documentation,
|
|
12
|
-
including Jamf Pro, Jamf School, Jamf Connect,
|
|
13
|
-
topic filters for search.
|
|
15
|
+
including Jamf Pro, Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet,
|
|
16
|
+
and more. Also lists available topic and docType filters for search.
|
|
14
17
|
|
|
15
18
|
Args:
|
|
16
19
|
- maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
|
|
@@ -43,13 +46,14 @@ export function registerListProductsTool(server) {
|
|
|
43
46
|
title: 'List Jamf Products',
|
|
44
47
|
description: TOOL_DESCRIPTION,
|
|
45
48
|
inputSchema: ListProductsInputSchema,
|
|
49
|
+
outputSchema: ProductListOutputSchema,
|
|
46
50
|
annotations: {
|
|
47
51
|
readOnlyHint: true,
|
|
48
52
|
destructiveHint: false,
|
|
49
53
|
idempotentHint: true,
|
|
50
54
|
openWorldHint: false
|
|
51
55
|
}
|
|
52
|
-
}, (args) => {
|
|
56
|
+
}, async (args) => {
|
|
53
57
|
// Parse and validate input
|
|
54
58
|
const parseResult = ListProductsInputSchema.safeParse(args);
|
|
55
59
|
if (!parseResult.success) {
|
|
@@ -61,13 +65,16 @@ export function registerListProductsTool(server) {
|
|
|
61
65
|
const params = parseResult.data;
|
|
62
66
|
const maxTokens = params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS;
|
|
63
67
|
try {
|
|
68
|
+
// Fetch product availability (cached)
|
|
69
|
+
const availability = await getProductAvailability();
|
|
64
70
|
// Build product list
|
|
65
71
|
const products = Object.values(JAMF_PRODUCTS).map(product => ({
|
|
66
72
|
id: product.id,
|
|
67
73
|
name: product.name,
|
|
68
74
|
description: product.description,
|
|
69
75
|
currentVersion: product.latestVersion,
|
|
70
|
-
availableVersions: [...product.versions]
|
|
76
|
+
availableVersions: [...product.versions],
|
|
77
|
+
hasContent: availability[product.id] ?? true
|
|
71
78
|
}));
|
|
72
79
|
// Build topics list
|
|
73
80
|
const topics = Object.entries(JAMF_TOPICS).map(([id, topic]) => ({
|
|
@@ -75,18 +82,19 @@ export function registerListProductsTool(server) {
|
|
|
75
82
|
name: topic.name,
|
|
76
83
|
keywords: topic.keywords
|
|
77
84
|
}));
|
|
78
|
-
|
|
85
|
+
const structuredContent = { products, topics };
|
|
79
86
|
if (params.responseFormat === ResponseFormat.JSON) {
|
|
87
|
+
const jsonData = JSON.stringify(structuredContent);
|
|
80
88
|
const jsonOutput = JSON.stringify({
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
tokenInfo: createTokenInfo(JSON.stringify({ products, topics }), maxTokens)
|
|
89
|
+
...structuredContent,
|
|
90
|
+
tokenInfo: createTokenInfo(jsonData, maxTokens)
|
|
84
91
|
}, null, 2);
|
|
85
92
|
return {
|
|
86
93
|
content: [{
|
|
87
94
|
type: 'text',
|
|
88
95
|
text: jsonOutput
|
|
89
|
-
}]
|
|
96
|
+
}],
|
|
97
|
+
structuredContent
|
|
90
98
|
};
|
|
91
99
|
}
|
|
92
100
|
// Compact mode: minimal output
|
|
@@ -103,7 +111,8 @@ export function registerListProductsTool(server) {
|
|
|
103
111
|
content: [{
|
|
104
112
|
type: 'text',
|
|
105
113
|
text: markdown
|
|
106
|
-
}]
|
|
114
|
+
}],
|
|
115
|
+
structuredContent
|
|
107
116
|
};
|
|
108
117
|
}
|
|
109
118
|
// Full markdown format
|
|
@@ -113,7 +122,11 @@ export function registerListProductsTool(server) {
|
|
|
113
122
|
markdown += `- **ID**: \`${product.id}\`\n`;
|
|
114
123
|
markdown += `- **Description**: ${product.description}\n`;
|
|
115
124
|
markdown += `- **Current Version**: ${product.currentVersion}\n`;
|
|
116
|
-
markdown += `- **Available Versions**: ${product.availableVersions.join(', ')}\n
|
|
125
|
+
markdown += `- **Available Versions**: ${product.availableVersions.join(', ')}\n`;
|
|
126
|
+
if (!product.hasContent) {
|
|
127
|
+
markdown += '- **Status**: No documentation content available\n';
|
|
128
|
+
}
|
|
129
|
+
markdown += '\n';
|
|
117
130
|
}
|
|
118
131
|
markdown += '---\n\n';
|
|
119
132
|
markdown += '# Available Topics for Filtering\n\n';
|
|
@@ -123,6 +136,12 @@ export function registerListProductsTool(server) {
|
|
|
123
136
|
markdown += ` *Keywords: ${topic.keywords.slice(0, 4).join(', ')}${topic.keywords.length > 4 ? '...' : ''}*\n`;
|
|
124
137
|
}
|
|
125
138
|
markdown += '\n---\n\n';
|
|
139
|
+
markdown += '# Document Types for Filtering\n\n';
|
|
140
|
+
markdown += 'Use `docType` parameter in `jamf_docs_search` to filter by document type:\n\n';
|
|
141
|
+
for (const [id, dt] of Object.entries(DOC_TYPES)) {
|
|
142
|
+
markdown += `- **\`${id}\`**: ${dt.description}\n`;
|
|
143
|
+
}
|
|
144
|
+
markdown += '\n---\n\n';
|
|
126
145
|
// Token info
|
|
127
146
|
const tokenCount = estimateTokens(markdown);
|
|
128
147
|
markdown += `*${tokenCount.toLocaleString()} tokens*\n\n`;
|
|
@@ -132,16 +151,16 @@ export function registerListProductsTool(server) {
|
|
|
132
151
|
content: [{
|
|
133
152
|
type: 'text',
|
|
134
153
|
text: markdown
|
|
135
|
-
}]
|
|
154
|
+
}],
|
|
155
|
+
structuredContent
|
|
136
156
|
};
|
|
137
157
|
}
|
|
138
158
|
catch (error) {
|
|
139
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
140
159
|
return {
|
|
141
160
|
isError: true,
|
|
142
161
|
content: [{
|
|
143
162
|
type: 'text',
|
|
144
|
-
text: `Error listing products: ${
|
|
163
|
+
text: `Error listing products: ${getSafeErrorMessage(error)}`
|
|
145
164
|
}]
|
|
146
165
|
};
|
|
147
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiLzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuM1D"}
|