@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
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,KAAK,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,OAAO,CAAC,SAAS,CAA4C;IAE7D,0CAA0C;IAC1C,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAyBpE;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAUlC;;;;OAIG;IACH,SAAS,IAAI,qBAAqB,GAAG,IAAI;IAOzC;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAI1D;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;OAIG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAQzD;;;;;OAKG;IACH,cAAc,IAAI,gBAAgB,EAAE;IAQpC;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,KAAK,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,OAAO,CAAC,SAAS,CAA4C;IAE7D,0CAA0C;IAC1C,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAuCpE;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAUlC;;;;OAIG;IACH,SAAS,IAAI,qBAAqB,GAAG,IAAI;IAOzC;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAI1D;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;OAIG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAQzD;;;;;OAKG;IACH,cAAc,IAAI,gBAAgB,EAAE;IAQpC;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAQnE;;;;;OAKG;IACH,oBAAoB,IAAI,sBAAsB,EAAE;IAQhD;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAgBvF;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -36,10 +36,21 @@ export class TemplateRegistry {
36
36
  }
37
37
  entityTypeMap.set(entityType.name, entityType);
38
38
  }
39
+ // Create relationship type lookup map for O(1) access
40
+ const relationshipTypeMap = new Map();
41
+ if (template.relationshipTypes) {
42
+ for (const relType of template.relationshipTypes) {
43
+ if (relationshipTypeMap.has(relType.id)) {
44
+ throw new Error(`Duplicate relationship type "${relType.id}" in template "${template.id}"`);
45
+ }
46
+ relationshipTypeMap.set(relType.id, relType);
47
+ }
48
+ }
39
49
  const entry = {
40
50
  ...template,
41
51
  source,
42
52
  entityTypeMap,
53
+ relationshipTypeMap,
43
54
  };
44
55
  this.templates.set(template.id, entry);
45
56
  }
@@ -122,6 +133,59 @@ export class TemplateRegistry {
122
133
  }
123
134
  return active.entityTypes;
124
135
  }
136
+ /**
137
+ * Gets a relationship type config from the active template.
138
+ *
139
+ * O(1) lookup using the relationship type map.
140
+ *
141
+ * @param id - Relationship type ID to retrieve
142
+ * @returns Relationship type config if found, undefined otherwise
143
+ * @throws {Error} If no template is active
144
+ */
145
+ getRelationshipType(id) {
146
+ const active = this.getActive();
147
+ if (!active) {
148
+ throw new Error('Cannot get relationship type: no active template');
149
+ }
150
+ return active.relationshipTypeMap.get(id);
151
+ }
152
+ /**
153
+ * Gets all relationship type configs from the active template.
154
+ *
155
+ * @returns Array of relationship type configs
156
+ * @throws {Error} If no template is active
157
+ */
158
+ getRelationshipTypes() {
159
+ const active = this.getActive();
160
+ if (!active) {
161
+ throw new Error('Cannot get relationship types: no active template');
162
+ }
163
+ return active.relationshipTypes || [];
164
+ }
165
+ /**
166
+ * Gets valid relationship types for a source-target entity type pair.
167
+ *
168
+ * Returns all relationship types where:
169
+ * - sourceTypes includes the source entity type (or is 'any')
170
+ * - targetTypes includes the target entity type (or is 'any')
171
+ *
172
+ * @param sourceType - Source entity type name
173
+ * @param targetType - Target entity type name
174
+ * @returns Array of valid relationship type configs
175
+ * @throws {Error} If no template is active
176
+ */
177
+ getValidRelationships(sourceType, targetType) {
178
+ const active = this.getActive();
179
+ if (!active) {
180
+ throw new Error('Cannot get valid relationships: no active template');
181
+ }
182
+ const relationshipTypes = active.relationshipTypes || [];
183
+ return relationshipTypes.filter((rel) => {
184
+ const sourceValid = rel.sourceTypes === 'any' || rel.sourceTypes.includes(sourceType);
185
+ const targetValid = rel.targetTypes === 'any' || rel.targetTypes.includes(targetType);
186
+ return sourceValid && targetValid;
187
+ });
188
+ }
125
189
  /**
126
190
  * Clears all registered templates and resets active template.
127
191
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,30 @@ export interface FieldConfig {
39
39
  /** Human-readable description for documentation and MCP tool descriptions */
40
40
  description?: string;
41
41
  }
42
+ /**
43
+ * Configuration for a relationship type between entity types.
44
+ *
45
+ * Defines valid relationships (e.g., "knows", "located_in") with
46
+ * source/target constraints, bidirectionality rules, and optional properties.
47
+ */
48
+ export interface RelationshipTypeConfig {
49
+ /** Relationship identifier (snake_case, e.g., "knows", "allied_with") */
50
+ id: string;
51
+ /** Human-readable name (e.g., "Knows", "Allied With") */
52
+ displayName: string;
53
+ /** Description of this relationship type */
54
+ description?: string;
55
+ /** Valid source entity types, or 'any' for all */
56
+ sourceTypes: string[] | 'any';
57
+ /** Valid target entity types, or 'any' for all */
58
+ targetTypes: string[] | 'any';
59
+ /** Whether to auto-create reverse relationship */
60
+ bidirectional: boolean;
61
+ /** ID of reverse relationship type (required if bidirectional) */
62
+ reverseId?: string;
63
+ /** Optional properties stored on relationship edges */
64
+ properties?: FieldConfig[];
65
+ }
42
66
  /**
43
67
  * Configuration for a custom entity type.
44
68
  *
@@ -76,6 +100,8 @@ export interface TemplateDefinition {
76
100
  description?: string;
77
101
  /** Entity types included in this template */
78
102
  entityTypes: EntityTypeConfig[];
103
+ /** Custom relationship type definitions */
104
+ relationshipTypes?: RelationshipTypeConfig[];
79
105
  }
80
106
  /**
81
107
  * Structure of the template configuration in config.json.
@@ -98,6 +124,8 @@ export interface TemplateRegistryEntry extends TemplateDefinition {
98
124
  source: 'builtin' | 'config';
99
125
  /** Fast lookup map from entity type name to config */
100
126
  entityTypeMap: Map<string, EntityTypeConfig>;
127
+ /** Fast lookup map from relationship type ID to config */
128
+ relationshipTypeMap: Map<string, RelationshipTypeConfig>;
101
129
  }
102
130
  /**
103
131
  * Mapping from folder name/pattern to entity type.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/templates/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,CAAC;AAEb;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAC;IAEhB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,MAAM,EAAE,WAAW,EAAE,CAAC;IAEtB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IAEb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEjC,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,wDAAwD;IACxD,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE7B,sDAAsD;IACtD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/templates/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,CAAC;AAEb;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAC;IAEhB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,EAAE,EAAE,MAAM,CAAC;IAEX,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IAEpB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kDAAkD;IAClD,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE9B,kDAAkD;IAClD,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE9B,kDAAkD;IAClD,aAAa,EAAE,OAAO,CAAC;IAEvB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,MAAM,EAAE,WAAW,EAAE,CAAC;IAEtB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IAEb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAEhC,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEjC,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,wDAAwD;IACxD,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE7B,sDAAsD;IACtD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE7C,0DAA0D;IAC1D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -80,6 +80,48 @@ export declare const EntityTypeConfigSchema: z.ZodObject<{
80
80
  }, z.core.$strip>>;
81
81
  icon: z.ZodOptional<z.ZodString>;
82
82
  }, z.core.$strip>;
83
+ /**
84
+ * Zod schema for relationship type configuration validation.
85
+ *
86
+ * Validates:
87
+ * - Relationship IDs are snake_case
88
+ * - Source/target types are valid
89
+ * - Bidirectional relationships specify reverseId
90
+ */
91
+ export declare const RelationshipTypeConfigSchema: z.ZodObject<{
92
+ id: z.ZodString;
93
+ displayName: z.ZodString;
94
+ description: z.ZodOptional<z.ZodString>;
95
+ sourceTypes: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<"any">]>;
96
+ targetTypes: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<"any">]>;
97
+ bidirectional: z.ZodDefault<z.ZodBoolean>;
98
+ reverseId: z.ZodOptional<z.ZodString>;
99
+ properties: z.ZodOptional<z.ZodArray<z.ZodObject<{
100
+ name: z.ZodString;
101
+ type: z.ZodEnum<{
102
+ string: "string";
103
+ number: "number";
104
+ boolean: "boolean";
105
+ enum: "enum";
106
+ array: "array";
107
+ date: "date";
108
+ record: "record";
109
+ }>;
110
+ required: z.ZodOptional<z.ZodBoolean>;
111
+ default: z.ZodOptional<z.ZodUnknown>;
112
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
113
+ arrayItemType: z.ZodOptional<z.ZodEnum<{
114
+ string: "string";
115
+ number: "number";
116
+ boolean: "boolean";
117
+ enum: "enum";
118
+ array: "array";
119
+ date: "date";
120
+ record: "record";
121
+ }>>;
122
+ description: z.ZodOptional<z.ZodString>;
123
+ }, z.core.$strip>>>;
124
+ }, z.core.$strip>;
83
125
  /**
84
126
  * Zod schema for template definition validation.
85
127
  *
@@ -125,6 +167,40 @@ export declare const TemplateDefinitionSchema: z.ZodObject<{
125
167
  }, z.core.$strip>>;
126
168
  icon: z.ZodOptional<z.ZodString>;
127
169
  }, z.core.$strip>>;
170
+ relationshipTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
171
+ id: z.ZodString;
172
+ displayName: z.ZodString;
173
+ description: z.ZodOptional<z.ZodString>;
174
+ sourceTypes: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<"any">]>;
175
+ targetTypes: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<"any">]>;
176
+ bidirectional: z.ZodDefault<z.ZodBoolean>;
177
+ reverseId: z.ZodOptional<z.ZodString>;
178
+ properties: z.ZodOptional<z.ZodArray<z.ZodObject<{
179
+ name: z.ZodString;
180
+ type: z.ZodEnum<{
181
+ string: "string";
182
+ number: "number";
183
+ boolean: "boolean";
184
+ enum: "enum";
185
+ array: "array";
186
+ date: "date";
187
+ record: "record";
188
+ }>;
189
+ required: z.ZodOptional<z.ZodBoolean>;
190
+ default: z.ZodOptional<z.ZodUnknown>;
191
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
192
+ arrayItemType: z.ZodOptional<z.ZodEnum<{
193
+ string: "string";
194
+ number: "number";
195
+ boolean: "boolean";
196
+ enum: "enum";
197
+ array: "array";
198
+ date: "date";
199
+ record: "record";
200
+ }>>;
201
+ description: z.ZodOptional<z.ZodString>;
202
+ }, z.core.$strip>>>;
203
+ }, z.core.$strip>>>;
128
204
  }, z.core.$strip>;
129
205
  /**
130
206
  * Zod schema for full template configuration validation.
@@ -171,6 +247,40 @@ export declare const TemplateConfigSchema: z.ZodObject<{
171
247
  }, z.core.$strip>>;
172
248
  icon: z.ZodOptional<z.ZodString>;
173
249
  }, z.core.$strip>>;
250
+ relationshipTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
251
+ id: z.ZodString;
252
+ displayName: z.ZodString;
253
+ description: z.ZodOptional<z.ZodString>;
254
+ sourceTypes: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<"any">]>;
255
+ targetTypes: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<"any">]>;
256
+ bidirectional: z.ZodDefault<z.ZodBoolean>;
257
+ reverseId: z.ZodOptional<z.ZodString>;
258
+ properties: z.ZodOptional<z.ZodArray<z.ZodObject<{
259
+ name: z.ZodString;
260
+ type: z.ZodEnum<{
261
+ string: "string";
262
+ number: "number";
263
+ boolean: "boolean";
264
+ enum: "enum";
265
+ array: "array";
266
+ date: "date";
267
+ record: "record";
268
+ }>;
269
+ required: z.ZodOptional<z.ZodBoolean>;
270
+ default: z.ZodOptional<z.ZodUnknown>;
271
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
272
+ arrayItemType: z.ZodOptional<z.ZodEnum<{
273
+ string: "string";
274
+ number: "number";
275
+ boolean: "boolean";
276
+ enum: "enum";
277
+ array: "array";
278
+ date: "date";
279
+ record: "record";
280
+ }>>;
281
+ description: z.ZodOptional<z.ZodString>;
282
+ }, z.core.$strip>>>;
283
+ }, z.core.$strip>>>;
174
284
  }, z.core.$strip>>>;
175
285
  activeTemplate: z.ZodString;
176
286
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/templates/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;iBAgCM,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAaK,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBK,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGK,CAAC;AAEvC;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;aAG9B,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBADpC,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAMtC;;;;OAIG;IACH,aAAa,IAAI,MAAM;CAUxB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAQtE"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/templates/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAKV,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;iBAgCM,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAaK,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BM,CAAC;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBK,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGK,CAAC;AAEvC;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;aAG9B,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBADpC,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAMtC;;;;OAIG;IACH,aAAa,IAAI,MAAM;CAUxB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAQtE"}
@@ -19,7 +19,7 @@ export const FieldConfigSchema = z
19
19
  name: z
20
20
  .string()
21
21
  .min(1, 'Field name cannot be empty')
22
- .regex(/^[a-z][a-zA-Z0-9]*$/, 'Field name must be camelCase alphanumeric (e.g., "age", "statusCode")'),
22
+ .regex(/^[a-z][a-zA-Z0-9_]*$/, 'Field name must be camelCase or snake_case alphanumeric (e.g., "age", "statusCode", "event_type")'),
23
23
  type: z.enum(['string', 'number', 'boolean', 'enum', 'array', 'date', 'record'], {
24
24
  message: 'Field type must be one of: string, number, boolean, enum, array, date, record',
25
25
  }),
@@ -53,13 +53,45 @@ export const EntityTypeConfigSchema = z.object({
53
53
  name: z
54
54
  .string()
55
55
  .min(1, 'Entity type name cannot be empty')
56
- .regex(/^[a-z][a-z0-9]*$/, 'Entity type name must be lowercase alphanumeric (e.g., "character", "location")'),
56
+ .regex(/^[a-z][a-z0-9_]*$/, 'Entity type name must be lowercase alphanumeric with underscores (e.g., "character", "one_on_one")'),
57
57
  displayName: z.string().min(1, 'Display name cannot be empty'),
58
58
  pluralName: z.string().min(1, 'Plural name cannot be empty'),
59
59
  description: z.string().optional(),
60
60
  fields: z.array(FieldConfigSchema),
61
61
  icon: z.string().optional(),
62
62
  });
63
+ /**
64
+ * Zod schema for relationship type configuration validation.
65
+ *
66
+ * Validates:
67
+ * - Relationship IDs are snake_case
68
+ * - Source/target types are valid
69
+ * - Bidirectional relationships specify reverseId
70
+ */
71
+ export const RelationshipTypeConfigSchema = z
72
+ .object({
73
+ id: z
74
+ .string()
75
+ .min(1, 'Relationship ID cannot be empty')
76
+ .regex(/^[a-z][a-z0-9_]*$/, 'Relationship ID must be snake_case (e.g., "knows", "allied_with")'),
77
+ displayName: z.string().min(1, 'Display name cannot be empty'),
78
+ description: z.string().optional(),
79
+ sourceTypes: z.union([
80
+ z.array(z.string()).min(1, 'sourceTypes must have at least one type'),
81
+ z.literal('any'),
82
+ ]),
83
+ targetTypes: z.union([
84
+ z.array(z.string()).min(1, 'targetTypes must have at least one type'),
85
+ z.literal('any'),
86
+ ]),
87
+ bidirectional: z.boolean().default(false),
88
+ reverseId: z.string().optional(),
89
+ properties: z.array(FieldConfigSchema).optional(),
90
+ })
91
+ .refine((rel) => !rel.bidirectional || rel.reverseId, {
92
+ message: 'Bidirectional relationships must specify reverseId',
93
+ path: ['reverseId'],
94
+ });
63
95
  /**
64
96
  * Zod schema for template definition validation.
65
97
  *
@@ -81,6 +113,7 @@ export const TemplateDefinitionSchema = z.object({
81
113
  entityTypes: z
82
114
  .array(EntityTypeConfigSchema)
83
115
  .min(1, 'Template must define at least one entity type'),
116
+ relationshipTypes: z.array(RelationshipTypeConfigSchema).optional(),
84
117
  });
85
118
  /**
86
119
  * Zod schema for full template configuration validation.
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/templates/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/templates/validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hiveforge/hivemind-mcp",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "MCP server for Obsidian worldbuilding vaults - provides AI tools with consistent canonical context",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",