diff --git a/src/__tests__/__snapshots__/tool.patternFlyDocs.test.ts.snap b/src/__tests__/__snapshots__/tool.patternFlyDocs.test.ts.snap index a2138d78..40b6ac1b 100644 --- a/src/__tests__/__snapshots__/tool.patternFlyDocs.test.ts.snap +++ b/src/__tests__/__snapshots__/tool.patternFlyDocs.test.ts.snap @@ -8,22 +8,24 @@ exports[`usePatternFlyDocsTool should have a consistent return structure: struct } `; -exports[`usePatternFlyDocsTool, callback should attempt to parse parameters, multiple files, mock paths 1`] = `"# Content for components/button.md"`; +exports[`usePatternFlyDocsTool, callback should attempt to parse parameters, multiple files, mock paths 1`] = `""`; -exports[`usePatternFlyDocsTool, callback should attempt to parse parameters, single file, mock path 1`] = `"# Content for components/button.md"`; +exports[`usePatternFlyDocsTool, callback should attempt to parse parameters, single file, mock path 1`] = `""`; -exports[`usePatternFlyDocsTool, callback should attempt to parse parameters, with name and actual path 1`] = `"# Content for documentation:chatbot/README.md"`; +exports[`usePatternFlyDocsTool, callback should attempt to parse parameters, with name and actual path 1`] = `""`; exports[`usePatternFlyDocsTool, callback should have a specific markdown format: Button 1`] = ` [ { - "text": "# Documentation for Button (v6) [Documentation] + "text": " +# Documentation for Button (v6) [Documentation] Source: components/loremButton.md lorem documentation content --- + # Content for components/ipsumButton.md Source: components/ipsumButton.md diff --git a/src/resource.patternFlyDocsTemplate.ts b/src/resource.patternFlyDocsTemplate.ts index 2dcfff14..9b8b922e 100644 --- a/src/resource.patternFlyDocsTemplate.ts +++ b/src/resource.patternFlyDocsTemplate.ts @@ -118,7 +118,8 @@ const resourceCallback = async (passedUri: URL, variables: Record path) - .map(({ path, uriId }) => ({ doc: path, uri: uriId })); + .map(({ path, uriId, id, groupId, displayName, displayCategory, version: entryVersion }) => + ({ doc: path, uri: uriId, id, groupId, displayName, displayCategory, entryVersion })); if (docPaths.length > 0) { // `processDocsFunction` has de-dup docs baked in @@ -172,11 +173,12 @@ const resourceCallback = async (passedUri: URL, variables: Record ({ + contents: docs.map(({ uri, content, id, groupId, displayName, displayCategory, entryVersion }) => ({ uri, mimeType: 'text/markdown', text: stringJoin.newline( - `# Documentation from ${resolvedPath || path}`, + ``, + `# Documentation for ${displayName} - ${displayCategory} (${entryVersion})`, '', content ) diff --git a/src/tool.patternFlyDocs.ts b/src/tool.patternFlyDocs.ts index 318e2226..e3d3f75f 100644 --- a/src/tool.patternFlyDocs.ts +++ b/src/tool.patternFlyDocs.ts @@ -189,15 +189,20 @@ const usePatternFlyDocsTool = (options = getOptions()): McpTool => { for (const doc of docs) { const patternFlyEntry = doc.path ? byPath[doc.path] : undefined; + const entryId = patternFlyEntry?.id; + const entryGroupId = patternFlyEntry?.groupId; const entryName = patternFlyEntry?.name; const entryVersion = patternFlyEntry?.version; const entryVersionDisplay = (entryVersion && ` (${entryVersion})`) || ''; + const provenance = entryId ? `` : ``; + const docTitle = patternFlyEntry ? `# Documentation for ${patternFlyEntry?.displayName || entryName}${entryVersionDisplay} [${setCategoryDisplayLabel(patternFlyEntry)}]` : `# Content for ${doc.path}`; docResults.push(stringJoin.newline( + provenance, docTitle, `Source: ${doc.path}`, '', diff --git a/tests/e2e/__snapshots__/httpTransport.test.ts.snap b/tests/e2e/__snapshots__/httpTransport.test.ts.snap index a7ea995f..126c1adb 100644 --- a/tests/e2e/__snapshots__/httpTransport.test.ts.snap +++ b/tests/e2e/__snapshots__/httpTransport.test.ts.snap @@ -70,7 +70,8 @@ Use these parameters to filter the list of PatternFly component schemas. `; exports[`Builtin tools, HTTP transport should concatenate headers and separator with two remote files 1`] = ` -"# Content for https://www.patternfly.org/notARealPath/AboutModal.md +" +# Content for https://www.patternfly.org/notARealPath/AboutModal.md Source: https://www.patternfly.org/notARealPath/AboutModal.md # Test Document @@ -79,6 +80,7 @@ This is a test document for mocking remote HTTP requests. --- + # Content for https://www.patternfly.org/notARealPath/ChartLegend.md Source: https://www.patternfly.org/notARealPath/ChartLegend.md diff --git a/tests/e2e/__snapshots__/stdioTransport.test.ts.snap b/tests/e2e/__snapshots__/stdioTransport.test.ts.snap index 1e1bc66d..6e3f4718 100644 --- a/tests/e2e/__snapshots__/stdioTransport.test.ts.snap +++ b/tests/e2e/__snapshots__/stdioTransport.test.ts.snap @@ -70,7 +70,8 @@ Use these parameters to filter the list of PatternFly component schemas. `; exports[`Builtin tools, STDIO should concatenate headers and separator with two remote files 1`] = ` -"# Content for http://127.0.0.1:5010/notARealPath/AboutModal.md +" +# Content for http://127.0.0.1:5010/notARealPath/AboutModal.md Source: http://127.0.0.1:5010/notARealPath/AboutModal.md # Test Document @@ -79,6 +80,7 @@ This is a test document for mocking remote HTTP requests. --- + # Content for http://127.0.0.1:5010/notARealPath/README.md Source: http://127.0.0.1:5010/notARealPath/README.md