@venizia/ignis-docs 0.0.1-3 → 0.0.1-5
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 +408 -2
- package/mcp-server/dist/common/config.d.ts +58 -21
- package/mcp-server/dist/common/config.d.ts.map +1 -1
- package/mcp-server/dist/common/config.js +69 -14
- package/mcp-server/dist/common/config.js.map +1 -1
- package/mcp-server/dist/common/index.d.ts +2 -2
- package/mcp-server/dist/common/paths.js +11 -11
- package/mcp-server/dist/helpers/docs.helper.d.ts +5 -5
- package/mcp-server/dist/helpers/docs.helper.d.ts.map +1 -1
- package/mcp-server/dist/helpers/docs.helper.js +38 -34
- package/mcp-server/dist/helpers/docs.helper.js.map +1 -1
- package/mcp-server/dist/helpers/github.helper.d.ts +37 -0
- package/mcp-server/dist/helpers/github.helper.d.ts.map +1 -0
- package/mcp-server/dist/helpers/github.helper.js +100 -0
- package/mcp-server/dist/helpers/github.helper.js.map +1 -0
- package/mcp-server/dist/helpers/index.d.ts +3 -2
- package/mcp-server/dist/helpers/index.d.ts.map +1 -1
- package/mcp-server/dist/helpers/index.js +1 -0
- package/mcp-server/dist/helpers/index.js.map +1 -1
- package/mcp-server/dist/index.js +64 -36
- package/mcp-server/dist/index.js.map +1 -1
- package/mcp-server/dist/tools/base.tool.d.ts +8 -12
- package/mcp-server/dist/tools/base.tool.d.ts.map +1 -1
- package/mcp-server/dist/tools/base.tool.js +3 -5
- package/mcp-server/dist/tools/base.tool.js.map +1 -1
- package/mcp-server/dist/tools/{get-doc-content.tool.d.ts → docs/get-document-content.tool.d.ts} +5 -5
- package/mcp-server/dist/tools/docs/get-document-content.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/{get-doc-content.tool.js → docs/get-document-content.tool.js} +14 -13
- package/mcp-server/dist/tools/docs/get-document-content.tool.js.map +1 -0
- package/mcp-server/dist/tools/{get-doc-metadata.tool.d.ts → docs/get-document-metadata.tool.d.ts} +5 -5
- package/mcp-server/dist/tools/docs/get-document-metadata.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/{get-doc-metadata.tool.js → docs/get-document-metadata.tool.js} +18 -17
- package/mcp-server/dist/tools/docs/get-document-metadata.tool.js.map +1 -0
- package/mcp-server/dist/tools/docs/get-package-overview.tool.d.ts +50 -0
- package/mcp-server/dist/tools/docs/get-package-overview.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/docs/get-package-overview.tool.js +221 -0
- package/mcp-server/dist/tools/docs/get-package-overview.tool.js.map +1 -0
- package/mcp-server/dist/tools/docs/index.d.ts +7 -0
- package/mcp-server/dist/tools/docs/index.d.ts.map +1 -0
- package/mcp-server/dist/tools/docs/index.js +23 -0
- package/mcp-server/dist/tools/docs/index.js.map +1 -0
- package/mcp-server/dist/tools/{list-categories.tool.d.ts → docs/list-categories.tool.d.ts} +3 -3
- package/mcp-server/dist/tools/docs/list-categories.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/{list-categories.tool.js → docs/list-categories.tool.js} +10 -9
- package/mcp-server/dist/tools/docs/list-categories.tool.js.map +1 -0
- package/mcp-server/dist/tools/{list-docs.tool.d.ts → docs/list-documents.tool.d.ts} +5 -5
- package/mcp-server/dist/tools/docs/list-documents.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/{list-docs.tool.js → docs/list-documents.tool.js} +15 -14
- package/mcp-server/dist/tools/docs/list-documents.tool.js.map +1 -0
- package/mcp-server/dist/tools/{search-docs.tool.d.ts → docs/search-documents.tool.d.ts} +5 -5
- package/mcp-server/dist/tools/docs/search-documents.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/{search-docs.tool.js → docs/search-documents.tool.js} +24 -23
- package/mcp-server/dist/tools/docs/search-documents.tool.js.map +1 -0
- package/mcp-server/dist/tools/github/index.d.ts +5 -0
- package/mcp-server/dist/tools/github/index.d.ts.map +1 -0
- package/mcp-server/dist/tools/github/index.js +21 -0
- package/mcp-server/dist/tools/github/index.js.map +1 -0
- package/mcp-server/dist/tools/github/list-project-files.tool.d.ts +28 -0
- package/mcp-server/dist/tools/github/list-project-files.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/github/list-project-files.tool.js +98 -0
- package/mcp-server/dist/tools/github/list-project-files.tool.js.map +1 -0
- package/mcp-server/dist/tools/github/search-code.tool.d.ts +42 -0
- package/mcp-server/dist/tools/github/search-code.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/github/search-code.tool.js +194 -0
- package/mcp-server/dist/tools/github/search-code.tool.js.map +1 -0
- package/mcp-server/dist/tools/github/verify-dependencies.tool.d.ts +55 -0
- package/mcp-server/dist/tools/github/verify-dependencies.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/github/verify-dependencies.tool.js +167 -0
- package/mcp-server/dist/tools/github/verify-dependencies.tool.js.map +1 -0
- package/mcp-server/dist/tools/github/view-source-file.tool.d.ts +26 -0
- package/mcp-server/dist/tools/github/view-source-file.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/github/view-source-file.tool.js +91 -0
- package/mcp-server/dist/tools/github/view-source-file.tool.js.map +1 -0
- package/mcp-server/dist/tools/index.d.ts +3 -7
- package/mcp-server/dist/tools/index.d.ts.map +1 -1
- package/mcp-server/dist/tools/index.js +17 -13
- package/mcp-server/dist/tools/index.js.map +1 -1
- package/package.json +27 -8
- package/wiki/get-started/best-practices/api-usage-examples.md +42 -0
- package/wiki/get-started/best-practices/architectural-patterns.md +42 -1
- package/wiki/get-started/best-practices/code-style-standards.md +41 -0
- package/wiki/get-started/best-practices/contribution-workflow.md +40 -6
- package/wiki/get-started/best-practices/data-modeling.md +126 -0
- package/wiki/get-started/core-concepts/dependency-injection.md +13 -1
- package/wiki/get-started/mcp-docs-server.md +130 -32
- package/wiki/get-started/philosophy.md +198 -25
- package/wiki/references/base/application.md +5 -5
- package/wiki/references/base/controllers.md +3 -1
- package/wiki/references/base/dependency-injection.md +6 -5
- package/wiki/references/helpers/inversion.md +21 -11
- package/wiki/references/src-details/core.md +15 -1
- package/wiki/references/src-details/docs.md +19 -9
- package/wiki/references/src-details/mcp-server.md +185 -234
- package/mcp-server/dist/tools/get-doc-content.tool.d.ts.map +0 -1
- package/mcp-server/dist/tools/get-doc-content.tool.js.map +0 -1
- package/mcp-server/dist/tools/get-doc-metadata.tool.d.ts.map +0 -1
- package/mcp-server/dist/tools/get-doc-metadata.tool.js.map +0 -1
- package/mcp-server/dist/tools/list-categories.tool.d.ts.map +0 -1
- package/mcp-server/dist/tools/list-categories.tool.js.map +0 -1
- package/mcp-server/dist/tools/list-docs.tool.d.ts.map +0 -1
- package/mcp-server/dist/tools/list-docs.tool.js.map +0 -1
- package/mcp-server/dist/tools/search-docs.tool.d.ts.map +0 -1
- package/mcp-server/dist/tools/search-docs.tool.js.map +0 -1
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseTool =
|
|
4
|
-
const tools_1 = require("@mastra/core/tools");
|
|
5
|
-
Object.defineProperty(exports, "createTool", { enumerable: true, get: function () { return tools_1.createTool; } });
|
|
3
|
+
exports.BaseTool = void 0;
|
|
6
4
|
// ============================================================================
|
|
7
5
|
// BASE TOOL CLASS
|
|
8
6
|
// ============================================================================
|
|
@@ -25,11 +23,11 @@ Object.defineProperty(exports, "createTool", { enumerable: true, get: function (
|
|
|
25
23
|
* readonly inputSchema = InputSchema;
|
|
26
24
|
* readonly outputSchema = OutputSchema;
|
|
27
25
|
*
|
|
28
|
-
* async execute(
|
|
26
|
+
* async execute(opts: z.infer<typeof InputSchema>) {
|
|
29
27
|
* return { result: 'done' };
|
|
30
28
|
* }
|
|
31
29
|
*
|
|
32
|
-
*
|
|
30
|
+
* getTool() {
|
|
33
31
|
* return createTool({
|
|
34
32
|
* id: this.id,
|
|
35
33
|
* description: this.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.tool.js","sourceRoot":"","sources":["../../tools/base.tool.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"base.tool.js","sourceRoot":"","sources":["../../tools/base.tool.ts"],"names":[],"mappings":";;;AAYA,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAsB,QAAQ;CAwD7B;AAxDD,4BAwDC"}
|
package/mcp-server/dist/tools/{get-doc-content.tool.d.ts → docs/get-document-content.tool.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { BaseTool,
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { BaseTool, TMastraTool } from '../base.tool';
|
|
3
3
|
declare const InputSchema: z.ZodObject<{
|
|
4
4
|
id: z.ZodString;
|
|
5
5
|
}, z.core.$strip>;
|
|
@@ -9,7 +9,7 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
9
9
|
error: z.ZodOptional<z.ZodString>;
|
|
10
10
|
}, z.core.$strip>;
|
|
11
11
|
export declare class GetDocContentTool extends BaseTool<typeof InputSchema, typeof OutputSchema> {
|
|
12
|
-
readonly id = "
|
|
12
|
+
readonly id = "getDocumentContent";
|
|
13
13
|
readonly description = "\nRetrieves the complete markdown content of a specific Ignis Framework documentation file.\n\nPURPOSE:\nUse this tool to fetch the full text of a documentation page when you need detailed information\nbeyond what search snippets provide. This is your primary tool for reading documentation content.\n\nWHEN TO USE:\n- After searchDocs returns relevant results and you need full content\n- When user asks for detailed explanation of a specific topic\n- To read code examples, API references, or configuration guides\n- When you need to quote or reference specific documentation sections\n\nWHEN NOT TO USE:\n- Don't use this for discovery - use searchDocs or listDocs first\n- Don't fetch multiple documents blindly - review search results first\n\nDOCUMENT ID FORMAT:\nThe 'id' parameter is the relative file path from the wiki root:\n- \"get-started/quickstart.md\" - Quickstart guide\n- \"references/components/http-server.md\" - HTTP Server component reference\n- \"get-started/core-concepts/dependency-injection.md\" - DI concepts\n\nHOW TO GET VALID IDs:\n1. Use searchDocs to find documents by keyword\n2. Use listDocs to browse all available documents\n3. Use listCategories + listDocs(category) for structured browsing\n\nOUTPUT:\nReturns full markdown content suitable for:\n- Answering user questions with accurate information\n- Extracting code examples\n- Understanding API usage patterns\n- Providing step-by-step guidance\n";
|
|
14
14
|
readonly inputSchema: z.ZodObject<{
|
|
15
15
|
id: z.ZodString;
|
|
@@ -19,8 +19,8 @@ export declare class GetDocContentTool extends BaseTool<typeof InputSchema, type
|
|
|
19
19
|
content: z.ZodOptional<z.ZodString>;
|
|
20
20
|
error: z.ZodOptional<z.ZodString>;
|
|
21
21
|
}, z.core.$strip>;
|
|
22
|
-
execute(
|
|
22
|
+
execute(opts: z.infer<typeof InputSchema>): Promise<z.infer<typeof OutputSchema>>;
|
|
23
23
|
getTool(): TMastraTool;
|
|
24
24
|
}
|
|
25
25
|
export {};
|
|
26
|
-
//# sourceMappingURL=get-
|
|
26
|
+
//# sourceMappingURL=get-document-content.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-document-content.tool.d.ts","sourceRoot":"","sources":["../../../tools/docs/get-document-content.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAqFrD,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;iBAOhB,CAAC;AAMH,qBAAa,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,CAAC;IACtF,QAAQ,CAAC,EAAE,wBAAwB;IACnC,QAAQ,CAAC,WAAW,o6CAAoB;IACxC,QAAQ,CAAC,WAAW;;sBAAe;IACnC,QAAQ,CAAC,YAAY;;;;sBAAgB;IAE/B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;IAUvF,OAAO,IAAI,WAAW;CASvB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GetDocContentTool = void 0;
|
|
4
|
+
const tools_1 = require("@mastra/core/tools");
|
|
4
5
|
const zod_1 = require("zod");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
6
|
+
const base_tool_1 = require("../base.tool");
|
|
7
|
+
const helpers_1 = require("@/mcp-server/helpers");
|
|
7
8
|
// ----------------------------------------------------------------------------
|
|
8
9
|
// DESCRIPTIONS
|
|
9
10
|
// ----------------------------------------------------------------------------
|
|
@@ -85,12 +86,12 @@ const InputSchema = zod_1.z.object({
|
|
|
85
86
|
id: zod_1.z.string().min(1).describe(ID_DESCRIPTION),
|
|
86
87
|
});
|
|
87
88
|
const OutputSchema = zod_1.z.object({
|
|
88
|
-
id: zod_1.z.string().describe(
|
|
89
|
+
id: zod_1.z.string().describe('The document ID that was requested.'),
|
|
89
90
|
content: zod_1.z.string().optional().describe(CONTENT_DESCRIPTION),
|
|
90
91
|
error: zod_1.z
|
|
91
92
|
.string()
|
|
92
93
|
.optional()
|
|
93
|
-
.describe(
|
|
94
|
+
.describe('Error message if document not found. Verify the ID using listDocs or searchDocs.'),
|
|
94
95
|
});
|
|
95
96
|
// ----------------------------------------------------------------------------
|
|
96
97
|
// TOOL CLASS
|
|
@@ -98,27 +99,27 @@ const OutputSchema = zod_1.z.object({
|
|
|
98
99
|
class GetDocContentTool extends base_tool_1.BaseTool {
|
|
99
100
|
constructor() {
|
|
100
101
|
super(...arguments);
|
|
101
|
-
this.id =
|
|
102
|
+
this.id = 'getDocumentContent';
|
|
102
103
|
this.description = TOOL_DESCRIPTION;
|
|
103
104
|
this.inputSchema = InputSchema;
|
|
104
105
|
this.outputSchema = OutputSchema;
|
|
105
106
|
}
|
|
106
|
-
async execute(
|
|
107
|
-
const content = await helpers_1.DocsHelper.
|
|
107
|
+
async execute(opts) {
|
|
108
|
+
const content = await helpers_1.DocsHelper.getDocumentContent({ id: opts.id });
|
|
108
109
|
if (!content) {
|
|
109
|
-
return { error:
|
|
110
|
+
return { error: 'Document not found', id: opts.id };
|
|
110
111
|
}
|
|
111
|
-
return { content, id:
|
|
112
|
+
return { content, id: opts.id };
|
|
112
113
|
}
|
|
113
114
|
getTool() {
|
|
114
|
-
return (0,
|
|
115
|
+
return (0, tools_1.createTool)({
|
|
115
116
|
id: this.id,
|
|
116
117
|
description: this.description,
|
|
117
|
-
inputSchema:
|
|
118
|
-
outputSchema:
|
|
118
|
+
inputSchema: this.inputSchema,
|
|
119
|
+
outputSchema: this.outputSchema,
|
|
119
120
|
execute: async ({ context }) => this.execute(context),
|
|
120
121
|
});
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
exports.GetDocContentTool = GetDocContentTool;
|
|
124
|
-
//# sourceMappingURL=get-
|
|
125
|
+
//# sourceMappingURL=get-document-content.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-document-content.tool.js","sourceRoot":"","sources":["../../../tools/docs/get-document-content.tool.ts"],"names":[],"mappings":";;;AAAA,8CAAgD;AAChD,6BAAwB;AACxB,4CAAqD;AACrD,kDAAkD;AAElD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCxB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;CAmBtB,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;CAe3B,CAAC;AAEF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9D,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5D,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kFAAkF,CAAC;CAChG,CAAC,CAAC;AAEH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAa,iBAAkB,SAAQ,oBAAiD;IAAxF;;QACW,OAAE,GAAG,oBAAoB,CAAC;QAC1B,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,gBAAW,GAAG,WAAW,CAAC;QAC1B,iBAAY,GAAG,YAAY,CAAC;IAqBvC,CAAC;IAnBC,KAAK,CAAC,OAAO,CAAC,IAAiC;QAC7C,MAAM,OAAO,GAAG,MAAM,oBAAU,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACtD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,IAAA,kBAAU,EAAC;YAChB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;CACF;AAzBD,8CAyBC"}
|
package/mcp-server/dist/tools/{get-doc-metadata.tool.d.ts → docs/get-document-metadata.tool.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { BaseTool,
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { BaseTool, TMastraTool } from '../base.tool';
|
|
3
3
|
declare const InputSchema: z.ZodObject<{
|
|
4
4
|
id: z.ZodString;
|
|
5
5
|
}, z.core.$strip>;
|
|
@@ -14,7 +14,7 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
14
14
|
error: z.ZodOptional<z.ZodString>;
|
|
15
15
|
}, z.core.$strip>;
|
|
16
16
|
export declare class GetDocMetadataTool extends BaseTool<typeof InputSchema, typeof OutputSchema> {
|
|
17
|
-
readonly id = "
|
|
17
|
+
readonly id = "getDocumentMetadata";
|
|
18
18
|
readonly description = "\nRetrieves statistical metadata about a specific Ignis Framework documentation file\nwithout fetching its full content.\n\nPURPOSE:\nUse this tool to get information ABOUT a document (size, word count, last modified)\nwithout retrieving the actual content. Useful for assessing documents before reading them fully.\n\nWHEN TO USE:\n- To check document length before fetching full content\n- To estimate reading time or complexity\n- To verify a document exists and get basic info\n- To check when documentation was last updated\n- When you need document stats for comparison or reporting\n\nWHEN NOT TO USE:\n- When you need the actual document content (use getDocContent instead)\n- For searching documents (use searchDocs instead)\n- For listing multiple documents (use listDocs instead)\n\nMETADATA FIELDS EXPLAINED:\n- wordCount: Total words in content body (excludes frontmatter)\n - Quick read: < 500 words\n - Medium: 500-1500 words\n - Long/detailed: > 1500 words\n\n- charCount: Total characters (useful for token estimation)\n - Rough token estimate: charCount / 4 for English text\n\n- lastModified: File modification timestamp\n - Recent = actively maintained documentation\n - Old = may need verification for accuracy\n\n- size: Raw file size in bytes (includes frontmatter YAML)\n\nUSE CASES:\n1. \"Is this document long?\" \u2192 Check wordCount\n2. \"Will this fit in context?\" \u2192 Check charCount, estimate tokens\n3. \"Is this documentation current?\" \u2192 Check lastModified\n4. \"Which document is more detailed?\" \u2192 Compare wordCounts\n";
|
|
19
19
|
readonly inputSchema: z.ZodObject<{
|
|
20
20
|
id: z.ZodString;
|
|
@@ -29,8 +29,8 @@ export declare class GetDocMetadataTool extends BaseTool<typeof InputSchema, typ
|
|
|
29
29
|
size: z.ZodOptional<z.ZodNumber>;
|
|
30
30
|
error: z.ZodOptional<z.ZodString>;
|
|
31
31
|
}, z.core.$strip>;
|
|
32
|
-
execute(
|
|
32
|
+
execute(opts: z.infer<typeof InputSchema>): Promise<z.infer<typeof OutputSchema>>;
|
|
33
33
|
getTool(): TMastraTool;
|
|
34
34
|
}
|
|
35
35
|
export {};
|
|
36
|
-
//# sourceMappingURL=get-
|
|
36
|
+
//# sourceMappingURL=get-document-metadata.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-document-metadata.tool.d.ts","sourceRoot":"","sources":["../../../tools/docs/get-document-metadata.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAwErD,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;iBAmBhB,CAAC;AAMH,qBAAa,kBAAmB,SAAQ,QAAQ,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,CAAC;IACvF,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,WAAW,6iDAAoB;IACxC,QAAQ,CAAC,WAAW;;sBAAe;IACnC,QAAQ,CAAC,YAAY;;;;;;;;;sBAAgB;IAE/B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;IAavF,OAAO,IAAI,WAAW;CASvB"}
|
package/mcp-server/dist/tools/{get-doc-metadata.tool.js → docs/get-document-metadata.tool.js}
RENAMED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GetDocMetadataTool = void 0;
|
|
4
|
+
const helpers_1 = require("@/mcp-server/helpers");
|
|
5
|
+
const tools_1 = require("@mastra/core/tools");
|
|
4
6
|
const zod_1 = require("zod");
|
|
5
|
-
const
|
|
6
|
-
const base_tool_1 = require("./base.tool");
|
|
7
|
+
const base_tool_1 = require("../base.tool");
|
|
7
8
|
// ----------------------------------------------------------------------------
|
|
8
9
|
// DESCRIPTIONS
|
|
9
10
|
// ----------------------------------------------------------------------------
|
|
@@ -74,8 +75,8 @@ const InputSchema = zod_1.z.object({
|
|
|
74
75
|
id: zod_1.z.string().min(1).describe(ID_DESCRIPTION),
|
|
75
76
|
});
|
|
76
77
|
const OutputSchema = zod_1.z.object({
|
|
77
|
-
id: zod_1.z.string().describe(
|
|
78
|
-
title: zod_1.z.string().optional().describe(
|
|
78
|
+
id: zod_1.z.string().describe('The document ID that was requested.'),
|
|
79
|
+
title: zod_1.z.string().optional().describe('Document title from frontmatter or filename.'),
|
|
79
80
|
category: zod_1.z
|
|
80
81
|
.string()
|
|
81
82
|
.optional()
|
|
@@ -84,14 +85,14 @@ const OutputSchema = zod_1.z.object({
|
|
|
84
85
|
.number()
|
|
85
86
|
.int()
|
|
86
87
|
.optional()
|
|
87
|
-
.describe(
|
|
88
|
-
charCount: zod_1.z.number().int().optional().describe(
|
|
88
|
+
.describe('Total words. Useful for reading time estimation.'),
|
|
89
|
+
charCount: zod_1.z.number().int().optional().describe('Total characters. Useful for token estimation.'),
|
|
89
90
|
lastModified: zod_1.z
|
|
90
91
|
.string()
|
|
91
92
|
.optional()
|
|
92
|
-
.describe(
|
|
93
|
-
size: zod_1.z.number().int().optional().describe(
|
|
94
|
-
error: zod_1.z.string().optional().describe(
|
|
93
|
+
.describe('Last modified timestamp (ISO string). May be undefined.'),
|
|
94
|
+
size: zod_1.z.number().int().optional().describe('File size in bytes. May be undefined.'),
|
|
95
|
+
error: zod_1.z.string().optional().describe('Error message if document not found.'),
|
|
95
96
|
});
|
|
96
97
|
// ----------------------------------------------------------------------------
|
|
97
98
|
// TOOL CLASS
|
|
@@ -99,15 +100,15 @@ const OutputSchema = zod_1.z.object({
|
|
|
99
100
|
class GetDocMetadataTool extends base_tool_1.BaseTool {
|
|
100
101
|
constructor() {
|
|
101
102
|
super(...arguments);
|
|
102
|
-
this.id =
|
|
103
|
+
this.id = 'getDocumentMetadata';
|
|
103
104
|
this.description = TOOL_DESCRIPTION;
|
|
104
105
|
this.inputSchema = InputSchema;
|
|
105
106
|
this.outputSchema = OutputSchema;
|
|
106
107
|
}
|
|
107
|
-
async execute(
|
|
108
|
-
const metadata = await helpers_1.DocsHelper.
|
|
108
|
+
async execute(opts) {
|
|
109
|
+
const metadata = await helpers_1.DocsHelper.getDocumentMetadata({ id: opts.id });
|
|
109
110
|
if (!metadata) {
|
|
110
|
-
return { error:
|
|
111
|
+
return { error: 'Document not found', id: opts.id };
|
|
111
112
|
}
|
|
112
113
|
return {
|
|
113
114
|
...metadata,
|
|
@@ -115,14 +116,14 @@ class GetDocMetadataTool extends base_tool_1.BaseTool {
|
|
|
115
116
|
};
|
|
116
117
|
}
|
|
117
118
|
getTool() {
|
|
118
|
-
return (0,
|
|
119
|
+
return (0, tools_1.createTool)({
|
|
119
120
|
id: this.id,
|
|
120
121
|
description: this.description,
|
|
121
|
-
inputSchema:
|
|
122
|
-
outputSchema:
|
|
122
|
+
inputSchema: this.inputSchema,
|
|
123
|
+
outputSchema: this.outputSchema,
|
|
123
124
|
execute: async ({ context }) => this.execute(context),
|
|
124
125
|
});
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
exports.GetDocMetadataTool = GetDocMetadataTool;
|
|
128
|
-
//# sourceMappingURL=get-
|
|
129
|
+
//# sourceMappingURL=get-document-metadata.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-document-metadata.tool.js","sourceRoot":"","sources":["../../../tools/docs/get-document-metadata.tool.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAClD,8CAAgD;AAChD,6BAAwB;AACxB,4CAAqD;AAErD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCxB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;CAkBtB,CAAC;AAEF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACrF,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACjG,YAAY,EAAE,OAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;IACtE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACnF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAC9E,CAAC,CAAC;AAEH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAa,kBAAmB,SAAQ,oBAAiD;IAAzF;;QACW,OAAE,GAAG,qBAAqB,CAAC;QAC3B,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,gBAAW,GAAG,WAAW,CAAC;QAC1B,iBAAY,GAAG,YAAY,CAAC;IAwBvC,CAAC;IAtBC,KAAK,CAAC,OAAO,CAAC,IAAiC;QAC7C,MAAM,QAAQ,GAAG,MAAM,oBAAU,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACtD,CAAC;QAED,OAAO;YACL,GAAG,QAAQ;YACX,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE;SACnD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,IAAA,kBAAU,EAAC;YAChB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;CACF;AA5BD,gDA4BC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { BaseTool, type TMastraTool } from '../base.tool';
|
|
3
|
+
declare const InputSchema: z.ZodObject<{
|
|
4
|
+
packageName: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
declare const OutputSchema: z.ZodObject<{
|
|
7
|
+
packages: z.ZodArray<z.ZodObject<{
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
npmName: z.ZodString;
|
|
10
|
+
description: z.ZodString;
|
|
11
|
+
directories: z.ZodArray<z.ZodObject<{
|
|
12
|
+
name: z.ZodString;
|
|
13
|
+
purpose: z.ZodString;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
content: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>>;
|
|
17
|
+
error: z.ZodOptional<z.ZodString>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
export declare class GetPackageOverviewTool extends BaseTool<typeof InputSchema, typeof OutputSchema> {
|
|
20
|
+
readonly id = "getPackageOverview";
|
|
21
|
+
readonly description = "\nReturns an overview of Ignis packages from the source details documentation.\n\nPURPOSE:\nProvides AI agents with comprehensive understanding of the Ignis monorepo structure,\npackage purposes, main exports, and directory layouts. This is essential for helping\nusers understand which package to use for specific features.\n\nWHEN TO USE:\n- When user asks \"what packages does Ignis have?\"\n- When user needs to understand project structure\n- When user asks which package provides a specific feature\n- Before helping user implement a feature (to know where code should go)\n- When user asks about imports or package dependencies\n\nWHEN NOT TO USE:\n- For specific API documentation (use getDocContent with references/ docs)\n- For code examples (use searchCode or getDocContent)\n- For troubleshooting (use searchDocs)\n\nOUTPUT:\nReturns package name, description, main directories, and key components.\nThe content comes from wiki/references/src-details/ documentation.\n";
|
|
22
|
+
readonly inputSchema: z.ZodObject<{
|
|
23
|
+
packageName: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
readonly outputSchema: z.ZodObject<{
|
|
26
|
+
packages: z.ZodArray<z.ZodObject<{
|
|
27
|
+
name: z.ZodString;
|
|
28
|
+
npmName: z.ZodString;
|
|
29
|
+
description: z.ZodString;
|
|
30
|
+
directories: z.ZodArray<z.ZodObject<{
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
purpose: z.ZodString;
|
|
33
|
+
}, z.core.$strip>>;
|
|
34
|
+
content: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
error: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
/**
|
|
39
|
+
* Extracts package description from first paragraph after title
|
|
40
|
+
*/
|
|
41
|
+
private extractDescription;
|
|
42
|
+
/**
|
|
43
|
+
* Extracts directory table from markdown content
|
|
44
|
+
*/
|
|
45
|
+
private extractDirectories;
|
|
46
|
+
execute(opts: z.infer<typeof InputSchema>): Promise<z.infer<typeof OutputSchema>>;
|
|
47
|
+
getTool(): TMastraTool;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=get-package-overview.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-package-overview.tool.d.ts","sourceRoot":"","sources":["../../../tools/docs/get-package-overview.tool.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAgE1D,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;iBAGhB,CAAC;AAmBH,qBAAa,sBAAuB,SAAQ,QAAQ,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,CAAC;IAC3F,QAAQ,CAAC,EAAE,wBAAwB;IACnC,QAAQ,CAAC,WAAW,09BAAoB;IACxC,QAAQ,CAAC,WAAW;;sBAAe;IACnC,QAAQ,CAAC,YAAY;;;;;;;;;;;;sBAAgB;IAErC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0CpB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;IAuDvF,OAAO,IAAI,WAAW;CASvB"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GetPackageOverviewTool = void 0;
|
|
7
|
+
const tools_1 = require("@mastra/core/tools");
|
|
8
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
9
|
+
const gray_matter_1 = __importDefault(require("gray-matter"));
|
|
10
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const zod_1 = require("zod");
|
|
13
|
+
const common_1 = require("../../common");
|
|
14
|
+
const helpers_1 = require("../../helpers");
|
|
15
|
+
const base_tool_1 = require("../base.tool");
|
|
16
|
+
// ----------------------------------------------------------------------------
|
|
17
|
+
// DESCRIPTIONS
|
|
18
|
+
// ----------------------------------------------------------------------------
|
|
19
|
+
const TOOL_DESCRIPTION = `
|
|
20
|
+
Returns an overview of Ignis packages from the source details documentation.
|
|
21
|
+
|
|
22
|
+
PURPOSE:
|
|
23
|
+
Provides AI agents with comprehensive understanding of the Ignis monorepo structure,
|
|
24
|
+
package purposes, main exports, and directory layouts. This is essential for helping
|
|
25
|
+
users understand which package to use for specific features.
|
|
26
|
+
|
|
27
|
+
WHEN TO USE:
|
|
28
|
+
- When user asks "what packages does Ignis have?"
|
|
29
|
+
- When user needs to understand project structure
|
|
30
|
+
- When user asks which package provides a specific feature
|
|
31
|
+
- Before helping user implement a feature (to know where code should go)
|
|
32
|
+
- When user asks about imports or package dependencies
|
|
33
|
+
|
|
34
|
+
WHEN NOT TO USE:
|
|
35
|
+
- For specific API documentation (use getDocContent with references/ docs)
|
|
36
|
+
- For code examples (use searchCode or getDocContent)
|
|
37
|
+
- For troubleshooting (use searchDocs)
|
|
38
|
+
|
|
39
|
+
OUTPUT:
|
|
40
|
+
Returns package name, description, main directories, and key components.
|
|
41
|
+
The content comes from wiki/references/src-details/ documentation.
|
|
42
|
+
`;
|
|
43
|
+
const PACKAGE_NAME_DESCRIPTION = `
|
|
44
|
+
Optional: Name of specific package to get details for.
|
|
45
|
+
|
|
46
|
+
VALID VALUES:
|
|
47
|
+
- "core" - @venizia/ignis main framework
|
|
48
|
+
- "helpers" - @venizia/ignis-helpers utility helpers
|
|
49
|
+
- "inversion" - @venizia/ignis-inversion DI container
|
|
50
|
+
- "dev-configs" - @venizia/dev-configs ESLint, Prettier, TSConfig
|
|
51
|
+
- "docs" - Documentation package
|
|
52
|
+
- "mcp-server" - MCP documentation server
|
|
53
|
+
|
|
54
|
+
If not provided, returns overview of ALL packages.
|
|
55
|
+
`;
|
|
56
|
+
// ----------------------------------------------------------------------------
|
|
57
|
+
// SCHEMAS
|
|
58
|
+
// ----------------------------------------------------------------------------
|
|
59
|
+
const PackageInfoSchema = zod_1.z.object({
|
|
60
|
+
name: zod_1.z.string().describe('Package name (e.g., "core", "helpers")'),
|
|
61
|
+
npmName: zod_1.z.string().describe('NPM package name (e.g., "@venizia/ignis")'),
|
|
62
|
+
description: zod_1.z.string().describe('Brief description of package purpose'),
|
|
63
|
+
directories: zod_1.z
|
|
64
|
+
.array(zod_1.z.object({
|
|
65
|
+
name: zod_1.z.string(),
|
|
66
|
+
purpose: zod_1.z.string(),
|
|
67
|
+
}))
|
|
68
|
+
.describe('Main directories and their purposes'),
|
|
69
|
+
content: zod_1.z.string().optional().describe('Full markdown content if single package requested'),
|
|
70
|
+
});
|
|
71
|
+
const InputSchema = zod_1.z.object({
|
|
72
|
+
packageName: zod_1.z.string().optional().describe(PACKAGE_NAME_DESCRIPTION),
|
|
73
|
+
});
|
|
74
|
+
const OutputSchema = zod_1.z.object({
|
|
75
|
+
packages: zod_1.z.array(PackageInfoSchema).describe('List of package overviews'),
|
|
76
|
+
error: zod_1.z.string().optional().describe('Error message if operation failed'),
|
|
77
|
+
});
|
|
78
|
+
// ----------------------------------------------------------------------------
|
|
79
|
+
// PACKAGE MAPPING
|
|
80
|
+
// ----------------------------------------------------------------------------
|
|
81
|
+
const PACKAGE_NPM_NAMES = {
|
|
82
|
+
core: '@venizia/ignis',
|
|
83
|
+
helpers: '@venizia/ignis-helpers',
|
|
84
|
+
inversion: '@venizia/ignis-inversion',
|
|
85
|
+
'dev-configs': '@venizia/dev-configs',
|
|
86
|
+
docs: '@venizia/ignis-docs',
|
|
87
|
+
'mcp-server': '@venizia/ignis-docs (MCP Server)',
|
|
88
|
+
};
|
|
89
|
+
// ----------------------------------------------------------------------------
|
|
90
|
+
// TOOL CLASS
|
|
91
|
+
// ----------------------------------------------------------------------------
|
|
92
|
+
class GetPackageOverviewTool extends base_tool_1.BaseTool {
|
|
93
|
+
constructor() {
|
|
94
|
+
super(...arguments);
|
|
95
|
+
this.id = 'getPackageOverview';
|
|
96
|
+
this.description = TOOL_DESCRIPTION;
|
|
97
|
+
this.inputSchema = InputSchema;
|
|
98
|
+
this.outputSchema = OutputSchema;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extracts package description from first paragraph after title
|
|
102
|
+
*/
|
|
103
|
+
extractDescription(opts) {
|
|
104
|
+
const lines = opts.content.split('\n');
|
|
105
|
+
let bFoundTitle = false;
|
|
106
|
+
const descLines = [];
|
|
107
|
+
for (const line of lines) {
|
|
108
|
+
if (line.startsWith('# ')) {
|
|
109
|
+
bFoundTitle = true;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (bFoundTitle && line.trim() === '') {
|
|
113
|
+
if (descLines.length > 0) {
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (bFoundTitle && !line.startsWith('#') && !line.startsWith('|') && !line.startsWith('-')) {
|
|
119
|
+
descLines.push(line.trim());
|
|
120
|
+
if (descLines.length >= 2) {
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return descLines.join(' ').slice(0, 300) || 'No description available';
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Extracts directory table from markdown content
|
|
129
|
+
*/
|
|
130
|
+
extractDirectories(opts) {
|
|
131
|
+
const directories = [];
|
|
132
|
+
const lines = opts.content.split('\n');
|
|
133
|
+
let isInTable = false;
|
|
134
|
+
let isHeaderPassed = false;
|
|
135
|
+
for (const line of lines) {
|
|
136
|
+
// Look for tables with Directory/Folder column
|
|
137
|
+
if (line.includes('| Directory') || line.includes('| Folder') || line.includes('| **`')) {
|
|
138
|
+
isInTable = true;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (isInTable && line.startsWith('|---')) {
|
|
142
|
+
isHeaderPassed = true;
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (isInTable && isHeaderPassed && line.startsWith('|')) {
|
|
146
|
+
const cells = line
|
|
147
|
+
.split('|')
|
|
148
|
+
.map(c => c.trim())
|
|
149
|
+
.filter(Boolean);
|
|
150
|
+
if (cells.length >= 2) {
|
|
151
|
+
const dirName = cells[0].replace(/\*\*/g, '').replace(/`/g, '').trim();
|
|
152
|
+
const purpose = cells[1].replace(/\*\*/g, '').slice(0, 150);
|
|
153
|
+
if (dirName && !dirName.includes('---')) {
|
|
154
|
+
directories.push({ name: dirName, purpose });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Stop at next section
|
|
159
|
+
if (isInTable && isHeaderPassed && (line.startsWith('##') || line.startsWith('---'))) {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return directories.slice(0, 10); // Limit to top 10 directories
|
|
164
|
+
}
|
|
165
|
+
async execute(opts) {
|
|
166
|
+
const srcDetailsPath = common_1.Paths.SOURCE_DETAILS;
|
|
167
|
+
try {
|
|
168
|
+
// Get specific package or all packages
|
|
169
|
+
const pattern = opts.packageName ? `${opts.packageName}.md` : '*.md';
|
|
170
|
+
const files = await (0, fast_glob_1.default)(pattern, {
|
|
171
|
+
cwd: srcDetailsPath,
|
|
172
|
+
absolute: true,
|
|
173
|
+
});
|
|
174
|
+
if (files.length === 0) {
|
|
175
|
+
return {
|
|
176
|
+
packages: [],
|
|
177
|
+
error: opts.packageName
|
|
178
|
+
? `Package "${opts.packageName}" not found. Valid: core, helpers, inversion, dev-configs, docs, mcp-server`
|
|
179
|
+
: 'No package documentation found',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
const packages = await Promise.all(files.map(async (file) => {
|
|
183
|
+
const rawContent = await promises_1.default.readFile(file, 'utf-8');
|
|
184
|
+
const { content } = (0, gray_matter_1.default)(rawContent);
|
|
185
|
+
const baseName = node_path_1.default.basename(file, '.md');
|
|
186
|
+
const packageInfo = {
|
|
187
|
+
name: baseName,
|
|
188
|
+
npmName: PACKAGE_NPM_NAMES[baseName] || `@venizia/ignis-${baseName}`,
|
|
189
|
+
description: this.extractDescription({ content }),
|
|
190
|
+
directories: this.extractDirectories({ content }),
|
|
191
|
+
};
|
|
192
|
+
// Include full content only if single package requested
|
|
193
|
+
if (opts.packageName) {
|
|
194
|
+
packageInfo.content = content;
|
|
195
|
+
}
|
|
196
|
+
return packageInfo;
|
|
197
|
+
}));
|
|
198
|
+
// Sort by package name
|
|
199
|
+
packages.sort((a, b) => a.name.localeCompare(b.name));
|
|
200
|
+
return { packages };
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
helpers_1.Logger.error('Failed to get package overview:', error);
|
|
204
|
+
return {
|
|
205
|
+
packages: [],
|
|
206
|
+
error: `Failed to load package overview: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
getTool() {
|
|
211
|
+
return (0, tools_1.createTool)({
|
|
212
|
+
id: this.id,
|
|
213
|
+
description: this.description,
|
|
214
|
+
inputSchema: this.inputSchema,
|
|
215
|
+
outputSchema: this.outputSchema,
|
|
216
|
+
execute: async ({ context }) => this.execute(context),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.GetPackageOverviewTool = GetPackageOverviewTool;
|
|
221
|
+
//# sourceMappingURL=get-package-overview.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-package-overview.tool.js","sourceRoot":"","sources":["../../../tools/docs/get-package-overview.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './get-document-content.tool';
|
|
2
|
+
export * from './get-document-metadata.tool';
|
|
3
|
+
export * from './get-package-overview.tool';
|
|
4
|
+
export * from './list-categories.tool';
|
|
5
|
+
export * from './list-documents.tool';
|
|
6
|
+
export * from './search-documents.tool';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../tools/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./get-document-content.tool"), exports);
|
|
18
|
+
__exportStar(require("./get-document-metadata.tool"), exports);
|
|
19
|
+
__exportStar(require("./get-package-overview.tool"), exports);
|
|
20
|
+
__exportStar(require("./list-categories.tool"), exports);
|
|
21
|
+
__exportStar(require("./list-documents.tool"), exports);
|
|
22
|
+
__exportStar(require("./search-documents.tool"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../tools/docs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,+DAA6C;AAC7C,8DAA4C;AAC5C,yDAAuC;AACvC,wDAAsC;AACtC,0DAAwC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { BaseTool,
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { BaseTool, TMastraTool } from '../base.tool';
|
|
3
3
|
declare const InputSchema: z.ZodObject<{}, z.core.$strip>;
|
|
4
4
|
declare const OutputSchema: z.ZodObject<{
|
|
5
5
|
count: z.ZodNumber;
|
|
@@ -13,7 +13,7 @@ export declare class ListCategoriesTool extends BaseTool<typeof InputSchema, typ
|
|
|
13
13
|
count: z.ZodNumber;
|
|
14
14
|
categories: z.ZodArray<z.ZodString>;
|
|
15
15
|
}, z.core.$strip>;
|
|
16
|
-
execute(
|
|
16
|
+
execute(_opts: z.infer<typeof InputSchema>): Promise<z.infer<typeof OutputSchema>>;
|
|
17
17
|
getTool(): TMastraTool;
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-categories.tool.d.ts","sourceRoot":"","sources":["../../../tools/docs/list-categories.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsErD,QAAA,MAAM,WAAW,gCAAyD,CAAC;AAE3E,QAAA,MAAM,YAAY;;;iBAGhB,CAAC;AAMH,qBAAa,kBAAmB,SAAQ,QAAQ,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,CAAC;IACvF,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,WAAW,i7CAAoB;IACxC,QAAQ,CAAC,WAAW,iCAAe;IACnC,QAAQ,CAAC,YAAY;;;sBAAgB;IAE/B,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;IASxF,OAAO,IAAI,WAAW;CASvB"}
|