@get-technology-inc/jamf-docs-mcp-server 1.3.1 → 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.
- package/dist/completions.d.ts +1 -0
- package/dist/completions.d.ts.map +1 -1
- package/dist/completions.js +4 -1
- package/dist/completions.js.map +1 -1
- package/dist/constants.d.ts +50 -13
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +38 -13
- package/dist/constants.js.map +1 -1
- package/dist/schemas/index.d.ts +9 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +7 -2
- package/dist/schemas/index.js.map +1 -1
- package/dist/services/scraper.d.ts +3 -1
- package/dist/services/scraper.d.ts.map +1 -1
- package/dist/services/scraper.js +33 -14
- package/dist/services/scraper.js.map +1 -1
- package/dist/tools/get-article.d.ts.map +1 -1
- package/dist/tools/get-article.js +2 -1
- 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 +2 -1
- package/dist/tools/get-toc.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +6 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +39 -6
- package/dist/transport/http.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/url.d.ts +9 -1
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +24 -2
- package/dist/utils/url.js.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type definitions for Jamf Docs MCP Server
|
|
3
3
|
*/
|
|
4
|
-
import type { ResponseFormat, ProductId, TopicId, DocTypeId } from './constants.js';
|
|
4
|
+
import type { ResponseFormat, ProductId, TopicId, DocTypeId, LocaleId } from './constants.js';
|
|
5
5
|
/**
|
|
6
6
|
* Token information for response size management
|
|
7
7
|
*/
|
|
@@ -57,6 +57,7 @@ export interface SearchParams {
|
|
|
57
57
|
version?: string | undefined;
|
|
58
58
|
topic?: TopicId | undefined;
|
|
59
59
|
docType?: DocTypeId | undefined;
|
|
60
|
+
language?: LocaleId | undefined;
|
|
60
61
|
limit?: number | undefined;
|
|
61
62
|
page?: number | undefined;
|
|
62
63
|
maxTokens?: number | undefined;
|
|
@@ -101,6 +102,7 @@ export interface SearchResponse {
|
|
|
101
102
|
}
|
|
102
103
|
export interface GetArticleParams {
|
|
103
104
|
url: string;
|
|
105
|
+
language?: LocaleId | undefined;
|
|
104
106
|
includeRelated?: boolean;
|
|
105
107
|
section?: string | undefined;
|
|
106
108
|
maxTokens?: number | undefined;
|
|
@@ -126,6 +128,7 @@ export interface ArticleResponse extends ParsedArticle {
|
|
|
126
128
|
}
|
|
127
129
|
export interface GetTocParams {
|
|
128
130
|
product: ProductId;
|
|
131
|
+
language?: LocaleId | undefined;
|
|
129
132
|
version?: string;
|
|
130
133
|
page?: number | undefined;
|
|
131
134
|
maxTokens?: number | undefined;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqLH,cAAc;AACd,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAAuB,EACvB,GAAY,EACZ,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAmB;QACvB,QAAG,GAAH,GAAG,CAAS;QACZ,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,4CAAuB,CAAA;IACvB,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;IAC3B,wDAAmC,CAAA;IACnC,gDAA2B,CAAA;IAC3B,wCAAmB,CAAA;AACrB,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B"}
|
package/dist/utils/url.d.ts
CHANGED
|
@@ -4,8 +4,16 @@
|
|
|
4
4
|
* Hostname allowlist and validation for Jamf documentation URLs.
|
|
5
5
|
* Shared by both the schema layer and the scraper service.
|
|
6
6
|
*/
|
|
7
|
+
import { type LocaleId } from '../constants.js';
|
|
7
8
|
/** Allowed hostnames for URL validation. */
|
|
8
9
|
export declare const ALLOWED_HOSTNAMES: Set<string>;
|
|
9
|
-
/** Check whether a URL string points to an allowed Jamf documentation hostname. */
|
|
10
|
+
/** Check whether a URL string points to an allowed Jamf documentation hostname with HTTPS. */
|
|
10
11
|
export declare function isAllowedHostname(urlStr: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Extract locale segment from a Jamf documentation URL.
|
|
14
|
+
* Returns the locale if found and supported, otherwise DEFAULT_LOCALE.
|
|
15
|
+
*
|
|
16
|
+
* URL structure: learn.jamf.com/{locale}/bundle/{bundleId}/page/{page}.html
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractLocaleFromUrl(urlStr: string): LocaleId;
|
|
11
19
|
//# sourceMappingURL=url.d.ts.map
|
package/dist/utils/url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnF,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AAEH,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAa7D"}
|
package/dist/utils/url.js
CHANGED
|
@@ -4,20 +4,42 @@
|
|
|
4
4
|
* Hostname allowlist and validation for Jamf documentation URLs.
|
|
5
5
|
* Shared by both the schema layer and the scraper service.
|
|
6
6
|
*/
|
|
7
|
+
import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '../constants.js';
|
|
7
8
|
/** Allowed hostnames for URL validation. */
|
|
8
9
|
export const ALLOWED_HOSTNAMES = new Set([
|
|
9
10
|
'learn.jamf.com',
|
|
10
11
|
'learn-be.jamf.com',
|
|
11
12
|
'docs.jamf.com',
|
|
12
13
|
]);
|
|
13
|
-
/** Check whether a URL string points to an allowed Jamf documentation hostname. */
|
|
14
|
+
/** Check whether a URL string points to an allowed Jamf documentation hostname with HTTPS. */
|
|
14
15
|
export function isAllowedHostname(urlStr) {
|
|
15
16
|
try {
|
|
16
17
|
const url = new URL(urlStr);
|
|
17
|
-
return ALLOWED_HOSTNAMES.has(url.hostname);
|
|
18
|
+
return url.protocol === 'https:' && ALLOWED_HOSTNAMES.has(url.hostname);
|
|
18
19
|
}
|
|
19
20
|
catch {
|
|
20
21
|
return false;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Extract locale segment from a Jamf documentation URL.
|
|
26
|
+
* Returns the locale if found and supported, otherwise DEFAULT_LOCALE.
|
|
27
|
+
*
|
|
28
|
+
* URL structure: learn.jamf.com/{locale}/bundle/{bundleId}/page/{page}.html
|
|
29
|
+
*/
|
|
30
|
+
export function extractLocaleFromUrl(urlStr) {
|
|
31
|
+
try {
|
|
32
|
+
const url = new URL(urlStr);
|
|
33
|
+
const pathSegments = url.pathname.split('/').filter(Boolean);
|
|
34
|
+
// First segment is the locale (e.g., "en-US", "ja", "zh-Hans")
|
|
35
|
+
const candidate = pathSegments[0];
|
|
36
|
+
if (candidate !== undefined && candidate in SUPPORTED_LOCALES) {
|
|
37
|
+
return candidate;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Invalid URL, fall through
|
|
42
|
+
}
|
|
43
|
+
return DEFAULT_LOCALE;
|
|
44
|
+
}
|
|
23
45
|
//# sourceMappingURL=url.js.map
|
package/dist/utils/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;CAChB,CAAC,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;CAChB,CAAC,CAAC;AAEH,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,+DAA+D;QAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC9D,OAAO,SAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|