@hiveforge/hivemind-mcp 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -25
- package/dist/cli.js +193 -2
- package/dist/cli.js.map +1 -1
- package/dist/graph/builder.d.ts +7 -3
- package/dist/graph/builder.d.ts.map +1 -1
- package/dist/graph/builder.js +51 -21
- package/dist/graph/builder.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 +110 -0
- package/dist/mcp/tool-generator.d.ts.map +1 -0
- package/dist/mcp/tool-generator.js +281 -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/search/engine.d.ts +9 -1
- package/dist/search/engine.d.ts.map +1 -1
- package/dist/search/engine.js +16 -4
- package/dist/search/engine.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/people-management.d.ts +18 -0
- package/dist/templates/builtin/people-management.d.ts.map +1 -0
- package/dist/templates/builtin/people-management.js +523 -0
- package/dist/templates/builtin/people-management.js.map +1 -0
- package/dist/templates/builtin/research.d.ts +18 -0
- package/dist/templates/builtin/research.d.ts.map +1 -0
- package/dist/templates/builtin/research.js +349 -0
- package/dist/templates/builtin/research.js.map +1 -0
- 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 +602 -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 +117 -0
- package/dist/templates/loader.d.ts.map +1 -0
- package/dist/templates/loader.js +208 -0
- package/dist/templates/loader.js.map +1 -0
- package/dist/templates/registry.d.ts +127 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +205 -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 +40 -0
- package/dist/templates/types.d.ts.map +1 -1
- package/dist/templates/validator.d.ts +310 -0
- package/dist/templates/validator.d.ts.map +1 -0
- package/dist/templates/validator.js +169 -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
package/README.md
CHANGED
|
@@ -5,27 +5,35 @@
|
|
|
5
5
|
# Hivemind MCP Server
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@hiveforge/hivemind-mcp)
|
|
8
|
-
[](https://github.com/hiveforge-sh/hivemind/actions/workflows/test.yml)
|
|
9
|
+
[](https://github.com/hiveforge-sh/hivemind/actions/workflows/release.yml)
|
|
10
|
+
[](https://codecov.io/gh/hiveforge-sh/hivemind)
|
|
11
11
|
[](https://opensource.org/licenses/MIT)
|
|
12
|
-
[](https://github.com/hiveforge-sh/hivemind/issues)
|
|
13
|
+
[](https://github.com/hiveforge-sh/hivemind/stargazers)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
A domain-agnostic MCP (Model Context Protocol) server for Obsidian vaults that provides AI tools with consistent, structured context from your knowledge base.
|
|
16
16
|
|
|
17
17
|
## What is Hivemind?
|
|
18
18
|
|
|
19
|
-
Hivemind bridges your Obsidian vault
|
|
19
|
+
Hivemind bridges your Obsidian vault and AI tools (Claude, ComfyUI, etc.) via the Model Context Protocol. With pluggable templates, it supports multiple domains out of the box:
|
|
20
|
+
|
|
21
|
+
- **Worldbuilding** — Characters, Locations, Events, Factions, Lore, Assets
|
|
22
|
+
- **Research** — Papers, Citations, Concepts, Notes
|
|
23
|
+
- **People Management** — People, Goals, Teams, 1:1 Meetings
|
|
24
|
+
|
|
25
|
+
Or define your own custom entity types via `config.json` — no code required.
|
|
20
26
|
|
|
21
27
|
## Features
|
|
22
28
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
+
- **Pluggable Templates**: Built-in templates for worldbuilding, research, and people management — or define your own
|
|
30
|
+
- **HybridRAG Search**: Combines vector, graph, and keyword search for accurate context retrieval
|
|
31
|
+
- **Obsidian Native**: Works with standard markdown, YAML frontmatter, and wikilinks
|
|
32
|
+
- **Custom Relationships**: Define relationship types per template with bidirectionality and validation
|
|
33
|
+
- **Asset Provenance**: Track AI-generated images and their generation settings
|
|
34
|
+
- **Local-First**: Your data stays on your machine, with optional cloud deployment
|
|
35
|
+
- **Canon Management**: Draft → Pending → Canon approval workflow
|
|
36
|
+
- **High Performance**: <300ms query latency, supports 1000+ note vaults
|
|
29
37
|
|
|
30
38
|
## Quick Start
|
|
31
39
|
|
|
@@ -110,6 +118,9 @@ If you prefer to configure manually, create a `config.json`:
|
|
|
110
118
|
"server": {
|
|
111
119
|
"transport": "stdio"
|
|
112
120
|
},
|
|
121
|
+
"template": {
|
|
122
|
+
"activeTemplate": "worldbuilding"
|
|
123
|
+
},
|
|
113
124
|
"indexing": {
|
|
114
125
|
"strategy": "incremental",
|
|
115
126
|
"batchSize": 100,
|
|
@@ -119,6 +130,53 @@ If you prefer to configure manually, create a `config.json`:
|
|
|
119
130
|
}
|
|
120
131
|
```
|
|
121
132
|
|
|
133
|
+
### Choosing a Template
|
|
134
|
+
|
|
135
|
+
Set `activeTemplate` to one of the built-in templates:
|
|
136
|
+
|
|
137
|
+
| Template | Use Case | Entity Types |
|
|
138
|
+
|----------|----------|--------------|
|
|
139
|
+
| `worldbuilding` | Fiction writers, game masters | Characters, Locations, Events, Factions, Lore, Assets, References |
|
|
140
|
+
| `research` | Academics, knowledge workers | Papers, Citations, Concepts, Notes |
|
|
141
|
+
| `people-management` | Managers, team leads | People, Goals, Teams, 1:1 Meetings |
|
|
142
|
+
|
|
143
|
+
### Custom Templates
|
|
144
|
+
|
|
145
|
+
Define custom entity types directly in your `config.json`:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"template": {
|
|
150
|
+
"activeTemplate": "my-template",
|
|
151
|
+
"templates": [{
|
|
152
|
+
"id": "my-template",
|
|
153
|
+
"name": "My Custom Template",
|
|
154
|
+
"version": "1.0.0",
|
|
155
|
+
"entityTypes": [{
|
|
156
|
+
"name": "project",
|
|
157
|
+
"displayName": "Project",
|
|
158
|
+
"pluralName": "Projects",
|
|
159
|
+
"fields": [
|
|
160
|
+
{ "name": "title", "type": "string", "required": true },
|
|
161
|
+
{ "name": "deadline", "type": "date" },
|
|
162
|
+
{ "name": "priority", "type": "enum", "enumValues": ["low", "medium", "high"] }
|
|
163
|
+
]
|
|
164
|
+
}],
|
|
165
|
+
"relationshipTypes": [{
|
|
166
|
+
"id": "depends_on",
|
|
167
|
+
"displayName": "Depends On",
|
|
168
|
+
"sourceTypes": ["project"],
|
|
169
|
+
"targetTypes": ["project"],
|
|
170
|
+
"bidirectional": true,
|
|
171
|
+
"reverseId": "blocks"
|
|
172
|
+
}]
|
|
173
|
+
}]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
See [samples/](samples/) for complete example vaults for each template.
|
|
179
|
+
|
|
122
180
|
## Architecture
|
|
123
181
|
|
|
124
182
|
```
|
|
@@ -140,9 +198,21 @@ Obsidian Vault → File Watcher → Markdown Parser → Knowledge Graph
|
|
|
140
198
|
|
|
141
199
|
## Development Status
|
|
142
200
|
|
|
143
|
-
**Current
|
|
201
|
+
**Current**: v2.0 Template System Complete ✅
|
|
202
|
+
|
|
203
|
+
### v2.0 — Template System (Complete)
|
|
204
|
+
|
|
205
|
+
Hivemind is now domain-agnostic with pluggable templates:
|
|
206
|
+
|
|
207
|
+
- [x] Template registry with config-driven entity definitions
|
|
208
|
+
- [x] Dynamic Zod schema generation from config
|
|
209
|
+
- [x] Auto-generated MCP tools per entity type (`query_<type>`, `list_<type>`)
|
|
210
|
+
- [x] Worldbuilding template extraction (backwards compatible)
|
|
211
|
+
- [x] Custom relationship types per template with validation
|
|
212
|
+
- [x] Built-in templates: worldbuilding, research, people-management
|
|
213
|
+
- [x] Sample vaults for each template
|
|
144
214
|
|
|
145
|
-
###
|
|
215
|
+
### v1.0 — MVP + Core Features (Shipped)
|
|
146
216
|
|
|
147
217
|
- [x] MCP server with hybrid search (vector, graph, keyword)
|
|
148
218
|
- [x] Vault templates for all entity types (Character, Location, Event, Faction, Lore, Asset)
|
|
@@ -152,18 +222,35 @@ Obsidian Vault → File Watcher → Markdown Parser → Knowledge Graph
|
|
|
152
222
|
- [x] Obsidian plugin with image generation
|
|
153
223
|
- [x] CI/CD with semantic-release and CodeQL scanning
|
|
154
224
|
|
|
155
|
-
|
|
225
|
+
### Coming Soon
|
|
226
|
+
|
|
156
227
|
- [ ] Obsidian community plugin submission
|
|
157
|
-
- [ ]
|
|
228
|
+
- [ ] Timeline queries with date range filtering
|
|
229
|
+
- [ ] First-run setup wizard
|
|
158
230
|
|
|
159
231
|
## MCP Tools
|
|
160
232
|
|
|
161
|
-
###
|
|
233
|
+
### Dynamic Entity Tools (Auto-Generated)
|
|
234
|
+
|
|
235
|
+
Tools are automatically generated for each entity type defined in the active template:
|
|
236
|
+
|
|
237
|
+
| Tool Pattern | Description |
|
|
238
|
+
|--------------|-------------|
|
|
239
|
+
| `query_<type>` | Get entity by ID/name with relationships and content |
|
|
240
|
+
| `list_<type>` | List all entities of type with optional filters |
|
|
241
|
+
|
|
242
|
+
**Built-in template tools:**
|
|
243
|
+
|
|
244
|
+
| Template | Generated Tools |
|
|
245
|
+
|----------|-----------------|
|
|
246
|
+
| `worldbuilding` | `query_character`, `query_location`, `query_event`, `query_faction`, `query_lore`, `query_asset`, `query_reference` + list variants |
|
|
247
|
+
| `research` | `query_paper`, `query_citation`, `query_concept`, `query_note` + list variants |
|
|
248
|
+
| `people-management` | `query_person`, `query_goal`, `query_team`, `query_one_on_one` + list variants |
|
|
249
|
+
|
|
250
|
+
### Search
|
|
162
251
|
| Tool | Description |
|
|
163
252
|
|------|-------------|
|
|
164
|
-
| `
|
|
165
|
-
| `query_location` | Get location with hierarchy and connected entities |
|
|
166
|
-
| `search_vault` | Hybrid search across all content with filters |
|
|
253
|
+
| `search_vault` | Hybrid search across all content with type/status filters |
|
|
167
254
|
|
|
168
255
|
### Asset Management
|
|
169
256
|
| Tool | Description |
|
|
@@ -195,10 +282,12 @@ Obsidian Vault → File Watcher → Markdown Parser → Knowledge Graph
|
|
|
195
282
|
|
|
196
283
|
## Documentation
|
|
197
284
|
|
|
198
|
-
- [Setup Guide](docs/SETUP_GUIDE.md)
|
|
199
|
-
- [
|
|
200
|
-
- [
|
|
201
|
-
- [
|
|
285
|
+
- [Setup Guide](docs/SETUP_GUIDE.md) — Getting started with Hivemind
|
|
286
|
+
- [Vault Migration Guide](docs/VAULT_MIGRATION_GUIDE.md) — Migrating existing vaults
|
|
287
|
+
- [MCP Compatibility](docs/MCP_COMPATIBILITY.md) — Supported AI clients
|
|
288
|
+
- [ComfyUI Integration](docs/COMFYUI_INTEGRATION.md) — AI image generation
|
|
289
|
+
- [Obsidian Plugin Workflow](docs/OBSIDIAN_PLUGIN_WORKFLOW.md) — Plugin development
|
|
290
|
+
- [Sample Vaults](samples/README.md) — Example vaults for each built-in template
|
|
202
291
|
|
|
203
292
|
## License
|
|
204
293
|
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { readFileSync, writeFileSync, existsSync } from 'fs';
|
|
3
|
-
import { resolve, join } from 'path';
|
|
3
|
+
import { resolve, join, basename } from 'path';
|
|
4
4
|
import * as readline from 'readline/promises';
|
|
5
5
|
import { stdin as input, stdout as output } from 'process';
|
|
6
|
+
import { FolderMapper } from './templates/folder-mapper.js';
|
|
7
|
+
import { templateRegistry } from './templates/registry.js';
|
|
8
|
+
import { worldbuildingTemplate } from './templates/builtin/worldbuilding.js';
|
|
6
9
|
const DEFAULT_CONFIG = {
|
|
7
10
|
vault: {
|
|
8
11
|
path: '',
|
|
@@ -95,13 +98,197 @@ async function start() {
|
|
|
95
98
|
const { startServer } = await import('./index.js');
|
|
96
99
|
await startServer();
|
|
97
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Fix command: helps add frontmatter to skipped files
|
|
103
|
+
*/
|
|
104
|
+
async function fix() {
|
|
105
|
+
const vaultPath = getVaultPath();
|
|
106
|
+
if (!vaultPath) {
|
|
107
|
+
console.error('❌ Could not determine vault path. Use --vault flag or create config.json');
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
const skippedLogPath = join(vaultPath, '.hivemind', 'skipped-files.log');
|
|
111
|
+
if (!existsSync(skippedLogPath)) {
|
|
112
|
+
console.log('✅ No skipped files log found. Run "npx @hiveforge/hivemind-mcp start" first to scan vault.');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
console.log('🔧 Hivemind Fix - Add frontmatter to skipped files\n');
|
|
116
|
+
// Read and parse skipped files log
|
|
117
|
+
const logContent = readFileSync(skippedLogPath, 'utf-8');
|
|
118
|
+
const skippedFiles = parseSkippedFilesLog(logContent);
|
|
119
|
+
if (skippedFiles.length === 0) {
|
|
120
|
+
console.log('✅ No skipped files found!');
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
console.log(`Found ${skippedFiles.length} file(s) needing frontmatter.\n`);
|
|
124
|
+
// Initialize folder mapper
|
|
125
|
+
const folderMapper = new FolderMapper();
|
|
126
|
+
// Initialize template registry for entity types
|
|
127
|
+
if (!templateRegistry.has('worldbuilding')) {
|
|
128
|
+
templateRegistry.register(worldbuildingTemplate, 'builtin');
|
|
129
|
+
templateRegistry.activate('worldbuilding');
|
|
130
|
+
}
|
|
131
|
+
const activeTemplate = templateRegistry.getActive();
|
|
132
|
+
const entityTypes = activeTemplate?.entityTypes.map(e => e.name) || ['character', 'location', 'event', 'faction', 'lore', 'asset', 'reference'];
|
|
133
|
+
const rl = readline.createInterface({ input, output });
|
|
134
|
+
try {
|
|
135
|
+
let fixed = 0;
|
|
136
|
+
let skipped = 0;
|
|
137
|
+
for (const filePath of skippedFiles) {
|
|
138
|
+
const fullPath = join(vaultPath, filePath);
|
|
139
|
+
if (!existsSync(fullPath)) {
|
|
140
|
+
console.log(`⚠️ File not found: ${filePath}`);
|
|
141
|
+
skipped++;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
// Infer type from folder
|
|
145
|
+
const inferredType = folderMapper.inferType(filePath);
|
|
146
|
+
const fileName = basename(filePath, '.md');
|
|
147
|
+
console.log(`\n📄 ${filePath}`);
|
|
148
|
+
if (inferredType) {
|
|
149
|
+
console.log(` Inferred type: ${inferredType}`);
|
|
150
|
+
const confirm = await rl.question(` Use '${inferredType}'? (Y/n/skip): `);
|
|
151
|
+
if (confirm.toLowerCase() === 'skip' || confirm.toLowerCase() === 's') {
|
|
152
|
+
console.log(' Skipped.');
|
|
153
|
+
skipped++;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (confirm.toLowerCase() === 'n' || confirm.toLowerCase() === 'no') {
|
|
157
|
+
// Let user choose type
|
|
158
|
+
const selectedType = await selectType(rl, entityTypes);
|
|
159
|
+
if (selectedType) {
|
|
160
|
+
await addFrontmatter(fullPath, selectedType, fileName);
|
|
161
|
+
fixed++;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
skipped++;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// Use inferred type
|
|
169
|
+
await addFrontmatter(fullPath, inferredType, fileName);
|
|
170
|
+
fixed++;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.log(' Could not infer type from folder.');
|
|
175
|
+
const selectedType = await selectType(rl, entityTypes);
|
|
176
|
+
if (selectedType) {
|
|
177
|
+
await addFrontmatter(fullPath, selectedType, fileName);
|
|
178
|
+
fixed++;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
skipped++;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
console.log(`\n✅ Done! Fixed: ${fixed}, Skipped: ${skipped}`);
|
|
186
|
+
console.log(' Run "npx @hiveforge/hivemind-mcp start" to re-index vault.');
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
rl.close();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get vault path from config or args
|
|
194
|
+
*/
|
|
195
|
+
function getVaultPath() {
|
|
196
|
+
// Check for --vault flag in args
|
|
197
|
+
const vaultIndex = process.argv.indexOf('--vault');
|
|
198
|
+
if (vaultIndex !== -1 && process.argv[vaultIndex + 1]) {
|
|
199
|
+
return resolve(process.argv[vaultIndex + 1]);
|
|
200
|
+
}
|
|
201
|
+
// Check for config.json
|
|
202
|
+
const configPath = resolve(process.cwd(), 'config.json');
|
|
203
|
+
if (existsSync(configPath)) {
|
|
204
|
+
try {
|
|
205
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
206
|
+
if (config.vault?.path) {
|
|
207
|
+
return resolve(config.vault.path);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Ignore config parse errors
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Fall back to current directory
|
|
215
|
+
return process.cwd();
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Parse skipped files from log content
|
|
219
|
+
*/
|
|
220
|
+
function parseSkippedFilesLog(content) {
|
|
221
|
+
const files = [];
|
|
222
|
+
const lines = content.split('\n');
|
|
223
|
+
for (const line of lines) {
|
|
224
|
+
// Match lines like " • path/to/file.md"
|
|
225
|
+
const match = line.match(/^\s+[•]\s+(.+\.md)$/);
|
|
226
|
+
if (match) {
|
|
227
|
+
files.push(match[1].trim());
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return files;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Let user select an entity type
|
|
234
|
+
*/
|
|
235
|
+
async function selectType(rl, types) {
|
|
236
|
+
console.log(' Available types:');
|
|
237
|
+
types.forEach((t, i) => console.log(` ${i + 1}. ${t}`));
|
|
238
|
+
console.log(` 0. Skip this file`);
|
|
239
|
+
const choice = await rl.question(' Enter number: ');
|
|
240
|
+
const num = parseInt(choice, 10);
|
|
241
|
+
if (num === 0 || isNaN(num) || num < 1 || num > types.length) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
return types[num - 1];
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Add frontmatter to a file
|
|
248
|
+
*/
|
|
249
|
+
async function addFrontmatter(filePath, entityType, name) {
|
|
250
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
251
|
+
// Generate unique ID
|
|
252
|
+
const id = generateId(name, entityType);
|
|
253
|
+
// Create frontmatter
|
|
254
|
+
const frontmatter = [
|
|
255
|
+
'---',
|
|
256
|
+
`id: ${id}`,
|
|
257
|
+
`type: ${entityType}`,
|
|
258
|
+
`status: draft`,
|
|
259
|
+
`name: "${name}"`,
|
|
260
|
+
`tags: []`,
|
|
261
|
+
`aliases: []`,
|
|
262
|
+
'---',
|
|
263
|
+
'',
|
|
264
|
+
].join('\n');
|
|
265
|
+
// Check if file already has frontmatter
|
|
266
|
+
if (content.trimStart().startsWith('---')) {
|
|
267
|
+
console.log(' ⚠️ File already has frontmatter block, skipping...');
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
// Prepend frontmatter
|
|
271
|
+
const newContent = frontmatter + content;
|
|
272
|
+
writeFileSync(filePath, newContent, 'utf-8');
|
|
273
|
+
console.log(` ✅ Added frontmatter (id: ${id})`);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Generate a unique ID from name and type
|
|
277
|
+
*/
|
|
278
|
+
function generateId(name, entityType) {
|
|
279
|
+
const slug = name
|
|
280
|
+
.toLowerCase()
|
|
281
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
282
|
+
.replace(/^-|-$/g, '');
|
|
283
|
+
return `${entityType}-${slug}`;
|
|
284
|
+
}
|
|
98
285
|
async function validate() {
|
|
99
286
|
const configPath = resolve(process.cwd(), 'config.json');
|
|
100
287
|
console.log('🔍 Validating Hivemind configuration...\n');
|
|
101
288
|
// Check config exists
|
|
102
289
|
if (!existsSync(configPath)) {
|
|
103
290
|
console.error('❌ config.json not found');
|
|
104
|
-
console.log(' Run "npx hivemind init" to create one');
|
|
291
|
+
console.log(' Run "npx @hiveforge/hivemind-mcp init" to create one');
|
|
105
292
|
process.exit(1);
|
|
106
293
|
}
|
|
107
294
|
// Load and validate config
|
|
@@ -174,12 +361,16 @@ else {
|
|
|
174
361
|
case 'validate':
|
|
175
362
|
validate();
|
|
176
363
|
break;
|
|
364
|
+
case 'fix':
|
|
365
|
+
fix();
|
|
366
|
+
break;
|
|
177
367
|
default:
|
|
178
368
|
console.log('Hivemind MCP Server\n');
|
|
179
369
|
console.log('Usage:');
|
|
180
370
|
console.log(' npx @hiveforge/hivemind-mcp init - Interactive configuration setup');
|
|
181
371
|
console.log(' npx @hiveforge/hivemind-mcp validate - Validate configuration');
|
|
182
372
|
console.log(' npx @hiveforge/hivemind-mcp start - Start the MCP server');
|
|
373
|
+
console.log(' npx @hiveforge/hivemind-mcp fix - Add frontmatter to skipped files');
|
|
183
374
|
console.log(' npx @hiveforge/hivemind-mcp --vault <path> - Start with specified vault path');
|
|
184
375
|
console.log(' npx @hiveforge/hivemind-mcp --vault . - Start with current directory as vault');
|
|
185
376
|
process.exit(command ? 1 : 0);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/builder.d.ts
CHANGED
|
@@ -12,15 +12,19 @@ export declare class GraphBuilder {
|
|
|
12
12
|
*/
|
|
13
13
|
private buildRelationships;
|
|
14
14
|
/**
|
|
15
|
-
* Infer relationship type from note types
|
|
15
|
+
* Infer relationship type from note types using template configuration.
|
|
16
|
+
*
|
|
17
|
+
* Queries the template registry for valid relationships between the
|
|
18
|
+
* source and target entity types. Falls back to 'related' if no
|
|
19
|
+
* specific relationship is defined.
|
|
16
20
|
*/
|
|
17
21
|
private inferRelationType;
|
|
18
22
|
/**
|
|
19
|
-
* Check if a relationship type should be bidirectional
|
|
23
|
+
* Check if a relationship type should be bidirectional using template config.
|
|
20
24
|
*/
|
|
21
25
|
private isBidirectional;
|
|
22
26
|
/**
|
|
23
|
-
* Get reverse relationship type
|
|
27
|
+
* Get reverse relationship type using template config.
|
|
24
28
|
*/
|
|
25
29
|
private getReverseRelationType;
|
|
26
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/graph/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/graph/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAmB;gBAEjB,EAAE,EAAE,gBAAgB;IAIhC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAwBpC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsC1B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,QAAQ,IAAI,cAAc;IA8B1B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI;IASxD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGjC"}
|
package/dist/graph/builder.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { templateRegistry } from '../templates/registry.js';
|
|
1
2
|
export class GraphBuilder {
|
|
2
3
|
db;
|
|
3
4
|
constructor(db) {
|
|
@@ -56,49 +57,78 @@ export class GraphBuilder {
|
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
|
-
* Infer relationship type from note types
|
|
60
|
+
* Infer relationship type from note types using template configuration.
|
|
61
|
+
*
|
|
62
|
+
* Queries the template registry for valid relationships between the
|
|
63
|
+
* source and target entity types. Falls back to 'related' if no
|
|
64
|
+
* specific relationship is defined.
|
|
60
65
|
*/
|
|
61
66
|
inferRelationType(source, target) {
|
|
62
67
|
const sourceType = source.frontmatter.type;
|
|
63
68
|
const targetType = target.frontmatter.type;
|
|
64
|
-
//
|
|
65
|
-
if (sourceType
|
|
66
|
-
return '
|
|
69
|
+
// If either type is undefined, use default
|
|
70
|
+
if (!sourceType || !targetType) {
|
|
71
|
+
return 'related';
|
|
67
72
|
}
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
// Try to get active template's valid relationships
|
|
74
|
+
try {
|
|
75
|
+
const validRels = templateRegistry.getValidRelationships(sourceType, targetType);
|
|
76
|
+
// Return first valid relationship that isn't the generic 'related'
|
|
77
|
+
// (prefer specific relationships over generic fallback)
|
|
78
|
+
const specificRel = validRels.find((rel) => rel.id !== 'related');
|
|
79
|
+
if (specificRel) {
|
|
80
|
+
return specificRel.id;
|
|
81
|
+
}
|
|
82
|
+
// If only 'related' is available, use it
|
|
83
|
+
if (validRels.length > 0) {
|
|
84
|
+
return validRels[0].id;
|
|
85
|
+
}
|
|
75
86
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return 'connected_to';
|
|
87
|
+
catch {
|
|
88
|
+
// No active template, fall through to default
|
|
79
89
|
}
|
|
80
|
-
// Default
|
|
90
|
+
// Default fallback
|
|
81
91
|
return 'related';
|
|
82
92
|
}
|
|
83
93
|
/**
|
|
84
|
-
* Check if a relationship type should be bidirectional
|
|
94
|
+
* Check if a relationship type should be bidirectional using template config.
|
|
85
95
|
*/
|
|
86
96
|
isBidirectional(relType) {
|
|
87
|
-
|
|
88
|
-
|
|
97
|
+
try {
|
|
98
|
+
const relConfig = templateRegistry.getRelationshipType(relType);
|
|
99
|
+
if (relConfig) {
|
|
100
|
+
return relConfig.bidirectional;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// No active template, fall through to defaults
|
|
105
|
+
}
|
|
106
|
+
// Default bidirectional types for backwards compatibility
|
|
107
|
+
const defaultBidirectional = ['knows', 'connected_to', 'related'];
|
|
108
|
+
return defaultBidirectional.includes(relType);
|
|
89
109
|
}
|
|
90
110
|
/**
|
|
91
|
-
* Get reverse relationship type
|
|
111
|
+
* Get reverse relationship type using template config.
|
|
92
112
|
*/
|
|
93
113
|
getReverseRelationType(relType) {
|
|
94
|
-
|
|
114
|
+
try {
|
|
115
|
+
const relConfig = templateRegistry.getRelationshipType(relType);
|
|
116
|
+
if (relConfig && relConfig.reverseId) {
|
|
117
|
+
return relConfig.reverseId;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// No active template, fall through to defaults
|
|
122
|
+
}
|
|
123
|
+
// Default reverse mappings for backwards compatibility
|
|
124
|
+
const defaultReverseMap = {
|
|
95
125
|
'knows': 'knows',
|
|
96
126
|
'connected_to': 'connected_to',
|
|
97
127
|
'related': 'related',
|
|
98
128
|
'located_in': 'has_inhabitant',
|
|
99
129
|
'has_inhabitant': 'located_in',
|
|
100
130
|
};
|
|
101
|
-
return
|
|
131
|
+
return defaultReverseMap[relType] || 'related';
|
|
102
132
|
}
|
|
103
133
|
/**
|
|
104
134
|
* Find note by name or ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/graph/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/graph/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,qBAAqB,CAAC"}
|