@hiveforge/hivemind-mcp 2.3.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.
Files changed (39) hide show
  1. package/README.md +107 -27
  2. package/dist/graph/builder.d.ts +7 -3
  3. package/dist/graph/builder.d.ts.map +1 -1
  4. package/dist/graph/builder.js +51 -21
  5. package/dist/graph/builder.js.map +1 -1
  6. package/dist/mcp/tool-generator.d.ts +3 -1
  7. package/dist/mcp/tool-generator.d.ts.map +1 -1
  8. package/dist/mcp/tool-generator.js +41 -5
  9. package/dist/mcp/tool-generator.js.map +1 -1
  10. package/dist/search/engine.d.ts +9 -1
  11. package/dist/search/engine.d.ts.map +1 -1
  12. package/dist/search/engine.js +16 -4
  13. package/dist/search/engine.js.map +1 -1
  14. package/dist/templates/builtin/people-management.d.ts +18 -0
  15. package/dist/templates/builtin/people-management.d.ts.map +1 -0
  16. package/dist/templates/builtin/people-management.js +523 -0
  17. package/dist/templates/builtin/people-management.js.map +1 -0
  18. package/dist/templates/builtin/research.d.ts +18 -0
  19. package/dist/templates/builtin/research.d.ts.map +1 -0
  20. package/dist/templates/builtin/research.js +349 -0
  21. package/dist/templates/builtin/research.js.map +1 -0
  22. package/dist/templates/builtin/worldbuilding.d.ts.map +1 -1
  23. package/dist/templates/builtin/worldbuilding.js +138 -0
  24. package/dist/templates/builtin/worldbuilding.js.map +1 -1
  25. package/dist/templates/loader.d.ts +3 -1
  26. package/dist/templates/loader.d.ts.map +1 -1
  27. package/dist/templates/loader.js +7 -1
  28. package/dist/templates/loader.js.map +1 -1
  29. package/dist/templates/registry.d.ts +31 -1
  30. package/dist/templates/registry.d.ts.map +1 -1
  31. package/dist/templates/registry.js +64 -0
  32. package/dist/templates/registry.js.map +1 -1
  33. package/dist/templates/types.d.ts +28 -0
  34. package/dist/templates/types.d.ts.map +1 -1
  35. package/dist/templates/validator.d.ts +110 -0
  36. package/dist/templates/validator.d.ts.map +1 -1
  37. package/dist/templates/validator.js +35 -2
  38. package/dist/templates/validator.js.map +1 -1
  39. package/package.json +1 -1
package/README.md CHANGED
@@ -12,20 +12,28 @@
12
12
  [![GitHub issues](https://img.shields.io/github/issues/hiveforge-sh/hivemind)](https://github.com/hiveforge-sh/hivemind/issues)
13
13
  [![GitHub stars](https://img.shields.io/github/stars/hiveforge-sh/hivemind)](https://github.com/hiveforge-sh/hivemind/stargazers)
14
14
 
15
- An MCP (Model Context Protocol) server for Obsidian worldbuilding vaults that provides AI tools with consistent, canonical context from your fictional worlds.
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 (where you maintain your worldbuilding canon) and AI tools (Claude, ComfyUI, etc.) via the Model Context Protocol. It ensures AI-generated content stays consistent with your established characters, locations, lore, and approved assets.
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
- - 🔍 **HybridRAG Search**: Combines vector, graph, and keyword search for accurate context retrieval
24
- - 📚 **Obsidian Native**: Works with standard markdown, YAML frontmatter, and wikilinks
25
- - 🎨 **Asset Provenance**: Track AI-generated images and their generation settings
26
- - 🔐 **Local-First**: Your data stays on your machine, with optional cloud deployment
27
- - **Canon Management**: Draft Pending Canon approval workflow
28
- - 🚀 **High Performance**: <300ms query latency, supports 1000+ note vaults
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,7 +198,19 @@ Obsidian Vault → File Watcher → Markdown Parser → Knowledge Graph
140
198
 
141
199
  ## Development Status
142
200
 
143
- **Current**: Milestone 1.0 Complete ✅ | **Next**: Milestone 2.0 Template System 🚧
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
 
@@ -152,27 +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
- ### v2.0 — Template System (In Progress)
156
-
157
- Make Hivemind domain-agnostic with pluggable templates:
225
+ ### Coming Soon
158
226
 
159
- - [ ] Template registry with config-driven entity definitions
160
- - [ ] Built-in templates: worldbuilding, research, people-management
161
- - [ ] Custom entity types via config (no coding required)
162
- - [ ] Auto-generated MCP tools per entity type
163
- - [ ] Custom relationship types per template
164
-
165
- **Also pending:**
166
227
  - [ ] Obsidian community plugin submission
228
+ - [ ] Timeline queries with date range filtering
229
+ - [ ] First-run setup wizard
167
230
 
168
231
  ## MCP Tools
169
232
 
170
- ### Query Tools
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
171
251
  | Tool | Description |
172
252
  |------|-------------|
173
- | `query_character` | Get character with relationships and content |
174
- | `query_location` | Get location with hierarchy and connected entities |
175
- | `search_vault` | Hybrid search across all content with filters |
253
+ | `search_vault` | Hybrid search across all content with type/status filters |
176
254
 
177
255
  ### Asset Management
178
256
  | Tool | Description |
@@ -204,10 +282,12 @@ Make Hivemind domain-agnostic with pluggable templates:
204
282
 
205
283
  ## Documentation
206
284
 
207
- - [Setup Guide](docs/SETUP_GUIDE.md)
208
- - [ComfyUI Integration](docs/COMFYUI_INTEGRATION.md)
209
- - [Obsidian Plugin Workflow](docs/OBSIDIAN_PLUGIN_WORKFLOW.md)
210
- - [Vault Templates](sample-vault/Templates/README.md)
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
211
291
 
212
292
  ## License
213
293
 
@@ -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;AAEjD,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;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;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"}
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"}
@@ -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
- // Character Character
65
- if (sourceType === 'character' && targetType === 'character') {
66
- return 'knows';
69
+ // If either type is undefined, use default
70
+ if (!sourceType || !targetType) {
71
+ return 'related';
67
72
  }
68
- // Character Location
69
- if (sourceType === 'character' && targetType === 'location') {
70
- return 'located_in';
71
- }
72
- // Location Character
73
- if (sourceType === 'location' && targetType === 'character') {
74
- return 'has_inhabitant';
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
- // Location → Location
77
- if (sourceType === 'location' && targetType === 'location') {
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
- const bidirectionalTypes = ['knows', 'connected_to', 'related'];
88
- return bidirectionalTypes.includes(relType);
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
- const reverseMap = {
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 reverseMap[relType] || 'related';
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":"AAGA,MAAM,OAAO,YAAY;IACf,EAAE,CAAmB;IAE7B,YAAY,EAAoB;QAC9B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAkB;QAC3B,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;QAExE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,+BAA+B;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,kDAAkD;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEjC,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAe,EAAE,QAAqB;QAC/D,uCAAuC;QACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,uBAAuB;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE3D,IAAI,UAAU,EAAE,CAAC;gBACf,8CAA8C;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAEzD,sBAAsB;gBACtB,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBAE5D,uDAAuD;gBACvD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBACzD,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAkB,CAAC;QAC5C,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,aAAsB,EAAE,CAAC;gBACrD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACxD,IAAI,CAAC,EAAE,CAAC,kBAAkB,CACxB,IAAI,CAAC,EAAE,EACP,QAAQ,EACR,GAAG,CAAC,IAAI,IAAI,SAAS,EACrB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAiB,EAAE,MAAiB;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAE3C,wBAAwB;QACxB,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC5D,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC5D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,sBAAsB;QACtB,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC3D,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,UAAU;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAe;QACrC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,OAAe;QAC5C,MAAM,UAAU,GAA2B;YACzC,OAAO,EAAE,OAAO;YAChB,cAAc,EAAE,cAAc;YAC9B,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,gBAAgB;YAC9B,gBAAgB,EAAE,YAAY;SAC/B,CAAC;QAEF,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAAgB,EAAE,KAAkB;QAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAEjD,qBAAqB;QACrB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAChD,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAEtB,oBAAoB;QACpB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,EAAE,GAAG,CAAC,CAAC,WAAkB,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,OAAO,KAAK,KAAK,UAAU,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAEtB,kBAAkB;QAClB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/D,OAAO,QAAQ,KAAK,UAAU,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,IAAY;QACxC,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAE/D,+BAA+B;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjC,6CAA6C;QAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;QAErD,uBAAuB;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEhB,wCAAwC;gBACxC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC7B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAe,EAAE,QAAqB;QAC/C,cAAc;QACd,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEzB,sCAAsC;QACtC,oEAAoE;QACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/graph/builder.ts"],"names":[],"mappings":"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"}
@@ -84,15 +84,17 @@ export declare function parseListToolName(toolName: string): string | null;
84
84
  * Format an entity with its relationships for response.
85
85
  *
86
86
  * Generic formatter that works with any entity type.
87
+ * Groups relationships by relationship type (e.g., "Knows", "Member Of").
87
88
  *
88
89
  * @param entityType - Entity type configuration
89
- * @param result - Query result with node and relatedNodes
90
+ * @param result - Query result with node, relationships, and relatedNodes
90
91
  * @param includeContent - Whether to include content body
91
92
  * @param contentLimit - Maximum content length
92
93
  * @returns Formatted markdown response
93
94
  */
94
95
  export declare function formatEntityWithRelationships(entityType: EntityTypeConfig, result: {
95
96
  node: any;
97
+ relationships?: any[];
96
98
  relatedNodes: any[];
97
99
  }, includeContent?: boolean, contentLimit?: number): string;
98
100
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;iBAK/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,GAAG,cAAc,CA8B9E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,cAAc,CAsC7E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAS7F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,GAAG,EAAE,CAAA;CAAE,EAC1C,cAAc,UAAO,EACrB,YAAY,SAAM,GACjB,MAAM,CAkER;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,GAAG,EAAE,EACZ,cAAc,UAAQ,EACtB,YAAY,SAAM,GACjB,MAAM,CAyBR"}
1
+ {"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;iBAK/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,GAAG,cAAc,CA8B9E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,cAAc,CAsC7E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAS7F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,YAAY,EAAE,GAAG,EAAE,CAAA;CAAE,EACjE,cAAc,UAAO,EACrB,YAAY,SAAM,GACjB,MAAM,CAyGR;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,GAAG,EAAE,EACZ,cAAc,UAAQ,EACtB,YAAY,SAAM,GACjB,MAAM,CAyBR"}
@@ -142,15 +142,16 @@ export function parseListToolName(toolName) {
142
142
  * Format an entity with its relationships for response.
143
143
  *
144
144
  * Generic formatter that works with any entity type.
145
+ * Groups relationships by relationship type (e.g., "Knows", "Member Of").
145
146
  *
146
147
  * @param entityType - Entity type configuration
147
- * @param result - Query result with node and relatedNodes
148
+ * @param result - Query result with node, relationships, and relatedNodes
148
149
  * @param includeContent - Whether to include content body
149
150
  * @param contentLimit - Maximum content length
150
151
  * @returns Formatted markdown response
151
152
  */
152
153
  export function formatEntityWithRelationships(entityType, result, includeContent = true, contentLimit = 500) {
153
- const { node, relatedNodes } = result;
154
+ const { node, relationships, relatedNodes } = result;
154
155
  const props = node.properties;
155
156
  const displayName = entityType.displayName;
156
157
  let response = `# ${node.title}\n\n`;
@@ -190,10 +191,45 @@ export function formatEntityWithRelationships(entityType, result, includeContent
190
191
  response += `${content}\n\n`;
191
192
  }
192
193
  }
193
- // Relationships (from graph)
194
- if (relatedNodes.length > 0) {
194
+ // Relationships (from graph) - group by relationship type
195
+ if (relationships && relationships.length > 0 && relatedNodes.length > 0) {
196
+ response += `## Relationships\n`;
197
+ // Build a map from node ID to node for quick lookup
198
+ const nodeMap = new Map();
199
+ nodeMap.set(node.id, node);
200
+ for (const related of relatedNodes) {
201
+ nodeMap.set(related.id, related);
202
+ }
203
+ // Group relationships by relationship type
204
+ const byRelType = {};
205
+ for (const rel of relationships) {
206
+ const relType = rel.relationType || 'related';
207
+ // Format relationship type for display (snake_case to Title Case)
208
+ const typeLabel = relType
209
+ .split('_')
210
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
211
+ .join(' ');
212
+ if (!byRelType[typeLabel]) {
213
+ byRelType[typeLabel] = [];
214
+ }
215
+ // Determine which node is the "other" node in the relationship
216
+ const otherId = rel.sourceId === node.id ? rel.targetId : rel.sourceId;
217
+ const otherNode = nodeMap.get(otherId);
218
+ if (otherNode) {
219
+ byRelType[typeLabel].push(otherNode.title);
220
+ }
221
+ }
222
+ // Output grouped relationships
223
+ for (const [typeLabel, titles] of Object.entries(byRelType)) {
224
+ // Deduplicate titles
225
+ const uniqueTitles = [...new Set(titles)];
226
+ response += `**${typeLabel}**: ${uniqueTitles.join(', ')}\n`;
227
+ }
228
+ response += `\n`;
229
+ }
230
+ else if (relatedNodes.length > 0) {
231
+ // Fallback: group by entity type if no relationship data available
195
232
  response += `## Relationships\n`;
196
- // Group by type
197
233
  const byType = {};
198
234
  for (const related of relatedNodes) {
199
235
  const type = related.type || 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/mcp/tool-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/mcp/tool-generator.ts"],"names":[],"mappings":"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"}
@@ -21,11 +21,19 @@ export declare class SearchEngine {
21
21
  type?: string[];
22
22
  status?: string[];
23
23
  };
24
+ /** Filter relationships by type (only applies when includeRelationships is true) */
25
+ relationshipType?: string;
24
26
  }): Promise<QueryResult>;
25
27
  /**
26
28
  * Get a node with its relationships
29
+ *
30
+ * @param id - Node ID to retrieve
31
+ * @param options - Optional filtering options
32
+ * @param options.relationshipType - Filter relationships by type
27
33
  */
28
- getNodeWithRelationships(id: string): Promise<{
34
+ getNodeWithRelationships(id: string, options?: {
35
+ relationshipType?: string;
36
+ }): Promise<{
29
37
  node: any;
30
38
  relationships: any[];
31
39
  relatedNodes: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;QACnC,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAmB;gBAEjB,EAAE,EAAE,gBAAgB;IAIhC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;KACH,GAAG,OAAO,CAAC,WAAW,CAAC;IAgDxB;;OAEG;IACG,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAClD,IAAI,EAAE,GAAG,CAAC;QACV,aAAa,EAAE,GAAG,EAAE,CAAC;QACrB,YAAY,EAAE,GAAG,EAAE,CAAC;KACrB,GAAG,IAAI,CAAC;IAwBT;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIlD;;OAEG;IACH,QAAQ;;;;;;;CAGT"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;QACnC,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAmB;gBAEjB,EAAE,EAAE,gBAAgB;IAIhC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;QACF,oFAAoF;QACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC,WAAW,CAAC;IAoDxB;;;;;;OAMG;IACG,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC;QACV,IAAI,EAAE,GAAG,CAAC;QACV,aAAa,EAAE,GAAG,EAAE,CAAC;QACrB,YAAY,EAAE,GAAG,EAAE,CAAC;KACrB,GAAG,IAAI,CAAC;IA6BT;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIlD;;OAEG;IACH,QAAQ;;;;;;;CAGT"}
@@ -33,7 +33,11 @@ export class SearchEngine {
33
33
  let relationships = [];
34
34
  if (options?.includeRelationships) {
35
35
  for (const node of nodes) {
36
- const rels = this.db.getRelationships(node.id);
36
+ let rels = this.db.getRelationships(node.id);
37
+ // Filter by relationship type if specified
38
+ if (options.relationshipType) {
39
+ rels = rels.filter((rel) => rel.relationType === options.relationshipType);
40
+ }
37
41
  relationships.push(...rels);
38
42
  }
39
43
  }
@@ -49,13 +53,21 @@ export class SearchEngine {
49
53
  }
50
54
  /**
51
55
  * Get a node with its relationships
56
+ *
57
+ * @param id - Node ID to retrieve
58
+ * @param options - Optional filtering options
59
+ * @param options.relationshipType - Filter relationships by type
52
60
  */
53
- async getNodeWithRelationships(id) {
61
+ async getNodeWithRelationships(id, options) {
54
62
  const node = this.db.getNode(id);
55
63
  if (!node)
56
64
  return null;
57
- const relationships = this.db.getRelationships(id);
58
- // Get related nodes
65
+ let relationships = this.db.getRelationships(id);
66
+ // Filter by relationship type if specified
67
+ if (options?.relationshipType) {
68
+ relationships = relationships.filter((rel) => rel.relationType === options.relationshipType);
69
+ }
70
+ // Get related nodes (only from filtered relationships)
59
71
  const relatedIds = new Set();
60
72
  for (const rel of relationships) {
61
73
  if (rel.sourceId !== id)
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Built-in people management template.
3
+ *
4
+ * Defines entity types for team and people management:
5
+ * - person: Team members, contacts, and individuals
6
+ * - goal: Objectives, OKRs, and targets
7
+ * - team: Groups, departments, and organizational units
8
+ * - one_on_one: 1:1 meeting notes and follow-ups
9
+ */
10
+ import type { TemplateDefinition } from '../types.js';
11
+ /**
12
+ * People management template definition.
13
+ *
14
+ * Designed for managers, team leads, and anyone who needs to track
15
+ * people, goals, teams, and 1:1 conversations.
16
+ */
17
+ export declare const peopleManagementTemplate: TemplateDefinition;
18
+ //# sourceMappingURL=people-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people-management.d.ts","sourceRoot":"","sources":["../../../src/templates/builtin/people-management.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAmgBtC,CAAC"}