@hiveforge/hivemind-mcp 3.4.0 → 3.5.1

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 (78) hide show
  1. package/README.md +89 -309
  2. package/dist/cli/fix/fixer.js +1 -1
  3. package/dist/cli/fix/fixer.js.map +1 -1
  4. package/dist/cli/fix/writer.d.ts.map +1 -1
  5. package/dist/cli/fix/writer.js +75 -3
  6. package/dist/cli/fix/writer.js.map +1 -1
  7. package/dist/cli/init/output.d.ts.map +1 -1
  8. package/dist/cli/init/output.js +6 -5
  9. package/dist/cli/init/output.js.map +1 -1
  10. package/dist/cli/validate/formatter.d.ts.map +1 -1
  11. package/dist/cli/validate/formatter.js +16 -0
  12. package/dist/cli/validate/formatter.js.map +1 -1
  13. package/dist/cli/validate/types.d.ts +3 -0
  14. package/dist/cli/validate/types.d.ts.map +1 -1
  15. package/dist/cli/validate/validator.d.ts.map +1 -1
  16. package/dist/cli/validate/validator.js +32 -1
  17. package/dist/cli/validate/validator.js.map +1 -1
  18. package/dist/cli.js +2 -1
  19. package/dist/cli.js.map +1 -1
  20. package/dist/graph/database.d.ts +152 -0
  21. package/dist/graph/database.d.ts.map +1 -1
  22. package/dist/graph/database.js +418 -30
  23. package/dist/graph/database.js.map +1 -1
  24. package/dist/mcp/graph-tools.d.ts +78 -0
  25. package/dist/mcp/graph-tools.d.ts.map +1 -0
  26. package/dist/mcp/graph-tools.js +284 -0
  27. package/dist/mcp/graph-tools.js.map +1 -0
  28. package/dist/mcp/timeline-tools.d.ts +116 -0
  29. package/dist/mcp/timeline-tools.d.ts.map +1 -0
  30. package/dist/mcp/timeline-tools.js +317 -0
  31. package/dist/mcp/timeline-tools.js.map +1 -0
  32. package/dist/search/engine.d.ts +186 -0
  33. package/dist/search/engine.d.ts.map +1 -1
  34. package/dist/search/engine.js +263 -0
  35. package/dist/search/engine.js.map +1 -1
  36. package/dist/server.d.ts +52 -0
  37. package/dist/server.d.ts.map +1 -1
  38. package/dist/server.js +472 -0
  39. package/dist/server.js.map +1 -1
  40. package/dist/templates/builtin/worldbuilding.d.ts.map +1 -1
  41. package/dist/templates/builtin/worldbuilding.js +401 -1
  42. package/dist/templates/builtin/worldbuilding.js.map +1 -1
  43. package/dist/templates/community/dnd-35e.d.ts +18 -0
  44. package/dist/templates/community/dnd-35e.d.ts.map +1 -0
  45. package/dist/templates/community/dnd-35e.js +859 -0
  46. package/dist/templates/community/dnd-35e.js.map +1 -0
  47. package/dist/templates/community/dnd-5e.d.ts +16 -0
  48. package/dist/templates/community/dnd-5e.d.ts.map +1 -0
  49. package/dist/templates/community/dnd-5e.js +509 -0
  50. package/dist/templates/community/dnd-5e.js.map +1 -0
  51. package/dist/templates/community/index.d.ts +9 -0
  52. package/dist/templates/community/index.d.ts.map +1 -1
  53. package/dist/templates/community/index.js +16 -0
  54. package/dist/templates/community/index.js.map +1 -1
  55. package/dist/templates/community/pathfinder-2e.d.ts +16 -0
  56. package/dist/templates/community/pathfinder-2e.d.ts.map +1 -0
  57. package/dist/templates/community/pathfinder-2e.js +711 -0
  58. package/dist/templates/community/pathfinder-2e.js.map +1 -0
  59. package/dist/templates/community/ttrpg-base.d.ts +17 -0
  60. package/dist/templates/community/ttrpg-base.d.ts.map +1 -0
  61. package/dist/templates/community/ttrpg-base.js +889 -0
  62. package/dist/templates/community/ttrpg-base.js.map +1 -0
  63. package/dist/templates/loader.d.ts +2 -0
  64. package/dist/templates/loader.d.ts.map +1 -1
  65. package/dist/templates/loader.js +45 -1
  66. package/dist/templates/loader.js.map +1 -1
  67. package/dist/templates/registry.d.ts +49 -2
  68. package/dist/templates/registry.d.ts.map +1 -1
  69. package/dist/templates/registry.js +276 -6
  70. package/dist/templates/registry.js.map +1 -1
  71. package/dist/templates/types.d.ts +28 -1
  72. package/dist/templates/types.d.ts.map +1 -1
  73. package/dist/templates/validator.d.ts +80 -1
  74. package/dist/templates/validator.d.ts.map +1 -1
  75. package/dist/templates/validator.js +22 -5
  76. package/dist/templates/validator.js.map +1 -1
  77. package/dist/types/index.d.ts +18 -18
  78. package/package.json +1 -1
@@ -0,0 +1,711 @@
1
+ /**
2
+ * Pathfinder 2nd Edition template.
3
+ *
4
+ * Extends the TTRPG base template with PF2e-specific mechanics:
5
+ * - Three-action economy
6
+ * - Four degrees of success (critical success, success, failure, critical failure)
7
+ * - Proficiency ranks (untrained, trained, expert, master, legendary)
8
+ * - Focus points and focus spells
9
+ * - Ancestries, heritages, and versatile heritages
10
+ * - Character level 1-20 with dedication feats for multiclassing
11
+ *
12
+ * Compatible with official Pathfinder 2e content and homebrew.
13
+ */
14
+ export const pathfinder2eTemplate = {
15
+ id: 'pathfinder-2e',
16
+ name: 'Pathfinder 2nd Edition',
17
+ version: '1.0.0',
18
+ description: 'Pathfinder 2nd Edition template with support for the three-action economy, proficiency ranks, ancestries, and PF2e-specific mechanics.',
19
+ extendsTemplate: 'ttrpg-base',
20
+ category: 'creative',
21
+ tags: ['pathfinder', 'pf2e', 'paizo', 'ttrpg', 'd20', 'three-action'],
22
+ author: {
23
+ name: 'HiveForge',
24
+ url: 'https://github.com/hiveforge-sh',
25
+ },
26
+ license: 'MIT',
27
+ entityTypes: [
28
+ // Extend character with PF2e-specific fields
29
+ {
30
+ name: 'character',
31
+ displayName: 'Character',
32
+ pluralName: 'Characters',
33
+ fields: [],
34
+ additionalFields: [
35
+ // Ancestry & Heritage (PF2e uses ancestry instead of race)
36
+ {
37
+ name: 'ancestry',
38
+ type: 'string',
39
+ description: 'Character ancestry (Human, Elf, Dwarf, etc.)',
40
+ },
41
+ {
42
+ name: 'heritage',
43
+ type: 'string',
44
+ description: 'Heritage within ancestry',
45
+ },
46
+ {
47
+ name: 'versatile_heritage',
48
+ type: 'string',
49
+ description: 'Versatile heritage (Dhampir, Tiefling, etc.)',
50
+ },
51
+ // PF2e proficiency ranks
52
+ {
53
+ name: 'perception',
54
+ type: 'record',
55
+ description: 'Perception proficiency rank and modifier',
56
+ },
57
+ {
58
+ name: 'fortitude',
59
+ type: 'record',
60
+ description: 'Fortitude save proficiency and modifier',
61
+ },
62
+ {
63
+ name: 'reflex',
64
+ type: 'record',
65
+ description: 'Reflex save proficiency and modifier',
66
+ },
67
+ {
68
+ name: 'will',
69
+ type: 'record',
70
+ description: 'Will save proficiency and modifier',
71
+ },
72
+ // PF2e action economy
73
+ {
74
+ name: 'hero_points',
75
+ type: 'number',
76
+ description: 'Current hero points (max 3)',
77
+ },
78
+ // Focus spells
79
+ {
80
+ name: 'focus_points',
81
+ type: 'number',
82
+ description: 'Current focus points',
83
+ },
84
+ {
85
+ name: 'focus_points_max',
86
+ type: 'number',
87
+ description: 'Maximum focus points (usually 1-3)',
88
+ },
89
+ {
90
+ name: 'focus_spells',
91
+ type: 'array',
92
+ arrayItemType: 'string',
93
+ description: 'Known focus spells',
94
+ },
95
+ // PF2e-specific class features
96
+ {
97
+ name: 'class_dc',
98
+ type: 'number',
99
+ description: 'Class DC for abilities',
100
+ },
101
+ {
102
+ name: 'key_ability',
103
+ type: 'string',
104
+ description: 'Key ability score for class',
105
+ },
106
+ // Archetype/multiclass dedications
107
+ {
108
+ name: 'archetypes',
109
+ type: 'array',
110
+ arrayItemType: 'string',
111
+ description: 'Archetype dedications taken',
112
+ },
113
+ // Feats by type
114
+ {
115
+ name: 'ancestry_feats',
116
+ type: 'array',
117
+ arrayItemType: 'string',
118
+ description: 'Ancestry feats',
119
+ },
120
+ {
121
+ name: 'class_feats',
122
+ type: 'array',
123
+ arrayItemType: 'string',
124
+ description: 'Class feats',
125
+ },
126
+ {
127
+ name: 'skill_feats',
128
+ type: 'array',
129
+ arrayItemType: 'string',
130
+ description: 'Skill feats',
131
+ },
132
+ {
133
+ name: 'general_feats',
134
+ type: 'array',
135
+ arrayItemType: 'string',
136
+ description: 'General feats',
137
+ },
138
+ {
139
+ name: 'archetype_feats',
140
+ type: 'array',
141
+ arrayItemType: 'string',
142
+ description: 'Archetype feats',
143
+ },
144
+ // PF2e conditions (more detailed than base)
145
+ {
146
+ name: 'dying',
147
+ type: 'number',
148
+ description: 'Dying condition value (0-4)',
149
+ },
150
+ {
151
+ name: 'wounded',
152
+ type: 'number',
153
+ description: 'Wounded condition value',
154
+ },
155
+ {
156
+ name: 'doomed',
157
+ type: 'number',
158
+ description: 'Doomed condition value',
159
+ },
160
+ // Bulk system
161
+ {
162
+ name: 'bulk_carried',
163
+ type: 'number',
164
+ description: 'Current bulk carried',
165
+ },
166
+ {
167
+ name: 'bulk_limit',
168
+ type: 'number',
169
+ description: 'Bulk limit before encumbered',
170
+ },
171
+ // Lore skills (PF2e-specific)
172
+ {
173
+ name: 'lore_skills',
174
+ type: 'array',
175
+ arrayItemType: 'record',
176
+ description: 'Lore skills with proficiency ranks',
177
+ },
178
+ ],
179
+ },
180
+ // Extend spell with PF2e action economy
181
+ {
182
+ name: 'spell',
183
+ displayName: 'Spell',
184
+ pluralName: 'Spells',
185
+ fields: [],
186
+ additionalFields: [
187
+ {
188
+ name: 'actions',
189
+ type: 'enum',
190
+ enumValues: ['1', '2', '3', 'free', 'reaction', '1 minute', '10 minutes', '1 hour', 'special'],
191
+ description: 'Actions required to cast',
192
+ },
193
+ {
194
+ name: 'traditions',
195
+ type: 'array',
196
+ arrayItemType: 'enum',
197
+ description: 'Spell traditions (arcane, divine, occult, primal)',
198
+ },
199
+ {
200
+ name: 'traits',
201
+ type: 'array',
202
+ arrayItemType: 'string',
203
+ description: 'Spell traits',
204
+ },
205
+ {
206
+ name: 'heightened',
207
+ type: 'record',
208
+ description: 'Heightened effects by level',
209
+ },
210
+ {
211
+ name: 'save',
212
+ type: 'string',
213
+ description: 'Basic save or special save effect',
214
+ },
215
+ {
216
+ name: 'area',
217
+ type: 'string',
218
+ description: 'Area of effect',
219
+ },
220
+ {
221
+ name: 'targets',
222
+ type: 'string',
223
+ description: 'Number and type of targets',
224
+ },
225
+ {
226
+ name: 'defense',
227
+ type: 'string',
228
+ description: 'Defense used (AC, save type)',
229
+ },
230
+ {
231
+ name: 'sustained',
232
+ type: 'boolean',
233
+ description: 'Whether spell can be sustained',
234
+ },
235
+ ],
236
+ },
237
+ // Extend creature with PF2e stats
238
+ {
239
+ name: 'creature',
240
+ displayName: 'Creature',
241
+ pluralName: 'Creatures',
242
+ fields: [],
243
+ additionalFields: [
244
+ {
245
+ name: 'level',
246
+ type: 'number',
247
+ description: 'Creature level (-1 to 25+)',
248
+ },
249
+ {
250
+ name: 'traits',
251
+ type: 'array',
252
+ arrayItemType: 'string',
253
+ description: 'Creature traits',
254
+ },
255
+ {
256
+ name: 'perception',
257
+ type: 'number',
258
+ description: 'Perception modifier',
259
+ },
260
+ {
261
+ name: 'fortitude',
262
+ type: 'number',
263
+ description: 'Fortitude save modifier',
264
+ },
265
+ {
266
+ name: 'reflex',
267
+ type: 'number',
268
+ description: 'Reflex save modifier',
269
+ },
270
+ {
271
+ name: 'will',
272
+ type: 'number',
273
+ description: 'Will save modifier',
274
+ },
275
+ {
276
+ name: 'ac',
277
+ type: 'number',
278
+ description: 'Armor Class',
279
+ },
280
+ {
281
+ name: 'hp',
282
+ type: 'number',
283
+ description: 'Hit Points',
284
+ },
285
+ {
286
+ name: 'hardness',
287
+ type: 'number',
288
+ description: 'Hardness (for objects/constructs)',
289
+ },
290
+ {
291
+ name: 'immunities',
292
+ type: 'array',
293
+ arrayItemType: 'string',
294
+ description: 'Immunities',
295
+ },
296
+ {
297
+ name: 'weaknesses',
298
+ type: 'array',
299
+ arrayItemType: 'record',
300
+ description: 'Weaknesses with values',
301
+ },
302
+ {
303
+ name: 'resistances',
304
+ type: 'array',
305
+ arrayItemType: 'record',
306
+ description: 'Resistances with values',
307
+ },
308
+ {
309
+ name: 'speed',
310
+ type: 'record',
311
+ description: 'Speeds by type (land, fly, swim, climb, burrow)',
312
+ },
313
+ {
314
+ name: 'strikes',
315
+ type: 'array',
316
+ arrayItemType: 'record',
317
+ description: 'Strike actions',
318
+ },
319
+ {
320
+ name: 'spellcasting',
321
+ type: 'array',
322
+ arrayItemType: 'record',
323
+ description: 'Spellcasting entries',
324
+ },
325
+ {
326
+ name: 'rituals',
327
+ type: 'array',
328
+ arrayItemType: 'string',
329
+ description: 'Rituals known',
330
+ },
331
+ ],
332
+ },
333
+ // Extend item with PF2e bulk and runes
334
+ {
335
+ name: 'item',
336
+ displayName: 'Item',
337
+ pluralName: 'Items',
338
+ fields: [],
339
+ additionalFields: [
340
+ {
341
+ name: 'level',
342
+ type: 'number',
343
+ description: 'Item level',
344
+ },
345
+ {
346
+ name: 'price',
347
+ type: 'string',
348
+ description: 'Price in gp/sp/cp',
349
+ },
350
+ {
351
+ name: 'bulk',
352
+ type: 'string',
353
+ description: 'Bulk (L for light, - for negligible)',
354
+ },
355
+ {
356
+ name: 'traits',
357
+ type: 'array',
358
+ arrayItemType: 'string',
359
+ description: 'Item traits',
360
+ },
361
+ {
362
+ name: 'usage',
363
+ type: 'string',
364
+ description: 'How the item is used (held, worn, etc.)',
365
+ },
366
+ {
367
+ name: 'activate',
368
+ type: 'record',
369
+ description: 'Activation requirements and effects',
370
+ },
371
+ // Rune system
372
+ {
373
+ name: 'fundamental_runes',
374
+ type: 'array',
375
+ arrayItemType: 'string',
376
+ description: 'Fundamental runes (potency, striking, resilient)',
377
+ },
378
+ {
379
+ name: 'property_runes',
380
+ type: 'array',
381
+ arrayItemType: 'string',
382
+ description: 'Property runes',
383
+ },
384
+ // PF2e weapon stats
385
+ {
386
+ name: 'damage_die',
387
+ type: 'string',
388
+ description: 'Base damage die',
389
+ },
390
+ {
391
+ name: 'weapon_group',
392
+ type: 'string',
393
+ description: 'Weapon group (sword, bow, etc.)',
394
+ },
395
+ {
396
+ name: 'weapon_traits',
397
+ type: 'array',
398
+ arrayItemType: 'string',
399
+ description: 'Weapon traits (agile, reach, etc.)',
400
+ },
401
+ // PF2e armor stats
402
+ {
403
+ name: 'armor_category',
404
+ type: 'enum',
405
+ enumValues: ['unarmored', 'light', 'medium', 'heavy'],
406
+ description: 'Armor category',
407
+ },
408
+ {
409
+ name: 'ac_bonus',
410
+ type: 'number',
411
+ description: 'AC bonus',
412
+ },
413
+ {
414
+ name: 'dex_cap',
415
+ type: 'number',
416
+ description: 'Dex modifier cap',
417
+ },
418
+ {
419
+ name: 'check_penalty',
420
+ type: 'number',
421
+ description: 'Check penalty',
422
+ },
423
+ {
424
+ name: 'speed_penalty',
425
+ type: 'number',
426
+ description: 'Speed penalty',
427
+ },
428
+ {
429
+ name: 'armor_group',
430
+ type: 'string',
431
+ description: 'Armor group',
432
+ },
433
+ ],
434
+ },
435
+ // Ancestry entity type (PF2e-specific)
436
+ {
437
+ name: 'ancestry',
438
+ displayName: 'Ancestry',
439
+ pluralName: 'Ancestries',
440
+ description: 'Playable ancestries with heritages and feats',
441
+ icon: 'users',
442
+ fields: [
443
+ {
444
+ name: 'name',
445
+ type: 'string',
446
+ required: true,
447
+ description: 'Ancestry name',
448
+ },
449
+ {
450
+ name: 'hit_points',
451
+ type: 'number',
452
+ description: 'Ancestry hit points',
453
+ },
454
+ {
455
+ name: 'size',
456
+ type: 'enum',
457
+ enumValues: ['tiny', 'small', 'medium', 'large'],
458
+ description: 'Size category',
459
+ },
460
+ {
461
+ name: 'speed',
462
+ type: 'number',
463
+ description: 'Base speed in feet',
464
+ },
465
+ {
466
+ name: 'ability_boosts',
467
+ type: 'array',
468
+ arrayItemType: 'string',
469
+ description: 'Ability boosts',
470
+ },
471
+ {
472
+ name: 'ability_flaw',
473
+ type: 'string',
474
+ description: 'Ability flaw (if any)',
475
+ },
476
+ {
477
+ name: 'languages',
478
+ type: 'array',
479
+ arrayItemType: 'string',
480
+ description: 'Starting languages',
481
+ },
482
+ {
483
+ name: 'traits',
484
+ type: 'array',
485
+ arrayItemType: 'string',
486
+ description: 'Ancestry traits',
487
+ },
488
+ {
489
+ name: 'special_abilities',
490
+ type: 'array',
491
+ arrayItemType: 'record',
492
+ description: 'Special ancestry abilities',
493
+ },
494
+ {
495
+ name: 'heritages',
496
+ type: 'array',
497
+ arrayItemType: 'string',
498
+ description: 'Available heritages',
499
+ },
500
+ {
501
+ name: 'source',
502
+ type: 'string',
503
+ description: 'Source book',
504
+ },
505
+ ],
506
+ },
507
+ // Heritage entity type (PF2e-specific)
508
+ {
509
+ name: 'heritage',
510
+ displayName: 'Heritage',
511
+ pluralName: 'Heritages',
512
+ description: 'Ancestry heritages and versatile heritages',
513
+ icon: 'git-branch',
514
+ fields: [
515
+ {
516
+ name: 'name',
517
+ type: 'string',
518
+ required: true,
519
+ description: 'Heritage name',
520
+ },
521
+ {
522
+ name: 'ancestry',
523
+ type: 'string',
524
+ description: 'Parent ancestry (blank for versatile heritages)',
525
+ },
526
+ {
527
+ name: 'is_versatile',
528
+ type: 'boolean',
529
+ description: 'Whether this is a versatile heritage',
530
+ },
531
+ {
532
+ name: 'abilities',
533
+ type: 'array',
534
+ arrayItemType: 'record',
535
+ description: 'Heritage abilities',
536
+ },
537
+ {
538
+ name: 'source',
539
+ type: 'string',
540
+ description: 'Source book',
541
+ },
542
+ ],
543
+ },
544
+ // Action entity type (PF2e three-action economy)
545
+ {
546
+ name: 'action',
547
+ displayName: 'Action',
548
+ pluralName: 'Actions',
549
+ description: 'Actions, activities, and reactions',
550
+ icon: 'zap',
551
+ fields: [
552
+ {
553
+ name: 'name',
554
+ type: 'string',
555
+ required: true,
556
+ description: 'Action name',
557
+ },
558
+ {
559
+ name: 'action_type',
560
+ type: 'enum',
561
+ enumValues: ['action', 'activity', 'reaction', 'free'],
562
+ description: 'Type of action',
563
+ },
564
+ {
565
+ name: 'actions',
566
+ type: 'string',
567
+ description: 'Number of actions (1, 2, 3, or varies)',
568
+ },
569
+ {
570
+ name: 'traits',
571
+ type: 'array',
572
+ arrayItemType: 'string',
573
+ description: 'Action traits',
574
+ },
575
+ {
576
+ name: 'trigger',
577
+ type: 'string',
578
+ description: 'Trigger (for reactions)',
579
+ },
580
+ {
581
+ name: 'requirements',
582
+ type: 'string',
583
+ description: 'Requirements to use the action',
584
+ },
585
+ {
586
+ name: 'frequency',
587
+ type: 'string',
588
+ description: 'Usage frequency',
589
+ },
590
+ {
591
+ name: 'effect',
592
+ type: 'string',
593
+ description: 'Action effect',
594
+ },
595
+ {
596
+ name: 'critical_success',
597
+ type: 'string',
598
+ description: 'Critical success effect',
599
+ },
600
+ {
601
+ name: 'success',
602
+ type: 'string',
603
+ description: 'Success effect',
604
+ },
605
+ {
606
+ name: 'failure',
607
+ type: 'string',
608
+ description: 'Failure effect',
609
+ },
610
+ {
611
+ name: 'critical_failure',
612
+ type: 'string',
613
+ description: 'Critical failure effect',
614
+ },
615
+ {
616
+ name: 'source',
617
+ type: 'string',
618
+ description: 'Source (class, feat, etc.)',
619
+ },
620
+ ],
621
+ },
622
+ // Condition entity type (PF2e has many conditions)
623
+ {
624
+ name: 'condition',
625
+ displayName: 'Condition',
626
+ pluralName: 'Conditions',
627
+ description: 'Status conditions and their effects',
628
+ icon: 'alert-circle',
629
+ fields: [
630
+ {
631
+ name: 'name',
632
+ type: 'string',
633
+ required: true,
634
+ description: 'Condition name',
635
+ },
636
+ {
637
+ name: 'has_value',
638
+ type: 'boolean',
639
+ description: 'Whether condition has a value (e.g., frightened 2)',
640
+ },
641
+ {
642
+ name: 'effects',
643
+ type: 'array',
644
+ arrayItemType: 'string',
645
+ description: 'Condition effects',
646
+ },
647
+ {
648
+ name: 'overrides',
649
+ type: 'array',
650
+ arrayItemType: 'string',
651
+ description: 'Conditions this overrides',
652
+ },
653
+ {
654
+ name: 'reduction',
655
+ type: 'string',
656
+ description: 'How condition value reduces',
657
+ },
658
+ ],
659
+ },
660
+ ],
661
+ relationshipTypes: [
662
+ // Ancestry-Heritage relationships
663
+ {
664
+ id: 'has_heritage',
665
+ displayName: 'Has Heritage',
666
+ description: 'Ancestry has this heritage option',
667
+ sourceTypes: ['ancestry'],
668
+ targetTypes: ['heritage'],
669
+ bidirectional: true,
670
+ reverseId: 'heritage_of_ancestry',
671
+ },
672
+ {
673
+ id: 'heritage_of_ancestry',
674
+ displayName: 'Heritage Of',
675
+ description: 'Heritage belongs to this ancestry',
676
+ sourceTypes: ['heritage'],
677
+ targetTypes: ['ancestry'],
678
+ bidirectional: false,
679
+ },
680
+ // Character-Ancestry relationships
681
+ {
682
+ id: 'has_ancestry',
683
+ displayName: 'Has Ancestry',
684
+ description: 'Character is of this ancestry',
685
+ sourceTypes: ['character'],
686
+ targetTypes: ['ancestry'],
687
+ bidirectional: true,
688
+ reverseId: 'ancestry_of',
689
+ },
690
+ {
691
+ id: 'ancestry_of',
692
+ displayName: 'Ancestry Of',
693
+ description: 'Ancestry of character',
694
+ sourceTypes: ['ancestry'],
695
+ targetTypes: ['character'],
696
+ bidirectional: false,
697
+ },
698
+ ],
699
+ folderMappings: [
700
+ // PF2e-specific folders
701
+ { folder: '**/Ancestries/**', types: ['ancestry'] },
702
+ { folder: '**/Heritages/**', types: ['heritage'] },
703
+ { folder: '**/Actions/**', types: ['action'] },
704
+ { folder: '**/Activities/**', types: ['action'] },
705
+ { folder: '**/Conditions/**', types: ['condition'] },
706
+ // PF2e calls them "Creatures" more often than "Monsters"
707
+ { folder: '**/Creatures/**', types: ['creature'] },
708
+ { folder: '**/Hazards/**', types: ['creature'] },
709
+ ],
710
+ };
711
+ //# sourceMappingURL=pathfinder-2e.js.map