@hiveforge/hivemind-mcp 2.1.1 → 2.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 +18 -9
- package/dist/cli.js +193 -2
- package/dist/cli.js.map +1 -1
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tool-generator.d.ts +108 -0
- package/dist/mcp/tool-generator.d.ts.map +1 -0
- package/dist/mcp/tool-generator.js +245 -0
- package/dist/mcp/tool-generator.js.map +1 -0
- package/dist/parser/markdown.d.ts +9 -0
- package/dist/parser/markdown.d.ts.map +1 -1
- package/dist/parser/markdown.js +13 -2
- package/dist/parser/markdown.js.map +1 -1
- package/dist/server.d.ts +8 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +66 -199
- package/dist/server.js.map +1 -1
- package/dist/templates/builtin/worldbuilding.d.ts +20 -0
- package/dist/templates/builtin/worldbuilding.d.ts.map +1 -0
- package/dist/templates/builtin/worldbuilding.js +464 -0
- package/dist/templates/builtin/worldbuilding.js.map +1 -0
- package/dist/templates/detector.d.ts +51 -0
- package/dist/templates/detector.d.ts.map +1 -0
- package/dist/templates/detector.js +71 -0
- package/dist/templates/detector.js.map +1 -0
- package/dist/templates/folder-mapper.d.ts +66 -0
- package/dist/templates/folder-mapper.d.ts.map +1 -0
- package/dist/templates/folder-mapper.js +148 -0
- package/dist/templates/folder-mapper.js.map +1 -0
- package/dist/templates/index.d.ts +15 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +15 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/loader.d.ts +115 -0
- package/dist/templates/loader.d.ts.map +1 -0
- package/dist/templates/loader.js +202 -0
- package/dist/templates/loader.js.map +1 -0
- package/dist/templates/registry.d.ts +97 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +141 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/templates/schema-factory.d.ts +76 -0
- package/dist/templates/schema-factory.d.ts.map +1 -0
- package/dist/templates/schema-factory.js +171 -0
- package/dist/templates/schema-factory.js.map +1 -0
- package/dist/templates/types.d.ts +114 -0
- package/dist/templates/types.d.ts.map +1 -0
- package/dist/templates/types.js +9 -0
- package/dist/templates/types.js.map +1 -0
- package/dist/templates/validator.d.ts +200 -0
- package/dist/templates/validator.d.ts.map +1 -0
- package/dist/templates/validator.js +136 -0
- package/dist/templates/validator.js.map +1 -0
- package/dist/types/index.d.ts +57 -21
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +39 -15
- package/dist/types/index.js.map +1 -1
- package/dist/vault/reader.d.ts.map +1 -1
- package/dist/vault/reader.js +15 -1
- package/dist/vault/reader.js.map +1 -1
- package/package.json +7 -4
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic MCP tool generation from template entity types.
|
|
3
|
+
*
|
|
4
|
+
* Generates query_<entityType> and list_<entityType> tools for each
|
|
5
|
+
* entity type defined in the active template.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* Standard query arguments schema.
|
|
10
|
+
* All query tools share this interface.
|
|
11
|
+
*/
|
|
12
|
+
export const QueryEntityArgsSchema = z.object({
|
|
13
|
+
id: z.string().describe('Entity ID or name to query'),
|
|
14
|
+
includeContent: z.boolean().optional().default(true).describe('Include content body in response'),
|
|
15
|
+
contentLimit: z.number().min(100).max(5000).optional().default(500).describe('Maximum characters of content to return'),
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Standard list arguments schema.
|
|
19
|
+
* All list tools share this interface.
|
|
20
|
+
*/
|
|
21
|
+
export const ListEntityArgsSchema = z.object({
|
|
22
|
+
limit: z.number().min(1).max(100).optional().default(20).describe('Maximum number of results to return'),
|
|
23
|
+
status: z.enum(['draft', 'pending', 'canon', 'non-canon', 'archived']).optional().describe('Filter by status'),
|
|
24
|
+
includeContent: z.boolean().optional().default(false).describe('Include content snippets in response'),
|
|
25
|
+
contentLimit: z.number().min(50).max(500).optional().default(200).describe('Maximum characters per content snippet'),
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Generate a query_<entityType> tool definition.
|
|
29
|
+
*
|
|
30
|
+
* @param entityType - Entity type configuration from template
|
|
31
|
+
* @returns Tool definition for MCP registration
|
|
32
|
+
*/
|
|
33
|
+
export function generateQueryTool(entityType) {
|
|
34
|
+
const typeName = entityType.name;
|
|
35
|
+
const displayName = entityType.displayName;
|
|
36
|
+
return {
|
|
37
|
+
name: `query_${typeName}`,
|
|
38
|
+
description: `Retrieve detailed information about a ${displayName.toLowerCase()} by ID or name. Returns properties, content, and relationships.`,
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: {
|
|
42
|
+
id: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: `${displayName} ID or name to query`,
|
|
45
|
+
},
|
|
46
|
+
includeContent: {
|
|
47
|
+
type: 'boolean',
|
|
48
|
+
description: 'Include content body in response (default: true)',
|
|
49
|
+
default: true,
|
|
50
|
+
},
|
|
51
|
+
contentLimit: {
|
|
52
|
+
type: 'number',
|
|
53
|
+
description: 'Maximum characters of content to return (default: 500, max: 5000)',
|
|
54
|
+
default: 500,
|
|
55
|
+
minimum: 100,
|
|
56
|
+
maximum: 5000,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
required: ['id'],
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate a list_<entityType> tool definition.
|
|
65
|
+
*
|
|
66
|
+
* @param entityType - Entity type configuration from template
|
|
67
|
+
* @returns Tool definition for MCP registration
|
|
68
|
+
*/
|
|
69
|
+
export function generateListTool(entityType) {
|
|
70
|
+
const typeName = entityType.name;
|
|
71
|
+
const pluralName = entityType.pluralName;
|
|
72
|
+
return {
|
|
73
|
+
name: `list_${typeName}`,
|
|
74
|
+
description: `List all ${pluralName.toLowerCase()} in the vault. Supports filtering by status and pagination.`,
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
limit: {
|
|
79
|
+
type: 'number',
|
|
80
|
+
description: 'Maximum number of results to return (default: 20, max: 100)',
|
|
81
|
+
default: 20,
|
|
82
|
+
minimum: 1,
|
|
83
|
+
maximum: 100,
|
|
84
|
+
},
|
|
85
|
+
status: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'Filter by status (draft, pending, canon, non-canon, archived)',
|
|
88
|
+
enum: ['draft', 'pending', 'canon', 'non-canon', 'archived'],
|
|
89
|
+
},
|
|
90
|
+
includeContent: {
|
|
91
|
+
type: 'boolean',
|
|
92
|
+
description: 'Include content snippets in response (default: false)',
|
|
93
|
+
default: false,
|
|
94
|
+
},
|
|
95
|
+
contentLimit: {
|
|
96
|
+
type: 'number',
|
|
97
|
+
description: 'Maximum characters per content snippet (default: 200)',
|
|
98
|
+
default: 200,
|
|
99
|
+
minimum: 50,
|
|
100
|
+
maximum: 500,
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
required: [],
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Generate all tools for a set of entity types.
|
|
109
|
+
*
|
|
110
|
+
* @param entityTypes - Array of entity type configurations
|
|
111
|
+
* @returns Array of tool definitions (query + list for each type)
|
|
112
|
+
*/
|
|
113
|
+
export function generateToolsForEntityTypes(entityTypes) {
|
|
114
|
+
const tools = [];
|
|
115
|
+
for (const entityType of entityTypes) {
|
|
116
|
+
tools.push(generateQueryTool(entityType));
|
|
117
|
+
tools.push(generateListTool(entityType));
|
|
118
|
+
}
|
|
119
|
+
return tools;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if a tool name matches the query_<entityType> pattern.
|
|
123
|
+
*
|
|
124
|
+
* @param toolName - Tool name to check
|
|
125
|
+
* @returns Entity type name if match, null otherwise
|
|
126
|
+
*/
|
|
127
|
+
export function parseQueryToolName(toolName) {
|
|
128
|
+
const match = toolName.match(/^query_(\w+)$/);
|
|
129
|
+
return match ? match[1] : null;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Check if a tool name matches the list_<entityType> pattern.
|
|
133
|
+
*
|
|
134
|
+
* @param toolName - Tool name to check
|
|
135
|
+
* @returns Entity type name if match, null otherwise
|
|
136
|
+
*/
|
|
137
|
+
export function parseListToolName(toolName) {
|
|
138
|
+
const match = toolName.match(/^list_(\w+)$/);
|
|
139
|
+
return match ? match[1] : null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Format an entity with its relationships for response.
|
|
143
|
+
*
|
|
144
|
+
* Generic formatter that works with any entity type.
|
|
145
|
+
*
|
|
146
|
+
* @param entityType - Entity type configuration
|
|
147
|
+
* @param result - Query result with node and relatedNodes
|
|
148
|
+
* @param includeContent - Whether to include content body
|
|
149
|
+
* @param contentLimit - Maximum content length
|
|
150
|
+
* @returns Formatted markdown response
|
|
151
|
+
*/
|
|
152
|
+
export function formatEntityWithRelationships(entityType, result, includeContent = true, contentLimit = 500) {
|
|
153
|
+
const { node, relatedNodes } = result;
|
|
154
|
+
const props = node.properties;
|
|
155
|
+
const displayName = entityType.displayName;
|
|
156
|
+
let response = `# ${node.title}\n\n`;
|
|
157
|
+
response += `**Type**: ${displayName} | **Status**: ${node.status} | **ID**: \`${node.id}\`\n\n`;
|
|
158
|
+
// Display configured fields from entity type
|
|
159
|
+
const fieldValues = [];
|
|
160
|
+
for (const field of entityType.fields) {
|
|
161
|
+
const value = props[field.name];
|
|
162
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
163
|
+
// Format field name for display (capitalize first letter)
|
|
164
|
+
const fieldLabel = field.name.charAt(0).toUpperCase() + field.name.slice(1).replace(/_/g, ' ');
|
|
165
|
+
if (field.type === 'array') {
|
|
166
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
167
|
+
fieldValues.push(`**${fieldLabel}**: ${value.join(', ')}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (field.type === 'record') {
|
|
171
|
+
// Skip complex record types in summary
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
fieldValues.push(`**${fieldLabel}**: ${value}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (fieldValues.length > 0) {
|
|
179
|
+
response += fieldValues.slice(0, 5).join(' | ') + '\n\n';
|
|
180
|
+
}
|
|
181
|
+
// Content (if requested)
|
|
182
|
+
if (includeContent && node.content) {
|
|
183
|
+
response += `## Description\n`;
|
|
184
|
+
const content = node.content.trim();
|
|
185
|
+
if (content.length > contentLimit) {
|
|
186
|
+
response += `${content.substring(0, contentLimit)}...\n\n`;
|
|
187
|
+
response += `*[Truncated at ${contentLimit} chars. Full content: ${content.length} chars]*\n\n`;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
response += `${content}\n\n`;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Relationships (from graph)
|
|
194
|
+
if (relatedNodes.length > 0) {
|
|
195
|
+
response += `## Relationships\n`;
|
|
196
|
+
// Group by type
|
|
197
|
+
const byType = {};
|
|
198
|
+
for (const related of relatedNodes) {
|
|
199
|
+
const type = related.type || 'unknown';
|
|
200
|
+
if (!byType[type])
|
|
201
|
+
byType[type] = [];
|
|
202
|
+
byType[type].push(related);
|
|
203
|
+
}
|
|
204
|
+
for (const [type, nodes] of Object.entries(byType)) {
|
|
205
|
+
const typeLabel = type.charAt(0).toUpperCase() + type.slice(1) + 's';
|
|
206
|
+
response += `**${typeLabel}**: ${nodes.map((n) => n.title).join(', ')}\n`;
|
|
207
|
+
}
|
|
208
|
+
response += `\n`;
|
|
209
|
+
}
|
|
210
|
+
response += `---\n*Source: ${node.filePath}*\n`;
|
|
211
|
+
response += `*Last updated: ${new Date(node.updated).toLocaleString()}*`;
|
|
212
|
+
return response;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Format a list of entities for response.
|
|
216
|
+
*
|
|
217
|
+
* @param entityType - Entity type configuration
|
|
218
|
+
* @param nodes - Array of nodes to format
|
|
219
|
+
* @param includeContent - Whether to include content snippets
|
|
220
|
+
* @param contentLimit - Maximum content length per snippet
|
|
221
|
+
* @returns Formatted markdown response
|
|
222
|
+
*/
|
|
223
|
+
export function formatEntityList(entityType, nodes, includeContent = false, contentLimit = 200) {
|
|
224
|
+
const pluralName = entityType.pluralName;
|
|
225
|
+
let response = `# ${pluralName}\n\n`;
|
|
226
|
+
response += `Found ${nodes.length} ${pluralName.toLowerCase()}:\n\n`;
|
|
227
|
+
for (const node of nodes) {
|
|
228
|
+
response += `## ${node.title}\n`;
|
|
229
|
+
response += `- **ID**: \`${node.id}\`\n`;
|
|
230
|
+
response += `- **Status**: ${node.status}\n`;
|
|
231
|
+
response += `- **Path**: ${node.filePath}\n`;
|
|
232
|
+
if (includeContent && node.content) {
|
|
233
|
+
const content = node.content.trim();
|
|
234
|
+
if (content.length > contentLimit) {
|
|
235
|
+
response += `- **Snippet**: ${content.substring(0, contentLimit)}...\n`;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
response += `- **Snippet**: ${content}\n`;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
response += `\n`;
|
|
242
|
+
}
|
|
243
|
+
return response;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=tool-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/mcp/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACrD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACxH,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACxG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC9G,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACtG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CACrH,CAAC,CAAC;AAIH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA4B;IAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;IACjC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,SAAS,QAAQ,EAAE;QACzB,WAAW,EAAE,yCAAyC,WAAW,CAAC,WAAW,EAAE,iEAAiE;QAChJ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,GAAG,WAAW,sBAAsB;iBAClD;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,kDAAkD;oBAC/D,OAAO,EAAE,IAAI;iBACd;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mEAAmE;oBAChF,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,IAAI;iBACd;aACF;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA4B;IAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;IACjC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,QAAQ,QAAQ,EAAE;QACxB,WAAW,EAAE,YAAY,UAAU,CAAC,WAAW,EAAE,6DAA6D;QAC9G,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6DAA6D;oBAC1E,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG;iBACb;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+DAA+D;oBAC5E,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;iBAC7D;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,uDAAuD;oBACpE,OAAO,EAAE,KAAK;iBACf;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uDAAuD;oBACpE,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,GAAG;iBACb;aACF;YACD,QAAQ,EAAE,EAAE;SACb;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAA+B;IACzE,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA4B,EAC5B,MAA0C,EAC1C,cAAc,GAAG,IAAI,EACrB,YAAY,GAAG,GAAG;IAElB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAE3C,IAAI,QAAQ,GAAG,KAAK,IAAI,CAAC,KAAK,MAAM,CAAC;IACrC,QAAQ,IAAI,aAAa,WAAW,kBAAkB,IAAI,CAAC,MAAM,gBAAgB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEjG,6CAA6C;IAC7C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC1D,0DAA0D;YAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/F,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7C,WAAW,CAAC,IAAI,CAAC,KAAK,UAAU,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,uCAAuC;YACzC,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,KAAK,UAAU,OAAO,KAAK,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAC3D,CAAC;IAED,yBAAyB;IACzB,IAAI,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,QAAQ,IAAI,kBAAkB,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAClC,QAAQ,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YAC3D,QAAQ,IAAI,kBAAkB,YAAY,yBAAyB,OAAO,CAAC,MAAM,cAAc,CAAC;QAClG,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,GAAG,OAAO,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,QAAQ,IAAI,oBAAoB,CAAC;QAEjC,gBAAgB;QAChB,MAAM,MAAM,GAA0B,EAAE,CAAC;QACzC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACrE,QAAQ,IAAI,KAAK,SAAS,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjF,CAAC;QACD,QAAQ,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ,IAAI,iBAAiB,IAAI,CAAC,QAAQ,KAAK,CAAC;IAChD,QAAQ,IAAI,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC;IAEzE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAA4B,EAC5B,KAAY,EACZ,cAAc,GAAG,KAAK,EACtB,YAAY,GAAG,GAAG;IAElB,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAEzC,IAAI,QAAQ,GAAG,KAAK,UAAU,MAAM,CAAC;IACrC,QAAQ,IAAI,SAAS,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,QAAQ,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC;QACjC,QAAQ,IAAI,eAAe,IAAI,CAAC,EAAE,MAAM,CAAC;QACzC,QAAQ,IAAI,iBAAiB,IAAI,CAAC,MAAM,IAAI,CAAC;QAC7C,QAAQ,IAAI,eAAe,IAAI,CAAC,QAAQ,IAAI,CAAC;QAE7C,IAAI,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBAClC,QAAQ,IAAI,kBAAkB,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,kBAAkB,OAAO,IAAI,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,QAAQ,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { VaultNote } from '../types/index.js';
|
|
2
|
+
import type { z } from 'zod';
|
|
2
3
|
export declare class MarkdownParser {
|
|
4
|
+
private frontmatterSchema;
|
|
5
|
+
/**
|
|
6
|
+
* Create a new MarkdownParser.
|
|
7
|
+
*
|
|
8
|
+
* @param frontmatterSchema - Optional custom frontmatter schema for template-aware validation.
|
|
9
|
+
* Defaults to BaseFrontmatterSchema for backwards compatibility.
|
|
10
|
+
*/
|
|
11
|
+
constructor(frontmatterSchema?: z.ZodObject<any>);
|
|
3
12
|
/**
|
|
4
13
|
* Parse a markdown file and extract frontmatter, content, and links
|
|
5
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,mBAAmB,CAAC;AAG7E,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,qBAAa,cAAc;IACzB,OAAO,CAAC,iBAAiB,CAAmB;IAE5C;;;;;OAKG;gBACS,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAIhD;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKrD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;IAqC1D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAczB"}
|
package/dist/parser/markdown.js
CHANGED
|
@@ -3,6 +3,16 @@ import { remark } from 'remark';
|
|
|
3
3
|
import { BaseFrontmatterSchema } from '../types/index.js';
|
|
4
4
|
import { promises as fs } from 'fs';
|
|
5
5
|
export class MarkdownParser {
|
|
6
|
+
frontmatterSchema;
|
|
7
|
+
/**
|
|
8
|
+
* Create a new MarkdownParser.
|
|
9
|
+
*
|
|
10
|
+
* @param frontmatterSchema - Optional custom frontmatter schema for template-aware validation.
|
|
11
|
+
* Defaults to BaseFrontmatterSchema for backwards compatibility.
|
|
12
|
+
*/
|
|
13
|
+
constructor(frontmatterSchema) {
|
|
14
|
+
this.frontmatterSchema = frontmatterSchema ?? BaseFrontmatterSchema;
|
|
15
|
+
}
|
|
6
16
|
/**
|
|
7
17
|
* Parse a markdown file and extract frontmatter, content, and links
|
|
8
18
|
*/
|
|
@@ -47,8 +57,9 @@ export class MarkdownParser {
|
|
|
47
57
|
*/
|
|
48
58
|
parseFrontmatter(raw) {
|
|
49
59
|
try {
|
|
50
|
-
// Validate with Zod schema
|
|
51
|
-
|
|
60
|
+
// Validate with Zod schema (uses injected schema or default)
|
|
61
|
+
// Cast is safe because injected schemas extend BaseFrontmatterSchema
|
|
62
|
+
return this.frontmatterSchema.parse(raw);
|
|
52
63
|
}
|
|
53
64
|
catch (error) {
|
|
54
65
|
// Check if frontmatter is completely missing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -13,15 +13,19 @@ export declare class HivemindServer {
|
|
|
13
13
|
private queryMetrics;
|
|
14
14
|
constructor(config: HivemindConfig);
|
|
15
15
|
private setupHandlers;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Generic query handler for dynamically generated query_<entityType> tools.
|
|
18
|
+
*/
|
|
19
|
+
private handleGenericQuery;
|
|
20
|
+
/**
|
|
21
|
+
* Generic list handler for dynamically generated list_<entityType> tools.
|
|
22
|
+
*/
|
|
23
|
+
private handleGenericList;
|
|
18
24
|
private handleSearchVault;
|
|
19
25
|
private handleRebuildIndex;
|
|
20
26
|
private handleGetVaultStats;
|
|
21
27
|
private setupVaultWatcher;
|
|
22
28
|
private ensureIndexed;
|
|
23
|
-
private formatCharacterWithRelationships;
|
|
24
|
-
private formatLocationWithRelationships;
|
|
25
29
|
private formatSearchResults;
|
|
26
30
|
private handleStoreWorkflow;
|
|
27
31
|
private handleListWorkflows;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,EAUL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAsB1B,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAIlB;gBAEU,MAAM,EAAE,cAAc;IA+ClC,OAAO,CAAC,aAAa;IA6drB;;OAEG;YACW,kBAAkB;IA8DhC;;OAEG;YACW,iBAAiB;YA4CjB,iBAAiB;YA2CjB,kBAAkB;YAiClB,mBAAmB;IA6FjC,OAAO,CAAC,iBAAiB;YAcX,aAAa;IAwC3B,OAAO,CAAC,mBAAmB;YA2Bb,mBAAmB;YAkBnB,mBAAmB;YA8BnB,iBAAiB;YA0BjB,mBAAmB;YAwInB,gBAAgB;YAkChB,gBAAgB;YAkDhB,gBAAgB;YA4DhB,oBAAoB;YAqEpB,qBAAqB;YAsDrB,yBAAyB;IA4GjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAkCd,gBAAgB;CA2B/B"}
|