@get-technology-inc/jamf-docs-mcp-server 5.1.0 → 5.2.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/core/schemas/output.d.ts +9 -0
- package/dist/core/schemas/output.d.ts.map +1 -1
- package/dist/core/schemas/output.js +23 -0
- package/dist/core/schemas/output.js.map +1 -1
- package/dist/core/tools/list-products.d.ts.map +1 -1
- package/dist/core/tools/list-products.js +112 -5
- package/dist/core/tools/list-products.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,6 +16,15 @@ export declare const ProductListOutputSchema: z.ZodObject<{
|
|
|
16
16
|
name: z.ZodString;
|
|
17
17
|
keywords: z.ZodArray<z.ZodString>;
|
|
18
18
|
}, z.core.$strip>>;
|
|
19
|
+
publications: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
20
|
+
id: z.ZodString;
|
|
21
|
+
title: z.ZodString;
|
|
22
|
+
portal: z.ZodOptional<z.ZodString>;
|
|
23
|
+
app: z.ZodOptional<z.ZodString>;
|
|
24
|
+
utility: z.ZodOptional<z.ZodString>;
|
|
25
|
+
locales: z.ZodArray<z.ZodString>;
|
|
26
|
+
versions: z.ZodArray<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>>>;
|
|
19
28
|
}, z.core.$strip>;
|
|
20
29
|
export declare const SearchOutputSchema: z.ZodObject<{
|
|
21
30
|
query: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBAqClC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4D7B,CAAC;AAQH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D9B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAUrC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;iBAepC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;iBAqE1B,CAAC"}
|
|
@@ -16,6 +16,29 @@ export const ProductListOutputSchema = z.object({
|
|
|
16
16
|
name: z.string(),
|
|
17
17
|
keywords: z.array(z.string()),
|
|
18
18
|
})),
|
|
19
|
+
/**
|
|
20
|
+
* Every bundle family Fluid Topics publishes — the publication axis.
|
|
21
|
+
*
|
|
22
|
+
* Separate from `products` on purpose. `products` is the curated set the
|
|
23
|
+
* `product` search filter accepts; this is the set `jamf_docs_get_toc`'s
|
|
24
|
+
* `publication` parameter accepts, and it is an order of magnitude larger
|
|
25
|
+
* (97 vs 12) because most Jamf documents share a product label with
|
|
26
|
+
* another document rather than having one of their own. Folding them
|
|
27
|
+
* together would turn "which product" into "which document".
|
|
28
|
+
*
|
|
29
|
+
* Optional: it comes from the live maps registry, so a request that cannot
|
|
30
|
+
* reach it still gets the products and topics it asked for.
|
|
31
|
+
*/
|
|
32
|
+
publications: z.array(z.object({
|
|
33
|
+
id: z.string(),
|
|
34
|
+
title: z.string(),
|
|
35
|
+
/** Jamf's own classification. Fields absent when Jamf assigns none. */
|
|
36
|
+
portal: z.string().optional(),
|
|
37
|
+
app: z.string().optional(),
|
|
38
|
+
utility: z.string().optional(),
|
|
39
|
+
locales: z.array(z.string()),
|
|
40
|
+
versions: z.array(z.string()),
|
|
41
|
+
})).optional(),
|
|
19
42
|
});
|
|
20
43
|
export const SearchOutputSchema = z.object({
|
|
21
44
|
query: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH;;;;;;;;;;;;OAYG;IACH,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,uEAAuE;QACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B,CAAC,CAAC,CAAC,QAAQ,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB;;;;;;;;;OASG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CAAC,QAAQ,EAAE;IACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,wEAAwE;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CAAC;IACH,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5B,CAAC,CAAC;KACJ,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB;;;OAGG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC;;;;;;;;;OASG;IACH,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1D;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;QACvC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACvC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;KACvB,CAAC,CAAC,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;KACvB,CAAC,CAAC;IACH,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC;AAWH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB,CAAC,CAAC;IACH,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,mCAAmC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB;;;;;;;;;;;;;OAaG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC;;;OAGG;IACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC;;;;;;;;;;;;WAYG;QACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC,CAAC;IACH;;;;;OAKG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,8DAA8D;IAC9D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../../src/core/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../../src/core/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA4JzD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CA4KpF"}
|
|
@@ -10,11 +10,19 @@ import { getProductAvailability } from '../services/metadata.js';
|
|
|
10
10
|
import { getSafeErrorMessage } from '../utils/sanitize.js';
|
|
11
11
|
import { reportProgress } from '../utils/progress.js';
|
|
12
12
|
const TOOL_NAME = 'jamf_docs_list_products';
|
|
13
|
-
const TOOL_DESCRIPTION = `List
|
|
13
|
+
const TOOL_DESCRIPTION = `List Jamf products, publications, topics, and documentation versions.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
Returns two separate catalogues:
|
|
16
|
+
- Products: the IDs the \`product\` filter in jamf_docs_search accepts, and the
|
|
17
|
+
\`product\` parameter of jamf_docs_get_toc. Jamf Pro, Jamf School, Jamf Connect,
|
|
18
|
+
Jamf Protect, Jamf Now, Jamf Safe Internet and more.
|
|
19
|
+
- Publications: every document Jamf publishes - release notes, technical papers,
|
|
20
|
+
courses, evaluation and configuration guides - grouped the way Jamf classifies
|
|
21
|
+
them. Pass one of these IDs as the \`publication\` parameter of jamf_docs_get_toc.
|
|
22
|
+
These are documents, not products, and the search \`product\` filter does not
|
|
23
|
+
take them.
|
|
24
|
+
|
|
25
|
+
Also lists available topic and docType filters for search.
|
|
18
26
|
|
|
19
27
|
Args:
|
|
20
28
|
- maxTokens (number, optional): Maximum tokens in response ${TOKEN_CONFIG.MIN_TOKENS}-${TOKEN_CONFIG.MAX_TOKENS_LIMIT} (default: ${TOKEN_CONFIG.DEFAULT_MAX_TOKENS})
|
|
@@ -25,6 +33,7 @@ Returns:
|
|
|
25
33
|
For JSON format:
|
|
26
34
|
{
|
|
27
35
|
"products": [...],
|
|
36
|
+
"publications": [...], // omitted if the maps registry is unreachable
|
|
28
37
|
"topics": [...],
|
|
29
38
|
"tokenInfo": {
|
|
30
39
|
"tokenCount": number,
|
|
@@ -40,8 +49,96 @@ Examples:
|
|
|
40
49
|
- "What Jamf products are available?" → use this tool
|
|
41
50
|
- "List all Jamf documentation" → use this tool
|
|
42
51
|
- "What topics can I filter by?" → use this tool
|
|
52
|
+
- "Where are the Jamf Pro release notes?" → use this tool, then get_toc with the publication ID
|
|
43
53
|
|
|
44
54
|
Note: This is a read-only operation that does not modify any state.`;
|
|
55
|
+
/**
|
|
56
|
+
* The publication axis, or null when the registry cannot answer.
|
|
57
|
+
*
|
|
58
|
+
* `products` and `topics` are compiled in; this needs a live `/api/khub/maps`.
|
|
59
|
+
* Making the whole tool fail because the newest section could not load would
|
|
60
|
+
* be a regression for every caller that only wanted the product list.
|
|
61
|
+
*/
|
|
62
|
+
async function listPublicationsQuietly(ctx) {
|
|
63
|
+
try {
|
|
64
|
+
const pubs = await ctx.mapsRegistry.listPublications();
|
|
65
|
+
return pubs.map(pub => ({
|
|
66
|
+
id: pub.id,
|
|
67
|
+
title: pub.title,
|
|
68
|
+
...(pub.portal !== '' ? { portal: pub.portal } : {}),
|
|
69
|
+
...(pub.app !== '' ? { app: pub.app } : {}),
|
|
70
|
+
...(pub.utility !== '' ? { utility: pub.utility } : {}),
|
|
71
|
+
locales: pub.locales,
|
|
72
|
+
versions: pub.versions,
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
ctx.logger.createLogger('list-products').warning(`Could not list publications: ${String(error)}`);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* How Jamf files a publication, as one display string.
|
|
82
|
+
*
|
|
83
|
+
* `jamf:portal`, `jamf:app` and `jamf:utility` are three slots of one
|
|
84
|
+
* taxonomy — a map carries at most one of each and most carry exactly one —
|
|
85
|
+
* so they read as a single answer to "what is this about" rather than three
|
|
86
|
+
* independent fields. Grouping by it is what keeps 97 rows navigable.
|
|
87
|
+
*/
|
|
88
|
+
function classificationOf(pub) {
|
|
89
|
+
return pub.portal ?? pub.app ?? pub.utility ?? 'Other';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Render the publication axis.
|
|
93
|
+
*
|
|
94
|
+
* Deliberately its own section rather than extra rows under Products: the
|
|
95
|
+
* `product` search filter accepts the twelve above and nothing here, and
|
|
96
|
+
* merging the two lists is exactly the dilution #239 asked to avoid.
|
|
97
|
+
*/
|
|
98
|
+
function renderPublications(publications, mode) {
|
|
99
|
+
if (publications === null || publications.length === 0) {
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
const groups = new Map();
|
|
103
|
+
for (const pub of publications) {
|
|
104
|
+
const key = classificationOf(pub);
|
|
105
|
+
groups.set(key, [...(groups.get(key) ?? []), pub]);
|
|
106
|
+
}
|
|
107
|
+
// 'Other' last; everything else alphabetical.
|
|
108
|
+
const ordered = [...groups.entries()].sort(([a], [b]) => a === 'Other' ? 1 : b === 'Other' ? -1 : a.localeCompare(b));
|
|
109
|
+
if (mode === OutputMode.COMPACT) {
|
|
110
|
+
let out = `\n## Publications (${String(publications.length)})\n`;
|
|
111
|
+
for (const [group, rows] of ordered) {
|
|
112
|
+
out += `\n### ${group}\n`;
|
|
113
|
+
for (const pub of rows) {
|
|
114
|
+
out += `- \`${pub.id}\`\n`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
let out = '---\n\n';
|
|
120
|
+
out += `# Publications (${String(publications.length)})\n\n`;
|
|
121
|
+
out += 'Every document Jamf publishes, grouped the way Jamf classifies it. ';
|
|
122
|
+
out += 'Pass an ID as the `publication` parameter of `jamf_docs_get_toc` to browse one. ';
|
|
123
|
+
out += 'These are documents, not products — the `product` filter in `jamf_docs_search` ';
|
|
124
|
+
out += 'takes the product IDs above, not these.\n\n';
|
|
125
|
+
for (const [group, rows] of ordered) {
|
|
126
|
+
out += `## ${group}\n\n`;
|
|
127
|
+
for (const pub of rows) {
|
|
128
|
+
const extras = [];
|
|
129
|
+
if (pub.versions.length > 0) {
|
|
130
|
+
extras.push(`${String(pub.versions.length)} versions, latest ${pub.versions[0] ?? ''}`);
|
|
131
|
+
}
|
|
132
|
+
if (pub.locales.length === 1) {
|
|
133
|
+
extras.push(`${pub.locales[0] ?? ''} only`);
|
|
134
|
+
}
|
|
135
|
+
out += `- **\`${pub.id}\`**: ${pub.title}`;
|
|
136
|
+
out += extras.length > 0 ? ` *(${extras.join('; ')})*\n` : '\n';
|
|
137
|
+
}
|
|
138
|
+
out += '\n';
|
|
139
|
+
}
|
|
140
|
+
return out;
|
|
141
|
+
}
|
|
45
142
|
export function registerListProductsTool(server, ctx) {
|
|
46
143
|
server.registerTool(TOOL_NAME, {
|
|
47
144
|
title: 'List Jamf Products',
|
|
@@ -86,7 +183,15 @@ export function registerListProductsTool(server, ctx) {
|
|
|
86
183
|
name: topic.name,
|
|
87
184
|
keywords: topic.keywords
|
|
88
185
|
}));
|
|
89
|
-
|
|
186
|
+
// The publication axis. Best-effort: it needs the live maps registry,
|
|
187
|
+
// and the products and topics above do not, so a registry that cannot
|
|
188
|
+
// answer costs this section rather than the whole response.
|
|
189
|
+
const publications = await listPublicationsQuietly(ctx);
|
|
190
|
+
const structuredContent = {
|
|
191
|
+
products,
|
|
192
|
+
topics,
|
|
193
|
+
...(publications !== null ? { publications } : {}),
|
|
194
|
+
};
|
|
90
195
|
await reportProgress(extra, { progress: 2, total: 3, message: 'Formatting output...' });
|
|
91
196
|
if (params.responseFormat === ResponseFormat.JSON) {
|
|
92
197
|
const jsonData = JSON.stringify(structuredContent);
|
|
@@ -113,6 +218,7 @@ export function registerListProductsTool(server, ctx) {
|
|
|
113
218
|
for (const topic of topics) {
|
|
114
219
|
markdown += `- \`${topic.id}\`: ${topic.name}\n`;
|
|
115
220
|
}
|
|
221
|
+
markdown += renderPublications(publications, OutputMode.COMPACT);
|
|
116
222
|
const compactResult = truncateToTokenLimit(markdown, maxTokens);
|
|
117
223
|
await reportProgress(extra, { progress: 3, total: 3 });
|
|
118
224
|
return {
|
|
@@ -136,6 +242,7 @@ export function registerListProductsTool(server, ctx) {
|
|
|
136
242
|
}
|
|
137
243
|
markdown += '\n';
|
|
138
244
|
}
|
|
245
|
+
markdown += renderPublications(publications, OutputMode.FULL);
|
|
139
246
|
markdown += '---\n\n';
|
|
140
247
|
markdown += '# Available Topics for Filtering\n\n';
|
|
141
248
|
markdown += 'Use these topic IDs with the `topic` parameter in `jamf_docs_search`:\n\n';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../../src/core/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAElH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAE5C,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../../src/core/tools/list-products.ts"],"names":[],"mappings":"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"}
|